Skip to content

Commit 16255dd

Browse files
committed
v1.3: Add Dock Presets submenu
Signed-off-by: Chris Warrick <[email protected]>
1 parent c2ff922 commit 16255dd

File tree

6 files changed

+45
-12
lines changed

6 files changed

+45
-12
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@ Changelog
33

44
More information, including binaries, can be found on GitHub in the [releases section](https://github.com/Kwpolska/DisplayMenu/releases).
55

6+
v1.3 (build 4)
7+
--------------
8+
9+
Add *Dock Presets* submenu.
10+
611
v1.2 (build 3)
712
--------------
813

Display Menu/AppDelegate.swift

+25-5
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,17 @@ class AppDelegate: NSObject, NSApplicationDelegate {
4141
let statusMenu = NSMenu()
4242
let refreshItem = NSMenuItem(title: NSLocalizedString("Reload", comment: "Reload menu item"), action: #selector(acquireDisplayManager), keyEquivalent: "r")
4343
let quitItem = NSMenuItem(title: NSLocalizedString("Quit", comment: "Quit menu item"), action: #selector(NSApp.terminate), keyEquivalent: "q")
44+
let dockPresetsItem = NSMenuItem(title: NSLocalizedString("Dock Presets", comment: "Dock Presets menu item"), action: nil, keyEquivalent: "")
45+
46+
override init() {
47+
super.init()
48+
49+
refreshItem.keyEquivalentModifierMask = .control
50+
statusMenu.delegate = self
51+
52+
statusItem.image = #imageLiteral(resourceName: "DMStatusReady")
53+
statusItem.menu = statusMenu
54+
}
4455

4556
func applicationDidFinishLaunching(_ aNotification: Notification) {
4657
do {
@@ -49,11 +60,6 @@ class AppDelegate: NSObject, NSApplicationDelegate {
4960
alertAndQuit(NSLocalizedString("Failed to initialize display manager.", comment: "Alert title (display manager/config error)"), String(reflecting: error))
5061
}
5162

52-
refreshItem.keyEquivalentModifierMask = .control
53-
statusMenu.delegate = self
54-
55-
statusItem.image = #imageLiteral(resourceName: "DMStatusReady")
56-
statusItem.menu = statusMenu
5763
}
5864

5965
func acquireDisplayManager() throws {
@@ -90,6 +96,11 @@ class AppDelegate: NSObject, NSApplicationDelegate {
9096
}
9197
Timer.scheduledTimer(timeInterval: TimeInterval(1.5), target: self, selector: #selector(_resetDMIcon), userInfo: nil, repeats: false)
9298
}
99+
100+
func applyDockPresetFromMenu(_ sender: NSMenuItem?) {
101+
let dp = sender!.representedObject as! DockPreset
102+
dp.apply(force: true)
103+
}
93104
}
94105

95106
extension AppDelegate: NSMenuDelegate {
@@ -101,7 +112,16 @@ extension AppDelegate: NSMenuDelegate {
101112
menu.addItem(item)
102113
}
103114

115+
let dpsubmenu = NSMenu()
116+
for (name, dp) in displayManager!.dockPresets {
117+
let item = NSMenuItem(title: name, action: #selector(applyDockPresetFromMenu), keyEquivalent: "")
118+
item.representedObject = dp
119+
dpsubmenu.addItem(item)
120+
}
121+
104122
menu.addItem(NSMenuItem.separator())
123+
menu.addItem(dockPresetsItem)
124+
dockPresetsItem.submenu = dpsubmenu
105125
menu.addItem(refreshItem)
106126
menu.addItem(quitItem)
107127
}

Display Menu/Base.lproj/Localizable.strings

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
/* no settings alert description */
88
"Place a settings file at %@ and try again." = "Place a settings file at %@ and try again.";
99

10+
/* Dock presets menu item */
11+
"Dock Presets" = "Dock Presets";
12+
1013
/* Quit menu item */
1114
"Quit" = "Quit";
1215

Display Menu/DisplayManager.swift

+7-5
Original file line numberDiff line numberDiff line change
@@ -75,13 +75,15 @@ class DockPreset: CustomStringConvertible {
7575
}
7676

7777
/// Apply a dock preset.
78-
func apply() {
78+
func apply(force: Bool = false) {
7979
let defaults = UserDefaults(suiteName: "com.apple.dock")
80-
let tilesize_current = defaults?.integer(forKey: "tilesize")
81-
let position_current = defaults?.string(forKey: "orientation")
80+
if !force {
81+
let tilesize_current = defaults?.integer(forKey: "tilesize")
82+
let position_current = defaults?.string(forKey: "orientation")
8283

83-
if tilesize == tilesize_current && position.rawValue == position_current {
84-
return // Don’t change the settings if it’s what we want already
84+
if tilesize == tilesize_current && position.rawValue == position_current {
85+
return // Don’t change the settings if it’s what we want already
86+
}
8587
}
8688

8789
defaults?.set(tilesize, forKey: "tilesize")

Display Menu/Info.plist

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
<key>CFBundlePackageType</key>
2020
<string>APPL</string>
2121
<key>CFBundleShortVersionString</key>
22-
<string>1.2</string>
22+
<string>1.3</string>
2323
<key>CFBundleVersion</key>
24-
<string>3</string>
24+
<string>4</string>
2525
<key>LSMinimumSystemVersion</key>
2626
<string>$(MACOSX_DEPLOYMENT_TARGET)</string>
2727
<key>LSUIElement</key>

Display Menu/pl.lproj/Localizable.strings

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
/* no settings alert description */
88
"Place a settings file at %@ and try again." = "Utwórz plik z ustawieniami %@ i spróbuj ponownie.";
99

10+
/* Dock presets menu item */
11+
"Dock Presets" = "Ustawienia Docka";
12+
1013
/* Quit menu item */
1114
"Quit" = "Zakończ";
1215

0 commit comments

Comments
 (0)