51 lines
2.1 KiB
Swift
51 lines
2.1 KiB
Swift
import AppKit
|
|
|
|
@MainActor
|
|
enum ApplicationMenu {
|
|
static func install() {
|
|
let mainMenu = NSMenu()
|
|
|
|
let appItem = NSMenuItem()
|
|
let appMenu = NSMenu(title: "OpenLess")
|
|
appMenu.addItem(NSMenuItem(title: "Hide OpenLess", action: #selector(NSApplication.hide(_:)), keyEquivalent: "h"))
|
|
appMenu.addItem(NSMenuItem(title: "Hide Others", action: #selector(NSApplication.hideOtherApplications(_:)), keyEquivalent: "h"))
|
|
appMenu.items.last?.keyEquivalentModifierMask = [.command, .option]
|
|
appMenu.addItem(NSMenuItem(title: "Show All", action: #selector(NSApplication.unhideAllApplications(_:)), keyEquivalent: ""))
|
|
appMenu.addItem(.separator())
|
|
appMenu.addItem(NSMenuItem(title: "Quit OpenLess", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q"))
|
|
appItem.submenu = appMenu
|
|
mainMenu.addItem(appItem)
|
|
|
|
let editItem = NSMenuItem()
|
|
editItem.submenu = editMenu()
|
|
mainMenu.addItem(editItem)
|
|
|
|
NSApp.mainMenu = mainMenu
|
|
}
|
|
|
|
private static func editMenu() -> NSMenu {
|
|
let menu = NSMenu(title: "Edit")
|
|
|
|
menu.addItem(menuItem("Undo", action: Selector(("undo:")), key: "z"))
|
|
let redo = menuItem("Redo", action: Selector(("redo:")), key: "Z")
|
|
redo.keyEquivalentModifierMask = [.command, .shift]
|
|
menu.addItem(redo)
|
|
menu.addItem(.separator())
|
|
|
|
menu.addItem(menuItem("Cut", action: #selector(NSText.cut(_:)), key: "x"))
|
|
menu.addItem(menuItem("Copy", action: #selector(NSText.copy(_:)), key: "c"))
|
|
menu.addItem(menuItem("Paste", action: #selector(NSText.paste(_:)), key: "v"))
|
|
menu.addItem(menuItem("Delete", action: #selector(NSText.delete(_:)), key: ""))
|
|
menu.addItem(.separator())
|
|
menu.addItem(menuItem("Select All", action: #selector(NSText.selectAll(_:)), key: "a"))
|
|
|
|
return menu
|
|
}
|
|
|
|
private static func menuItem(_ title: String, action: Selector, key: String) -> NSMenuItem {
|
|
let item = NSMenuItem(title: title, action: action, keyEquivalent: key)
|
|
item.target = nil
|
|
return item
|
|
}
|
|
}
|