Skip to content

Commit 058567a

Browse files
authored
Merge pull request #4 from dteoh/2-shortcut-prefs
Shortcut prefs
2 parents 7afff21 + 005dbd5 commit 058567a

File tree

9 files changed

+161
-42
lines changed

9 files changed

+161
-42
lines changed

Cartfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
github "soffes/HotKey"
21
github "nmdias/DefaultsKit"
2+
github "shpakovski/MASShortcut"

Cartfile.resolved

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
github "nmdias/DefaultsKit" "0.0.9"
2-
github "soffes/HotKey" "v0.1.1"
1+
github "nmdias/DefaultsKit" "0.2.0"
2+
github "shpakovski/MASShortcut" "2.3.6"

DevDocs.xcodeproj/project.pbxproj

Lines changed: 28 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
06996D2D223DDBEB001507AD /* Summoner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06996D2C223DDBEB001507AD /* Summoner.swift */; };
11+
06996D36223DEDA3001507AD /* MASShortcut.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06996D35223DEDA3001507AD /* MASShortcut.framework */; };
12+
06996D37223DEDA3001507AD /* MASShortcut.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 06996D35223DEDA3001507AD /* MASShortcut.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
13+
06996D39223DEDC8001507AD /* MASShortcut.framework.dSYM in CopyFiles */ = {isa = PBXBuildFile; fileRef = 06996D38223DEDC8001507AD /* MASShortcut.framework.dSYM */; };
14+
06996D3C223DEF54001507AD /* PreferencesWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06996D3A223DEF54001507AD /* PreferencesWindowController.swift */; };
15+
06996D3D223DEF54001507AD /* PreferencesWindowController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 06996D3B223DEF54001507AD /* PreferencesWindowController.xib */; };
1016
06B5A71A21D2013D007823B2 /* user-scripts in Resources */ = {isa = PBXBuildFile; fileRef = 06B5A71921D2013D007823B2 /* user-scripts */; };
11-
06B5A72521D348F0007823B2 /* HotKey.framework.dSYM in CopyFiles */ = {isa = PBXBuildFile; fileRef = 06B5A72421D348F0007823B2 /* HotKey.framework.dSYM */; };
12-
06B5A72721D34916007823B2 /* HotKey.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06B5A72621D34916007823B2 /* HotKey.framework */; };
13-
06B5A72821D34916007823B2 /* HotKey.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 06B5A72621D34916007823B2 /* HotKey.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
1417
06B5A73121D354FC007823B2 /* DocumentationWindows.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06B5A73021D354FC007823B2 /* DocumentationWindows.swift */; };
1518
06B5A73321D35552007823B2 /* Documentation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06B5A73221D35552007823B2 /* Documentation.swift */; };
1619
06B5A73521D36637007823B2 /* DefaultsKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 06B5A73421D36637007823B2 /* DefaultsKit.framework */; };
@@ -23,6 +26,7 @@
2326
06EAE7FB21D0CD8F00F7C921 /* DocumentationWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 06EAE7FA21D0CD8F00F7C921 /* DocumentationWindow.xib */; };
2427
06EAE7FD21D0CE3E00F7C921 /* DocumentationWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06EAE7FC21D0CE3E00F7C921 /* DocumentationWindowController.swift */; };
2528
06EAE7FF21D0FA4000F7C921 /* DocumentationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 06EAE7FE21D0FA4000F7C921 /* DocumentationViewController.swift */; };
29+
6F4E7DD5223DBDB70074E6F1 /* MASShortcut.framework.dSYM in Resources */ = {isa = PBXBuildFile; fileRef = 6F4E7DD3223DBDB70074E6F1 /* MASShortcut.framework.dSYM */; };
2630
/* End PBXBuildFile section */
2731

