Files
openless/Sources/OpenLessApp/ApplicationMenu.swift
T

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
}
}