Files
wehub-resource-sync 5b99bf6bca
CI / test (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:34:54 +08:00

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