@@ -40,9 +40,10 @@ class AppDelegate: NSObject, NSApplicationDelegate {
40
40
let statusItem = NSStatusBar . system. statusItem ( withLength: NSStatusItem . variableLength)
41
41
let statusMenu = NSMenu ( )
42
42
let refreshItem = NSMenuItem ( title: NSLocalizedString ( " Reload " , comment: " Reload menu item " ) , action: #selector( acquireDisplayManager) , keyEquivalent: " r " )
43
+ let openConfigItem = NSMenuItem ( title: NSLocalizedString ( " Open Config File " , comment: " Open Config File menu item " ) , action: #selector( openConfigFile) , keyEquivalent: " , " )
43
44
let quitItem = NSMenuItem ( title: NSLocalizedString ( " Quit " , comment: " Quit menu item " ) , action: #selector( NSApp . terminate) , keyEquivalent: " q " )
44
45
let dockPresetsItem = NSMenuItem ( title: NSLocalizedString ( " Dock Presets " , comment: " Dock Presets menu item " ) , action: nil , keyEquivalent: " " )
45
-
46
+ var settingsURL : URL ? = nil
46
47
override init ( ) {
47
48
super. init ( )
48
49
@@ -66,13 +67,13 @@ class AppDelegate: NSObject, NSApplicationDelegate {
66
67
let appsupport = try FileManager . default. url ( for: . applicationSupportDirectory, in: . userDomainMask, appropriateFor: nil , create: true )
67
68
let appdir = appsupport. appendingPathComponent ( Bundle . main. bundleIdentifier!, isDirectory: true )
68
69
try FileManager . default. createDirectory ( at: appdir, withIntermediateDirectories: true , attributes: nil )
69
- let url = appdir. appendingPathComponent ( " DisplayMenu.json " )
70
- if FileManager . default. fileExists ( atPath: url . path) {
71
- displayManager = try DisplayManager ( jsonPath: url )
70
+ settingsURL = appdir. appendingPathComponent ( " DisplayMenu.json " )
71
+ if FileManager . default. fileExists ( atPath: settingsURL! . path) {
72
+ displayManager = try DisplayManager ( jsonPath: settingsURL! )
72
73
} else {
73
74
alertAndQuit (
74
75
NSLocalizedString ( " Settings file not found " , comment: " no settings alert title " ) ,
75
- String . localizedStringWithFormat ( NSLocalizedString ( " Place a settings file at %@ and try again. " , comment: " no settings alert description " ) , url . path)
76
+ String . localizedStringWithFormat ( NSLocalizedString ( " Place a settings file at %@ and try again. " , comment: " no settings alert description " ) , settingsURL! . path)
76
77
)
77
78
}
78
79
}
@@ -101,13 +102,17 @@ class AppDelegate: NSObject, NSApplicationDelegate {
101
102
let dp = sender!. representedObject as! DockPreset
102
103
dp. apply ( force: true )
103
104
}
105
+
106
+ @objc func openConfigFile( _ sender: NSMenuItem ? ) {
107
+ NSWorkspace . shared. openFile ( settingsURL!. path, withApplication: " TextEdit " )
108
+ }
104
109
}
105
110
106
111
extension AppDelegate : NSMenuDelegate {
107
112
func menuWillOpen( _ menu: NSMenu ) {
108
113
menu. removeAllItems ( )
109
- for (name , preset) in displayManager!. presets {
110
- let item = NSMenuItem ( title: name, action: #selector( applyPresetFromMenu) , keyEquivalent: preset. keyEquivalent)
114
+ for preset in displayManager!. presetOrder {
115
+ let item = NSMenuItem ( title: preset . name, action: #selector( applyPresetFromMenu) , keyEquivalent: preset. keyEquivalent)
111
116
item. representedObject = preset
112
117
menu. addItem ( item)
113
118
}
@@ -123,6 +128,7 @@ extension AppDelegate: NSMenuDelegate {
123
128
menu. addItem ( dockPresetsItem)
124
129
dockPresetsItem. submenu = dpsubmenu
125
130
menu. addItem ( refreshItem)
131
+ menu. addItem ( openConfigItem)
126
132
menu. addItem ( quitItem)
127
133
}
128
134
}
0 commit comments