56 lines
2.3 KiB
Swift
56 lines
2.3 KiB
Swift
import AppKit
|
|
import EdmundCore
|
|
|
|
// MARK: - View menu
|
|
|
|
@MainActor
|
|
enum ViewMenu {
|
|
|
|
/// The top-level "View" menu item (with its submenu).
|
|
static func build() -> NSMenuItem {
|
|
let viewMenuItem = NSMenuItem()
|
|
let viewMenu = NSMenu(title: "View")
|
|
|
|
// Routes through the responder chain to the key window's toolbar.
|
|
// AppKit auto-inserts "Show Tab Bar"/"Show All Tabs" above this at
|
|
// runtime (window tabbing is on by default) — that position isn't
|
|
// ours to control short of disabling tabbing outright.
|
|
viewMenu.addItem(withTitle: "Customize Toolbar…",
|
|
action: #selector(NSWindow.runToolbarCustomizationPalette(_:)),
|
|
keyEquivalent: "")
|
|
viewMenu.addItem(.separator())
|
|
|
|
let typewriterItem = viewMenu.addItem(
|
|
withTitle: "Typewriter Scroll",
|
|
action: #selector(AppDelegate.toggleTypewriterMode(_:)),
|
|
keyEquivalent: "")
|
|
typewriterItem.state = AppDelegate.typewriterModeEnabled() ? .on : .off
|
|
|
|
// View-mode toggle (Edit ↔ Read) + the Source-mode checkbox.
|
|
viewMenu.addItem(.separator())
|
|
viewMenu.addItem(FormatMenu.viewModeToggleItem())
|
|
viewMenu.addItem(withTitle: "Show Source in Editor",
|
|
action: #selector(Document.toggleSourceMode(_:)),
|
|
keyEquivalent: "")
|
|
viewMenu.addItem(.separator())
|
|
|
|
// Zoom (font size + max content width, scaled together). Target nil
|
|
// routes through the responder chain to the key window's Document.
|
|
// Kept last, directly above the separator AppKit inserts before its
|
|
// automatic "Enter/Exit Full Screen" item at the menu's end.
|
|
viewMenu.addItem(withTitle: "Actual Size",
|
|
action: #selector(Document.actualSize(_:)),
|
|
keyEquivalent: "0")
|
|
viewMenu.addItem(withTitle: "Zoom In",
|
|
action: #selector(Document.zoomIn(_:)),
|
|
keyEquivalent: "=")
|
|
viewMenu.addItem(withTitle: "Zoom Out",
|
|
action: #selector(Document.zoomOut(_:)),
|
|
keyEquivalent: "-")
|
|
viewMenu.addItem(.separator())
|
|
|
|
viewMenuItem.submenu = viewMenu
|
|
return viewMenuItem
|
|
}
|
|
}
|