Files
OpenStats/Packages/OpenStatsKit/Sources/OpenStatsUI/AppKit/MainMenu.swift
T
gentpan 23e4a8b8e0 设置并入主窗口:侧边栏新增设置分组,网络、风扇、合盖设置放到对应页面
- 侧边栏“设置”分组:通用、菜单栏、辅助工具、关于;导航较多时侧边栏可滚动
- 网络设置(连接探测、公网 IP、IP 归属地数据库)放在网络页底部,风扇安全温度放在温度与风扇页,合盖电量下限放在防休眠页
- 弹窗齿轮、菜单栏右键“设置…”与 ⌘, 打开主窗口的通用设置;删除独立设置窗口,偏好设置不变
- 去掉不再使用的设置窗口尺寸 token,侧边栏宽度改名为 sidebarWidth;截图渲染改为按页面输出
2026-09-13 07:04:14 +05:00

45 lines
2.2 KiB
Swift

import AppKit
/// 应用菜单。仅菜单栏运行时不显示,但仍负责 ⌘C / ⌘V / ⌘W 等快捷键
@MainActor
enum MainMenu {
static func make(settingsTarget: AnyObject, settingsAction: Selector) -> NSMenu {
let main = NSMenu()
let app = NSMenu(title: "OpenStats")
app.addItem(withTitle: "关于 OpenStats", action: #selector(NSApplication.orderFrontStandardAboutPanel(_:)), keyEquivalent: "")
app.addItem(.separator())
let settings = app.addItem(withTitle: "设置…", action: settingsAction, keyEquivalent: ",")
settings.target = settingsTarget
app.addItem(.separator())
app.addItem(withTitle: "隐藏 OpenStats", action: #selector(NSApplication.hide(_:)), keyEquivalent: "h")
app.addItem(.separator())
app.addItem(withTitle: "退出 OpenStats", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q")
add(app, to: main)
let edit = NSMenu(title: "编辑")
edit.addItem(withTitle: "撤销", action: Selector(("undo:")), keyEquivalent: "z")
edit.addItem(withTitle: "重做", action: Selector(("redo:")), keyEquivalent: "Z")
edit.addItem(.separator())
edit.addItem(withTitle: "剪切", action: #selector(NSText.cut(_:)), keyEquivalent: "x")
edit.addItem(withTitle: "拷贝", action: #selector(NSText.copy(_:)), keyEquivalent: "c")
edit.addItem(withTitle: "粘贴", action: #selector(NSText.paste(_:)), keyEquivalent: "v")
edit.addItem(withTitle: "全选", action: #selector(NSText.selectAll(_:)), keyEquivalent: "a")
add(edit, to: main)
let window = NSMenu(title: "窗口")
window.addItem(withTitle: "最小化", action: #selector(NSWindow.performMiniaturize(_:)), keyEquivalent: "m")
window.addItem(withTitle: "关闭", action: #selector(NSWindow.performClose(_:)), keyEquivalent: "w")
add(window, to: main)
NSApp.windowsMenu = window
return main
}
private static func add(_ submenu: NSMenu, to main: NSMenu) {
let item = NSMenuItem(title: submenu.title, action: nil, keyEquivalent: "")
item.submenu = submenu
main.addItem(item)
}
}