aboutsummaryrefslogtreecommitdiff
path: root/DWA140Menu
diff options
context:
space:
mode:
Diffstat (limited to 'DWA140Menu')
-rw-r--r--DWA140Menu/AppDelegate.swift37
-rw-r--r--DWA140Menu/Assets.xcassets/AppIcon.appiconset/Contents.json29
-rw-r--r--DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon-1024.pngbin561535 -> 0 bytes
-rw-r--r--DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_128x128.pngbin0 -> 17351 bytes
-rw-r--r--DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.pngbin0 -> 43949 bytes
-rw-r--r--DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_16x16.pngbin0 -> 1823 bytes
-rw-r--r--DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.pngbin0 -> 3233 bytes
-rw-r--r--DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_256x256.pngbin0 -> 43949 bytes
-rw-r--r--DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.pngbin0 -> 136129 bytes
-rw-r--r--DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_32x32.pngbin0 -> 3233 bytes
-rw-r--r--DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.pngbin0 -> 6940 bytes
-rw-r--r--DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_512x512.pngbin0 -> 136129 bytes
-rw-r--r--DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.pngbin0 -> 475020 bytes
-rw-r--r--DWA140Menu/Assets.xcassets/ApplicationIcon.imageset/Contents.json22
-rw-r--r--DWA140Menu/Assets.xcassets/ApplicationIcon.imageset/icon_512x512.pngbin0 -> 136129 bytes
-rw-r--r--DWA140Menu/Assets.xcassets/ApplicationIcon.imageset/icon_512x512@2x.pngbin0 -> 475020 bytes
-rw-r--r--DWA140Menu/Base.lproj/Main.storyboard351
l---------DWA140Menu/Defaults.framework/Defaults1
l---------DWA140Menu/Defaults.framework/Headers1
l---------DWA140Menu/Defaults.framework/Modules1
l---------DWA140Menu/Defaults.framework/Resources1
-rwxr-xr-xDWA140Menu/Defaults.framework/Versions/A/Defaultsbin45468 -> 0 bytes
-rw-r--r--DWA140Menu/Defaults.framework/Versions/A/Headers/Defaults-Swift.h189
-rw-r--r--DWA140Menu/Defaults.framework/Versions/A/Modules/Defaults.swiftmodule/x86_64.swiftdocbin380 -> 0 bytes
-rw-r--r--DWA140Menu/Defaults.framework/Versions/A/Modules/Defaults.swiftmodule/x86_64.swiftmodulebin26812 -> 0 bytes
-rw-r--r--DWA140Menu/Defaults.framework/Versions/A/Modules/module.modulemap4
-rw-r--r--DWA140Menu/Defaults.framework/Versions/A/Resources/Info.plist51
l---------DWA140Menu/Defaults.framework/Versions/Current1
-rw-r--r--DWA140Menu/ViewController.swift60
29 files changed, 452 insertions, 296 deletions
diff --git a/DWA140Menu/AppDelegate.swift b/DWA140Menu/AppDelegate.swift
index 28f62d1..d7ac742 100644
--- a/DWA140Menu/AppDelegate.swift
+++ b/DWA140Menu/AppDelegate.swift
@@ -8,27 +8,28 @@
import Cocoa
import Foundation
-import Defaults
-import LaunchAtLogin
import SystemConfiguration
-extension Defaults.Keys {
- static let launchAtLogin = Defaults.Key<Bool>("launchAtLogin", default: false)
-}
-
let statusItem = NSStatusBar.system.statusItem(withLength: NSStatusItem.squareLength)
-var launchAtLoginMenuItem = NSMenuItem()
var interfaceName : String = ""
let dynRef = SCDynamicStoreCreate(kCFAllocatorSystemDefault, "iked" as CFString, nil, nil)
let ipv4key = SCDynamicStoreCopyValue(dynRef, "State:/Network/Global/IPv4" as CFString)
var isDeviceInterfaceConnected : Bool?
-var deviceIPAddress : String = ""
+let applicationStoryboard = NSStoryboard(name: "Main", bundle: nil)
+let mainWindowController = applicationStoryboard.instantiateController(withIdentifier: "MainWindowController") as! NSWindowController
+let mainViewController = applicationStoryboard.instantiateController(withIdentifier: "MainViewController") as! NSViewController
+let tabViewController = applicationStoryboard.instantiateController(withIdentifier: "TabViewController") as! NSTabViewController
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDelegate {
- @objc func openSourcePage() {
- NSWorkspace.shared.open((URL(string:"https://github.com/fivepixels/dwa140shortcut") ?? nil)!)
+ @objc func openApplicationWindow() {
+ if mainWindowController.window?.isVisible == false {
+ mainWindowController.showWindow(self)
+ NSApp.activate(ignoringOtherApps: true)
+ } else {
+ NSApp.activate(ignoringOtherApps: true)
+ }
}
@objc func openDWAPreferencePane() {
@@ -58,17 +59,6 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
exit(0)
}
- @objc func toggleLaunchAtLogin() {
- let launchAtLogin = defaults[.launchAtLogin]
- launchAtLoginMenuItem.title = "Start at Login"
- launchAtLoginMenuItem.state = !launchAtLogin ? .on : .off
- LaunchAtLogin.isEnabled = !launchAtLogin
- defaults[.launchAtLogin] = !launchAtLogin
- if !launchAtLogin {
- showNotification(title: "DWA-140 Shortcut", withText: "This application now opens as soon as you login. 😀")
- }
- }
-
@objc func showNotification(title: String, withText: String) -> Void {
let notification = NSUserNotification()
notification.title = title
@@ -91,10 +81,7 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSUserNotificationCenterDele
func constructMenu() {
let applicationMenu = NSMenu()
- applicationMenu.addItem(NSMenuItem(title: "DWA-140 Shortcut", action: #selector(openSourcePage), keyEquivalent: ""))
- launchAtLoginMenuItem = NSMenuItem(title: "Start at Login", action: #selector(self.toggleLaunchAtLogin), keyEquivalent: "")
- launchAtLoginMenuItem.state = defaults[.launchAtLogin] ? .on : .off
- applicationMenu.addItem(launchAtLoginMenuItem)
+ applicationMenu.addItem(NSMenuItem(title: "DWA-140 Shortcut", action: #selector(openApplicationWindow), keyEquivalent: ""))
applicationMenu.addItem(NSMenuItem.separator())
applicationMenu.addItem(NSMenuItem(title: isInterfaceConnected(), action: nil, keyEquivalent: ""))
applicationMenu.addItem(NSMenuItem.separator())
diff --git a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/Contents.json b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/Contents.json
index 307be1e..7cd4f8e 100644
--- a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -1,54 +1,63 @@
{
"images" : [
{
- "idiom" : "mac",
"size" : "16x16",
+ "idiom" : "mac",
+ "filename" : "icon_16x16.png",
"scale" : "1x"
},
{
- "idiom" : "mac",
"size" : "16x16",
+ "idiom" : "mac",
+ "filename" : "icon_16x16@2x.png",
"scale" : "2x"
},
{
- "idiom" : "mac",
"size" : "32x32",
+ "idiom" : "mac",
+ "filename" : "icon_32x32.png",
"scale" : "1x"
},
{
- "idiom" : "mac",
"size" : "32x32",
+ "idiom" : "mac",
+ "filename" : "icon_32x32@2x.png",
"scale" : "2x"
},
{
- "idiom" : "mac",
"size" : "128x128",
+ "idiom" : "mac",
+ "filename" : "icon_128x128.png",
"scale" : "1x"
},
{
- "idiom" : "mac",
"size" : "128x128",
+ "idiom" : "mac",
+ "filename" : "icon_128x128@2x.png",
"scale" : "2x"
},
{
- "idiom" : "mac",
"size" : "256x256",
+ "idiom" : "mac",
+ "filename" : "icon_256x256.png",
"scale" : "1x"
},
{
- "idiom" : "mac",
"size" : "256x256",
+ "idiom" : "mac",
+ "filename" : "icon_256x256@2x.png",
"scale" : "2x"
},
{
- "idiom" : "mac",
"size" : "512x512",
+ "idiom" : "mac",
+ "filename" : "icon_512x512.png",
"scale" : "1x"
},
{
"size" : "512x512",
"idiom" : "mac",
- "filename" : "icon-1024.png",
+ "filename" : "icon_512x512@2x.png",
"scale" : "2x"
}
],
diff --git a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon-1024.png b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon-1024.png
deleted file mode 100644
index 3f5aed6..0000000
--- a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon-1024.png
+++ /dev/null
Binary files differ
diff --git a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_128x128.png b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_128x128.png
new file mode 100644
index 0000000..3888958
--- /dev/null
+++ b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_128x128.png
Binary files differ
diff --git a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png
new file mode 100644
index 0000000..4e54d2e
--- /dev/null
+++ b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_128x128@2x.png
Binary files differ
diff --git a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_16x16.png b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_16x16.png
new file mode 100644
index 0000000..c7bc070
--- /dev/null
+++ b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_16x16.png
Binary files differ
diff --git a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png
new file mode 100644
index 0000000..483a134
--- /dev/null
+++ b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_16x16@2x.png
Binary files differ
diff --git a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_256x256.png b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_256x256.png
new file mode 100644
index 0000000..4e54d2e
--- /dev/null
+++ b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_256x256.png
Binary files differ
diff --git a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png
new file mode 100644
index 0000000..905bf9d
--- /dev/null
+++ b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_256x256@2x.png
Binary files differ
diff --git a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_32x32.png b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_32x32.png
new file mode 100644
index 0000000..483a134
--- /dev/null
+++ b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_32x32.png
Binary files differ
diff --git a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png
new file mode 100644
index 0000000..0cde3d1
--- /dev/null
+++ b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_32x32@2x.png
Binary files differ
diff --git a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_512x512.png b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_512x512.png
new file mode 100644
index 0000000..905bf9d
--- /dev/null
+++ b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_512x512.png
Binary files differ
diff --git a/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png
new file mode 100644
index 0000000..c494598
--- /dev/null
+++ b/DWA140Menu/Assets.xcassets/AppIcon.appiconset/icon_512x512@2x.png
Binary files differ
diff --git a/DWA140Menu/Assets.xcassets/ApplicationIcon.imageset/Contents.json b/DWA140Menu/Assets.xcassets/ApplicationIcon.imageset/Contents.json
new file mode 100644
index 0000000..599d2dd
--- /dev/null
+++ b/DWA140Menu/Assets.xcassets/ApplicationIcon.imageset/Contents.json
@@ -0,0 +1,22 @@
+{
+ "images" : [
+ {
+ "idiom" : "universal",
+ "filename" : "icon_512x512.png",
+ "scale" : "1x"
+ },
+ {
+ "idiom" : "universal",
+ "filename" : "icon_512x512@2x.png",
+ "scale" : "2x"
+ },
+ {
+ "idiom" : "universal",
+ "scale" : "3x"
+ }
+ ],
+ "info" : {
+ "version" : 1,
+ "author" : "xcode"
+ }
+} \ No newline at end of file
diff --git a/DWA140Menu/Assets.xcassets/ApplicationIcon.imageset/icon_512x512.png b/DWA140Menu/Assets.xcassets/ApplicationIcon.imageset/icon_512x512.png
new file mode 100644
index 0000000..905bf9d
--- /dev/null
+++ b/DWA140Menu/Assets.xcassets/ApplicationIcon.imageset/icon_512x512.png
Binary files differ
diff --git a/DWA140Menu/Assets.xcassets/ApplicationIcon.imageset/icon_512x512@2x.png b/DWA140Menu/Assets.xcassets/ApplicationIcon.imageset/icon_512x512@2x.png
new file mode 100644
index 0000000..c494598
--- /dev/null
+++ b/DWA140Menu/Assets.xcassets/ApplicationIcon.imageset/icon_512x512@2x.png
Binary files differ
diff --git a/DWA140Menu/Base.lproj/Main.storyboard b/DWA140Menu/Base.lproj/Main.storyboard
index 409c011..c98ce56 100644
--- a/DWA140Menu/Base.lproj/Main.storyboard
+++ b/DWA140Menu/Base.lproj/Main.storyboard
@@ -3,6 +3,7 @@
<dependencies>
<deployment identifier="macosx"/>
<plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14460.31"/>
+ <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Application-->
@@ -659,5 +660,355 @@
</objects>
<point key="canvasLocation" x="75" y="0.0"/>
</scene>
+ <!--Window Controller-->
+ <scene sceneID="Bjg-zD-ccW">
+ <objects>
+ <windowController storyboardIdentifier="MainWindowController" id="1wB-dR-eyM" sceneMemberID="viewController">
+ <window key="window" identifier="MainWindowController" title="DWA140Menu" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" visibleAtLaunch="NO" frameAutosaveName="" animationBehavior="default" id="fDP-Mm-gyr">
+ <windowStyleMask key="styleMask" titled="YES" closable="YES"/>
+ <windowPositionMask key="initialPositionMask" topStrut="YES" bottomStrut="YES"/>
+ <rect key="contentRect" x="468" y="522" width="480" height="225"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="1440" height="877"/>
+ <connections>
+ <outlet property="delegate" destination="1wB-dR-eyM" id="aFC-Kb-TyS"/>
+ </connections>
+ </window>
+ <connections>
+ <segue destination="9wW-Ed-Ez8" kind="relationship" relationship="window.shadowedContentViewController" id="T9Q-dO-fSC"/>
+ </connections>
+ </windowController>
+ <customObject id="86r-ue-JjO" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
+ </objects>
+ <point key="canvasLocation" x="81" y="216.5"/>
+ </scene>
+ <!--View Controller-->
+ <scene sceneID="cog-h2-Bw5">
+ <objects>
+ <viewController id="9wW-Ed-Ez8" customClass="ViewController" customModule="DWA140Menu" customModuleProvider="target" sceneMemberID="viewController">
+ <view key="view" identifier="MainViewController" id="Pkb-2f-U8O">
+ <rect key="frame" x="0.0" y="0.0" width="483" height="247"/>
+ <autoresizingMask key="autoresizingMask"/>
+ <subviews>
+ <tabView identifier="TabViewController" translatesAutoresizingMaskIntoConstraints="NO" id="QLW-cn-mmD">
+ <rect key="frame" x="13" y="10" width="457" height="223"/>
+ <font key="font" metaFont="system"/>
+ <tabViewItems>
+ <tabViewItem label="Settings" identifier="" id="iBY-ic-RQ3">
+ <view key="view" id="FsN-gy-FXz">
+ <rect key="frame" x="10" y="33" width="437" height="177"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="JEL-3R-a8o">
+ <rect key="frame" x="13" y="46" width="14" height="18"/>
+ <buttonCell key="cell" type="check" bezelStyle="regularSquare" imagePosition="left" enabled="NO" state="on" inset="2" id="knJ-27-rVv">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ </button>
+ <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bha-uL-q4z">
+ <rect key="frame" x="31" y="47" width="298" height="17"/>
+ <textFieldCell key="cell" lineBreakMode="clipping" title="Be an awesome individual for using my software!" id="k1C-IA-UCb">
+ <font key="font" metaFont="system"/>
+ <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="zkt-Ir-J68">
+ <rect key="frame" x="31" y="30" width="79" height="17"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="17" id="xVB-ed-tYX"/>
+ </constraints>
+ <textFieldCell key="cell" controlSize="small" lineBreakMode="clipping" title="It's just a fact." id="OgZ-Rf-eoX">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="C1E-Lz-oIr">
+ <rect key="frame" x="31" y="112" width="237" height="17"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="17" id="7ZD-2d-mgc"/>
+ </constraints>
+ <textFieldCell key="cell" controlSize="small" lineBreakMode="clipping" title="An even easier way to get connected, faster." id="2r9-Aa-FC0">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="lJe-dq-rJi">
+ <rect key="frame" x="11" y="128" width="408" height="18"/>
+ <buttonCell key="cell" type="check" title="Open application automatically after logging into your computer" bezelStyle="regularSquare" imagePosition="left" inset="2" id="aBe-5W-eZC">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="system"/>
+ </buttonCell>
+ <connections>
+ <action selector="loginButtonPressed:" target="9wW-Ed-Ez8" id="iQ6-WN-aco"/>
+ </connections>
+ </button>
+ <button verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3jV-BN-QmI">
+ <rect key="frame" x="13" y="46" width="14" height="18"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <buttonCell key="cell" type="roundRect" bezelStyle="roundedRect" image="buttonCell:N1k-fg-bT0:image" imagePosition="only" alignment="center" imageScaling="proportionallyDown" inset="2" id="N1k-fg-bT0">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="cellTitle"/>
+ </buttonCell>
+ <connections>
+ <action selector="triedAwesome:" target="9wW-Ed-Ez8" id="y3F-2v-YNI"/>
+ </connections>
+ </button>
+ </subviews>
+ <constraints>
+ <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="lJe-dq-rJi" secondAttribute="trailing" constant="20" symbolic="YES" id="1Qy-Cp-Wj4"/>
+ <constraint firstItem="JEL-3R-a8o" firstAttribute="baseline" secondItem="bha-uL-q4z" secondAttribute="baseline" id="3hu-Kb-kW5"/>
+ <constraint firstItem="bha-uL-q4z" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="JEL-3R-a8o" secondAttribute="trailing" constant="8" symbolic="YES" id="8v2-dI-dhz"/>
+ <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="bha-uL-q4z" secondAttribute="trailing" constant="20" symbolic="YES" id="Bgq-7d-QtF"/>
+ <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="zkt-Ir-J68" secondAttribute="trailing" constant="20" symbolic="YES" id="DgJ-iz-WVX"/>
+ <constraint firstItem="JEL-3R-a8o" firstAttribute="top" secondItem="lJe-dq-rJi" secondAttribute="bottom" constant="68" id="Jwi-EB-2VW"/>
+ <constraint firstItem="C1E-Lz-oIr" firstAttribute="top" secondItem="FsN-gy-FXz" secondAttribute="top" constant="48" id="LrG-mY-1Mk"/>
+ <constraint firstItem="C1E-Lz-oIr" firstAttribute="top" secondItem="lJe-dq-rJi" secondAttribute="bottom" constant="1" id="TRp-fa-lah"/>
+ <constraint firstItem="zkt-Ir-J68" firstAttribute="top" secondItem="bha-uL-q4z" secondAttribute="bottom" id="UD1-cg-HL7"/>
+ <constraint firstItem="lJe-dq-rJi" firstAttribute="leading" secondItem="FsN-gy-FXz" secondAttribute="leading" constant="13" id="WB0-p5-OOd"/>
+ <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="C1E-Lz-oIr" secondAttribute="trailing" constant="20" symbolic="YES" id="Wai-Rc-djV"/>
+ <constraint firstItem="C1E-Lz-oIr" firstAttribute="leading" secondItem="bha-uL-q4z" secondAttribute="leading" id="Ziq-T1-f61"/>
+ <constraint firstItem="C1E-Lz-oIr" firstAttribute="leading" secondItem="FsN-gy-FXz" secondAttribute="leading" constant="33" id="lj5-kE-Pze"/>
+ <constraint firstItem="JEL-3R-a8o" firstAttribute="leading" secondItem="FsN-gy-FXz" secondAttribute="leading" constant="15" id="mfu-Ka-MeD"/>
+ <constraint firstItem="C1E-Lz-oIr" firstAttribute="leading" secondItem="zkt-Ir-J68" secondAttribute="leading" id="qIe-Kx-ynQ"/>
+ </constraints>
+ </view>
+ </tabViewItem>
+ <tabViewItem label="Credits" identifier="" id="bzs-VZ-pPZ">
+ <view key="view" id="Eft-IA-k07">
+ <rect key="frame" x="10" y="33" width="437" height="177"/>
+ <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="r7L-6F-j38">
+ <rect key="frame" x="127" y="112" width="274" height="42"/>
+ <textFieldCell key="cell" scrollable="YES" lineBreakMode="clipping" title="dwa140shortcut" id="Khw-M3-KSU">
+ <font key="font" metaFont="systemBold" size="35"/>
+ <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <imageView horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="L8x-Y0-Opc">
+ <rect key="frame" x="38" y="83" width="80" height="80"/>
+ <constraints>
+ <constraint firstAttribute="height" constant="80" id="QrR-c8-qXB"/>
+ </constraints>
+ <imageCell key="cell" refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown" image="ApplicationIcon" id="OrC-lE-Syh"/>
+ </imageView>
+ <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="a54-Wx-Jxc">
+ <rect key="frame" x="124" y="91" width="103" height="21"/>
+ <textFieldCell key="cell" lineBreakMode="clipping" title="Version 0.0.0" id="nKI-EW-X2m">
+ <font key="font" metaFont="system" size="17"/>
+ <color key="textColor" name="secondaryLabelColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ANm-bD-DCT">
+ <rect key="frame" x="17" y="41" width="168" height="16"/>
+ <buttonCell key="cell" type="recessed" title="Made with ♥️ by FivePixels" bezelStyle="recessed" alignment="center" imageScaling="proportionallyDown" inset="2" id="PwK-gK-9V1">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="systemBold" size="12"/>
+ </buttonCell>
+ <connections>
+ <action selector="loveButtonPressed:" target="9wW-Ed-Ez8" id="tvc-zz-tly"/>
+ </connections>
+ </button>
+ <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="DXQ-xy-uXJ">
+ <rect key="frame" x="17" y="17" width="128" height="16"/>
+ <buttonCell key="cell" type="recessed" title="Buy me a coffee? ☕️" bezelStyle="recessed" alignment="center" imageScaling="proportionallyDown" inset="2" id="nhX-ht-4pY">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="systemBold" size="12"/>
+ </buttonCell>
+ <connections>
+ <action selector="coffeePressed:" target="9wW-Ed-Ez8" id="oX8-pW-Jte"/>
+ </connections>
+ </button>
+ <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="eJI-mB-gHY">
+ <rect key="frame" x="277" y="17" width="143" height="16"/>
+ <buttonCell key="cell" type="recessed" title="View Source on GitHub" bezelStyle="recessed" alignment="center" imageScaling="proportionallyDown" inset="2" id="3su-RE-Cxq">
+ <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES" changeBackground="YES" changeGray="YES"/>
+ <font key="font" metaFont="systemBold" size="12"/>
+ </buttonCell>
+ <connections>
+ <action selector="sourceButtonPressed:" target="9wW-Ed-Ez8" id="m07-Ts-gmm"/>
+ </connections>
+ </button>
+ </subviews>
+ <constraints>
+ <constraint firstItem="a54-Wx-Jxc" firstAttribute="leading" secondItem="Eft-IA-k07" secondAttribute="leading" constant="126" id="5TX-7M-4y3"/>
+ <constraint firstItem="a54-Wx-Jxc" firstAttribute="top" secondItem="r7L-6F-j38" secondAttribute="bottom" id="5lW-0Q-g9U"/>
+ <constraint firstItem="r7L-6F-j38" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="a54-Wx-Jxc" secondAttribute="leading" id="ABi-Xx-M7l"/>
+ <constraint firstItem="a54-Wx-Jxc" firstAttribute="leading" secondItem="L8x-Y0-Opc" secondAttribute="trailing" constant="8" symbolic="YES" id="ANY-2w-Ezc"/>
+ <constraint firstItem="ANm-bD-DCT" firstAttribute="leading" secondItem="Eft-IA-k07" secondAttribute="leading" constant="17" id="H3Z-Nw-m8F"/>
+ <constraint firstItem="DXQ-xy-uXJ" firstAttribute="leading" secondItem="ANm-bD-DCT" secondAttribute="leading" id="HZt-Be-c2R"/>
+ <constraint firstAttribute="trailing" secondItem="eJI-mB-gHY" secondAttribute="trailing" constant="17" id="Syl-ci-p1d"/>
+ <constraint firstAttribute="bottom" secondItem="eJI-mB-gHY" secondAttribute="bottom" constant="17" id="TMT-V2-Mwm"/>
+ <constraint firstAttribute="trailing" secondItem="r7L-6F-j38" secondAttribute="trailing" constant="38" id="V7x-Bg-wdu"/>
+ <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="a54-Wx-Jxc" secondAttribute="trailing" constant="20" symbolic="YES" id="a60-0f-jkQ"/>
+ <constraint firstItem="ANm-bD-DCT" firstAttribute="top" secondItem="a54-Wx-Jxc" secondAttribute="bottom" constant="34" id="a92-zt-M8b"/>
+ <constraint firstItem="ANm-bD-DCT" firstAttribute="baseline" secondItem="eJI-mB-gHY" secondAttribute="baseline" constant="-24" id="coa-cm-UUV"/>
+ <constraint firstItem="eJI-mB-gHY" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="ANm-bD-DCT" secondAttribute="trailing" constant="8" symbolic="YES" id="kU0-Ag-AyC"/>
+ <constraint firstItem="L8x-Y0-Opc" firstAttribute="leading" secondItem="Eft-IA-k07" secondAttribute="leading" constant="38" id="oqc-GW-4pV"/>
+ <constraint firstItem="DXQ-xy-uXJ" firstAttribute="baseline" secondItem="eJI-mB-gHY" secondAttribute="baseline" id="q51-hS-WB1"/>
+ <constraint firstItem="eJI-mB-gHY" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="DXQ-xy-uXJ" secondAttribute="trailing" constant="8" symbolic="YES" id="zoN-XF-mHL"/>
+ <constraint firstItem="ANm-bD-DCT" firstAttribute="top" secondItem="L8x-Y0-Opc" secondAttribute="bottom" constant="26" id="zp7-4c-DpB"/>
+ </constraints>
+ </view>
+ </tabViewItem>
+ </tabViewItems>
+ </tabView>
+ </subviews>
+ <constraints>
+ <constraint firstItem="QLW-cn-mmD" firstAttribute="leading" secondItem="Pkb-2f-U8O" secondAttribute="leading" constant="20" symbolic="YES" id="1Ge-U5-nXQ"/>
+ <constraint firstItem="QLW-cn-mmD" firstAttribute="centerY" secondItem="Pkb-2f-U8O" secondAttribute="centerY" id="Oj7-Sw-bmt"/>
+ <constraint firstAttribute="trailing" secondItem="QLW-cn-mmD" secondAttribute="trailing" constant="20" symbolic="YES" id="e2K-1m-03f"/>
+ <constraint firstAttribute="bottom" secondItem="QLW-cn-mmD" secondAttribute="bottom" constant="20" symbolic="YES" id="zkF-IK-HzR"/>
+ </constraints>
+ </view>
+ <connections>
+ <outlet property="awesomeSubtitle" destination="zkt-Ir-J68" id="STq-QI-Ka4"/>
+ <outlet property="loginButton" destination="lJe-dq-rJi" id="RTZ-Zk-gMz"/>
+ <outlet property="loginSubtitle" destination="C1E-Lz-oIr" id="QAS-Ig-kEB"/>
+ <outlet property="versionLabel" destination="a54-Wx-Jxc" id="c7J-BT-Ita"/>
+ </connections>
+ </viewController>
+ <customObject id="043-vn-F4Q" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>
+ </objects>
+ <point key="canvasLocation" x="700.5" y="215.5"/>
+ </scene>
</scenes>
+ <resources>
+ <image name="ApplicationIcon" width="512" height="512"/>
+ <image name="buttonCell:N1k-fg-bT0:image" width="1" height="1">
+ <mutableData key="keyedArchiveRepresentation">
+YnBsaXN0MDDUAQIDBAUGVVZYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoK8QEgcI
+ExQZHh8jJCsuMTtDR0tPUlUkbnVsbNUJCgsMDQ4PEBESVk5TU2l6ZVYkY2xhc3NcTlNJbWFnZUZsYWdz
+Vk5TUmVwc1dOU0NvbG9ygAKAERIgwwAAgAOAC1Z7MSwgMX3SFQoWGFpOUy5vYmplY3RzoReABIAK0hUK
+Gh2iGxyABYAGgAkQANIgCiEiXxAUTlNUSUZGUmVwcmVzZW50YXRpb26AB4AITxEIxE1NACoAAAAKAAAA
+EAEAAAMAAAABAAEAAAEBAAMAAAABAAEAAAECAAMAAAACAAgACAEDAAMAAAABAAEAAAEGAAMAAAABAAEA
+AAEKAAMAAAABAAEAAAERAAQAAAABAAAACAESAAMAAAABAAEAAAEVAAMAAAABAAIAAAEWAAMAAAABAAEA
+AAEXAAQAAAABAAAAAgEcAAMAAAABAAEAAAEoAAMAAAABAAIAAAFSAAMAAAABAAEAAAFTAAMAAAACAAEA
+AYdzAAcAAAf0AAAA0AAAAAAAAAf0YXBwbAIgAABtbnRyR1JBWVhZWiAH0AACAA4ADAAAAABhY3NwQVBQ
+TAAAAABub25lAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVkZXNjAAAAwAAAAG9kc2NtAAABMAAABmZjcHJ0AAAH
+mAAAADh3dHB0AAAH0AAAABRrVFJDAAAH5AAAAA5kZXNjAAAAAAAAABVHZW5lcmljIEdyYXkgUHJvZmls
+ZQAAAAAAAAAAAAAAFUdlbmVyaWMgR3JheSBQcm9maWxlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAfAAAADHNrU0sAAAAqAAABhGVuVVMAAAAoAAAB
+rmNhRVMAAAAsAAAB1nZpVk4AAAAsAAACAnB0QlIAAAAqAAACLnVrVUEAAAAsAAACWGZyRlUAAAAqAAAC
+hGh1SFUAAAAuAAACrnpoVFcAAAAQAAAC3G5iTk8AAAAsAAAC7GtvS1IAAAAYAAADGGNzQ1oAAAAkAAAD
+MGhlSUwAAAAgAAADVHJvUk8AAAAkAAADdGRlREUAAAA6AAADmGl0SVQAAAAuAAAD0nN2U0UAAAAuAAAE
+AHpoQ04AAAAQAAAELmphSlAAAAAWAAAEPmVsR1IAAAAkAAAEVHB0UE8AAAA4AAAEeG5sTkwAAAAqAAAE
+sGVzRVMAAAAoAAAE2nRoVEgAAAAkAAAFAnRyVFIAAAAiAAAFJmZpRkkAAAAsAAAFSGhySFIAAAA6AAAF
+dHBsUEwAAAA2AAAFrnJ1UlUAAAAmAAAF5GFyRUcAAAAoAAAGCmRhREsAAAA0AAAGMgBWAWEAZQBvAGIA
+ZQBjAG4A/QAgAHMAaQB2AP0AIABwAHIAbwBmAGkAbABHAGUAbgBlAHIAaQBjACAARwByAGEAeQAgAFAA
+cgBvAGYAaQBsAGUAUABlAHIAZgBpAGwAIABkAGUAIABnAHIAaQBzACAAZwBlAG4A6AByAGkAYwBDHqUA
+dQAgAGgA7ABuAGgAIABNAOAAdQAgAHgA4QBtACAAQwBoAHUAbgBnAFAAZQByAGYAaQBsACAAQwBpAG4A
+egBhACAARwBlAG4A6QByAGkAYwBvBBcEMAQzBDAEOwRMBD0EOAQ5ACAEPwRABD4ERAQwBDkEOwAgAEcA
+cgBhAHkAUAByAG8AZgBpAGwAIABnAOkAbgDpAHIAaQBxAHUAZQAgAGcAcgBpAHMAwQBsAHQAYQBsAOEA
+bgBvAHMAIABzAHoA/AByAGsAZQAgAHAAcgBvAGYAaQBskBp1KHBwlo6Ccl9pY8+P8ABHAGUAbgBlAHIA
+aQBzAGsAIABnAHIA5QB0AG8AbgBlAHAAcgBvAGYAaQBsx3y8GAAgAEcAcgBhAHkAINUEuFzTDMd8AE8A
+YgBlAGMAbgD9ACABYQBlAGQA/QAgAHAAcgBvAGYAaQBsBeQF6AXVBeQF2QXcACAARwByAGEAeQAgBdsF
+3AXcBdkAUAByAG8AZgBpAGwAIABnAHIAaQAgAGcAZQBuAGUAcgBpAGMAQQBsAGwAZwBlAG0AZQBpAG4A
+ZQBzACAARwByAGEAdQBzAHQAdQBmAGUAbgAtAFAAcgBvAGYAaQBsAFAAcgBvAGYAaQBsAG8AIABnAHIA
+aQBnAGkAbwAgAGcAZQBuAGUAcgBpAGMAbwBHAGUAbgBlAHIAaQBzAGsAIABnAHIA5QBzAGsAYQBsAGUA
+cAByAG8AZgBpAGxmbpAacHBepmPPj/Blh072TgCCLDCwMOwwpDDXMO0w1TChMKQw6wOTA7UDvQO5A7oD
+zAAgA8ADwQO/A8YDrwO7ACADswO6A8EDuQBQAGUAcgBmAGkAbAAgAGcAZQBuAOkAcgBpAGMAbwAgAGQA
+ZQAgAGMAaQBuAHoAZQBuAHQAbwBzAEEAbABnAGUAbQBlAGUAbgAgAGcAcgBpAGoAcwBwAHIAbwBmAGkA
+ZQBsAFAAZQByAGYAaQBsACAAZwByAGkAcwAgAGcAZQBuAOkAcgBpAGMAbw5CDhsOIw5EDh8OJQ5MDioO
+NQ5ADhcOMg4XDjEOSA4nDkQOGwBHAGUAbgBlAGwAIABHAHIAaQAgAFAAcgBvAGYAaQBsAGkAWQBsAGUA
+aQBuAGUAbgAgAGgAYQByAG0AYQBhAHAAcgBvAGYAaQBpAGwAaQBHAGUAbgBlAHIAaQENAGsAaQAgAHAA
+cgBvAGYAaQBsACAAcwBpAHYAaQBoACAAdABvAG4AbwB2AGEAVQBuAGkAdwBlAHIAcwBhAGwAbgB5ACAA
+cAByAG8AZgBpAGwAIABzAHoAYQByAG8BWwBjAGkEHgQxBEkEOAQ5ACAEQQQ1BEAESwQ5ACAEPwRABD4E
+RAQ4BDsETAZFBkQGQQAgBioGOQYxBkoGQQAgAEcAcgBhAHkAIAYnBkQGOQYnBkUARwBlAG4AZQByAGUA
+bAAgAGcAcgDlAHQAbwBuAGUAYgBlAHMAawByAGkAdgBlAGwAcwBlAAB0ZXh0AAAAAENvcHlyaWdodCAy
+MDA3IEFwcGxlIEluYy4sIGFsbCByaWdodHMgcmVzZXJ2ZWQuAFhZWiAAAAAAAADzUQABAAAAARbMY3Vy
+dgAAAAAAAAABAc0AANIlJicoWiRjbGFzc25hbWVYJGNsYXNzZXNfEBBOU0JpdG1hcEltYWdlUmVwoycp
+KlpOU0ltYWdlUmVwWE5TT2JqZWN00iUmLC1XTlNBcnJheaIsKtIlJi8wXk5TTXV0YWJsZUFycmF5oy8s
+KtUyMzQ1CjY3ODk6V05TV2hpdGVcTlNDb21wb25lbnRzXE5TQ29sb3JTcGFjZV8QEk5TQ3VzdG9tQ29s
+b3JTcGFjZUQwIDAAQzAgMBADgAyAENQ8PT4KP0BBQlROU0lEVU5TSUNDV05TTW9kZWwQCYANEACAD9JE
+CkVGV05TLmRhdGFPERFoAAARaGFwcGwCAAAAbW50ckdSQVlYWVogB9wACAAXAA8ALgAPYWNzcEFQUEwA
+AAAAbm9uZQAAAAAAAAAAAAAAAAAAAAAAAPbWAAEAAAAA0y1hcHBsAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFZGVzYwAAAMAAAAB5ZHNjbQAAATwAAAfoY3BydAAACSQA
+AAAjd3RwdAAACUgAAAAUa1RSQwAACVwAAAgMZGVzYwAAAAAAAAAfR2VuZXJpYyBHcmF5IEdhbW1hIDIu
+MiBQcm9maWxlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAG1sdWMAAAAAAAAAHwAAAAxza1NLAAAALgAAAYRk
+YURLAAAAOAAAAbJjYUVTAAAAOAAAAep2aVZOAAAAQAAAAiJwdEJSAAAASgAAAmJ1a1VBAAAALAAAAqxm
+ckZVAAAAPgAAAthodUhVAAAANAAAAxZ6aFRXAAAAHgAAA0puYk5PAAAAOgAAA2hjc0NaAAAAKAAAA6Jo
+ZUlMAAAAJAAAA8ppdElUAAAATgAAA+5yb1JPAAAAKgAABDxkZURFAAAATgAABGZrb0tSAAAAIgAABLRz
+dlNFAAAAOAAAAbJ6aENOAAAAHgAABNZqYUpQAAAAJgAABPRlbEdSAAAAKgAABRpwdFBPAAAAUgAABURu
+bE5MAAAAQAAABZZlc0VTAAAATAAABdZ0aFRIAAAAMgAABiJ0clRSAAAAJAAABlRmaUZJAAAARgAABnho
+ckhSAAAAPgAABr5wbFBMAAAASgAABvxydVJVAAAAOgAAB0ZlblVTAAAAPAAAB4BhckVHAAAALAAAB7wA
+VgFhAGUAbwBiAGUAYwBuAOEAIABzAGkAdgDhACAAZwBhAG0AYQAgADIALAAyAEcAZQBuAGUAcgBpAHMA
+awAgAGcAcgDlACAAMgAsADIAIABnAGEAbQBtAGEAcAByAG8AZgBpAGwARwBhAG0AbQBhACAAZABlACAA
+ZwByAGkAcwBvAHMAIABnAGUAbgDoAHIAaQBjAGEAIAAyAC4AMgBDHqUAdQAgAGgA7ABuAGgAIABNAOAA
+dQAgAHgA4QBtACAAQwBoAHUAbgBnACAARwBhAG0AbQBhACAAMgAuADIAUABlAHIAZgBpAGwAIABHAGUA
+bgDpAHIAaQBjAG8AIABkAGEAIABHAGEAbQBhACAAZABlACAAQwBpAG4AegBhAHMAIAAyACwAMgQXBDAE
+MwQwBDsETAQ9BDAAIABHAHIAYQB5AC0EMwQwBDwEMAAgADIALgAyAFAAcgBvAGYAaQBsACAAZwDpAG4A
+6QByAGkAcQB1AGUAIABnAHIAaQBzACAAZwBhAG0AbQBhACAAMgAsADIAwQBsAHQAYQBsAOEAbgBvAHMA
+IABzAHoA/AByAGsAZQAgAGcAYQBtAG0AYQAgADIALgAykBp1KHBwlo5RSV6mACAAMgAuADIAIIJyX2lj
+z4/wAEcAZQBuAGUAcgBpAHMAawAgAGcAcgDlACAAZwBhAG0AbQBhACAAMgAsADIALQBwAHIAbwBmAGkA
+bABPAGIAZQBjAG4A4QAgAWEAZQBkAOEAIABnAGEAbQBhACAAMgAuADIF0gXQBd4F1AAgBdAF5AXVBegA
+IAXbBdwF3AXZACAAMgAuADIAUAByAG8AZgBpAGwAbwAgAGcAcgBpAGcAaQBvACAAZwBlAG4AZQByAGkA
+YwBvACAAZABlAGwAbABhACAAZwBhAG0AbQBhACAAMgAsADIARwBhAG0AYQAgAGcAcgBpACAAZwBlAG4A
+ZQByAGkAYwEDACAAMgAsADIAQQBsAGwAZwBlAG0AZQBpAG4AZQBzACAARwByAGEAdQBzAHQAdQBmAGUA
+bgAtAFAAcgBvAGYAaQBsACAARwBhAG0AbQBhACAAMgAsADLHfLwYACDWjMDJACCsELnIACAAMgAuADIA
+INUEuFzTDMd8Zm6QGnBwXqZ8+2VwACAAMgAuADIAIGPPj/Blh072TgCCLDCwMOwwpDCsMPMw3gAgADIA
+LgAyACAw1zDtMNUwoTCkMOsDkwO1A70DuQO6A8wAIAOTA7oDwQO5ACADkwOsA7wDvAOxACAAMgAuADIA
+UABlAHIAZgBpAGwAIABnAGUAbgDpAHIAaQBjAG8AIABkAGUAIABjAGkAbgB6AGUAbgB0AG8AcwAgAGQA
+YQAgAEcAYQBtAG0AYQAgADIALAAyAEEAbABnAGUAbQBlAGUAbgAgAGcAcgBpAGoAcwAgAGcAYQBtAG0A
+YQAgADIALAAyAC0AcAByAG8AZgBpAGUAbABQAGUAcgBmAGkAbAAgAGcAZQBuAOkAcgBpAGMAbwAgAGQA
+ZQAgAGcAYQBtAG0AYQAgAGQAZQAgAGcAcgBpAHMAZQBzACAAMgAsADIOIw4xDgcOKg41DkEOAQ4hDiEO
+Mg5ADgEOIw4iDkwOFw4xDkgOJw5EDhsAIAAyAC4AMgBHAGUAbgBlAGwAIABHAHIAaQAgAEcAYQBtAGEA
+IAAyACwAMgBZAGwAZQBpAG4AZQBuACAAaABhAHIAbQBhAGEAbgAgAGcAYQBtAG0AYQAgADIALAAyACAA
+LQBwAHIAbwBmAGkAaQBsAGkARwBlAG4AZQByAGkBDQBrAGkAIABHAHIAYQB5ACAARwBhAG0AbQBhACAA
+MgAuADIAIABwAHIAbwBmAGkAbABVAG4AaQB3AGUAcgBzAGEAbABuAHkAIABwAHIAbwBmAGkAbAAgAHMA
+egBhAHIAbwFbAGMAaQAgAGcAYQBtAG0AYQAgADIALAAyBB4EMQRJBDAETwAgBEEENQRABDAETwAgBDME
+MAQ8BDwEMAAgADIALAAyAC0EPwRABD4ERAQ4BDsETABHAGUAbgBlAHIAaQBjACAARwByAGEAeQAgAEcA
+YQBtAG0AYQAgADIALgAyACAAUAByAG8AZgBpAGwAZQY6BicGRQYnACAAMgAuADIAIAZEBkgGRgAgBjEG
+RQYnBi8GSgAgBjkGJwZFdGV4dAAAAABDb3B5cmlnaHQgQXBwbGUgSW5jLiwgMjAxMgAAWFlaIAAAAAAA
+APNRAAEAAAABFsxjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQA
+WQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA
+8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEB
+uQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsEC
+ywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAE
+LQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF
+5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH
++AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQK
+agqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYN
+QA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQ
+fhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYU
+JxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsY
+QBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMc
+zBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEh
+ziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgn
+SSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwt
+QS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38z
+uDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6
+sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5C
+MEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBK
+N0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxS
+x1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb
+5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1l
+kmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv
+0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6
+pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauG
+DoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiS
+EZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCe
+rp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr
+6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5
+wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/I
+Pci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjX
+XNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbn
+H+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3
+ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//4AO0iUmSEldTlNNdXRhYmxlRGF0YaNISipWTlNE
+YXRh0iUmTE1cTlNDb2xvclNwYWNlok4qXE5TQ29sb3JTcGFjZdIlJlBRV05TQ29sb3KiUCrSJSZTVFdO
+U0ltYWdlolMqXxAPTlNLZXllZEFyY2hpdmVy0VdYVHJvb3SAAQAIABEAGgAjAC0AMgA3AEwAUgBdAGQA
+awB4AH8AhwCJAIsAkACSAJQAmwCgAKsArQCvALEAtgC5ALsAvQC/AMEAxgDdAN8A4QmpCa4JuQnCCdUJ
+2QnkCe0J8gn6Cf0KAgoRChUKIAooCjUKQgpXClwKYApiCmQKZgpvCnQKegqCCoQKhgqICooKjwqXHAMc
+BRwKHBgcHBwjHCgcNRw4HEUcShxSHFUcWhxiHGUcdxx6HH8AAAAAAAACAQAAAAAAAABZAAAAAAAAAAAA
+AAAAAAAcgQ
+</mutableData>
+ </image>
+ </resources>
</document>
diff --git a/DWA140Menu/Defaults.framework/Defaults b/DWA140Menu/Defaults.framework/Defaults
deleted file mode 120000
index dcb2762..0000000
--- a/DWA140Menu/Defaults.framework/Defaults
+++ /dev/null
@@ -1 +0,0 @@
-Versions/Current/Defaults \ No newline at end of file
diff --git a/DWA140Menu/Defaults.framework/Headers b/DWA140Menu/Defaults.framework/Headers
deleted file mode 120000
index a177d2a..0000000
--- a/DWA140Menu/Defaults.framework/Headers
+++ /dev/null
@@ -1 +0,0 @@
-Versions/Current/Headers \ No newline at end of file
diff --git a/DWA140Menu/Defaults.framework/Modules b/DWA140Menu/Defaults.framework/Modules
deleted file mode 120000
index 5736f31..0000000
--- a/DWA140Menu/Defaults.framework/Modules
+++ /dev/null
@@ -1 +0,0 @@
-Versions/Current/Modules \ No newline at end of file
diff --git a/DWA140Menu/Defaults.framework/Resources b/DWA140Menu/Defaults.framework/Resources
deleted file mode 120000
index 953ee36..0000000
--- a/DWA140Menu/Defaults.framework/Resources
+++ /dev/null
@@ -1 +0,0 @@
-Versions/Current/Resources \ No newline at end of file
diff --git a/DWA140Menu/Defaults.framework/Versions/A/Defaults b/DWA140Menu/Defaults.framework/Versions/A/Defaults
deleted file mode 100755
index b4d1b19..0000000
--- a/DWA140Menu/Defaults.framework/Versions/A/Defaults
+++ /dev/null
Binary files differ
diff --git a/DWA140Menu/Defaults.framework/Versions/A/Headers/Defaults-Swift.h b/DWA140Menu/Defaults.framework/Versions/A/Headers/Defaults-Swift.h
deleted file mode 100644
index 38bd706..0000000
--- a/DWA140Menu/Defaults.framework/Versions/A/Headers/Defaults-Swift.h
+++ /dev/null
@@ -1,189 +0,0 @@
-// Generated by Apple Swift version 4.2.1 effective-4.1.50 (swiftlang-1000.11.42 clang-1000.11.45.1)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wgcc-compat"
-
-#if !defined(__has_include)
-# define __has_include(x) 0
-#endif
-#if !defined(__has_attribute)
-# define __has_attribute(x) 0
-#endif
-#if !defined(__has_feature)
-# define __has_feature(x) 0
-#endif
-#if !defined(__has_warning)
-# define __has_warning(x) 0
-#endif
-
-#if __has_include(<swift/objc-prologue.h>)
-# include <swift/objc-prologue.h>
-#endif
-
-#pragma clang diagnostic ignored "-Wauto-import"
-#include <objc/NSObject.h>
-#include <stdint.h>
-#include <stddef.h>
-#include <stdbool.h>
-
-#if !defined(SWIFT_TYPEDEFS)
-# define SWIFT_TYPEDEFS 1
-# if __has_include(<uchar.h>)
-# include <uchar.h>
-# elif !defined(__cplusplus)
-typedef uint_least16_t char16_t;
-typedef uint_least32_t char32_t;
-# endif
-typedef float swift_float2 __attribute__((__ext_vector_type__(2)));
-typedef float swift_float3 __attribute__((__ext_vector_type__(3)));
-typedef float swift_float4 __attribute__((__ext_vector_type__(4)));
-typedef double swift_double2 __attribute__((__ext_vector_type__(2)));
-typedef double swift_double3 __attribute__((__ext_vector_type__(3)));
-typedef double swift_double4 __attribute__((__ext_vector_type__(4)));
-typedef int swift_int2 __attribute__((__ext_vector_type__(2)));
-typedef int swift_int3 __attribute__((__ext_vector_type__(3)));
-typedef int swift_int4 __attribute__((__ext_vector_type__(4)));
-typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2)));
-typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3)));
-typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4)));
-#endif
-
-#if !defined(SWIFT_PASTE)
-# define SWIFT_PASTE_HELPER(x, y) x##y
-# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
-#endif
-#if !defined(SWIFT_METATYPE)
-# define SWIFT_METATYPE(X) Class
-#endif
-#if !defined(SWIFT_CLASS_PROPERTY)
-# if __has_feature(objc_class_property)
-# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__
-# else
-# define SWIFT_CLASS_PROPERTY(...)
-# endif
-#endif
-
-#if __has_attribute(objc_runtime_name)
-# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
-#else
-# define SWIFT_RUNTIME_NAME(X)
-#endif
-#if __has_attribute(swift_name)
-# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X)))
-#else
-# define SWIFT_COMPILE_NAME(X)
-#endif
-#if __has_attribute(objc_method_family)
-# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X)))
-#else
-# define SWIFT_METHOD_FAMILY(X)
-#endif
-#if __has_attribute(noescape)
-# define SWIFT_NOESCAPE __attribute__((noescape))
-#else
-# define SWIFT_NOESCAPE
-#endif
-#if __has_attribute(warn_unused_result)
-# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result))
-#else
-# define SWIFT_WARN_UNUSED_RESULT
-#endif
-#if __has_attribute(noreturn)
-# define SWIFT_NORETURN __attribute__((noreturn))
-#else
-# define SWIFT_NORETURN
-#endif
-#if !defined(SWIFT_CLASS_EXTRA)
-# define SWIFT_CLASS_EXTRA
-#endif
-#if !defined(SWIFT_PROTOCOL_EXTRA)
-# define SWIFT_PROTOCOL_EXTRA
-#endif
-#if !defined(SWIFT_ENUM_EXTRA)
-# define SWIFT_ENUM_EXTRA
-#endif
-#if !defined(SWIFT_CLASS)
-# if __has_attribute(objc_subclassing_restricted)
-# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
-# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
-# else
-# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
-# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
-# endif
-#endif
-
-#if !defined(SWIFT_PROTOCOL)
-# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
-# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
-#endif
-
-#if !defined(SWIFT_EXTENSION)
-# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
-#endif
-
-#if !defined(OBJC_DESIGNATED_INITIALIZER)
-# if __has_attribute(objc_designated_initializer)
-# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
-# else
-# define OBJC_DESIGNATED_INITIALIZER
-# endif
-#endif
-#if !defined(SWIFT_ENUM_ATTR)
-# if defined(__has_attribute) && __has_attribute(enum_extensibility)
-# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility)))
-# else
-# define SWIFT_ENUM_ATTR(_extensibility)
-# endif
-#endif
-#if !defined(SWIFT_ENUM)
-# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
-# if __has_feature(generalized_swift_name)
-# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type
-# else
-# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility)
-# endif
-#endif
-#if !defined(SWIFT_UNAVAILABLE)
-# define SWIFT_UNAVAILABLE __attribute__((unavailable))
-#endif
-#if !defined(SWIFT_UNAVAILABLE_MSG)
-# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg)))
-#endif
-#if !defined(SWIFT_AVAILABILITY)
-# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__)))
-#endif
-#if !defined(SWIFT_DEPRECATED)
-# define SWIFT_DEPRECATED __attribute__((deprecated))
-#endif
-#if !defined(SWIFT_DEPRECATED_MSG)
-# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__)))
-#endif
-#if __has_feature(attribute_diagnose_if_objc)
-# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning")))
-#else
-# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg)
-#endif
-#if __has_feature(modules)
-@import Foundation;
-#endif
-
-#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"
-#pragma clang diagnostic ignored "-Wduplicate-method-arg"
-#if __has_warning("-Wpragma-clang-attribute")
-# pragma clang diagnostic ignored "-Wpragma-clang-attribute"
-#endif
-#pragma clang diagnostic ignored "-Wunknown-pragmas"
-#pragma clang diagnostic ignored "-Wnullability"
-
-#if __has_attribute(external_source_symbol)
-# pragma push_macro("any")
-# undef any
-# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="Defaults",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol))
-# pragma pop_macro("any")
-#endif
-
-
-
-#if __has_attribute(external_source_symbol)
-# pragma clang attribute pop
-#endif
-#pragma clang diagnostic pop
diff --git a/DWA140Menu/Defaults.framework/Versions/A/Modules/Defaults.swiftmodule/x86_64.swiftdoc b/DWA140Menu/Defaults.framework/Versions/A/Modules/Defaults.swiftmodule/x86_64.swiftdoc
deleted file mode 100644
index 0a87fad..0000000
--- a/DWA140Menu/Defaults.framework/Versions/A/Modules/Defaults.swiftmodule/x86_64.swiftdoc
+++ /dev/null
Binary files differ
diff --git a/DWA140Menu/Defaults.framework/Versions/A/Modules/Defaults.swiftmodule/x86_64.swiftmodule b/DWA140Menu/Defaults.framework/Versions/A/Modules/Defaults.swiftmodule/x86_64.swiftmodule
deleted file mode 100644
index a044703..0000000
--- a/DWA140Menu/Defaults.framework/Versions/A/Modules/Defaults.swiftmodule/x86_64.swiftmodule
+++ /dev/null
Binary files differ
diff --git a/DWA140Menu/Defaults.framework/Versions/A/Modules/module.modulemap b/DWA140Menu/Defaults.framework/Versions/A/Modules/module.modulemap
deleted file mode 100644
index 3724766..0000000
--- a/DWA140Menu/Defaults.framework/Versions/A/Modules/module.modulemap
+++ /dev/null
@@ -1,4 +0,0 @@
-framework module Defaults {
- header "Defaults-Swift.h"
- requires objc
-}
diff --git a/DWA140Menu/Defaults.framework/Versions/A/Resources/Info.plist b/DWA140Menu/Defaults.framework/Versions/A/Resources/Info.plist
deleted file mode 100644
index d5977e5..0000000
--- a/DWA140Menu/Defaults.framework/Versions/A/Resources/Info.plist
+++ /dev/null
@@ -1,51 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
- <key>BuildMachineOSBuild</key>
- <string>18C54</string>
- <key>CFBundleDevelopmentRegion</key>
- <string>en</string>
- <key>CFBundleExecutable</key>
- <string>Defaults</string>
- <key>CFBundleIdentifier</key>
- <string>com.Defaults.Defaults-macOS</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundleName</key>
- <string>Defaults</string>
- <key>CFBundlePackageType</key>
- <string>FMWK</string>
- <key>CFBundleShortVersionString</key>
- <string>0.2.2</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleSupportedPlatforms</key>
- <array>
- <string>MacOSX</string>
- </array>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>DTCompiler</key>
- <string>com.apple.compilers.llvm.clang.1_0</string>
- <key>DTPlatformBuild</key>
- <string>10B61</string>
- <key>DTPlatformVersion</key>
- <string>GM</string>
- <key>DTSDKBuild</key>
- <string>18B71</string>
- <key>DTSDKName</key>
- <string>macosx10.14</string>
- <key>DTXcode</key>
- <string>1010</string>
- <key>DTXcodeBuild</key>
- <string>10B61</string>
- <key>NSHumanReadableCopyright</key>
- <string>MIT License © Sindre Sorhus</string>
- <key>UIDeviceFamily</key>
- <array>
- <integer>1</integer>
- <integer>2</integer>
- </array>
-</dict>
-</plist>
diff --git a/DWA140Menu/Defaults.framework/Versions/Current b/DWA140Menu/Defaults.framework/Versions/Current
deleted file mode 120000
index 8c7e5a6..0000000
--- a/DWA140Menu/Defaults.framework/Versions/Current
+++ /dev/null
@@ -1 +0,0 @@
-A \ No newline at end of file
diff --git a/DWA140Menu/ViewController.swift b/DWA140Menu/ViewController.swift
index 79d01c9..ea3fe55 100644
--- a/DWA140Menu/ViewController.swift
+++ b/DWA140Menu/ViewController.swift
@@ -2,26 +2,62 @@
// ViewController.swift
// DWA140Menu
//
-// Created by Dylan Bolger on 9/3/18.
// Copyright © 2018 Dylan Bolger. All rights reserved.
//
import Cocoa
class ViewController: NSViewController {
-
- override func viewDidLoad() {
- super.viewDidLoad()
-
- // Do any additional setup after loading the view.
+
+ @IBOutlet weak var versionLabel: NSTextField!
+ @IBOutlet weak var loginButton: NSButton!
+ @IBOutlet weak var awesomeSubtitle: NSTextField!
+ @IBOutlet weak var loginSubtitle: NSTextField!
+
+ let defaults : UserDefaults = .standard
+ let delegate = NSApplication.shared.delegate as! AppDelegate
+ var loginLaunch = UserDefaults.standard.bool(forKey: "loginLaunch")
+
+ override func viewDidAppear() {
+ loginButton.state = loginLaunch ? .on : .off
+ versionLabel.stringValue = "Version " + (Bundle.main.infoDictionary!["CFBundleShortVersionString"] as? String)!
+ if loginLaunch {
+ loginSubtitle.stringValue = "This application will launch when you login."
+ }
}
-
- override var representedObject: Any? {
- didSet {
- // Update the view, if already loaded.
+
+ func toggleLoginLaunch() {
+ loginButton.state = !loginLaunch ? .on : .off
+ defaults.set(!loginLaunch, forKey: "loginLaunch")
+ loginLaunch = !loginLaunch
+ }
+
+ @IBAction func loginButtonPressed(_ sender: NSButton) {
+ toggleLoginLaunch()
+ if loginLaunch {
+ loginSubtitle.stringValue = "This application will launch when you login."
+ } else {
+ loginSubtitle.stringValue = "An even easier way to get connected, faster."
}
}
-
-
+ @IBAction func triedAwesome(_ sender: NSButton) {
+ // it's an invisible button on top of the disabled checkbox.
+ awesomeSubtitle.stringValue = "You can't change the fact that you're awesome."
+ DispatchQueue.main.asyncAfter(deadline: .now() + 3.0) {
+ self.awesomeSubtitle.stringValue = "It's just a fact."
+ }
+ }
+
+ @IBAction func sourceButtonPressed(_ sender: NSButton) {
+ NSWorkspace.shared.open((URL(string:"https://github.com/fivepixels/dwa140shortcut") ?? nil)!)
+ }
+
+ @IBAction func coffeePressed(_ sender: NSButton) {
+ NSWorkspace.shared.open((URL(string: "https://paypal.me/fivepixels") ?? nil)!)
+ }
+
+ @IBAction func loveButtonPressed(_ sender: NSButton) {
+ NSWorkspace.shared.open((URL(string:"https://twitter.com/o5pxels") ?? nil)!)
+ }
}