2832
/* Begin PBXCopyFilesBuildPhase section */
@@ -32,38 +36,32 @@
3236
dstPath = "";
3337
dstSubfolderSpec = 10;
3438
files = (
35-
06B5A72821D34916007823B2 /* HotKey.framework in Embed Frameworks */,
39+
06996D37223DEDA3001507AD /* MASShortcut.framework in Embed Frameworks */,
3640
06B5A73621D36637007823B2 /* DefaultsKit.framework in Embed Frameworks */,
3741
);
3842
name = "Embed Frameworks";
3943
runOnlyForDeploymentPostprocessing = 0;
4044
};
41-
06B5A72321D348B1007823B2 /* CopyFiles */ = {
42-
isa = PBXCopyFilesBuildPhase;
43-
buildActionMask = 2147483647;
44-
dstPath = "";
45-
dstSubfolderSpec = 16;
46-
files = (
47-
06B5A72521D348F0007823B2 /* HotKey.framework.dSYM in CopyFiles */,
48-
);
49-
runOnlyForDeploymentPostprocessing = 0;
50-
};
5145
06B5A73721D36645007823B2 /* CopyFiles */ = {
5246
isa = PBXCopyFilesBuildPhase;
5347
buildActionMask = 2147483647;
5448
dstPath = "";
5549
dstSubfolderSpec = 16;
5650
files = (
5751
06B5A73921D3665C007823B2 /* DefaultsKit.framework.dSYM in CopyFiles */,
52+
06996D39223DEDC8001507AD /* MASShortcut.framework.dSYM in CopyFiles */,
5853
);
5954
runOnlyForDeploymentPostprocessing = 0;
6055
};
6156
/* End PBXCopyFilesBuildPhase section */
6257

6358
/* Begin PBXFileReference section */
59+
06996D2C223DDBEB001507AD /* Summoner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Summoner.swift; sourceTree = "<group>"; };
60+
06996D35223DEDA3001507AD /* MASShortcut.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MASShortcut.framework; path = Carthage/Build/Mac/MASShortcut.framework; sourceTree = "<group>"; };
61+
06996D38223DEDC8001507AD /* MASShortcut.framework.dSYM */ = {isa = PBXFileReference; lastKnownFileType = wrapper.dsym; name = MASShortcut.framework.dSYM; path = Carthage/Build/Mac/MASShortcut.framework.dSYM; sourceTree = "<group>"; };
62+
06996D3A223DEF54001507AD /* PreferencesWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PreferencesWindowController.swift; sourceTree = "<group>"; };
63+
06996D3B223DEF54001507AD /* PreferencesWindowController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PreferencesWindowController.xib; sourceTree = "<group>"; };
6464
06B5A71921D2013D007823B2 /* user-scripts */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "user-scripts"; sourceTree = "<group>"; };
65-
06B5A72421D348F0007823B2 /* HotKey.framework.dSYM */ = {isa = PBXFileReference; lastKnownFileType = wrapper.dsym; name = HotKey.framework.dSYM; path = Carthage/Build/Mac/HotKey.framework.dSYM; sourceTree = "<group>"; };
66-
06B5A72621D34916007823B2 /* HotKey.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = HotKey.framework; path = Carthage/Build/Mac/HotKey.framework; sourceTree = "<group>"; };
6765
06B5A73021D354FC007823B2 /* DocumentationWindows.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentationWindows.swift; sourceTree = "<group>"; };
6866
06B5A73221D35552007823B2 /* Documentation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Documentation.swift; sourceTree = "<group>"; };
6967
06B5A73421D36637007823B2 /* DefaultsKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DefaultsKit.framework; path = Carthage/Build/Mac/DefaultsKit.framework; sourceTree = "<group>"; };
@@ -77,14 +75,16 @@
7775
06EAE7FA21D0CD8F00F7C921 /* DocumentationWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DocumentationWindow.xib; sourceTree = "<group>"; };
7876
06EAE7FC21D0CE3E00F7C921 /* DocumentationWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentationWindowController.swift; sourceTree = "<group>"; };
7977
06EAE7FE21D0FA4000F7C921 /* DocumentationViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DocumentationViewController.swift; sourceTree = "<group>"; };
78+
6F4E7DD3223DBDB70074E6F1 /* MASShortcut.framework.dSYM */ = {isa = PBXFileReference; lastKnownFileType = wrapper.dsym; name = MASShortcut.framework.dSYM; path = Carthage/Build/Mac/MASShortcut.framework.dSYM; sourceTree = "<group>"; };
79+
6F4E7DD8223DC1630074E6F1 /* MASShortcut.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MASShortcut.framework; path = Carthage/Build/Mac/MASShortcut.framework; sourceTree = "<group>"; };
8080
/* End PBXFileReference section */
8181

