Repository navigation
Expand file tree
/
Copy pathTermiNotesApp.swift
More file actions
83 lines (72 loc) · 3.31 KB
/
Copy pathTermiNotesApp.swift
File metadata and controls
83 lines (72 loc) · 3.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import SwiftUI
import AppKit
@main
class TermiNotesApp: NSObject, NSApplicationDelegate {
var statusItem: NSStatusItem?
var popover = NSPopover()
// This is the manual entry point
static func main() {
let app = NSApplication.shared
let delegate = TermiNotesApp() // Retain the delegate
app.delegate = delegate
app.setActivationPolicy(.accessory)
print("TermiNotes: App starting...")
app.run()
}
func applicationDidFinishLaunching(_ notification: Notification) {
setupMenu()
print("TermiNotes: Finished launching, setting up UI...")
// Create the Status Item
statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.variableLength)
if let button = statusItem?.button {
button.title = ">_N"
button.action = #selector(togglePopover)
print("TermiNotes: Status item created with title '>_N'")
} else {
print("TermiNotes: Failed to create status item button")
}
// Create the SwiftUI View
let contentView = ContentView()
popover.contentSize = NSSize(width: 400, height: 300)
popover.behavior = .transient
popover.contentViewController = NSHostingController(rootView: contentView)
print("TermiNotes: Popover initialized")
}
func setupMenu() {
let mainMenu = NSMenu()
let appMenuItem = NSMenuItem()
mainMenu.addItem(appMenuItem)
let appMenu = NSMenu()
appMenu.addItem(withTitle: "About TermiNotes", action: #selector(NSApplication.orderFrontStandardAboutPanel(_:)), keyEquivalent: "")
appMenu.addItem(NSMenuItem.separator())
appMenu.addItem(withTitle: "Quit TermiNotes", action: #selector(NSApplication.terminate(_:)), keyEquivalent: "q")
appMenuItem.submenu = appMenu
let editMenuItem = NSMenuItem()
mainMenu.addItem(editMenuItem)
let editMenu = NSMenu(title: "Edit")
editMenu.addItem(withTitle: "Undo", action: Selector(("undo:")), keyEquivalent: "z")
let redoItem = NSMenuItem(title: "Redo", action: Selector(("redo:")), keyEquivalent: "z")
redoItem.keyEquivalentModifierMask = [.command, .shift]
editMenu.addItem(redoItem)
editMenu.addItem(NSMenuItem.separator())
editMenu.addItem(withTitle: "Cut", action: #selector(NSText.cut(_:)), keyEquivalent: "x")
editMenu.addItem(withTitle: "Copy", action: #selector(NSText.copy(_:)), keyEquivalent: "c")
editMenu.addItem(withTitle: "Paste", action: #selector(NSText.paste(_:)), keyEquivalent: "v")
editMenu.addItem(withTitle: "Select All", action: #selector(NSText.selectAll(_:)), keyEquivalent: "a")
editMenuItem.submenu = editMenu
NSApp.mainMenu = mainMenu
}
@objc func togglePopover() {
print("TermiNotes: Toggle popover requested")
if let button = statusItem?.button {
if popover.isShown {
popover.performClose(nil)
print("TermiNotes: Popover closed")
} else {
popover.show(relativeTo: button.bounds, of: button, preferredEdge: .minY)
NSApp.activate(ignoringOtherApps: true)
print("TermiNotes: Popover shown")
}
}
}
}