8282
/* Begin PBXFrameworksBuildPhase section */
8383
06EAE7E621D0CB3D00F7C921 /* Frameworks */ = {
8484
isa = PBXFrameworksBuildPhase;
8585
buildActionMask = 2147483647;
8686
files = (
87-
06B5A72721D34916007823B2 /* HotKey.framework in Frameworks */,
87+
06996D36223DEDA3001507AD /* MASShortcut.framework in Frameworks */,
8888
06B5A73521D36637007823B2 /* DefaultsKit.framework in Frameworks */,
8989
);
9090
runOnlyForDeploymentPostprocessing = 0;
@@ -97,15 +97,17 @@
9797
children = (
9898
06B5A73421D36637007823B2 /* DefaultsKit.framework */,
9999
06B5A73821D3665C007823B2 /* DefaultsKit.framework.dSYM */,
100-
06B5A72621D34916007823B2 /* HotKey.framework */,
101-
06B5A72421D348F0007823B2 /* HotKey.framework.dSYM */,
100+
6F4E7DD8223DC1630074E6F1 /* MASShortcut.framework */,
101+
6F4E7DD3223DBDB70074E6F1 /* MASShortcut.framework.dSYM */,
102102
);
103103
name = Carthage;
104104
sourceTree = "<group>";
105105
};
106106
06EAE7E021D0CB3D00F7C921 = {
107107
isa = PBXGroup;
108108
children = (
109+
06996D38223DEDC8001507AD /* MASShortcut.framework.dSYM */,
110+
06996D35223DEDA3001507AD /* MASShortcut.framework */,
109111
06B5A72921D3492F007823B2 /* Carthage */,
110112
06EAE7EB21D0CB3D00F7C921 /* devdocs-macos */,
111113
06EAE7EA21D0CB3D00F7C921 /* Products */,
@@ -129,11 +131,14 @@
129131
06EAE7FE21D0FA4000F7C921 /* DocumentationViewController.swift */,
130132
06EAE7FA21D0CD8F00F7C921 /* DocumentationWindow.xib */,
131133
06EAE7FC21D0CE3E00F7C921 /* DocumentationWindowController.swift */,
134+
06996D3A223DEF54001507AD /* PreferencesWindowController.swift */,
135+
06996D3B223DEF54001507AD /* PreferencesWindowController.xib */,
132136
06B5A73021D354FC007823B2 /* DocumentationWindows.swift */,
133137
06EAE7F321D0CB3E00F7C921 /* Info.plist */,
134138
06EAE7F021D0CB3E00F7C921 /* MainMenu.xib */,
135139
06B5A71921D2013D007823B2 /* user-scripts */,
136140
06B5A73A21D36680007823B2 /* Storage.swift */,
141+
06996D2C223DDBEB001507AD /* Summoner.swift */,
137142
);
138143
path = "devdocs-macos";
139144
sourceTree = "<group>";
@@ -149,7 +154,6 @@
149154
06EAE7E621D0CB3D00F7C921 /* Frameworks */,
150155
06EAE7E721D0CB3D00F7C921 /* Resources */,
151156
06B5A72221D34895007823B2 /* Embed Frameworks */,
152-
06B5A72321D348B1007823B2 /* CopyFiles */,
153157
06B5A73721D36645007823B2 /* CopyFiles */,
154158
);
155159
buildRules = (
@@ -200,7 +204,9 @@
200204
buildActionMask = 2147483647;
201205
files = (
202206
06EAE7EF21D0CB3E00F7C921 /* Assets.xcassets in Resources */,
207+
06996D3D223DEF54001507AD /* PreferencesWindowController.xib in Resources */,
203208
06EAE7FB21D0CD8F00F7C921 /* DocumentationWindow.xib in Resources */,
209+
6F4E7DD5223DBDB70074E6F1 /* MASShortcut.framework.dSYM in Resources */,
204210
06B5A71A21D2013D007823B2 /* user-scripts in Resources */,
205211
06EAE7F221D0CB3E00F7C921 /* MainMenu.xib in Resources */,
206212
);
@@ -213,7 +219,9 @@
213219
isa = PBXSourcesBuildPhase;
214220
buildActionMask = 2147483647;
215221
files = (
222+
06996D2D223DDBEB001507AD /* Summoner.swift in Sources */,
216223
06EAE7FF21D0FA4000F7C921 /* DocumentationViewController.swift in Sources */,
224+
06996D3C223DEF54001507AD /* PreferencesWindowController.swift in Sources */,
217225
06B5A73121D354FC007823B2 /* DocumentationWindows.swift in Sources */,
218226
06B5A73321D35552007823B2 /* Documentation.swift in Sources */,
219227
06EAE7FD21D0CE3E00F7C921 /* DocumentationWindowController.swift in Sources */,
Binary file not shown.

devdocs-macos/AppDelegate.swift

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,13 @@
11
import Cocoa
2-
import HotKey
32

43
@NSApplicationMain
54
class AppDelegate: NSObject, NSApplicationDelegate {
6-
7-
private var hotKey: HotKey!
8-
95
func applicationWillFinishLaunching(_ notification: Notification) {
106
let _ = DocumentationWindows.shared
117
}
128

139
func applicationDidFinishLaunching(_ aNotification: Notification) {
14-
setupHotKey()
10+
Summoner.shared.install()
1511
DocumentationWindows.shared.restore()
1612
}
1713

@@ -23,17 +19,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
2319
DocumentationWindows.shared.newWindow()
2420
}
2521

26-
private func setupHotKey() {
27-
hotKey = HotKey(key: .space, modifiers: [.option])
28-
hotKey.keyDownHandler = hotKeyPressed
29-
}
30-
31-
private func hotKeyPressed() {
32-
if NSApp.isActive {
33-
NSApp.hide(self)
34-
} else {
35-
NSApp.activate(ignoringOtherApps: true)
36-
DocumentationWindows.shared.newWindowIfNoWindow()
37-
}
22+
@IBAction func showAppPreferences(sender: Any) {
23+
PreferencesWindowController.shared.showWindow(self)
3824
}
3925
}

devdocs-macos/Base.lproj/MainMenu.xib

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
</customObject>
1212
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
1313
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
14-
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="devdocs_macos" customModuleProvider="target"/>
14+
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="DevDocs" customModuleProvider="target"/>
1515
<customObject id="YLy-65-1bz" customClass="NSFontManager"/>
1616
<menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
1717
<items>
@@ -26,7 +26,12 @@
2626
</connections>
2727
</menuItem>
2828
<menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
29-
<menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
29+
<menuItem title="Preferences…" id="BOF-NM-1cW">
30+
<modifierMask key="keyEquivalentModifierMask"/>
31+
<connections>
32+
<action selector="showAppPreferencesWithSender:" target="Voe-Tx-rLC" id="LDP-dv-TTw"/>
33+
</connections>
34+
</menuItem>
3035
<menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
3136
<menuItem title="Services" id="NMo-om-nkz">
3237
<modifierMask key="keyEquivalentModifierMask"/>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import Cocoa
2+
import MASShortcut
3+
4+
class PreferencesWindowController: NSWindowController {
5+
@IBOutlet weak var masShortcutRecorderView: MASShortcutView?;
6+
7+
static let shared = PreferencesWindowController()
8+
9+
private convenience init() {
10+
self.init(windowNibName: "PreferencesWindowController")
11+
}
12+
13+
override func windowDidLoad() {
14+
super.windowDidLoad()
15+
16+
if let recorderView = masShortcutRecorderView {
17+
recorderView.style = MASShortcutViewStyleTexturedRect
18+
recorderView.associatedUserDefaultsKey = Summoner.prefsKey
19+
}
20+
}
21+
22+
@IBAction func restoreDefaults(sender: Any) {
23+
if let recorderView = masShortcutRecorderView {
24+
recorderView.shortcutValue = Summoner.defaultShortcut
25+
}
26+
}
27+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
3+
<dependencies>
4+
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
5+
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
6+
</dependencies>
7+
<objects>
8+
<customObject id="-2" userLabel="File's Owner" customClass="PreferencesWindowController" customModule="DevDocs" customModuleProvider="target">
9+
<connections>
10+
<outlet property="masShortcutRecorderView" destination="8hA-DH-I7Z" id="orq-Ez-K1f"/>
11+
<outlet property="window" destination="F0z-JX-Cv5" id="gIp-Ho-8D9"/>
12+
</connections>
13+
</customObject>
14+
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
15+
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
16+
<window title="Preferences" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" tabbingMode="disallowed" id="F0z-JX-Cv5">
17+
<windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES"/>
18+
<windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
19+
<rect key="contentRect" x="196" y="240" width="318" height="102"/>
20+
<rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
21+
<view key="contentView" wantsLayer="YES" id="se5-gp-TjO">
22+
<rect key="frame" x="0.0" y="0.0" width="318" height="102"/>
23+
<autoresizingMask key="autoresizingMask"/>
24+
<subviews>
25+
<customView fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8hA-DH-I7Z" customClass="MASShortcutView">
26+
<rect key="frame" x="135" y="61" width="163" height="25"/>
27+
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
28+
</customView>
29+
<button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="kUZ-2D-ASu">
30+
<rect key="frame" x="153" y="13" width="151" height="32"/>
31+
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
32+
<buttonCell key="cell" type="push" title="Restore defaults..." bezelStyle="rounded" alignment="center" borderStyle="border" imageScaling="proportionallyDown" inset="2" id="r9Z-qe-Up0">
33+
<behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
34+
<font key="font" metaFont="system"/>
35+
</buttonCell>
36+
<connections>
37+
<action selector="restoreDefaultsWithSender:" target="-2" id="XBR-gg-hEJ"/>
38+
</connections>
39+
</button>
40+
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="SLs-UG-n2b">
41+
<rect key="frame" x="18" y="65" width="111" height="17"/>
42+
<autoresizingMask key="autoresizingMask"/>
43+
<textFieldCell key="cell" lineBreakMode="clipping" alignment="right" title="Global shortcut:" id="U8G-v4-cE9">
44+
<font key="font" usesAppearanceFont="YES"/>
45+
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
46+
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
47+
</textFieldCell>
48+
</textField>
49+
</subviews>
50+
</view>
51+
<connections>
52+
<outlet property="delegate" destination="-2" id="0bl-1N-AYu"/>
53+
</connections>
54+
<point key="canvasLocation" x="12" y="-21"/>
55+
</window>
56+
</objects>
57+
</document>

devdocs-macos/Summoner.swift

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import Cocoa
2+
import MASShortcut
3+
4+
class Summoner {
5+
static let shared = Summoner()
6+
7+
static let prefsKey = "summonKeys"
8+
9+
static var defaultShortcut: MASShortcut {
10+
let modifiers = NSEvent.ModifierFlags([.option])
11+
return MASShortcut(keyCode: UInt(kVK_Space), modifierFlags: modifiers.rawValue)
12+
}
13+
14+
private init() {
15+
if let binder = MASShortcutBinder.shared() {
16+
binder.registerDefaultShortcuts([Summoner.prefsKey : Summoner.defaultShortcut])
17+
}
18+
}
19+
20+
func install() {
21+
if let binder = MASShortcutBinder.shared(){
22+
binder.bindShortcut(withDefaultsKey: Summoner.prefsKey) {
23+
self.hotKeyPressed()
24+
}
25+
}
26+
}
27+
28+
private func hotKeyPressed() {
29+
if NSApp.isActive {
30+
NSApp.hide(self)
31+
} else {
32+
NSApp.activate(ignoringOtherApps: true)
33+
DocumentationWindows.shared.newWindowIfNoWindow()
34+
}
35+
}
36+
}

0 commit comments

Comments
 (0)