├── .travis.yml
├── BoardForGitHub
├── BoardForGitHub.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── fincher.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ ├── xcshareddata
│ │ └── xcschemes
│ │ │ └── BoardForGitHub.xcscheme
│ └── xcuserdata
│ │ └── fincher.xcuserdatad
│ │ ├── xcdebugger
│ │ └── Breakpoints_v2.xcbkptlist
│ │ └── xcschemes
│ │ └── xcschememanagement.plist
├── BoardForGitHub.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcuserdata
│ │ └── fincher.xcuserdatad
│ │ ├── UserInterfaceState.xcuserstate
│ │ └── xcdebugger
│ │ └── Breakpoints_v2.xcbkptlist
├── BoardForGitHub
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── 10241024w.png
│ │ │ ├── 1024128w.png
│ │ │ ├── 102416w.png
│ │ │ ├── 1024256w-1.png
│ │ │ ├── 1024256w.png
│ │ │ ├── 102432w-1.png
│ │ │ ├── 102432w.png
│ │ │ ├── 1024512w-1.png
│ │ │ ├── 1024512w.png
│ │ │ ├── 102464w.png
│ │ │ └── Contents.json
│ │ ├── Contents.json
│ │ └── Icon.imageset
│ │ │ ├── 10241024w.png
│ │ │ ├── 1024512w-1.png
│ │ │ └── Contents.json
│ ├── Base.lproj
│ │ └── Main.storyboard
│ ├── BoardForGitHub.entitlements
│ ├── Info.plist
│ ├── JZHeader.h
│ ├── JZHeader.m
│ ├── JZMainViewController.h
│ ├── JZMainViewController.m
│ ├── JZMainWindow.h
│ ├── JZMainWindow.m
│ ├── JZReachability.h
│ ├── JZReachability.m
│ ├── JZSettingsViewController.h
│ ├── JZSettingsViewController.m
│ ├── JZSettingsWindow.h
│ ├── JZSettingsWindow.m
│ ├── JZSettingsWindowController.h
│ ├── JZSettingsWindowController.m
│ ├── JZWebView.h
│ ├── JZWebView.m
│ ├── JZWindowController.h
│ ├── JZWindowController.m
│ ├── jquery-3.1.1.min.js
│ ├── main.m
│ ├── pace.css
│ └── pace.min.js
├── Podfile
├── Podfile.lock
└── Pods
│ ├── Crashlytics
│ ├── Crashlytics.framework
│ │ ├── README
│ │ └── submit
│ ├── OSX
│ │ └── Crashlytics.framework
│ │ │ ├── Crashlytics
│ │ │ ├── Headers
│ │ │ ├── Modules
│ │ │ ├── Resources
│ │ │ ├── Versions
│ │ │ ├── A
│ │ │ │ ├── Crashlytics
│ │ │ │ ├── Headers
│ │ │ │ │ ├── ANSCompatibility.h
│ │ │ │ │ ├── Answers.h
│ │ │ │ │ ├── CLSAttributes.h
│ │ │ │ │ ├── CLSLogging.h
│ │ │ │ │ ├── CLSReport.h
│ │ │ │ │ ├── CLSStackFrame.h
│ │ │ │ │ └── Crashlytics.h
│ │ │ │ ├── Modules
│ │ │ │ │ └── module.modulemap
│ │ │ │ └── Resources
│ │ │ │ │ └── Info.plist
│ │ │ └── Current
│ │ │ ├── run
│ │ │ ├── submit
│ │ │ └── uploadDSYM
│ ├── README.md
│ └── submit
│ ├── Fabric
│ ├── Fabric.framework
│ │ ├── README
│ │ └── run
│ ├── OSX
│ │ └── Fabric.framework
│ │ │ ├── Fabric
│ │ │ ├── Headers
│ │ │ ├── Modules
│ │ │ ├── Resources
│ │ │ ├── Versions
│ │ │ ├── A
│ │ │ │ ├── Fabric
│ │ │ │ ├── Headers
│ │ │ │ │ ├── FABAttributes.h
│ │ │ │ │ └── Fabric.h
│ │ │ │ ├── Modules
│ │ │ │ │ └── module.modulemap
│ │ │ │ └── Resources
│ │ │ │ │ └── Info.plist
│ │ │ └── Current
│ │ │ ├── run
│ │ │ └── uploadDSYM
│ ├── README.md
│ ├── run
│ ├── upload-symbols
│ └── uploadDSYM
│ ├── Headers
│ ├── Private
│ │ └── MASShortcut
│ │ │ ├── MASDictionaryTransformer.h
│ │ │ ├── MASHotKey.h
│ │ │ ├── MASKeyCodes.h
│ │ │ ├── MASKeyMasks.h
│ │ │ ├── MASLocalization.h
│ │ │ ├── MASShortcut.h
│ │ │ ├── MASShortcutBinder.h
│ │ │ ├── MASShortcutMonitor.h
│ │ │ ├── MASShortcutValidator.h
│ │ │ ├── MASShortcutView+Bindings.h
│ │ │ ├── MASShortcutView.h
│ │ │ └── Shortcut.h
│ └── Public
│ │ ├── Crashlytics
│ │ └── Crashlytics
│ │ │ ├── ANSCompatibility.h
│ │ │ ├── Answers.h
│ │ │ ├── CLSAttributes.h
│ │ │ ├── CLSLogging.h
│ │ │ ├── CLSReport.h
│ │ │ ├── CLSStackFrame.h
│ │ │ └── Crashlytics.h
│ │ ├── Fabric
│ │ └── Fabric
│ │ │ ├── FABAttributes.h
│ │ │ └── Fabric.h
│ │ └── MASShortcut
│ │ ├── MASDictionaryTransformer.h
│ │ ├── MASHotKey.h
│ │ ├── MASKeyCodes.h
│ │ ├── MASKeyMasks.h
│ │ ├── MASLocalization.h
│ │ ├── MASShortcut.h
│ │ ├── MASShortcutBinder.h
│ │ ├── MASShortcutMonitor.h
│ │ ├── MASShortcutValidator.h
│ │ ├── MASShortcutView+Bindings.h
│ │ ├── MASShortcutView.h
│ │ └── Shortcut.h
│ ├── MASShortcut
│ ├── Framework
│ │ ├── MASDictionaryTransformer.h
│ │ ├── MASDictionaryTransformer.m
│ │ ├── MASHotKey.h
│ │ ├── MASHotKey.m
│ │ ├── MASKeyCodes.h
│ │ ├── MASKeyMasks.h
│ │ ├── MASLocalization.h
│ │ ├── MASLocalization.m
│ │ ├── MASShortcut.h
│ │ ├── MASShortcut.m
│ │ ├── MASShortcut.modulemap
│ │ ├── MASShortcutBinder.h
│ │ ├── MASShortcutBinder.m
│ │ ├── MASShortcutMonitor.h
│ │ ├── MASShortcutMonitor.m
│ │ ├── MASShortcutValidator.h
│ │ ├── MASShortcutValidator.m
│ │ ├── MASShortcutView+Bindings.h
│ │ ├── MASShortcutView+Bindings.m
│ │ ├── MASShortcutView.h
│ │ ├── MASShortcutView.m
│ │ └── Shortcut.h
│ ├── LICENSE
│ ├── README.md
│ ├── cs.lproj
│ │ └── Localizable.strings
│ ├── de.lproj
│ │ └── Localizable.strings
│ ├── en.lproj
│ │ └── Localizable.strings
│ ├── es.lproj
│ │ └── Localizable.strings
│ ├── fr.lproj
│ │ └── Localizable.strings
│ ├── it.lproj
│ │ └── Localizable.strings
│ ├── ja.lproj
│ │ └── Localizable.strings
│ ├── ko.lproj
│ │ └── Localizable.strings
│ ├── nl.lproj
│ │ └── Localizable.strings
│ ├── pl.lproj
│ │ └── Localizable.strings
│ ├── ru.lproj
│ │ └── Localizable.strings
│ ├── zh-Hans.lproj
│ │ └── Localizable.strings
│ └── zh-Hant.lproj
│ │ └── Localizable.strings
│ ├── Manifest.lock
│ ├── Pods.xcodeproj
│ ├── project.pbxproj
│ └── xcuserdata
│ │ └── fincher.xcuserdatad
│ │ └── xcschemes
│ │ ├── MASShortcut-MASShortcut.xcscheme
│ │ ├── MASShortcut.xcscheme
│ │ ├── Pods-BoardForGitHub.xcscheme
│ │ └── xcschememanagement.plist
│ └── Target Support Files
│ ├── MASShortcut
│ ├── MASShortcut-dummy.m
│ ├── MASShortcut-prefix.pch
│ ├── MASShortcut.xcconfig
│ └── ResourceBundle-MASShortcut-Info.plist
│ └── Pods-BoardForGitHub
│ ├── Pods-BoardForGitHub-acknowledgements.markdown
│ ├── Pods-BoardForGitHub-acknowledgements.plist
│ ├── Pods-BoardForGitHub-dummy.m
│ ├── Pods-BoardForGitHub-frameworks.sh
│ ├── Pods-BoardForGitHub-resources.sh
│ ├── Pods-BoardForGitHub.debug.xcconfig
│ └── Pods-BoardForGitHub.release.xcconfig
├── DemoImgs
├── 1.jpg
├── 2.jpg
└── Banner.jpg
├── Design.sketch
├── README.md
└── docs
├── README.md
└── _config.yml
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: objective-c
2 | xcode_workspace: BoardForGitHub/BoardForGitHub.xcworkspace # path to your xcodeproj folder
3 | xcode_scheme: BoardForGitHub
4 | podfile: BoardForGitHub/Podfile
5 | osx_image: xcode8.3
6 | script: xcodebuild -workspace BoardForGitHub/BoardForGitHub.xcworkspace -scheme BoardForGitHub -configuration debug
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub.xcodeproj/project.xcworkspace/xcuserdata/fincher.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub.xcodeproj/project.xcworkspace/xcuserdata/fincher.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub.xcodeproj/xcshareddata/xcschemes/BoardForGitHub.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
39 |
40 |
41 |
42 |
43 |
44 |
54 |
56 |
62 |
63 |
64 |
65 |
66 |
67 |
73 |
75 |
81 |
82 |
83 |
84 |
86 |
87 |
90 |
91 |
92 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub.xcodeproj/xcuserdata/fincher.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
8 |
20 |
21 |
22 |
24 |
36 |
37 |
38 |
40 |
52 |
53 |
54 |
56 |
68 |
69 |
70 |
72 |
84 |
85 |
86 |
88 |
100 |
101 |
102 |
103 |
104 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub.xcodeproj/xcuserdata/fincher.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | BoardForGitHub.xcscheme_^#shared#^_
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 0D98E26D1DEC8A0800F130E2
16 |
17 | primary
18 |
19 |
20 | 0DD101DD1EA5F223003DB52C
21 |
22 | primary
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub.xcworkspace/xcuserdata/fincher.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub.xcworkspace/xcuserdata/fincher.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub.xcworkspace/xcuserdata/fincher.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
8 |
14 |
15 |
16 |
18 |
30 |
31 |
32 |
34 |
46 |
47 |
48 |
50 |
62 |
63 |
64 |
66 |
78 |
79 |
80 |
82 |
92 |
93 |
94 |
95 |
96 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2016/11/28.
6 | // Copyright © 2016年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface AppDelegate : NSObject
12 |
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2016/11/28.
6 | // Copyright © 2016年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import "AppDelegate.h"
10 | #import "JZMainWindow.h"
11 | #import "JZMainViewController.h"
12 | #import "JZSettingsWindowController.h"
13 | #import "JZHeader.h"
14 | @import WebKit;
15 | #import
16 |
17 | @interface AppDelegate ()
18 | @property (strong,nonatomic) JZMainWindow *mainWindow;
19 | @property (strong,nonatomic) JZSettingsWindowController *settingsWindowController;
20 | @end
21 |
22 | @implementation AppDelegate
23 |
24 | - (BOOL)applicationShouldTerminateAfterLastWindowClosed:(NSApplication *)theApplication {
25 | return YES;
26 | }
27 |
28 | - (void)applicationDidFinishLaunching:(NSNotification *)aNotification
29 | {
30 |
31 | // Insert code here to initialize your application
32 | [[NSUserDefaults standardUserDefaults] registerDefaults:@{ @"NSApplicationCrashOnExceptions": @YES }];
33 | // [Fabric with:@[[Crashlytics class]]];
34 |
35 | self.mainWindow = (JZMainWindow *)[[NSApplication sharedApplication] mainWindow];
36 | JZMainViewController *controller = (JZMainViewController *)self.mainWindow.contentViewController;
37 | [NSApp setServicesProvider:controller];
38 |
39 | [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(JZ_NOTIFICATON_TYPE_OPEN_SETTINGS:) name:NSStringFromJZNotificationType(JZ_NOTIFICATON_TYPE_OPEN_SETTINGS) object:nil];
40 | [[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self];
41 |
42 | [[MASShortcutBinder sharedBinder]
43 | bindShortcutWithDefaultsKey:NSStringFromJZUserDefaultsType(JZ_USER_DEFAULTS_SHOW_BOARD_SHORTCUT)
44 | toAction:^{
45 | [NSApp activateIgnoringOtherApps:YES];
46 | [self.mainWindow makeKeyAndOrderFront:self];
47 | }];
48 | }
49 | - (void)JZ_NOTIFICATON_TYPE_OPEN_SETTINGS:(NSNotification *)notif
50 | {
51 | NSStoryboard *storyBoard = [NSStoryboard storyboardWithName:@"Main" bundle:nil];
52 | self.settingsWindowController = [storyBoard instantiateControllerWithIdentifier:@"JZSettingsWindowController"];
53 | [self.settingsWindowController.window makeKeyAndOrderFront:self];
54 |
55 | }
56 | #pragma mark - Menus Buttons
57 | - (IBAction)reloadBoardButtonPressed:(id)sender
58 | {
59 | [[NSNotificationCenter defaultCenter] postNotificationName:NSStringFromJZNotificationType(JZ_NOTIFICATON_TYPE_RELOAD_BOARD) object:nil];
60 | }
61 | - (IBAction)revertBoardButtonPressed:(id)sender
62 | {
63 | [[NSNotificationCenter defaultCenter] postNotificationName:NSStringFromJZNotificationType(JZ_NOTIFICATON_TYPE_REVERT_BOARD) object:nil];
64 | }
65 | - (IBAction)forwardBoardButtonPressed:(id)sender {
66 | [[NSNotificationCenter defaultCenter] postNotificationName:NSStringFromJZNotificationType(JZ_NOTIFICATON_TYPE_FORWARD_BOARD) object:nil];
67 | }
68 |
69 | - (IBAction)setAsDefaultPressed:(id)sender
70 | {
71 | [[NSNotificationCenter defaultCenter] postNotificationName:NSStringFromJZNotificationType(JZ_NOTIFICATON_TYPE_SET_DEFAULT_BOARD) object:nil];
72 | }
73 |
74 | - (IBAction)openButtonPressed:(id)sender
75 | {
76 | [[NSNotificationCenter defaultCenter] postNotificationName:NSStringFromJZNotificationType(JZ_NOTIFICATON_TYPE_SWITCH_BOARD) object:nil];
77 | }
78 | - (IBAction)showBoardMenuPressed:(id)sender
79 | {
80 | [[NSNotificationCenter defaultCenter] postNotificationName:NSStringFromJZNotificationType(JZ_NOTIFICATON_TYPE_SHOW_BOARD_MENU) object:nil];
81 | }
82 | - (IBAction)addCardsFromPressed:(id)sender
83 | {
84 | [[NSNotificationCenter defaultCenter] postNotificationName:NSStringFromJZNotificationType(JZ_NOTIFICATON_TYPE_ADD_CARDS_FROM) object:nil];
85 | }
86 |
87 | - (void)applicationWillTerminate:(NSNotification *)aNotification {
88 | // Insert code here to tear down your application
89 | }
90 | - (IBAction)clearCookie:(id)sender
91 | {
92 | WKWebsiteDataStore *dateStore = [WKWebsiteDataStore defaultDataStore];
93 | [dateStore fetchDataRecordsOfTypes:[WKWebsiteDataStore allWebsiteDataTypes]
94 | completionHandler:^(NSArray * __nonnull records) {
95 | for (WKWebsiteDataRecord *record in records)
96 | {
97 | [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:record.dataTypes
98 | forDataRecords:@[record]
99 | completionHandler:^{
100 | NSLog(@"Cookies for %@ deleted successfully",record.displayName);
101 | }];
102 | [[NSNotificationCenter defaultCenter] postNotificationName:NSStringFromJZNotificationType(JZ_NOTIFICATON_TYPE_RELOAD_BOARD) object:nil];
103 | }
104 | }];
105 | }
106 | - (BOOL)application:(NSApplication *)sender
107 | openFile:(NSString *)filename
108 | {
109 | return YES;
110 | }
111 |
112 |
113 | #pragma mark - NSUserNotificationCenterDelegate
114 | - (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center
115 | shouldPresentNotification:(NSUserNotification *)notification
116 | {
117 | return YES;
118 | }
119 | - (void)userNotificationCenter:(NSUserNotificationCenter *)center didActivateNotification:(NSUserNotification *)notification
120 | {
121 | switch (notification.activationType)
122 | {
123 | case NSUserNotificationActivationTypeActionButtonClicked:
124 | {
125 | [[NSPasteboard generalPasteboard] clearContents];
126 | [[NSPasteboard generalPasteboard] setString:notification.informativeText forType:NSStringPboardType];
127 | }
128 | break;
129 | default:
130 | break;
131 | }
132 | }
133 | @end
134 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/10241024w.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/10241024w.png
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/1024128w.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/1024128w.png
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/102416w.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/102416w.png
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/1024256w-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/1024256w-1.png
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/1024256w.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/1024256w.png
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/102432w-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/102432w-1.png
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/102432w.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/102432w.png
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/1024512w-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/1024512w-1.png
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/1024512w.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/1024512w.png
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/102464w.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/102464w.png
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "size" : "16x16",
5 | "idiom" : "mac",
6 | "filename" : "102416w.png",
7 | "scale" : "1x"
8 | },
9 | {
10 | "size" : "16x16",
11 | "idiom" : "mac",
12 | "filename" : "102432w.png",
13 | "scale" : "2x"
14 | },
15 | {
16 | "size" : "32x32",
17 | "idiom" : "mac",
18 | "filename" : "102432w-1.png",
19 | "scale" : "1x"
20 | },
21 | {
22 | "size" : "32x32",
23 | "idiom" : "mac",
24 | "filename" : "102464w.png",
25 | "scale" : "2x"
26 | },
27 | {
28 | "size" : "128x128",
29 | "idiom" : "mac",
30 | "filename" : "1024128w.png",
31 | "scale" : "1x"
32 | },
33 | {
34 | "size" : "128x128",
35 | "idiom" : "mac",
36 | "filename" : "1024256w.png",
37 | "scale" : "2x"
38 | },
39 | {
40 | "size" : "256x256",
41 | "idiom" : "mac",
42 | "filename" : "1024256w-1.png",
43 | "scale" : "1x"
44 | },
45 | {
46 | "size" : "256x256",
47 | "idiom" : "mac",
48 | "filename" : "1024512w.png",
49 | "scale" : "2x"
50 | },
51 | {
52 | "size" : "512x512",
53 | "idiom" : "mac",
54 | "filename" : "1024512w-1.png",
55 | "scale" : "1x"
56 | },
57 | {
58 | "size" : "512x512",
59 | "idiom" : "mac",
60 | "filename" : "10241024w.png",
61 | "scale" : "2x"
62 | }
63 | ],
64 | "info" : {
65 | "version" : 1,
66 | "author" : "xcode"
67 | }
68 | }
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "version" : 1,
4 | "author" : "xcode"
5 | }
6 | }
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/Icon.imageset/10241024w.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub/Assets.xcassets/Icon.imageset/10241024w.png
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/Icon.imageset/1024512w-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/BoardForGitHub/Assets.xcassets/Icon.imageset/1024512w-1.png
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Assets.xcassets/Icon.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "1024512w-1.png",
6 | "scale" : "1x"
7 | },
8 | {
9 | "idiom" : "universal",
10 | "filename" : "10241024w.png",
11 | "scale" : "2x"
12 | },
13 | {
14 | "idiom" : "universal",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/BoardForGitHub.entitlements:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | com.apple.security.app-sandbox
6 |
7 | com.apple.security.network.client
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | $(EXECUTABLE_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0.11
21 | CFBundleVersion
22 | 290
23 | LSApplicationCategoryType
24 | public.app-category.productivity
25 | LSMinimumSystemVersion
26 | $(MACOSX_DEPLOYMENT_TARGET)
27 | NSHumanReadableCopyright
28 | Copyright © 2017年 Justin Fincher. All rights reserved.
29 | NSMainStoryboardFile
30 | Main
31 | NSPrincipalClass
32 | NSApplication
33 | NSServices
34 |
35 |
36 | NSKeyEquivalent
37 |
38 | NSMenuItem
39 |
40 | default
41 | Set As Current Board For GitHub
42 |
43 | NSMessage
44 | setAsCurrentBoard
45 | NSPortName
46 | BoardForGitHub
47 | NSRequiredContext
48 |
49 | NSRestricted
50 |
51 | NSSendTypes
52 |
53 | NSStringPboardType
54 |
55 | NSServiceDescription
56 |
57 | Set As Current Board For GitHub
58 |
59 |
60 |
61 | NSUserNotificationAlertStyle
62 | alert
63 |
64 |
65 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZHeader.h:
--------------------------------------------------------------------------------
1 | //
2 | // JZHeader.h
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2017/4/29.
6 | // Copyright © 2017年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #ifndef JZHeader_h
10 | #define JZHeader_h
11 |
12 | #pragma mark - Enum Factory Macros
13 | // expansion macro for enum value definition
14 | #define ENUM_VALUE(name,assign) name assign,
15 |
16 | // expansion macro for enum to string conversion
17 | #define ENUM_CASE(name,assign) case name: return @#name;
18 |
19 | // expansion macro for string to enum conversion
20 | #define ENUM_STRCMP(name,assign) if ([string isEqualToString:@#name]) return name;
21 |
22 | /// declare the access function and define enum values
23 | #define DECLARE_ENUM(EnumType,ENUM_DEF) \
24 | typedef enum EnumType { \
25 | ENUM_DEF(ENUM_VALUE) \
26 | }EnumType; \
27 | NSString *NSStringFrom##EnumType(EnumType value); \
28 | EnumType EnumType##FromNSString(NSString *string); \
29 |
30 | // Define Functions
31 | #define DEFINE_ENUM(EnumType, ENUM_DEF) \
32 | NSString *NSStringFrom##EnumType(EnumType value) \
33 | { \
34 | switch(value) \
35 | { \
36 | ENUM_DEF(ENUM_CASE) \
37 | default: return @""; \
38 | } \
39 | } \
40 | EnumType EnumType##FromNSString(NSString *string) \
41 | { \
42 | ENUM_DEF(ENUM_STRCMP) \
43 | return (EnumType)0; \
44 | }
45 |
46 | #define JZ_NOTIFICATON_TYPE(XX) \
47 | XX(JZ_NOTIFICATON_TYPE_OPEN_SETTINGS, ) \
48 | XX(JZ_NOTIFICATON_TYPE_RELOAD_BOARD, ) \
49 | XX(JZ_NOTIFICATON_TYPE_SWITCH_BOARD, ) \
50 | XX(JZ_NOTIFICATON_TYPE_REVERT_BOARD, ) \
51 | XX(JZ_NOTIFICATON_TYPE_SET_DEFAULT_BOARD, ) \
52 | XX(JZ_NOTIFICATON_TYPE_FORWARD_BOARD, ) \
53 | XX(JZ_NOTIFICATON_TYPE_ADD_CARDS_FROM, ) \
54 | XX(JZ_NOTIFICATON_TYPE_SHOW_BOARD_MENU, )
55 | DECLARE_ENUM(JZNotificationType, JZ_NOTIFICATON_TYPE)
56 |
57 | #define JZ_USER_DEFAULTS_TYPE(XX) \
58 | XX(JZ_USER_DEFAULTS_SHOW_BOARD_SHORTCUT, ) \
59 | XX(JZ_USER_DEFAULTS_LAUNCH_URL, ) \
60 | XX(JZ_USER_DEFAULTS_VIBRANCY_BACKGROUND, ) \
61 | XX(JZ_USER_DEFAULTS_ICON_BADGE_SHOW_TOTAL_CARDS_NUM, )
62 | DECLARE_ENUM(JZUserDefaultsType, JZ_USER_DEFAULTS_TYPE)
63 |
64 | #define NSTouchBarAvailable (NSClassFromString(@"NSTouchBar") != nil)
65 |
66 | #endif /* JZHeader_h */
67 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZHeader.m:
--------------------------------------------------------------------------------
1 | //
2 | // JZHeader.m
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2017/4/29.
6 | // Copyright © 2017年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "JZHeader.h"
11 |
12 | DEFINE_ENUM(JZNotificationType, JZ_NOTIFICATON_TYPE)
13 | DEFINE_ENUM(JZUserDefaultsType, JZ_USER_DEFAULTS_TYPE)
14 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZMainViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // JZMainViewController.h
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2016/11/29.
6 | // Copyright © 2016年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import
10 | #import "JZWebView.h"
11 |
12 | @interface JZMainViewController : NSViewController
13 | @property (weak) IBOutlet NSView *windowButtonsContainerView;
14 | - (void)setAsCurrentBoard:(NSPasteboard *)pboard
15 | userData:(NSString *)userData error:(NSString **)error;
16 | @end
17 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZMainWindow.h:
--------------------------------------------------------------------------------
1 | //
2 | // JZMainWindow.h
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2016/11/29.
6 | // Copyright © 2016年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JZMainWindow : NSWindow
12 |
13 |
14 |
15 | @end
16 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZMainWindow.m:
--------------------------------------------------------------------------------
1 | //
2 | // JZMainWindow.m
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2016/11/29.
6 | // Copyright © 2016年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import "JZMainWindow.h"
10 |
11 | @interface JZMainWindow()
12 |
13 | @property (assign) NSPoint initialLocation;
14 |
15 | @end
16 |
17 | @implementation JZMainWindow
18 |
19 | - (BOOL)canBecomeKeyWindow
20 | {
21 | return YES;
22 | }
23 |
24 | - (BOOL)canBecomeMainWindow
25 | {
26 | return YES;
27 | }
28 |
29 | - (void)sendEvent:(NSEvent *)theEvent
30 | {
31 | [super sendEvent:theEvent];
32 | if ([theEvent type] == NSLeftMouseDown || [theEvent type] == NSLeftMouseDragged)
33 | {
34 | if ([theEvent locationInWindow].y < [theEvent window].frame.size.height - 50.0f)
35 | {
36 | return;
37 | }
38 | }
39 | if ([theEvent type] == NSLeftMouseDown)
40 | {
41 | [self mouseDown:theEvent];
42 | }
43 | else if ([theEvent type] == NSLeftMouseDragged)
44 | {
45 | [self mouseDragged:theEvent];
46 | }
47 | }
48 |
49 | - (void)mouseDown:(NSEvent *)theEvent
50 | {
51 | self.initialLocation = [theEvent locationInWindow];
52 | }
53 |
54 | - (void)mouseDragged:(NSEvent *)theEvent
55 | {
56 | NSPoint currentLocation;
57 | NSPoint newOrigin;
58 |
59 | NSRect screenFrame = [[NSScreen mainScreen] frame];
60 | NSRect windowFrame = [self frame];
61 |
62 | currentLocation = [NSEvent mouseLocation];
63 | newOrigin.x = currentLocation.x - self.initialLocation.x;
64 | newOrigin.y = currentLocation.y - self.initialLocation.y;
65 |
66 | // Don't let window get dragged up under the menu bar
67 | if( (newOrigin.y+windowFrame.size.height) > (screenFrame.origin.y+screenFrame.size.height) ){
68 | newOrigin.y=screenFrame.origin.y + (screenFrame.size.height-windowFrame.size.height);
69 | }
70 |
71 | //go ahead and move the window to the new location
72 | [self setFrameOrigin:newOrigin];
73 | }
74 |
75 | @end
76 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZReachability.h:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright (c) 2011, Tony Million.
3 | All rights reserved.
4 |
5 | Redistribution and use in source and binary forms, with or without
6 | modification, are permitted provided that the following conditions are met:
7 |
8 | 1. Redistributions of source code must retain the above copyright notice, this
9 | list of conditions and the following disclaimer.
10 |
11 | 2. Redistributions in binary form must reproduce the above copyright notice,
12 | this list of conditions and the following disclaimer in the documentation
13 | and/or other materials provided with the distribution.
14 |
15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
19 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25 | POSSIBILITY OF SUCH DAMAGE.
26 | */
27 |
28 | #import
29 | #import
30 |
31 | //! Project version number for MacOSReachability.
32 | FOUNDATION_EXPORT double ReachabilityVersionNumber;
33 |
34 | //! Project version string for MacOSReachability.
35 | FOUNDATION_EXPORT const unsigned char ReachabilityVersionString[];
36 |
37 | /**
38 | * Create NS_ENUM macro if it does not exist on the targeted version of iOS or OS X.
39 | *
40 | * @see http://nshipster.com/ns_enum-ns_options/
41 | **/
42 | #ifndef NS_ENUM
43 | #define NS_ENUM(_type, _name) enum _name : _type _name; enum _name : _type
44 | #endif
45 |
46 | extern NSString *const kReachabilityChangedNotification;
47 |
48 | typedef NS_ENUM(NSInteger, NetworkStatus) {
49 | // Apple NetworkStatus Compatible Names.
50 | NotReachable = 0,
51 | ReachableViaWiFi = 2,
52 | ReachableViaWWAN = 1
53 | };
54 |
55 | @class JZReachability;
56 |
57 | typedef void (^NetworkReachable)(JZReachability * reachability);
58 | typedef void (^NetworkUnreachable)(JZReachability * reachability);
59 | typedef void (^NetworkReachability)(JZReachability * reachability, SCNetworkConnectionFlags flags);
60 |
61 |
62 | @interface JZReachability : NSObject
63 |
64 | @property (nonatomic, copy) NetworkReachable reachableBlock;
65 | @property (nonatomic, copy) NetworkUnreachable unreachableBlock;
66 | @property (nonatomic, copy) NetworkReachability reachabilityBlock;
67 |
68 | @property (nonatomic, assign) BOOL reachableOnWWAN;
69 |
70 |
71 | +(instancetype)reachabilityWithHostname:(NSString*)hostname;
72 | // This is identical to the function above, but is here to maintain
73 | //compatibility with Apples original code. (see .m)
74 | +(instancetype)reachabilityWithHostName:(NSString*)hostname;
75 | +(instancetype)reachabilityForInternetConnection;
76 | +(instancetype)reachabilityWithAddress:(void *)hostAddress;
77 | +(instancetype)reachabilityForLocalWiFi;
78 |
79 | -(instancetype)initWithReachabilityRef:(SCNetworkReachabilityRef)ref;
80 |
81 | -(BOOL)startNotifier;
82 | -(void)stopNotifier;
83 |
84 | -(BOOL)isReachable;
85 | -(BOOL)isReachableViaWWAN;
86 | -(BOOL)isReachableViaWiFi;
87 |
88 | // WWAN may be available, but not active until a connection has been established.
89 | // WiFi may require a connection for VPN on Demand.
90 | -(BOOL)isConnectionRequired; // Identical DDG variant.
91 | -(BOOL)connectionRequired; // Apple's routine.
92 | // Dynamic, on demand connection?
93 | -(BOOL)isConnectionOnDemand;
94 | // Is user intervention required?
95 | -(BOOL)isInterventionRequired;
96 |
97 | -(NetworkStatus)currentReachabilityStatus;
98 | -(SCNetworkReachabilityFlags)reachabilityFlags;
99 | -(NSString*)currentReachabilityString;
100 | -(NSString*)currentReachabilityFlags;
101 |
102 | @end
103 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZSettingsViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // JZSettingsViewController.h
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2017/4/29.
6 | // Copyright © 2017年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JZSettingsViewController : NSViewController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZSettingsViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // JZSettingsViewController.m
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2017/4/29.
6 | // Copyright © 2017年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import "JZSettingsViewController.h"
10 | #import "JZHeader.h"
11 | #import
12 |
13 | @interface JZSettingsViewController ()
14 | @property (weak) IBOutlet NSButton *vibrancyBackgroundButton;
15 | @property (weak) IBOutlet MASShortcutView *shortcutView;
16 | @end
17 |
18 | @implementation JZSettingsViewController
19 |
20 | - (void)viewDidLoad {
21 | [super viewDidLoad];
22 | // Do view setup here.
23 | [self.vibrancyBackgroundButton setState:([[NSUserDefaults standardUserDefaults] boolForKey:NSStringFromJZUserDefaultsType(JZ_USER_DEFAULTS_VIBRANCY_BACKGROUND)] == YES)];
24 |
25 | self.shortcutView.associatedUserDefaultsKey = NSStringFromJZUserDefaultsType(JZ_USER_DEFAULTS_SHOW_BOARD_SHORTCUT);
26 | }
27 |
28 |
29 | - (IBAction)vibrancyBackgroundStateChanged:(NSButton *)sender
30 | {
31 | bool enabled = ([sender state] == NSOnState);
32 | [[NSUserDefaults standardUserDefaults] setBool:enabled forKey:NSStringFromJZUserDefaultsType(JZ_USER_DEFAULTS_VIBRANCY_BACKGROUND)];
33 | [[NSNotificationCenter defaultCenter] postNotificationName:NSStringFromJZNotificationType(JZ_NOTIFICATON_TYPE_RELOAD_BOARD) object:nil];
34 | }
35 |
36 | @end
37 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZSettingsWindow.h:
--------------------------------------------------------------------------------
1 | //
2 | // JZSettingsWindow.h
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2017/4/29.
6 | // Copyright © 2017年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JZSettingsWindow : NSWindow
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZSettingsWindow.m:
--------------------------------------------------------------------------------
1 | //
2 | // JZSettingsWindow.m
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2017/4/29.
6 | // Copyright © 2017年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import "JZSettingsWindow.h"
10 |
11 | @implementation JZSettingsWindow
12 |
13 | - (BOOL)canBecomeKeyWindow
14 | {
15 | return YES;
16 | }
17 |
18 |
19 | @end
20 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZSettingsWindowController.h:
--------------------------------------------------------------------------------
1 | //
2 | // JZSettingsController.h
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2017/4/29.
6 | // Copyright © 2017年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JZSettingsWindowController : NSWindowController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZSettingsWindowController.m:
--------------------------------------------------------------------------------
1 | //
2 | // JZSettingsController.m
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2017/4/29.
6 | // Copyright © 2017年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import "JZSettingsWindowController.h"
10 |
11 | @interface JZSettingsWindowController ()
12 |
13 | @end
14 |
15 | @implementation JZSettingsWindowController
16 |
17 | - (void)windowDidLoad {
18 | [super windowDidLoad];
19 |
20 | self.window.titleVisibility = NSWindowTitleHidden;
21 | self.window.titlebarAppearsTransparent = YES;
22 | self.window.styleMask |= NSFullSizeContentViewWindowMask;
23 | self.window.movableByWindowBackground = true;
24 | self.window.styleMask |= NSWindowStyleMaskFullSizeContentView;
25 | self.window.styleMask |= NSBorderlessWindowMask;
26 | }
27 |
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZWebView.h:
--------------------------------------------------------------------------------
1 | //
2 | // JZWebView.h
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2016/11/29.
6 | // Copyright © 2016年 Justin Fincher. All rights reserved.
7 | //
8 | @import WebKit;
9 | #import
10 | @interface JZWebView : WKWebView
11 |
12 | - (void)fixCSS;
13 |
14 | - (void)isGitHubLogined:(void (^ _Nullable)( NSNumber * _Nonnull isOrNot))completionHandler;
15 | - (void)runJS:(NSString *_Nullable)str;
16 |
17 | - (void)toggleBoardMenu;
18 | - (void)toggleAddCardsFrom;
19 |
20 | @end
21 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZWindowController.h:
--------------------------------------------------------------------------------
1 | //
2 | // JZWindowController.h
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2016/11/29.
6 | // Copyright © 2016年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | @interface JZWindowController : NSWindowController
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/JZWindowController.m:
--------------------------------------------------------------------------------
1 | //
2 | // JZWindowController.m
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2016/11/29.
6 | // Copyright © 2016年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import "JZWindowController.h"
10 | #import "JZMainViewController.h"
11 |
12 | @interface JZWindowController ()
13 | @end
14 |
15 | @implementation JZWindowController
16 |
17 | - (void)windowDidLoad {
18 | [super windowDidLoad];
19 |
20 | self.window.delegate = self;
21 | self.window.titleVisibility = NSWindowTitleHidden;
22 | self.window.titlebarAppearsTransparent = YES;
23 | self.window.styleMask |= NSFullSizeContentViewWindowMask;
24 |
25 | [self updateWindowButtons];
26 | }
27 |
28 |
29 |
30 | -(void)updateWindowButtons
31 | {
32 | [self removeWindowButtons];
33 | [self addWindowButtons];
34 |
35 | }
36 | - (void)removeWindowButtons
37 | {
38 | NSButton *closeButton = [self.window standardWindowButton:NSWindowCloseButton];
39 | NSButton *zoomButton = [self.window standardWindowButton:NSWindowZoomButton];
40 | NSButton *minimizeButton = [self.window standardWindowButton:NSWindowMiniaturizeButton];
41 | [closeButton removeFromSuperview];
42 | [zoomButton removeFromSuperview];
43 | [minimizeButton removeFromSuperview];
44 | }
45 | - (void)addWindowButtons
46 | {
47 | NSView *containerView = [(JZMainViewController *)(self.contentViewController) windowButtonsContainerView];
48 | NSButton *closeButton = [self.window standardWindowButton:NSWindowCloseButton];
49 | NSButton *zoomButton = [self.window standardWindowButton:NSWindowZoomButton];
50 | NSButton *minimizeButton = [self.window standardWindowButton:NSWindowMiniaturizeButton];
51 | [containerView addSubview:closeButton];
52 | [containerView addSubview:zoomButton];
53 | [containerView addSubview:minimizeButton];
54 | closeButton.frame = NSMakeRect(10,(containerView.frame.size.height - 16)/2.0f,14,16);
55 | minimizeButton.frame = NSMakeRect(30,(containerView.frame.size.height - 16)/2.0f,14,16);
56 | zoomButton.frame = NSMakeRect(50,(containerView.frame.size.height - 16)/2.0f,14,16);
57 | }
58 |
59 |
60 | #pragma mark - NSWindowDelegate
61 | - (void)windowDidEndLiveResize:(NSNotification *)notification
62 | {
63 | [self updateWindowButtons];
64 | }
65 | - (void)windowWillStartLiveResize:(NSNotification *)notification
66 | {
67 | // [self addWindowButtons];
68 | }
69 | - (void)windowDidResize:(NSNotification *)notification
70 | {
71 | [self updateWindowButtons];
72 | }
73 | - (void)windowWillEnterFullScreen:(NSNotification *)notification
74 | {
75 | // [self removeWindowButtons];
76 | }
77 | - (void)windowDidEnterFullScreen:(NSNotification *)notification
78 | {
79 | [self updateWindowButtons];
80 | }
81 | - (void)windowWillExitFullScreen:(NSNotification *)notification
82 | {
83 | // [self removeWindowButtons];
84 | }
85 | - (void)windowDidExitFullScreen:(NSNotification *)notification
86 | {
87 | [self updateWindowButtons];
88 | }
89 |
90 | @end
91 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // BoardForGitHub
4 | //
5 | // Created by Justin Fincher on 2016/11/28.
6 | // Copyright © 2016年 Justin Fincher. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | int main(int argc, const char * argv[]) {
12 | return NSApplicationMain(argc, argv);
13 | }
14 |
--------------------------------------------------------------------------------
/BoardForGitHub/BoardForGitHub/pace.css:
--------------------------------------------------------------------------------
1 | .pace {
2 | -webkit-pointer-events: none;
3 | pointer-events: none;
4 |
5 | -webkit-user-select: none;
6 | -moz-user-select: none;
7 | user-select: none;
8 | }
9 |
10 | .pace-inactive {
11 | display: none;
12 | }
13 |
14 | .pace .pace-progress {
15 | background: #29d;
16 | position: fixed;
17 | z-index: 2000;
18 | top: 0;
19 | right: 100%;
20 | width: 100%;
21 | height: 2px;
22 | }
23 |
--------------------------------------------------------------------------------
/BoardForGitHub/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | # platform :ios, '9.0'
3 |
4 | target 'BoardForGitHub' do
5 | # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
6 | # use_frameworks!
7 |
8 | # Pods for BoardForGitHub
9 | pod 'MASShortcut'
10 | pod 'Fabric'
11 | pod 'Crashlytics'
12 |
13 | end
14 |
--------------------------------------------------------------------------------
/BoardForGitHub/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Crashlytics (3.8.4):
3 | - Fabric (~> 1.6.3)
4 | - Fabric (1.6.11)
5 | - MASShortcut (2.3.6)
6 |
7 | DEPENDENCIES:
8 | - Crashlytics
9 | - Fabric
10 | - MASShortcut
11 |
12 | SPEC CHECKSUMS:
13 | Crashlytics: 79e236942ca1e7fc641df1feb9a275360a78ab6a
14 | Fabric: 5911403591946b8228ab1c51d98f1d7137e863c6
15 | MASShortcut: 9c215e8a8a78f3d01ce56da48e2730ab66b538fa
16 |
17 | PODFILE CHECKSUM: 40dc6c9e3f089bce7dc831aa0e758ae95a7cd3d4
18 |
19 | COCOAPODS: 1.2.0
20 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/Crashlytics.framework/README:
--------------------------------------------------------------------------------
1 | We've now combined all our supported platforms into a single podspec. As a result, we moved our submit script to a new location for Cocoapods projects: ${PODS_ROOT}/Crashlytics/submit. To avoid breaking functionality that references the old location of the submit, we've placed this dummy script that calls to the correct location, while providing a helpful warning if it is invoked. This bridge for backwards compatibility will be removed in a future release, so please heed the warning!
2 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/Crashlytics.framework/submit:
--------------------------------------------------------------------------------
1 | if [[ -z $PODS_ROOT ]]; then
2 | echo "error: The submit binary delivered by cocoapods is in a new location, under '$"{"PODS_ROOT"}"/Crashlytics/submit'. This script was put in place for backwards compatibility, but it relies on PODS_ROOT, which does not have a value in your current setup. Please update the path to the submit binary to fix this issue."
3 | else
4 | echo "warning: The submit script is now located at '$"{"PODS_ROOT"}"/Crashlytics/submit'. To remove this warning, update your path to point to this new location."
5 | sh "${PODS_ROOT}/Crashlytics/submit" "$@"
6 | fi
7 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Crashlytics:
--------------------------------------------------------------------------------
1 | Versions/Current/Crashlytics
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Headers:
--------------------------------------------------------------------------------
1 | Versions/Current/Headers
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Modules:
--------------------------------------------------------------------------------
1 | Versions/Current/Modules
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Resources:
--------------------------------------------------------------------------------
1 | Versions/Current/Resources
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Versions/A/Crashlytics:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Versions/A/Crashlytics
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Versions/A/Headers/ANSCompatibility.h:
--------------------------------------------------------------------------------
1 | //
2 | // ANSCompatibility.h
3 | // AnswersKit
4 | //
5 | // Copyright (c) 2015 Crashlytics, Inc. All rights reserved.
6 | //
7 |
8 | #pragma once
9 |
10 | #if !__has_feature(nullability)
11 | #define nonnull
12 | #define nullable
13 | #define _Nullable
14 | #define _Nonnull
15 | #endif
16 |
17 | #ifndef NS_ASSUME_NONNULL_BEGIN
18 | #define NS_ASSUME_NONNULL_BEGIN
19 | #endif
20 |
21 | #ifndef NS_ASSUME_NONNULL_END
22 | #define NS_ASSUME_NONNULL_END
23 | #endif
24 |
25 | #if __has_feature(objc_generics)
26 | #define ANS_GENERIC_NSARRAY(type) NSArray
27 | #define ANS_GENERIC_NSDICTIONARY(key_type,object_key) NSDictionary
28 | #else
29 | #define ANS_GENERIC_NSARRAY(type) NSArray
30 | #define ANS_GENERIC_NSDICTIONARY(key_type,object_key) NSDictionary
31 | #endif
32 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Versions/A/Headers/CLSAttributes.h:
--------------------------------------------------------------------------------
1 | //
2 | // CLSAttributes.h
3 | // Crashlytics
4 | //
5 | // Copyright (c) 2015 Crashlytics, Inc. All rights reserved.
6 | //
7 |
8 | #pragma once
9 |
10 | #define CLS_DEPRECATED(x) __attribute__ ((deprecated(x)))
11 |
12 | #if !__has_feature(nullability)
13 | #define nonnull
14 | #define nullable
15 | #define _Nullable
16 | #define _Nonnull
17 | #endif
18 |
19 | #ifndef NS_ASSUME_NONNULL_BEGIN
20 | #define NS_ASSUME_NONNULL_BEGIN
21 | #endif
22 |
23 | #ifndef NS_ASSUME_NONNULL_END
24 | #define NS_ASSUME_NONNULL_END
25 | #endif
26 |
27 | #if __has_feature(objc_generics)
28 | #define CLS_GENERIC_NSARRAY(type) NSArray
29 | #define CLS_GENERIC_NSDICTIONARY(key_type,object_key) NSDictionary
30 | #else
31 | #define CLS_GENERIC_NSARRAY(type) NSArray
32 | #define CLS_GENERIC_NSDICTIONARY(key_type,object_key) NSDictionary
33 | #endif
34 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Versions/A/Headers/CLSLogging.h:
--------------------------------------------------------------------------------
1 | //
2 | // CLSLogging.h
3 | // Crashlytics
4 | //
5 | // Copyright (c) 2015 Crashlytics, Inc. All rights reserved.
6 | //
7 | #ifdef __OBJC__
8 | #import "CLSAttributes.h"
9 | #import
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 | #endif
13 |
14 |
15 |
16 | /**
17 | *
18 | * The CLS_LOG macro provides as easy way to gather more information in your log messages that are
19 | * sent with your crash data. CLS_LOG prepends your custom log message with the function name and
20 | * line number where the macro was used. If your app was built with the DEBUG preprocessor macro
21 | * defined CLS_LOG uses the CLSNSLog function which forwards your log message to NSLog and CLSLog.
22 | * If the DEBUG preprocessor macro is not defined CLS_LOG uses CLSLog only.
23 | *
24 | * Example output:
25 | * -[AppDelegate login:] line 134 $ login start
26 | *
27 | * If you would like to change this macro, create a new header file, unset our define and then define
28 | * your own version. Make sure this new header file is imported after the Crashlytics header file.
29 | *
30 | * #undef CLS_LOG
31 | * #define CLS_LOG(__FORMAT__, ...) CLSNSLog...
32 | *
33 | **/
34 | #ifdef __OBJC__
35 | #ifdef DEBUG
36 | #define CLS_LOG(__FORMAT__, ...) CLSNSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
37 | #else
38 | #define CLS_LOG(__FORMAT__, ...) CLSLog((@"%s line %d $ " __FORMAT__), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__)
39 | #endif
40 | #endif
41 |
42 | /**
43 | *
44 | * Add logging that will be sent with your crash data. This logging will not show up in the system.log
45 | * and will only be visible in your Crashlytics dashboard.
46 | *
47 | **/
48 |
49 | #ifdef __OBJC__
50 | OBJC_EXTERN void CLSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);
51 | OBJC_EXTERN void CLSLogv(NSString *format, va_list ap) NS_FORMAT_FUNCTION(1,0);
52 |
53 | /**
54 | *
55 | * Add logging that will be sent with your crash data. This logging will show up in the system.log
56 | * and your Crashlytics dashboard. It is not recommended for Release builds.
57 | *
58 | **/
59 | OBJC_EXTERN void CLSNSLog(NSString *format, ...) NS_FORMAT_FUNCTION(1,2);
60 | OBJC_EXTERN void CLSNSLogv(NSString *format, va_list ap) NS_FORMAT_FUNCTION(1,0);
61 |
62 |
63 | NS_ASSUME_NONNULL_END
64 | #endif
65 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Versions/A/Headers/CLSReport.h:
--------------------------------------------------------------------------------
1 | //
2 | // CLSReport.h
3 | // Crashlytics
4 | //
5 | // Copyright (c) 2015 Crashlytics, Inc. All rights reserved.
6 | //
7 |
8 | #import
9 | #import "CLSAttributes.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | /**
14 | * The CLSCrashReport protocol is deprecated. See the CLSReport class and the CrashyticsDelegate changes for details.
15 | **/
16 | @protocol CLSCrashReport
17 |
18 | @property (nonatomic, copy, readonly) NSString *identifier;
19 | @property (nonatomic, copy, readonly) NSDictionary *customKeys;
20 | @property (nonatomic, copy, readonly) NSString *bundleVersion;
21 | @property (nonatomic, copy, readonly) NSString *bundleShortVersionString;
22 | @property (nonatomic, readonly, nullable) NSDate *crashedOnDate;
23 | @property (nonatomic, copy, readonly) NSString *OSVersion;
24 | @property (nonatomic, copy, readonly) NSString *OSBuildVersion;
25 |
26 | @end
27 |
28 | /**
29 | * The CLSReport exposes an interface to the phsyical report that Crashlytics has created. You can
30 | * use this class to get information about the event, and can also set some values after the
31 | * event has occured.
32 | **/
33 | @interface CLSReport : NSObject
34 |
35 | - (instancetype)init NS_UNAVAILABLE;
36 | + (instancetype)new NS_UNAVAILABLE;
37 |
38 | /**
39 | * Returns the session identifier for the report.
40 | **/
41 | @property (nonatomic, copy, readonly) NSString *identifier;
42 |
43 | /**
44 | * Returns the custom key value data for the report.
45 | **/
46 | @property (nonatomic, copy, readonly) NSDictionary *customKeys;
47 |
48 | /**
49 | * Returns the CFBundleVersion of the application that generated the report.
50 | **/
51 | @property (nonatomic, copy, readonly) NSString *bundleVersion;
52 |
53 | /**
54 | * Returns the CFBundleShortVersionString of the application that generated the report.
55 | **/
56 | @property (nonatomic, copy, readonly) NSString *bundleShortVersionString;
57 |
58 | /**
59 | * Returns the date that the report was created.
60 | **/
61 | @property (nonatomic, copy, readonly) NSDate *dateCreated;
62 |
63 | /**
64 | * Returns the os version that the application crashed on.
65 | **/
66 | @property (nonatomic, copy, readonly) NSString *OSVersion;
67 |
68 | /**
69 | * Returns the os build version that the application crashed on.
70 | **/
71 | @property (nonatomic, copy, readonly) NSString *OSBuildVersion;
72 |
73 | /**
74 | * Returns YES if the report contains any crash information, otherwise returns NO.
75 | **/
76 | @property (nonatomic, assign, readonly) BOOL isCrash;
77 |
78 | /**
79 | * You can use this method to set, after the event, additional custom keys. The rules
80 | * and semantics for this method are the same as those documented in Crashlytics.h. Be aware
81 | * that the maximum size and count of custom keys is still enforced, and you can overwrite keys
82 | * and/or cause excess keys to be deleted by using this method.
83 | **/
84 | - (void)setObjectValue:(nullable id)value forKey:(NSString *)key;
85 |
86 | /**
87 | * Record an application-specific user identifier. See Crashlytics.h for details.
88 | **/
89 | @property (nonatomic, copy, nullable) NSString * userIdentifier;
90 |
91 | /**
92 | * Record a user name. See Crashlytics.h for details.
93 | **/
94 | @property (nonatomic, copy, nullable) NSString * userName;
95 |
96 | /**
97 | * Record a user email. See Crashlytics.h for details.
98 | **/
99 | @property (nonatomic, copy, nullable) NSString * userEmail;
100 |
101 | @end
102 |
103 | NS_ASSUME_NONNULL_END
104 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Versions/A/Headers/CLSStackFrame.h:
--------------------------------------------------------------------------------
1 | //
2 | // CLSStackFrame.h
3 | // Crashlytics
4 | //
5 | // Copyright 2015 Crashlytics, Inc. All rights reserved.
6 | //
7 |
8 | #import
9 | #import "CLSAttributes.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | /**
14 | *
15 | * This class is used in conjunction with -[Crashlytics recordCustomExceptionName:reason:frameArray:] to
16 | * record information about non-ObjC/C++ exceptions. All information included here will be displayed
17 | * in the Crashlytics UI, and can influence crash grouping. Be particularly careful with the use of the
18 | * address property. If set, Crashlytics will attempt symbolication and could overwrite other properities
19 | * in the process.
20 | *
21 | **/
22 | @interface CLSStackFrame : NSObject
23 |
24 | + (instancetype)stackFrame;
25 | + (instancetype)stackFrameWithAddress:(NSUInteger)address;
26 | + (instancetype)stackFrameWithSymbol:(NSString *)symbol;
27 |
28 | @property (nonatomic, copy, nullable) NSString *symbol;
29 | @property (nonatomic, copy, nullable) NSString *rawSymbol;
30 | @property (nonatomic, copy, nullable) NSString *library;
31 | @property (nonatomic, copy, nullable) NSString *fileName;
32 | @property (nonatomic, assign) uint32_t lineNumber;
33 | @property (nonatomic, assign) uint64_t offset;
34 | @property (nonatomic, assign) uint64_t address;
35 |
36 | @end
37 |
38 | NS_ASSUME_NONNULL_END
39 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Versions/A/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module Crashlytics {
2 | header "Crashlytics.h"
3 | header "Answers.h"
4 | header "ANSCompatibility.h"
5 | header "CLSLogging.h"
6 | header "CLSReport.h"
7 | header "CLSStackFrame.h"
8 | header "CLSAttributes.h"
9 |
10 | export *
11 |
12 | link "z"
13 | link "c++"
14 | }
15 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Versions/A/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 15G31
7 | CFBundleDevelopmentRegion
8 | English
9 | CFBundleExecutable
10 | Crashlytics
11 | CFBundleIdentifier
12 | com.twitter.crashlytics.mac
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | Crashlytics
17 | CFBundlePackageType
18 | FMWK
19 | CFBundleShortVersionString
20 | 3.8.4
21 | CFBundleSignature
22 | ????
23 | CFBundleSupportedPlatforms
24 |
25 | MacOSX
26 |
27 | CFBundleVersion
28 | 121
29 | DTCompiler
30 | com.apple.compilers.llvm.clang.1_0
31 | DTPlatformBuild
32 | 7D1014
33 | DTPlatformVersion
34 | GM
35 | DTSDKBuild
36 | 15E60
37 | DTSDKName
38 | macosx10.11
39 | DTXcode
40 | 0731
41 | DTXcodeBuild
42 | 7D1014
43 | NSHumanReadableCopyright
44 | Copyright © 2016 Crashlytics, Inc. All rights reserved.
45 | UIDeviceFamily
46 |
47 | 3
48 | 2
49 | 1
50 | 4
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/Versions/Current:
--------------------------------------------------------------------------------
1 | A
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/run:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # run
4 | #
5 | # Copyright (c) 2015 Crashlytics. All rights reserved.
6 |
7 | # Figure out where we're being called from
8 | DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
9 |
10 | # Quote path in case of spaces or special chars
11 | DIR="\"${DIR}"
12 |
13 | PATH_SEP="/"
14 | VALIDATE_COMMAND="uploadDSYM\" $@ validate run-script"
15 | UPLOAD_COMMAND="uploadDSYM\" $@ run-script"
16 |
17 | # Ensure params are as expected, run in sync mode to validate
18 | eval $DIR$PATH_SEP$VALIDATE_COMMAND
19 | return_code=$?
20 |
21 | if [[ $return_code != 0 ]]; then
22 | exit $return_code
23 | fi
24 |
25 | # Verification passed, upload dSYM in background to prevent Xcode from waiting
26 | # Note: Validation is performed again before upload.
27 | # Output can still be found in Console.app
28 | eval $DIR$PATH_SEP$UPLOAD_COMMAND > /dev/null 2>&1 &
29 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/submit:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/submit
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/uploadDSYM:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/Pods/Crashlytics/OSX/Crashlytics.framework/uploadDSYM
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | Part of [Twitter Fabric](https://www.fabric.io), [Crashlytics](http://try.crashlytics.com/) offers the most powerful, yet lightest weight crash reporting solution for iOS. Crashlytics also provides real-time analytics through [Answers](https://answers.io/) and app distributions to testers using [Beta](http://try.crashlytics.com/beta/).
4 |
5 | ## Setup
6 |
7 | 1. Visit [https://fabric.io/sign_up](https://fabric.io/sign_up) to create your Fabric account and to download Fabric.app.
8 |
9 | 1. Open Fabric.app, login and select the Crashlytics SDK.
10 |
11 | 
12 |
13 | 1. The Fabric app automatically detects when a project uses CocoaPods and gives you the option to install via the Podfile or Xcode.
14 |
15 | 
16 |
17 | 1. Select the Podfile option and follow the installation instructions to update your Podfile. **Note:** the Crashlytics Pod includes Answers. If you have Answers included as a separate Pod it should be removed from your Podfile to avoid duplicate symbol errors.
18 |
19 | ```
20 | pod 'Fabric'
21 | pod 'Crashlytics'
22 | ```
23 |
24 | 1. Run `pod install`
25 |
26 | 1. Add a Run Script Build Phase and build your app.
27 |
28 | 
29 |
30 | 1. Initialize the SDK by inserting code outlined in the Fabric.app.
31 |
32 | 1. Run your app to finish the installation.
33 |
34 | ## Resources
35 |
36 | * [Documentation](https://docs.fabric.io/ios/crashlytics/index.html)
37 | * [Forums](https://twittercommunity.com/c/fabric/crashlytics)
38 | * [Website](http://try.crashlytics.com/)
39 | * Follow us on Twitter: [@fabric](https://twitter.com/fabric) and [@crashlytics](https://twitter.com/crashlytics)
40 | * Follow us on Periscope: [Fabric](https://periscope.tv/fabric) and [TwitterDev](https://periscope.tv/twitterdev)
41 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Crashlytics/submit:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/Pods/Crashlytics/submit
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/Fabric.framework/README:
--------------------------------------------------------------------------------
1 | We've now combined all our supported platforms into a single podspec. As a result, we moved our run script to a new location for Cocoapods projects: ${PODS_ROOT}/Fabric/run. To avoid breaking builds that reference the old location of the run script, we've placed this dummy script that calls to the correct location, while providing a helpful warning in Xcode if it is invoked. This bridge for backwards compatibility will be removed in a future release, so please heed the warning!
2 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/Fabric.framework/run:
--------------------------------------------------------------------------------
1 | if [[ -z $PODS_ROOT ]]; then
2 | echo "error: The run binary delivered by cocoapods is in a new location, under '$"{"PODS_ROOT"}"/Fabric/run'. This script was put in place for backwards compatibility, but it relies on PODS_ROOT, which does not have a value in your current setup. Please update the path to the run binary to fix this issue."
3 | else
4 | echo "warning: The run script is now located at '$"{"PODS_ROOT"}"/Fabric/run'. To remove this warning, update your Run Script Build Phase to point to this new location."
5 | sh "${PODS_ROOT}/Fabric/run" "$@"
6 | fi
7 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/Fabric:
--------------------------------------------------------------------------------
1 | Versions/Current/Fabric
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/Headers:
--------------------------------------------------------------------------------
1 | Versions/Current/Headers
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/Modules:
--------------------------------------------------------------------------------
1 | Versions/Current/Modules
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/Resources:
--------------------------------------------------------------------------------
1 | Versions/Current/Resources
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/Versions/A/Fabric:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/Versions/A/Fabric
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/Versions/A/Headers/FABAttributes.h:
--------------------------------------------------------------------------------
1 | //
2 | // FABAttributes.h
3 | // Fabric
4 | //
5 | // Copyright (C) 2015 Twitter, Inc.
6 | //
7 | // Licensed under the Apache License, Version 2.0 (the "License");
8 | // you may not use this file except in compliance with the License.
9 | // You may obtain a copy of the License at
10 | //
11 | // http://www.apache.org/licenses/LICENSE-2.0
12 | //
13 | // Unless required by applicable law or agreed to in writing, software
14 | // distributed under the License is distributed on an "AS IS" BASIS,
15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | // See the License for the specific language governing permissions and
17 | // limitations under the License.
18 | //
19 |
20 | #pragma once
21 |
22 | #define FAB_UNAVAILABLE(x) __attribute__((unavailable(x)))
23 |
24 | #if !__has_feature(nullability)
25 | #define nonnull
26 | #define nullable
27 | #define _Nullable
28 | #define _Nonnull
29 | #endif
30 |
31 | #ifndef NS_ASSUME_NONNULL_BEGIN
32 | #define NS_ASSUME_NONNULL_BEGIN
33 | #endif
34 |
35 | #ifndef NS_ASSUME_NONNULL_END
36 | #define NS_ASSUME_NONNULL_END
37 | #endif
38 |
39 |
40 | /**
41 | * The following macros are defined here to provide
42 | * backwards compatability. If you are still using
43 | * them you should migrate to the native nullability
44 | * macros.
45 | */
46 | #define fab_nullable nullable
47 | #define fab_nonnull nonnull
48 | #define FAB_NONNULL __fab_nonnull
49 | #define FAB_NULLABLE __fab_nullable
50 | #define FAB_START_NONNULL NS_ASSUME_NONNULL_BEGIN
51 | #define FAB_END_NONNULL NS_ASSUME_NONNULL_END
52 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/Versions/A/Headers/Fabric.h:
--------------------------------------------------------------------------------
1 | //
2 | // Fabric.h
3 | // Fabric
4 | //
5 | // Copyright (C) 2015 Twitter, Inc.
6 | //
7 | // Licensed under the Apache License, Version 2.0 (the "License");
8 | // you may not use this file except in compliance with the License.
9 | // You may obtain a copy of the License at
10 | //
11 | // http://www.apache.org/licenses/LICENSE-2.0
12 | //
13 | // Unless required by applicable law or agreed to in writing, software
14 | // distributed under the License is distributed on an "AS IS" BASIS,
15 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 | // See the License for the specific language governing permissions and
17 | // limitations under the License.
18 | //
19 |
20 | #import
21 | #import "FABAttributes.h"
22 |
23 | NS_ASSUME_NONNULL_BEGIN
24 |
25 | #if TARGET_OS_IPHONE
26 | #if __IPHONE_OS_VERSION_MIN_REQUIRED < 60000
27 | #error "Fabric's minimum iOS version is 6.0"
28 | #endif
29 | #else
30 | #if __MAC_OS_X_VERSION_MIN_REQUIRED < 1070
31 | #error "Fabric's minimum OS X version is 10.7"
32 | #endif
33 | #endif
34 |
35 | /**
36 | * Fabric Base. Coordinates configuration and starts all provided kits.
37 | */
38 | @interface Fabric : NSObject
39 |
40 | /**
41 | * Initialize Fabric and all provided kits. Call this method within your App Delegate's `application:didFinishLaunchingWithOptions:` and provide the kits you wish to use.
42 | *
43 | * For example, in Objective-C:
44 | *
45 | * `[Fabric with:@[[Crashlytics class], [Twitter class], [Digits class], [MoPub class]]];`
46 | *
47 | * Swift:
48 | *
49 | * `Fabric.with([Crashlytics.self(), Twitter.self(), Digits.self(), MoPub.self()])`
50 | *
51 | * Only the first call to this method is honored. Subsequent calls are no-ops.
52 | *
53 | * @param kitClasses An array of kit Class objects
54 | *
55 | * @return Returns the shared Fabric instance. In most cases this can be ignored.
56 | */
57 | + (instancetype)with:(NSArray *)kitClasses;
58 |
59 | /**
60 | * Returns the Fabric singleton object.
61 | */
62 | + (instancetype)sharedSDK;
63 |
64 | /**
65 | * This BOOL enables or disables debug logging, such as kit version information. The default value is NO.
66 | */
67 | @property (nonatomic, assign) BOOL debug;
68 |
69 | /**
70 | * Unavailable. Use `+sharedSDK` to retrieve the shared Fabric instance.
71 | */
72 | - (id)init FAB_UNAVAILABLE("Use +sharedSDK to retrieve the shared Fabric instance.");
73 |
74 | /**
75 | * Unavailable. Use `+sharedSDK` to retrieve the shared Fabric instance.
76 | */
77 | + (instancetype)new FAB_UNAVAILABLE("Use +sharedSDK to retrieve the shared Fabric instance.");
78 |
79 | @end
80 |
81 | NS_ASSUME_NONNULL_END
82 |
83 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/Versions/A/Modules/module.modulemap:
--------------------------------------------------------------------------------
1 | framework module Fabric {
2 | umbrella header "Fabric.h"
3 |
4 | export *
5 | module * { export * }
6 | }
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/Versions/A/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildMachineOSBuild
6 | 15G31
7 | CFBundleDevelopmentRegion
8 | en
9 | CFBundleExecutable
10 | Fabric
11 | CFBundleIdentifier
12 | io.fabric.sdk.mac
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | Fabric
17 | CFBundlePackageType
18 | FMWK
19 | CFBundleShortVersionString
20 | 1.6.11
21 | CFBundleSignature
22 | ????
23 | CFBundleSupportedPlatforms
24 |
25 | MacOSX
26 |
27 | CFBundleVersion
28 | 60
29 | DTCompiler
30 | com.apple.compilers.llvm.clang.1_0
31 | DTPlatformBuild
32 | 7D1014
33 | DTPlatformVersion
34 | GM
35 | DTSDKBuild
36 | 15E60
37 | DTSDKName
38 | macosx10.11
39 | DTXcode
40 | 0731
41 | DTXcodeBuild
42 | 7D1014
43 | NSHumanReadableCopyright
44 | Copyright © 2015 Twitter. All rights reserved.
45 | UIDeviceFamily
46 |
47 | 3
48 | 2
49 | 1
50 | 4
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/Versions/Current:
--------------------------------------------------------------------------------
1 | A
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/run:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # run
4 | #
5 | # Copyright (c) 2015 Crashlytics. All rights reserved.
6 |
7 | # Figure out where we're being called from
8 | DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
9 |
10 | # Quote path in case of spaces or special chars
11 | DIR="\"${DIR}"
12 |
13 | PATH_SEP="/"
14 | VALIDATE_COMMAND="uploadDSYM\" $@ validate run-script"
15 | UPLOAD_COMMAND="uploadDSYM\" $@ run-script"
16 |
17 | # Ensure params are as expected, run in sync mode to validate
18 | eval $DIR$PATH_SEP$VALIDATE_COMMAND
19 | return_code=$?
20 |
21 | if [[ $return_code != 0 ]]; then
22 | exit $return_code
23 | fi
24 |
25 | # Verification passed, upload dSYM in background to prevent Xcode from waiting
26 | # Note: Validation is performed again before upload.
27 | # Output can still be found in Console.app
28 | eval $DIR$PATH_SEP$UPLOAD_COMMAND > /dev/null 2>&1 &
29 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/uploadDSYM:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/Pods/Fabric/OSX/Fabric.framework/uploadDSYM
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # Fabric
4 |
5 | ## Overview
6 |
7 | [Fabric](https://www.fabric.io) provides developers with the tools they need to build the best apps. Developed and maintained by Twitter and the team that built Crashlytics, Fabric provides an easy way to manage all your SDKs so that you’ll never have to worry about tedious configurations or juggling different accounts. We let you get right into coding and building the next big app.
8 |
9 | For a full list of SDK provided through Fabric visit [https://fabric.io/kits](https://fabric.io/kits).
10 |
11 | ## Setup
12 |
13 | The Fabric Pod is a dependency for all Fabric SDKs and is included when installing any Fabric related Pods. General setup instructions are shown below; however, these vary depending on the selected SDK.
14 |
15 | 1. Visit [https://fabric.io/sign_up](https://fabric.io/sign_up) to create your Fabric account and to download Fabric.app.
16 |
17 | 1. Open Fabric.app, login and select an SDK to install.
18 |
19 | 
20 |
21 | 1. The Fabric app automatically detects when a project uses CocoaPods and gives you the option to install via the Podfile or Xcode.
22 |
23 | 
24 |
25 | 1. Select the Podfile option and follow the installation instructions to update your Podfile. Note: the example below is for the Crashlytics SDK. The instructions will vary based on the selected SDK.
26 |
27 | 
28 |
29 | 1. Add a Run Script Build Phase and build your app.
30 |
31 | 
32 |
33 | 1. Initialize the SDK by inserting code outlined in Fabric.app.
34 |
35 | 1. Run your app to finish the installation.
36 |
37 | ## Resources
38 |
39 | * [Documentation](https://docs.fabric.io/)
40 | * [Forums](https://twittercommunity.com/c/fabric)
41 | * [Website](https://www.fabric.io)
42 | * Follow us on Twitter: [@fabric](https://twitter.com/fabric)
43 | * Follow us on Periscope: [Fabric](https://periscope.tv/fabric) and [TwitterDev](https://periscope.tv/twitterdev)
44 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/run:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | # run
4 | #
5 | # Copyright (c) 2015 Crashlytics. All rights reserved.
6 |
7 | # Figure out where we're being called from
8 | DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
9 |
10 | # Quote path in case of spaces or special chars
11 | DIR="\"${DIR}"
12 |
13 | PATH_SEP="/"
14 | VALIDATE_COMMAND="uploadDSYM\" $@ validate run-script"
15 | UPLOAD_COMMAND="uploadDSYM\" $@ run-script"
16 |
17 | # Ensure params are as expected, run in sync mode to validate
18 | eval $DIR$PATH_SEP$VALIDATE_COMMAND
19 | return_code=$?
20 |
21 | if [[ $return_code != 0 ]]; then
22 | exit $return_code
23 | fi
24 |
25 | # Verification passed, upload dSYM in background to prevent Xcode from waiting
26 | # Note: Validation is performed again before upload.
27 | # Output can still be found in Console.app
28 | eval $DIR$PATH_SEP$UPLOAD_COMMAND > /dev/null 2>&1 &
29 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/upload-symbols:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/Pods/Fabric/upload-symbols
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Fabric/uploadDSYM:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/BoardForGitHub/Pods/Fabric/uploadDSYM
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Private/MASShortcut/MASDictionaryTransformer.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASDictionaryTransformer.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Private/MASShortcut/MASHotKey.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASHotKey.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Private/MASShortcut/MASKeyCodes.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASKeyCodes.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Private/MASShortcut/MASKeyMasks.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASKeyMasks.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Private/MASShortcut/MASLocalization.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASLocalization.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Private/MASShortcut/MASShortcut.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASShortcut.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Private/MASShortcut/MASShortcutBinder.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASShortcutBinder.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Private/MASShortcut/MASShortcutMonitor.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASShortcutMonitor.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Private/MASShortcut/MASShortcutValidator.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASShortcutValidator.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Private/MASShortcut/MASShortcutView+Bindings.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASShortcutView+Bindings.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Private/MASShortcut/MASShortcutView.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASShortcutView.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Private/MASShortcut/Shortcut.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/Shortcut.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/Crashlytics/Crashlytics/ANSCompatibility.h:
--------------------------------------------------------------------------------
1 | ../../../../Crashlytics/OSX/Crashlytics.framework/Versions/A/Headers/ANSCompatibility.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/Crashlytics/Crashlytics/Answers.h:
--------------------------------------------------------------------------------
1 | ../../../../Crashlytics/OSX/Crashlytics.framework/Versions/A/Headers/Answers.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/Crashlytics/Crashlytics/CLSAttributes.h:
--------------------------------------------------------------------------------
1 | ../../../../Crashlytics/OSX/Crashlytics.framework/Versions/A/Headers/CLSAttributes.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/Crashlytics/Crashlytics/CLSLogging.h:
--------------------------------------------------------------------------------
1 | ../../../../Crashlytics/OSX/Crashlytics.framework/Versions/A/Headers/CLSLogging.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/Crashlytics/Crashlytics/CLSReport.h:
--------------------------------------------------------------------------------
1 | ../../../../Crashlytics/OSX/Crashlytics.framework/Versions/A/Headers/CLSReport.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/Crashlytics/Crashlytics/CLSStackFrame.h:
--------------------------------------------------------------------------------
1 | ../../../../Crashlytics/OSX/Crashlytics.framework/Versions/A/Headers/CLSStackFrame.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/Crashlytics/Crashlytics/Crashlytics.h:
--------------------------------------------------------------------------------
1 | ../../../../Crashlytics/OSX/Crashlytics.framework/Versions/A/Headers/Crashlytics.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/Fabric/Fabric/FABAttributes.h:
--------------------------------------------------------------------------------
1 | ../../../../Fabric/OSX/Fabric.framework/Versions/A/Headers/FABAttributes.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/Fabric/Fabric/Fabric.h:
--------------------------------------------------------------------------------
1 | ../../../../Fabric/OSX/Fabric.framework/Versions/A/Headers/Fabric.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/MASShortcut/MASDictionaryTransformer.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASDictionaryTransformer.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/MASShortcut/MASHotKey.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASHotKey.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/MASShortcut/MASKeyCodes.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASKeyCodes.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/MASShortcut/MASKeyMasks.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASKeyMasks.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/MASShortcut/MASLocalization.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASLocalization.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/MASShortcut/MASShortcut.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASShortcut.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/MASShortcut/MASShortcutBinder.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASShortcutBinder.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/MASShortcut/MASShortcutMonitor.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASShortcutMonitor.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/MASShortcut/MASShortcutValidator.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASShortcutValidator.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/MASShortcut/MASShortcutView+Bindings.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASShortcutView+Bindings.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/MASShortcut/MASShortcutView.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/MASShortcutView.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Headers/Public/MASShortcut/Shortcut.h:
--------------------------------------------------------------------------------
1 | ../../../MASShortcut/Framework/Shortcut.h
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASDictionaryTransformer.h:
--------------------------------------------------------------------------------
1 | extern NSString *const MASDictionaryTransformerName;
2 |
3 | /**
4 | Converts shortcuts for storage in user defaults.
5 |
6 | User defaults can’t stored custom types directly, they have to
7 | be serialized to `NSData` or some other supported type like an
8 | `NSDictionary`. In Cocoa Bindings, the conversion can be done
9 | using value transformers like this one.
10 |
11 | There’s a built-in transformer (`NSKeyedUnarchiveFromDataTransformerName`)
12 | that converts any `NSCoding` types to `NSData`, but with shortcuts
13 | it makes sense to use a dictionary instead – the defaults look better
14 | when inspected with the `defaults` command-line utility and the
15 | format is compatible with an older sortcut library called Shortcut
16 | Recorder.
17 | */
18 | @interface MASDictionaryTransformer : NSValueTransformer
19 | @end
20 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASDictionaryTransformer.m:
--------------------------------------------------------------------------------
1 | #import "MASDictionaryTransformer.h"
2 | #import "MASShortcut.h"
3 |
4 | NSString *const MASDictionaryTransformerName = @"MASDictionaryTransformer";
5 |
6 | static NSString *const MASKeyCodeKey = @"keyCode";
7 | static NSString *const MASModifierFlagsKey = @"modifierFlags";
8 |
9 | @implementation MASDictionaryTransformer
10 |
11 | + (BOOL) allowsReverseTransformation
12 | {
13 | return YES;
14 | }
15 |
16 | // Storing nil values as an empty dictionary lets us differ between
17 | // “not available, use default value” and “explicitly set to none”.
18 | // See http://stackoverflow.com/questions/5540760 for details.
19 | - (NSDictionary*) reverseTransformedValue: (MASShortcut*) shortcut
20 | {
21 | if (shortcut == nil) {
22 | return [NSDictionary dictionary];
23 | } else {
24 | return @{
25 | MASKeyCodeKey: @([shortcut keyCode]),
26 | MASModifierFlagsKey: @([shortcut modifierFlags])
27 | };
28 | }
29 | }
30 |
31 | - (MASShortcut*) transformedValue: (NSDictionary*) dictionary
32 | {
33 | // We have to be defensive here as the value may come from user defaults.
34 | if (![dictionary isKindOfClass:[NSDictionary class]]) {
35 | return nil;
36 | }
37 |
38 | id keyCodeBox = [dictionary objectForKey:MASKeyCodeKey];
39 | id modifierFlagsBox = [dictionary objectForKey:MASModifierFlagsKey];
40 |
41 | SEL integerValue = @selector(integerValue);
42 | if (![keyCodeBox respondsToSelector:integerValue] || ![modifierFlagsBox respondsToSelector:integerValue]) {
43 | return nil;
44 | }
45 |
46 | return [MASShortcut
47 | shortcutWithKeyCode:[keyCodeBox integerValue]
48 | modifierFlags:[modifierFlagsBox integerValue]];
49 | }
50 |
51 | @end
52 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASHotKey.h:
--------------------------------------------------------------------------------
1 | #import "MASShortcut.h"
2 |
3 | extern FourCharCode const MASHotKeySignature;
4 |
5 | @interface MASHotKey : NSObject
6 |
7 | @property(readonly) UInt32 carbonID;
8 | @property(copy) dispatch_block_t action;
9 |
10 | + (instancetype) registeredHotKeyWithShortcut: (MASShortcut*) shortcut;
11 |
12 | @end
13 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASHotKey.m:
--------------------------------------------------------------------------------
1 | #import "MASHotKey.h"
2 |
3 | FourCharCode const MASHotKeySignature = 'MASS';
4 |
5 | @interface MASHotKey ()
6 | @property(assign) EventHotKeyRef hotKeyRef;
7 | @property(assign) UInt32 carbonID;
8 | @end
9 |
10 | @implementation MASHotKey
11 |
12 | - (instancetype) initWithShortcut: (MASShortcut*) shortcut
13 | {
14 | self = [super init];
15 |
16 | static UInt32 CarbonHotKeyID = 0;
17 |
18 | _carbonID = ++CarbonHotKeyID;
19 | EventHotKeyID hotKeyID = { .signature = MASHotKeySignature, .id = _carbonID };
20 |
21 | OSStatus status = RegisterEventHotKey([shortcut carbonKeyCode], [shortcut carbonFlags],
22 | hotKeyID, GetEventDispatcherTarget(), 0, &_hotKeyRef);
23 |
24 | if (status != noErr) {
25 | return nil;
26 | }
27 |
28 | return self;
29 | }
30 |
31 | + (instancetype) registeredHotKeyWithShortcut: (MASShortcut*) shortcut
32 | {
33 | return [[self alloc] initWithShortcut:shortcut];
34 | }
35 |
36 | - (void) dealloc
37 | {
38 | if (_hotKeyRef) {
39 | UnregisterEventHotKey(_hotKeyRef);
40 | _hotKeyRef = NULL;
41 | }
42 | }
43 |
44 | @end
45 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASKeyCodes.h:
--------------------------------------------------------------------------------
1 | #import
2 | #import
3 | #import "MASKeyMasks.h"
4 |
5 | // These glyphs are missed in Carbon.h
6 | enum {
7 | kMASShortcutGlyphEject = 0x23CF,
8 | kMASShortcutGlyphClear = 0x2715,
9 | kMASShortcutGlyphDeleteLeft = 0x232B,
10 | kMASShortcutGlyphDeleteRight = 0x2326,
11 | kMASShortcutGlyphLeftArrow = 0x2190,
12 | kMASShortcutGlyphRightArrow = 0x2192,
13 | kMASShortcutGlyphUpArrow = 0x2191,
14 | kMASShortcutGlyphDownArrow = 0x2193,
15 | kMASShortcutGlyphEscape = 0x238B,
16 | kMASShortcutGlyphHelp = 0x003F,
17 | kMASShortcutGlyphPageDown = 0x21DF,
18 | kMASShortcutGlyphPageUp = 0x21DE,
19 | kMASShortcutGlyphTabRight = 0x21E5,
20 | kMASShortcutGlyphReturn = 0x2305,
21 | kMASShortcutGlyphReturnR2L = 0x21A9,
22 | kMASShortcutGlyphPadClear = 0x2327,
23 | kMASShortcutGlyphNorthwestArrow = 0x2196,
24 | kMASShortcutGlyphSoutheastArrow = 0x2198,
25 | };
26 |
27 | NS_INLINE NSString* NSStringFromMASKeyCode(unsigned short ch)
28 | {
29 | return [NSString stringWithFormat:@"%C", ch];
30 | }
31 |
32 | NS_INLINE NSUInteger MASPickCocoaModifiers(NSUInteger flags)
33 | {
34 | return (flags & (NSEventModifierFlagControl | NSEventModifierFlagShift | NSEventModifierFlagOption | NSEventModifierFlagCommand));
35 | }
36 |
37 | NS_INLINE UInt32 MASCarbonModifiersFromCocoaModifiers(NSUInteger cocoaFlags)
38 | {
39 | return
40 | (cocoaFlags & NSEventModifierFlagCommand ? cmdKey : 0)
41 | | (cocoaFlags & NSEventModifierFlagOption ? optionKey : 0)
42 | | (cocoaFlags & NSEventModifierFlagControl ? controlKey : 0)
43 | | (cocoaFlags & NSEventModifierFlagShift ? shiftKey : 0);
44 | }
45 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASKeyMasks.h:
--------------------------------------------------------------------------------
1 | #import
2 |
3 | // https://github.com/shpakovski/MASShortcut/issues/99
4 | //
5 | // Long story short: NSControlKeyMask and friends were replaced with NSEventModifierFlagControl
6 | // and similar in macOS Sierra. The project builds fine & clean, but including MASShortcut in
7 | // a project with deployment target set to 10.12 results in several deprecation warnings because
8 | // of the control masks. Simply replacing the old symbols with the new ones isn’t an option,
9 | // since it breaks the build on older SDKs – in Travis, for example.
10 | //
11 | // It should be safe to remove this whole thing once the 10.12 SDK is ubiquitous.
12 |
13 | #if __MAC_OS_X_VERSION_MAX_ALLOWED < 101200
14 | #define NSEventModifierFlagCommand NSCommandKeyMask
15 | #define NSEventModifierFlagControl NSControlKeyMask
16 | #define NSEventModifierFlagOption NSAlternateKeyMask
17 | #define NSEventModifierFlagShift NSShiftKeyMask
18 | #endif
19 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASLocalization.h:
--------------------------------------------------------------------------------
1 | /**
2 | Reads a localized string from the framework’s bundle.
3 |
4 | Normally you would use NSLocalizedString to read the localized
5 | strings, but that’s just a shortcut for loading the strings from
6 | the main bundle. And once the framework ends up in an app, the
7 | main bundle will be the app’s bundle and won’t contain our strings.
8 | So we introduced this helper function that makes sure to load the
9 | strings from the framework’s bundle. Please avoid using
10 | NSLocalizedString throughout the framework, it wouldn’t work
11 | properly.
12 | */
13 | NSString *MASLocalizedString(NSString *key, NSString *comment);
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASLocalization.m:
--------------------------------------------------------------------------------
1 | #import "MASLocalization.h"
2 | #import "MASShortcut.h"
3 |
4 | static NSString *const MASLocalizationTableName = @"Localizable";
5 | static NSString *const MASPlaceholderLocalizationString = @"XXX";
6 |
7 | // The CocoaPods trickery here is needed because when the code
8 | // is built as a part of CocoaPods, it won’t make a separate framework
9 | // and the Localized.strings file won’t be bundled correctly.
10 | // See https://github.com/shpakovski/MASShortcut/issues/74
11 | NSString *MASLocalizedString(NSString *key, NSString *comment) {
12 | static NSBundle *localizationBundle = nil;
13 | static dispatch_once_t onceToken;
14 | dispatch_once(&onceToken, ^{
15 | NSBundle *frameworkBundle = [NSBundle bundleForClass:[MASShortcut class]];
16 | // first we'll check if resources bundle was copied to MASShortcut framework bundle when !use_frameworks option is active
17 | NSURL *cocoaPodsBundleURL = [frameworkBundle URLForResource:@"MASShortcut" withExtension:@"bundle"];
18 | if (cocoaPodsBundleURL) {
19 | localizationBundle = [NSBundle bundleWithURL: cocoaPodsBundleURL];
20 | } else {
21 | // trying to fetch cocoapods bundle from main bundle
22 | cocoaPodsBundleURL = [[NSBundle mainBundle] URLForResource: @"MASShortcut" withExtension:@"bundle"];
23 | if (cocoaPodsBundleURL) {
24 | localizationBundle = [NSBundle bundleWithURL: cocoaPodsBundleURL];
25 | } else {
26 | // fallback to framework bundle
27 | localizationBundle = frameworkBundle;
28 | }
29 | }
30 | });
31 | return [localizationBundle localizedStringForKey:key
32 | value:MASPlaceholderLocalizationString
33 | table:MASLocalizationTableName];
34 | }
35 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASShortcut.h:
--------------------------------------------------------------------------------
1 | #import "MASKeyCodes.h"
2 |
3 | /**
4 | A model class to hold a key combination.
5 |
6 | This class just represents a combination of keys. It does not care if
7 | the combination is valid or can be used as a hotkey, it doesn’t watch
8 | the input system for the shortcut appearance, nor it does access user
9 | defaults.
10 | */
11 | @interface MASShortcut : NSObject
12 |
13 | /**
14 | The virtual key code for the keyboard key.
15 |
16 | Hardware independent, same as in `NSEvent`. See `Events.h` in the HIToolbox
17 | framework for a complete list, or Command-click this symbol: `kVK_ANSI_A`.
18 | */
19 | @property (nonatomic, readonly) NSUInteger keyCode;
20 |
21 | /**
22 | Cocoa keyboard modifier flags.
23 |
24 | Same as in `NSEvent`: `NSCommandKeyMask`, `NSAlternateKeyMask`, etc.
25 | */
26 | @property (nonatomic, readonly) NSUInteger modifierFlags;
27 |
28 | /**
29 | Same as `keyCode`, just a different type.
30 | */
31 | @property (nonatomic, readonly) UInt32 carbonKeyCode;
32 |
33 | /**
34 | Carbon modifier flags.
35 |
36 | A bit sum of `cmdKey`, `optionKey`, etc.
37 | */
38 | @property (nonatomic, readonly) UInt32 carbonFlags;
39 |
40 | /**
41 | A string representing the “key” part of a shortcut, like the `5` in `⌘5`.
42 |
43 | @warning The value may change depending on the active keyboard layout.
44 | For example for the `^2` keyboard shortcut (`kVK_ANSI_2+NSControlKeyMask`
45 | to be precise) the `keyCodeString` is `2` on the US keyboard, but `ě` when
46 | the Czech keyboard layout is active. See the spec for details.
47 | */
48 | @property (nonatomic, readonly) NSString *keyCodeString;
49 |
50 | /**
51 | A key-code string used in key equivalent matching.
52 |
53 | For precise meaning of “key equivalents” see the `keyEquivalent`
54 | property of `NSMenuItem`. Here the string is used to support shortcut
55 | validation (“is the shortcut already taken in this menu?”) and
56 | for display in `NSMenu`.
57 |
58 | The value of this property may differ from `keyCodeString`. For example
59 | the Russian keyboard has a `Г` (Ge) Cyrillic character in place of the
60 | latin `U` key. This means you can create a `^Г` shortcut, but in menus
61 | that’s always displayed as `^U`. So the `keyCodeString` returns `Г`
62 | and `keyCodeStringForKeyEquivalent` returns `U`.
63 | */
64 | @property (nonatomic, readonly) NSString *keyCodeStringForKeyEquivalent;
65 |
66 | /**
67 | A string representing the shortcut modifiers, like the `⌘` in `⌘5`.
68 | */
69 | @property (nonatomic, readonly) NSString *modifierFlagsString;
70 |
71 | - (instancetype)initWithKeyCode:(NSUInteger)code modifierFlags:(NSUInteger)flags;
72 | + (instancetype)shortcutWithKeyCode:(NSUInteger)code modifierFlags:(NSUInteger)flags;
73 |
74 | /**
75 | Creates a new shortcut from an `NSEvent` object.
76 |
77 | This is just a convenience initializer that reads the key code and modifiers from an `NSEvent`.
78 | */
79 | + (instancetype)shortcutWithEvent:(NSEvent *)anEvent;
80 |
81 | @end
82 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASShortcut.m:
--------------------------------------------------------------------------------
1 | #import "MASShortcut.h"
2 | #import "MASLocalization.h"
3 |
4 | static NSString *const MASShortcutKeyCode = @"KeyCode";
5 | static NSString *const MASShortcutModifierFlags = @"ModifierFlags";
6 |
7 | @implementation MASShortcut
8 |
9 | #pragma mark Initialization
10 |
11 | - (instancetype)initWithKeyCode:(NSUInteger)code modifierFlags:(NSUInteger)flags
12 | {
13 | self = [super init];
14 | if (self) {
15 | _keyCode = code;
16 | _modifierFlags = MASPickCocoaModifiers(flags);
17 | }
18 | return self;
19 | }
20 |
21 | + (instancetype)shortcutWithKeyCode:(NSUInteger)code modifierFlags:(NSUInteger)flags
22 | {
23 | return [[self alloc] initWithKeyCode:code modifierFlags:flags];
24 | }
25 |
26 | + (instancetype)shortcutWithEvent:(NSEvent *)event
27 | {
28 | return [[self alloc] initWithKeyCode:event.keyCode modifierFlags:event.modifierFlags];
29 | }
30 |
31 | #pragma mark Shortcut Accessors
32 |
33 | - (UInt32)carbonKeyCode
34 | {
35 | return (self.keyCode == NSNotFound ? 0 : (UInt32)self.keyCode);
36 | }
37 |
38 | - (UInt32)carbonFlags
39 | {
40 | return MASCarbonModifiersFromCocoaModifiers(self.modifierFlags);
41 | }
42 |
43 | - (NSString *)description
44 | {
45 | return [NSString stringWithFormat:@"%@%@", self.modifierFlagsString, self.keyCodeString];
46 | }
47 |
48 | - (NSString *)keyCodeStringForKeyEquivalent
49 | {
50 | NSString *keyCodeString = self.keyCodeString;
51 | if (keyCodeString.length > 1) {
52 | switch (self.keyCode) {
53 | case kVK_F1: return NSStringFromMASKeyCode(0xF704);
54 | case kVK_F2: return NSStringFromMASKeyCode(0xF705);
55 | case kVK_F3: return NSStringFromMASKeyCode(0xF706);
56 | case kVK_F4: return NSStringFromMASKeyCode(0xF707);
57 | case kVK_F5: return NSStringFromMASKeyCode(0xF708);
58 | case kVK_F6: return NSStringFromMASKeyCode(0xF709);
59 | case kVK_F7: return NSStringFromMASKeyCode(0xF70a);
60 | case kVK_F8: return NSStringFromMASKeyCode(0xF70b);
61 | case kVK_F9: return NSStringFromMASKeyCode(0xF70c);
62 | case kVK_F10: return NSStringFromMASKeyCode(0xF70d);
63 | case kVK_F11: return NSStringFromMASKeyCode(0xF70e);
64 | case kVK_F12: return NSStringFromMASKeyCode(0xF70f);
65 | // From this point down I am guessing F13 etc come sequentially, I don't have a keyboard to test.
66 | case kVK_F13: return NSStringFromMASKeyCode(0xF710);
67 | case kVK_F14: return NSStringFromMASKeyCode(0xF711);
68 | case kVK_F15: return NSStringFromMASKeyCode(0xF712);
69 | case kVK_F16: return NSStringFromMASKeyCode(0xF713);
70 | case kVK_F17: return NSStringFromMASKeyCode(0xF714);
71 | case kVK_F18: return NSStringFromMASKeyCode(0xF715);
72 | case kVK_F19: return NSStringFromMASKeyCode(0xF716);
73 | case kVK_Space: return NSStringFromMASKeyCode(0x20);
74 | default: return @"";
75 | }
76 | }
77 | return keyCodeString.lowercaseString;
78 | }
79 |
80 | - (NSString *)keyCodeString
81 | {
82 | // Some key codes don't have an equivalent
83 | switch (self.keyCode) {
84 | case NSNotFound: return @"";
85 | case kVK_F1: return @"F1";
86 | case kVK_F2: return @"F2";
87 | case kVK_F3: return @"F3";
88 | case kVK_F4: return @"F4";
89 | case kVK_F5: return @"F5";
90 | case kVK_F6: return @"F6";
91 | case kVK_F7: return @"F7";
92 | case kVK_F8: return @"F8";
93 | case kVK_F9: return @"F9";
94 | case kVK_F10: return @"F10";
95 | case kVK_F11: return @"F11";
96 | case kVK_F12: return @"F12";
97 | case kVK_F13: return @"F13";
98 | case kVK_F14: return @"F14";
99 | case kVK_F15: return @"F15";
100 | case kVK_F16: return @"F16";
101 | case kVK_F17: return @"F17";
102 | case kVK_F18: return @"F18";
103 | case kVK_F19: return @"F19";
104 | case kVK_Space: return MASLocalizedString(@"Space", @"Shortcut glyph name for SPACE key");
105 | case kVK_Escape: return NSStringFromMASKeyCode(kMASShortcutGlyphEscape);
106 | case kVK_Delete: return NSStringFromMASKeyCode(kMASShortcutGlyphDeleteLeft);
107 | case kVK_ForwardDelete: return NSStringFromMASKeyCode(kMASShortcutGlyphDeleteRight);
108 | case kVK_LeftArrow: return NSStringFromMASKeyCode(kMASShortcutGlyphLeftArrow);
109 | case kVK_RightArrow: return NSStringFromMASKeyCode(kMASShortcutGlyphRightArrow);
110 | case kVK_UpArrow: return NSStringFromMASKeyCode(kMASShortcutGlyphUpArrow);
111 | case kVK_DownArrow: return NSStringFromMASKeyCode(kMASShortcutGlyphDownArrow);
112 | case kVK_Help: return NSStringFromMASKeyCode(kMASShortcutGlyphHelp);
113 | case kVK_PageUp: return NSStringFromMASKeyCode(kMASShortcutGlyphPageUp);
114 | case kVK_PageDown: return NSStringFromMASKeyCode(kMASShortcutGlyphPageDown);
115 | case kVK_Tab: return NSStringFromMASKeyCode(kMASShortcutGlyphTabRight);
116 | case kVK_Return: return NSStringFromMASKeyCode(kMASShortcutGlyphReturnR2L);
117 |
118 | // Keypad
119 | case kVK_ANSI_Keypad0: return @"0";
120 | case kVK_ANSI_Keypad1: return @"1";
121 | case kVK_ANSI_Keypad2: return @"2";
122 | case kVK_ANSI_Keypad3: return @"3";
123 | case kVK_ANSI_Keypad4: return @"4";
124 | case kVK_ANSI_Keypad5: return @"5";
125 | case kVK_ANSI_Keypad6: return @"6";
126 | case kVK_ANSI_Keypad7: return @"7";
127 | case kVK_ANSI_Keypad8: return @"8";
128 | case kVK_ANSI_Keypad9: return @"9";
129 | case kVK_ANSI_KeypadDecimal: return @".";
130 | case kVK_ANSI_KeypadMultiply: return @"*";
131 | case kVK_ANSI_KeypadPlus: return @"+";
132 | case kVK_ANSI_KeypadClear: return NSStringFromMASKeyCode(kMASShortcutGlyphPadClear);
133 | case kVK_ANSI_KeypadDivide: return @"/";
134 | case kVK_ANSI_KeypadEnter: return NSStringFromMASKeyCode(kMASShortcutGlyphReturn);
135 | case kVK_ANSI_KeypadMinus: return @"–";
136 | case kVK_ANSI_KeypadEquals: return @"=";
137 |
138 | // Hardcode
139 | case 119: return NSStringFromMASKeyCode(kMASShortcutGlyphSoutheastArrow);
140 | case 115: return NSStringFromMASKeyCode(kMASShortcutGlyphNorthwestArrow);
141 | }
142 |
143 | // Everything else should be printable so look it up in the current ASCII capable keyboard layout
144 | OSStatus error = noErr;
145 | NSString *keystroke = nil;
146 | TISInputSourceRef inputSource = TISCopyCurrentASCIICapableKeyboardLayoutInputSource();
147 | if (inputSource) {
148 | CFDataRef layoutDataRef = TISGetInputSourceProperty(inputSource, kTISPropertyUnicodeKeyLayoutData);
149 | if (layoutDataRef) {
150 | UCKeyboardLayout *layoutData = (UCKeyboardLayout *)CFDataGetBytePtr(layoutDataRef);
151 | UniCharCount length = 0;
152 | UniChar chars[256] = { 0 };
153 | UInt32 deadKeyState = 0;
154 | error = UCKeyTranslate(layoutData, (UInt16)self.keyCode, kUCKeyActionDisplay, 0, // No modifiers
155 | LMGetKbdType(), kUCKeyTranslateNoDeadKeysMask, &deadKeyState,
156 | sizeof(chars) / sizeof(UniChar), &length, chars);
157 | keystroke = ((error == noErr) && length ? [NSString stringWithCharacters:chars length:length] : @"");
158 | }
159 | CFRelease(inputSource);
160 | }
161 |
162 | // Validate keystroke
163 | if (keystroke.length) {
164 | static NSMutableCharacterSet *validChars = nil;
165 | if (validChars == nil) {
166 | validChars = [[NSMutableCharacterSet alloc] init];
167 | [validChars formUnionWithCharacterSet:[NSCharacterSet alphanumericCharacterSet]];
168 | [validChars formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]];
169 | [validChars formUnionWithCharacterSet:[NSCharacterSet symbolCharacterSet]];
170 | }
171 | for (NSUInteger i = 0, length = keystroke.length; i < length; i++) {
172 | if (![validChars characterIsMember:[keystroke characterAtIndex:i]]) {
173 | keystroke = @"";
174 | break;
175 | }
176 | }
177 | }
178 |
179 | // Finally, we've got a shortcut!
180 | return keystroke.uppercaseString;
181 | }
182 |
183 | - (NSString *)modifierFlagsString
184 | {
185 | unichar chars[4];
186 | NSUInteger count = 0;
187 | // These are in the same order as the menu manager shows them
188 | if (self.modifierFlags & NSControlKeyMask) chars[count++] = kControlUnicode;
189 | if (self.modifierFlags & NSAlternateKeyMask) chars[count++] = kOptionUnicode;
190 | if (self.modifierFlags & NSShiftKeyMask) chars[count++] = kShiftUnicode;
191 | if (self.modifierFlags & NSCommandKeyMask) chars[count++] = kCommandUnicode;
192 | return (count ? [NSString stringWithCharacters:chars length:count] : @"");
193 | }
194 |
195 | #pragma mark NSObject
196 |
197 | - (BOOL) isEqual: (MASShortcut*) object
198 | {
199 | return [object isKindOfClass:[self class]]
200 | && (object.keyCode == self.keyCode)
201 | && (object.modifierFlags == self.modifierFlags);
202 | }
203 |
204 | - (NSUInteger) hash
205 | {
206 | return self.keyCode + self.modifierFlags;
207 | }
208 |
209 | #pragma mark NSCoding
210 |
211 | - (void)encodeWithCoder:(NSCoder *)coder
212 | {
213 | [coder encodeInteger:(self.keyCode != NSNotFound ? (NSInteger)self.keyCode : - 1) forKey:MASShortcutKeyCode];
214 | [coder encodeInteger:(NSInteger)self.modifierFlags forKey:MASShortcutModifierFlags];
215 | }
216 |
217 | - (instancetype)initWithCoder:(NSCoder *)decoder
218 | {
219 | self = [super init];
220 | if (self) {
221 | NSInteger code = [decoder decodeIntegerForKey:MASShortcutKeyCode];
222 | _keyCode = (code < 0 ? NSNotFound : (NSUInteger)code);
223 | _modifierFlags = [decoder decodeIntegerForKey:MASShortcutModifierFlags];
224 | }
225 | return self;
226 | }
227 |
228 | #pragma mark NSSecureCoding
229 |
230 | + (BOOL)supportsSecureCoding
231 | {
232 | return YES;
233 | }
234 |
235 | #pragma mark NSCopying
236 |
237 | - (instancetype) copyWithZone:(NSZone *)zone
238 | {
239 | return [[self class] shortcutWithKeyCode:_keyCode modifierFlags:_modifierFlags];
240 | }
241 |
242 | @end
243 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASShortcut.modulemap:
--------------------------------------------------------------------------------
1 | framework module MASShortcut {
2 | umbrella header "Shortcut.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASShortcutBinder.h:
--------------------------------------------------------------------------------
1 | #import "MASShortcutMonitor.h"
2 |
3 | /**
4 | Binds actions to user defaults keys.
5 |
6 | If you store shortcuts in user defaults (for example by binding
7 | a `MASShortcutView` to user defaults), you can use this class to
8 | connect an action directly to a user defaults key. If the shortcut
9 | stored under the key changes, the action will get automatically
10 | updated to the new one.
11 |
12 | This class is mostly a wrapper around a `MASShortcutMonitor`. It
13 | watches the changes in user defaults and updates the shortcut monitor
14 | accordingly with the new shortcuts.
15 | */
16 | @interface MASShortcutBinder : NSObject
17 |
18 | /**
19 | A convenience shared instance.
20 |
21 | You may use it so that you don’t have to manage an instance by hand,
22 | but it’s perfectly fine to allocate and use a separate instance instead.
23 | */
24 | + (instancetype) sharedBinder;
25 |
26 | /**
27 | The underlying shortcut monitor.
28 | */
29 | @property(strong) MASShortcutMonitor *shortcutMonitor;
30 |
31 | /**
32 | Binding options customizing the access to user defaults.
33 |
34 | As an example, you can use `NSValueTransformerNameBindingOption` to customize
35 | the storage format used for the shortcuts. By default the shortcuts are converted
36 | from `NSData` (`NSKeyedUnarchiveFromDataTransformerName`). Note that if the
37 | binder is to work with `MASShortcutView`, both object have to use the same storage
38 | format.
39 | */
40 | @property(copy) NSDictionary *bindingOptions;
41 |
42 | /**
43 | Binds given action to a shortcut stored under the given defaults key.
44 |
45 | In other words, no matter what shortcut you store under the given key,
46 | pressing it will always trigger the given action.
47 | */
48 | - (void) bindShortcutWithDefaultsKey: (NSString*) defaultsKeyName toAction: (dispatch_block_t) action;
49 |
50 | /**
51 | Disconnect the binding between user defaults and action.
52 |
53 | In other words, the shortcut stored under the given key will no longer trigger an action.
54 | */
55 | - (void) breakBindingWithDefaultsKey: (NSString*) defaultsKeyName;
56 |
57 | /**
58 | Register default shortcuts in user defaults.
59 |
60 | This is a convenience frontent to `[NSUserDefaults registerDefaults]`.
61 | The dictionary should contain a map of user defaults’ keys to appropriate
62 | keyboard shortcuts. The shortcuts will be transformed according to
63 | `bindingOptions` and registered using `registerDefaults`.
64 | */
65 | - (void) registerDefaultShortcuts: (NSDictionary*) defaultShortcuts;
66 |
67 | @end
68 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASShortcutBinder.m:
--------------------------------------------------------------------------------
1 | #import "MASShortcutBinder.h"
2 | #import "MASShortcut.h"
3 |
4 | @interface MASShortcutBinder ()
5 | @property(strong) NSMutableDictionary *actions;
6 | @property(strong) NSMutableDictionary *shortcuts;
7 | @end
8 |
9 | @implementation MASShortcutBinder
10 |
11 | #pragma mark Initialization
12 |
13 | - (id) init
14 | {
15 | self = [super init];
16 | [self setActions:[NSMutableDictionary dictionary]];
17 | [self setShortcuts:[NSMutableDictionary dictionary]];
18 | [self setShortcutMonitor:[MASShortcutMonitor sharedMonitor]];
19 | [self setBindingOptions:@{NSValueTransformerNameBindingOption: NSKeyedUnarchiveFromDataTransformerName}];
20 | return self;
21 | }
22 |
23 | - (void) dealloc
24 | {
25 | for (NSString *bindingName in [_actions allKeys]) {
26 | [self unbind:bindingName];
27 | }
28 | }
29 |
30 | + (instancetype) sharedBinder
31 | {
32 | static dispatch_once_t once;
33 | static MASShortcutBinder *sharedInstance;
34 | dispatch_once(&once, ^{
35 | sharedInstance = [[self alloc] init];
36 | });
37 | return sharedInstance;
38 | }
39 |
40 | #pragma mark Registration
41 |
42 | - (void) bindShortcutWithDefaultsKey: (NSString*) defaultsKeyName toAction: (dispatch_block_t) action
43 | {
44 | NSAssert([defaultsKeyName rangeOfString:@"."].location == NSNotFound,
45 | @"Illegal character in binding name (“.”), please see http://git.io/x5YS.");
46 | NSAssert([defaultsKeyName rangeOfString:@" "].location == NSNotFound,
47 | @"Illegal character in binding name (“ ”), please see http://git.io/x5YS.");
48 | [_actions setObject:[action copy] forKey:defaultsKeyName];
49 | [self bind:defaultsKeyName
50 | toObject:[NSUserDefaultsController sharedUserDefaultsController]
51 | withKeyPath:[@"values." stringByAppendingString:defaultsKeyName]
52 | options:_bindingOptions];
53 | }
54 |
55 | - (void) breakBindingWithDefaultsKey: (NSString*) defaultsKeyName
56 | {
57 | [_shortcutMonitor unregisterShortcut:[_shortcuts objectForKey:defaultsKeyName]];
58 | [_shortcuts removeObjectForKey:defaultsKeyName];
59 | [_actions removeObjectForKey:defaultsKeyName];
60 | [self unbind:defaultsKeyName];
61 | }
62 |
63 | - (void) registerDefaultShortcuts: (NSDictionary*) defaultShortcuts
64 | {
65 | NSValueTransformer *transformer = [_bindingOptions valueForKey:NSValueTransformerBindingOption];
66 | if (transformer == nil) {
67 | NSString *transformerName = [_bindingOptions valueForKey:NSValueTransformerNameBindingOption];
68 | if (transformerName) {
69 | transformer = [NSValueTransformer valueTransformerForName:transformerName];
70 | }
71 | }
72 |
73 | NSAssert(transformer != nil, @"Can’t register default shortcuts without a transformer.");
74 |
75 | [defaultShortcuts enumerateKeysAndObjectsUsingBlock:^(NSString *defaultsKey, MASShortcut *shortcut, BOOL *stop) {
76 | id value = [transformer reverseTransformedValue:shortcut];
77 | [[NSUserDefaults standardUserDefaults] registerDefaults:@{defaultsKey:value}];
78 | }];
79 | }
80 |
81 | #pragma mark Bindings
82 |
83 | - (BOOL) isRegisteredAction: (NSString*) name
84 | {
85 | return !![_actions objectForKey:name];
86 | }
87 |
88 | - (id) valueForUndefinedKey: (NSString*) key
89 | {
90 | return [self isRegisteredAction:key] ?
91 | [_shortcuts objectForKey:key] :
92 | [super valueForUndefinedKey:key];
93 | }
94 |
95 | - (void) setValue: (id) value forUndefinedKey: (NSString*) key
96 | {
97 | if (![self isRegisteredAction:key]) {
98 | [super setValue:value forUndefinedKey:key];
99 | return;
100 | }
101 |
102 | MASShortcut *newShortcut = value;
103 | MASShortcut *currentShortcut = [_shortcuts objectForKey:key];
104 |
105 | // Unbind previous shortcut if any
106 | if (currentShortcut != nil) {
107 | [_shortcutMonitor unregisterShortcut:currentShortcut];
108 | }
109 |
110 | // Just deleting the old shortcut
111 | if (newShortcut == nil) {
112 | [_shortcuts removeObjectForKey:key];
113 | return;
114 | }
115 |
116 | // Bind new shortcut
117 | [_shortcuts setObject:newShortcut forKey:key];
118 | [_shortcutMonitor registerShortcut:newShortcut withAction:[_actions objectForKey:key]];
119 | }
120 |
121 | @end
122 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASShortcutMonitor.h:
--------------------------------------------------------------------------------
1 | #import "MASShortcut.h"
2 |
3 | /**
4 | Executes action when a shortcut is pressed.
5 |
6 | There can only be one instance of this class, otherwise things
7 | will probably not work. (There’s a Carbon event handler inside
8 | and there can only be one Carbon event handler of a given type.)
9 | */
10 | @interface MASShortcutMonitor : NSObject
11 |
12 | - (instancetype) init __unavailable;
13 | + (instancetype) sharedMonitor;
14 |
15 | /**
16 | Register a shortcut along with an action.
17 |
18 | Attempting to insert an already registered shortcut probably won’t work.
19 | It may burn your house or cut your fingers. You have been warned.
20 | */
21 | - (BOOL) registerShortcut: (MASShortcut*) shortcut withAction: (dispatch_block_t) action;
22 | - (BOOL) isShortcutRegistered: (MASShortcut*) shortcut;
23 |
24 | - (void) unregisterShortcut: (MASShortcut*) shortcut;
25 | - (void) unregisterAllShortcuts;
26 |
27 | @end
28 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASShortcutMonitor.m:
--------------------------------------------------------------------------------
1 | #import "MASShortcutMonitor.h"
2 | #import "MASHotKey.h"
3 |
4 | @interface MASShortcutMonitor ()
5 | @property(assign) EventHandlerRef eventHandlerRef;
6 | @property(strong) NSMutableDictionary *hotKeys;
7 | @end
8 |
9 | static OSStatus MASCarbonEventCallback(EventHandlerCallRef, EventRef, void*);
10 |
11 | @implementation MASShortcutMonitor
12 |
13 | #pragma mark Initialization
14 |
15 | - (instancetype) init
16 | {
17 | self = [super init];
18 | [self setHotKeys:[NSMutableDictionary dictionary]];
19 | EventTypeSpec hotKeyPressedSpec = { .eventClass = kEventClassKeyboard, .eventKind = kEventHotKeyPressed };
20 | OSStatus status = InstallEventHandler(GetEventDispatcherTarget(), MASCarbonEventCallback,
21 | 1, &hotKeyPressedSpec, (__bridge void*)self, &_eventHandlerRef);
22 | if (status != noErr) {
23 | return nil;
24 | }
25 | return self;
26 | }
27 |
28 | - (void) dealloc
29 | {
30 | if (_eventHandlerRef) {
31 | RemoveEventHandler(_eventHandlerRef);
32 | _eventHandlerRef = NULL;
33 | }
34 | }
35 |
36 | + (instancetype) sharedMonitor
37 | {
38 | static dispatch_once_t once;
39 | static MASShortcutMonitor *sharedInstance;
40 | dispatch_once(&once, ^{
41 | sharedInstance = [[self alloc] init];
42 | });
43 | return sharedInstance;
44 | }
45 |
46 | #pragma mark Registration
47 |
48 | - (BOOL) registerShortcut: (MASShortcut*) shortcut withAction: (dispatch_block_t) action
49 | {
50 | MASHotKey *hotKey = [MASHotKey registeredHotKeyWithShortcut:shortcut];
51 | if (hotKey) {
52 | [hotKey setAction:action];
53 | [_hotKeys setObject:hotKey forKey:shortcut];
54 | return YES;
55 | } else {
56 | return NO;
57 | }
58 | }
59 |
60 | - (void) unregisterShortcut: (MASShortcut*) shortcut
61 | {
62 | if (shortcut) {
63 | [_hotKeys removeObjectForKey:shortcut];
64 | }
65 | }
66 |
67 | - (void) unregisterAllShortcuts
68 | {
69 | [_hotKeys removeAllObjects];
70 | }
71 |
72 | - (BOOL) isShortcutRegistered: (MASShortcut*) shortcut
73 | {
74 | return !![_hotKeys objectForKey:shortcut];
75 | }
76 |
77 | #pragma mark Event Handling
78 |
79 | - (void) handleEvent: (EventRef) event
80 | {
81 | if (GetEventClass(event) != kEventClassKeyboard) {
82 | return;
83 | }
84 |
85 | EventHotKeyID hotKeyID;
86 | OSStatus status = GetEventParameter(event, kEventParamDirectObject, typeEventHotKeyID, NULL, sizeof(hotKeyID), NULL, &hotKeyID);
87 | if (status != noErr || hotKeyID.signature != MASHotKeySignature) {
88 | return;
89 | }
90 |
91 | [_hotKeys enumerateKeysAndObjectsUsingBlock:^(MASShortcut *shortcut, MASHotKey *hotKey, BOOL *stop) {
92 | if (hotKeyID.id == [hotKey carbonID]) {
93 | if ([hotKey action]) {
94 | dispatch_async(dispatch_get_main_queue(), [hotKey action]);
95 | }
96 | *stop = YES;
97 | }
98 | }];
99 | }
100 |
101 | @end
102 |
103 | static OSStatus MASCarbonEventCallback(EventHandlerCallRef _, EventRef event, void *context)
104 | {
105 | MASShortcutMonitor *dispatcher = (__bridge id)context;
106 | [dispatcher handleEvent:event];
107 | return noErr;
108 | }
109 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASShortcutValidator.h:
--------------------------------------------------------------------------------
1 | #import "MASShortcut.h"
2 |
3 | /**
4 | This class is used by the recording control to tell which shortcuts are acceptable.
5 |
6 | There are two kinds of shortcuts that are not considered acceptable: shortcuts that
7 | are too simple (like single letter keys) and shortcuts that are already used by the
8 | operating system.
9 | */
10 | @interface MASShortcutValidator : NSObject
11 |
12 | /**
13 | Set to `YES` if you want to accept Option-something shortcuts.
14 |
15 | `NO` by default, since Option-something shortcuts are often used by system,
16 | for example Option-G will type the © sign. This also applies to Option-Shift
17 | shortcuts – in other words, shortcut recorder will not accept shortcuts like
18 | Option-Shift-K by default. (Again, since Option-Shift-K inserts the Apple
19 | logo sign by default.)
20 | */
21 | @property(assign) BOOL allowAnyShortcutWithOptionModifier;
22 |
23 | + (instancetype) sharedValidator;
24 |
25 | - (BOOL) isShortcutValid: (MASShortcut*) shortcut;
26 | - (BOOL) isShortcut: (MASShortcut*) shortcut alreadyTakenInMenu: (NSMenu*) menu explanation: (NSString**) explanation;
27 | - (BOOL) isShortcutAlreadyTakenBySystem: (MASShortcut*) shortcut explanation: (NSString**) explanation;
28 |
29 | @end
30 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASShortcutValidator.m:
--------------------------------------------------------------------------------
1 | #import "MASShortcutValidator.h"
2 | #import "MASLocalization.h"
3 |
4 | @implementation MASShortcutValidator
5 |
6 | + (instancetype) sharedValidator
7 | {
8 | static dispatch_once_t once;
9 | static MASShortcutValidator *sharedInstance;
10 | dispatch_once(&once, ^{
11 | sharedInstance = [[self alloc] init];
12 | });
13 | return sharedInstance;
14 | }
15 |
16 | - (BOOL) isShortcutValid: (MASShortcut*) shortcut
17 | {
18 | NSUInteger keyCode = [shortcut keyCode];
19 | NSUInteger modifiers = [shortcut modifierFlags];
20 |
21 | // Allow any function key with any combination of modifiers
22 | BOOL includesFunctionKey = ((keyCode == kVK_F1) || (keyCode == kVK_F2) || (keyCode == kVK_F3) || (keyCode == kVK_F4) ||
23 | (keyCode == kVK_F5) || (keyCode == kVK_F6) || (keyCode == kVK_F7) || (keyCode == kVK_F8) ||
24 | (keyCode == kVK_F9) || (keyCode == kVK_F10) || (keyCode == kVK_F11) || (keyCode == kVK_F12) ||
25 | (keyCode == kVK_F13) || (keyCode == kVK_F14) || (keyCode == kVK_F15) || (keyCode == kVK_F16) ||
26 | (keyCode == kVK_F17) || (keyCode == kVK_F18) || (keyCode == kVK_F19) || (keyCode == kVK_F20));
27 | if (includesFunctionKey) return YES;
28 |
29 | // Do not allow any other key without modifiers
30 | BOOL hasModifierFlags = (modifiers > 0);
31 | if (!hasModifierFlags) return NO;
32 |
33 | // Allow any hotkey containing Control or Command modifier
34 | BOOL includesCommand = ((modifiers & NSCommandKeyMask) > 0);
35 | BOOL includesControl = ((modifiers & NSControlKeyMask) > 0);
36 | if (includesCommand || includesControl) return YES;
37 |
38 | // Allow Option key only in selected cases
39 | BOOL includesOption = ((modifiers & NSAlternateKeyMask) > 0);
40 | if (includesOption) {
41 |
42 | // Always allow Option-Space and Option-Escape because they do not have any bind system commands
43 | if ((keyCode == kVK_Space) || (keyCode == kVK_Escape)) return YES;
44 |
45 | // Allow Option modifier with any key even if it will break the system binding
46 | if (_allowAnyShortcutWithOptionModifier) return YES;
47 | }
48 |
49 | // The hotkey does not have any modifiers or violates system bindings
50 | return NO;
51 | }
52 |
53 | - (BOOL) isShortcut: (MASShortcut*) shortcut alreadyTakenInMenu: (NSMenu*) menu explanation: (NSString**) explanation
54 | {
55 | NSString *keyEquivalent = [shortcut keyCodeStringForKeyEquivalent];
56 | NSUInteger flags = [shortcut modifierFlags];
57 |
58 | for (NSMenuItem *menuItem in menu.itemArray) {
59 | if (menuItem.hasSubmenu && [self isShortcut:shortcut alreadyTakenInMenu:[menuItem submenu] explanation:explanation]) return YES;
60 |
61 | BOOL equalFlags = (MASPickCocoaModifiers(menuItem.keyEquivalentModifierMask) == flags);
62 | BOOL equalHotkeyLowercase = [menuItem.keyEquivalent.lowercaseString isEqualToString:keyEquivalent];
63 |
64 | // Check if the cases are different, we know ours is lower and that shift is included in our modifiers
65 | // If theirs is capitol, we need to add shift to their modifiers
66 | if (equalHotkeyLowercase && ![menuItem.keyEquivalent isEqualToString:keyEquivalent]) {
67 | equalFlags = (MASPickCocoaModifiers(menuItem.keyEquivalentModifierMask | NSShiftKeyMask) == flags);
68 | }
69 |
70 | if (equalFlags && equalHotkeyLowercase) {
71 | if (explanation) {
72 | *explanation = MASLocalizedString(@"This shortcut cannot be used because it is already used by the menu item ‘%@’.",
73 | @"Message for alert when shortcut is already used");
74 | *explanation = [NSString stringWithFormat:*explanation, menuItem.title];
75 | }
76 | return YES;
77 | }
78 | }
79 | return NO;
80 | }
81 |
82 | - (BOOL) isShortcutAlreadyTakenBySystem: (MASShortcut*) shortcut explanation: (NSString**) explanation
83 | {
84 | CFArrayRef globalHotKeys;
85 | if (CopySymbolicHotKeys(&globalHotKeys) == noErr) {
86 |
87 | // Enumerate all global hotkeys and check if any of them matches current shortcut
88 | for (CFIndex i = 0, count = CFArrayGetCount(globalHotKeys); i < count; i++) {
89 | CFDictionaryRef hotKeyInfo = CFArrayGetValueAtIndex(globalHotKeys, i);
90 | CFNumberRef code = CFDictionaryGetValue(hotKeyInfo, kHISymbolicHotKeyCode);
91 | CFNumberRef flags = CFDictionaryGetValue(hotKeyInfo, kHISymbolicHotKeyModifiers);
92 | CFNumberRef enabled = CFDictionaryGetValue(hotKeyInfo, kHISymbolicHotKeyEnabled);
93 |
94 | if (([(__bridge NSNumber *)code unsignedIntegerValue] == [shortcut keyCode]) &&
95 | ([(__bridge NSNumber *)flags unsignedIntegerValue] == [shortcut carbonFlags]) &&
96 | ([(__bridge NSNumber *)enabled boolValue])) {
97 |
98 | if (explanation) {
99 | *explanation = MASLocalizedString(@"This combination cannot be used because it is already used by a system-wide "
100 | @"keyboard shortcut.\nIf you really want to use this key combination, most shortcuts "
101 | @"can be changed in the Keyboard & Mouse panel in System Preferences.",
102 | @"Message for alert when shortcut is already used by the system");
103 | }
104 | return YES;
105 | }
106 | }
107 | CFRelease(globalHotKeys);
108 | }
109 | return [self isShortcut:shortcut alreadyTakenInMenu:[NSApp mainMenu] explanation:explanation];
110 | }
111 |
112 | @end
113 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASShortcutView+Bindings.h:
--------------------------------------------------------------------------------
1 | #import "MASShortcutView.h"
2 |
3 | /**
4 | A simplified interface to bind the recorder value to user defaults.
5 |
6 | You can bind the `shortcutValue` to user defaults using the standard
7 | `bind:toObject:withKeyPath:options:` call, but since that’s a lot to type
8 | and read, here’s a simpler option.
9 |
10 | Setting the `associatedUserDefaultsKey` binds the view’s shortcut value
11 | to the given user defaults key. You can supply a value transformer to convert
12 | values between user defaults and `MASShortcut`. If you don’t supply
13 | a transformer, the `NSUnarchiveFromDataTransformerName` will be used
14 | automatically.
15 |
16 | Set `associatedUserDefaultsKey` to `nil` to disconnect the binding.
17 | */
18 | @interface MASShortcutView (Bindings)
19 |
20 | @property(copy) NSString *associatedUserDefaultsKey;
21 |
22 | - (void) setAssociatedUserDefaultsKey: (NSString*) newKey withTransformer: (NSValueTransformer*) transformer;
23 | - (void) setAssociatedUserDefaultsKey: (NSString*) newKey withTransformerName: (NSString*) transformerName;
24 |
25 | @end
26 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASShortcutView+Bindings.m:
--------------------------------------------------------------------------------
1 | #import "MASShortcutView+Bindings.h"
2 |
3 | @implementation MASShortcutView (Bindings)
4 |
5 | - (NSString*) associatedUserDefaultsKey
6 | {
7 | NSDictionary* bindingInfo = [self infoForBinding:MASShortcutBinding];
8 | if (bindingInfo != nil) {
9 | NSString *keyPath = [bindingInfo objectForKey:NSObservedKeyPathKey];
10 | NSString *key = [keyPath stringByReplacingOccurrencesOfString:@"values." withString:@""];
11 | return key;
12 | } else {
13 | return nil;
14 | }
15 | }
16 |
17 | - (void) setAssociatedUserDefaultsKey: (NSString*) newKey withTransformer: (NSValueTransformer*) transformer
18 | {
19 | // Break previous binding if any
20 | NSString *currentKey = [self associatedUserDefaultsKey];
21 | if (currentKey != nil) {
22 | [self unbind:currentKey];
23 | }
24 |
25 | // Stop if the new binding is nil
26 | if (newKey == nil) {
27 | return;
28 | }
29 |
30 | NSDictionary *options = transformer ?
31 | @{NSValueTransformerBindingOption:transformer} :
32 | nil;
33 |
34 | [self bind:MASShortcutBinding
35 | toObject:[NSUserDefaultsController sharedUserDefaultsController]
36 | withKeyPath:[@"values." stringByAppendingString:newKey]
37 | options:options];
38 | }
39 |
40 | - (void) setAssociatedUserDefaultsKey: (NSString*) newKey withTransformerName: (NSString*) transformerName
41 | {
42 | [self setAssociatedUserDefaultsKey:newKey withTransformer:[NSValueTransformer valueTransformerForName:transformerName]];
43 | }
44 |
45 | - (void) setAssociatedUserDefaultsKey: (NSString*) newKey
46 | {
47 | [self setAssociatedUserDefaultsKey:newKey withTransformerName:NSKeyedUnarchiveFromDataTransformerName];
48 | }
49 |
50 | @end
51 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/MASShortcutView.h:
--------------------------------------------------------------------------------
1 | @class MASShortcut, MASShortcutValidator;
2 |
3 | extern NSString *const MASShortcutBinding;
4 |
5 | typedef enum {
6 | MASShortcutViewStyleDefault = 0, // Height = 19 px
7 | MASShortcutViewStyleTexturedRect, // Height = 25 px
8 | MASShortcutViewStyleRounded, // Height = 43 px
9 | MASShortcutViewStyleFlat
10 | } MASShortcutViewStyle;
11 |
12 | @interface MASShortcutView : NSView
13 |
14 | @property (nonatomic, strong) MASShortcut *shortcutValue;
15 | @property (nonatomic, strong) MASShortcutValidator *shortcutValidator;
16 | @property (nonatomic, getter = isRecording) BOOL recording;
17 | @property (nonatomic, getter = isEnabled) BOOL enabled;
18 | @property (nonatomic, copy) void (^shortcutValueChange)(MASShortcutView *sender);
19 | @property (nonatomic, assign) MASShortcutViewStyle style;
20 |
21 | /// Returns custom class for drawing control.
22 | + (Class)shortcutCellClass;
23 |
24 | - (void)setAcceptsFirstResponder:(BOOL)value;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/Framework/Shortcut.h:
--------------------------------------------------------------------------------
1 | #import "MASKeyMasks.h"
2 | #import "MASShortcut.h"
3 | #import "MASShortcutValidator.h"
4 | #import "MASShortcutMonitor.h"
5 | #import "MASShortcutBinder.h"
6 | #import "MASDictionaryTransformer.h"
7 | #import "MASShortcutView.h"
8 | #import "MASShortcutView+Bindings.h"
9 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2012-2013, Vadim Shpakovski
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without
5 | modification, are permitted provided that the following conditions are met:
6 |
7 | 1. Redistributions of source code must retain the above copyright notice, this
8 | list of conditions and the following disclaimer.
9 | 2. Redistributions in binary form must reproduce the above copyright notice,
10 | this list of conditions and the following disclaimer in the documentation
11 | and/or other materials provided with the distribution.
12 |
13 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
14 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
17 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
18 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
19 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
20 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
22 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/README.md:
--------------------------------------------------------------------------------
1 | [](https://travis-ci.org/shpakovski/MASShortcut)
2 | [](https://github.com/Carthage/Carthage)
3 |
4 | # Intro
5 |
6 | Some time ago Cocoa developers used a brilliant framework [ShortcutRecorder](http://wafflesoftware.net/shortcut/) for managing keyboard shortcuts in application preferences. However, it became incompatible with the new plugin architecture of Xcode 4.
7 |
8 | The MASShortcut project introduces a modern API and user interface for recording, storing and using system-wide keyboard shortcuts.
9 |
10 | 
11 |
12 | Features:
13 |
14 | * Record and display keyboard shortcuts
15 | * Watch for shortcuts and execute actions, system-wide
16 | * A nice, [documented API](http://cocoadocs.org/docsets/MASShortcut/)
17 | * Can be configured to be compatible with Shortcut Recorder
18 | * Can be installed both through CocoaPods and as a Git submodule
19 | * Mac App Store friendly
20 | * Works on OS X 10.6 and up
21 | * Hacking-friendly codebase covered with tests
22 |
23 | Partially done:
24 |
25 | * Accessibility support. There’s some basic accessibility code, testers and feedback welcome.
26 | * Localisation. The English and Czech localization should be complete, there’s basic support for German, French, Spanish, Italian, and Japanese. If you’re a native speaker in one of the mentioned languages, please test the localization and report issues or add missing strings.
27 |
28 | Pull requests welcome :)
29 |
30 | # Installation
31 |
32 | You can use [CocoaPods](http://cocoapods.org/), adding the following line to your Podfile:
33 |
34 | pod 'MASShortcut'
35 |
36 | If you want to stick to the 1.x branch, you can use the version smart match operator:
37 |
38 | pod 'MASShortcut', '~> 1'
39 |
40 | You can also install via [Carthage](https://github.com/Carthage/Carthage), or you can use Git submodules and link against the MASShortcut framework manually.
41 |
42 | To build from the command line, type 'make release'. The framework will be created in a temporary directory and revealed in Finder when the build is complete.
43 |
44 | # Usage
45 |
46 | I hope, it is really easy:
47 |
48 | ```objective-c
49 | #import
50 |
51 | // Drop a custom view into XIB, set its class to MASShortcutView
52 | // and its height to 19. If you select another appearance style,
53 | // look up the correct height values in MASShortcutView.h.
54 | @property (nonatomic, weak) IBOutlet MASShortcutView *shortcutView;
55 |
56 | // Pick a preference key to store the shortcut between launches
57 | static NSString *const kPreferenceGlobalShortcut = @"GlobalShortcut";
58 |
59 | // Associate the shortcut view with user defaults
60 | self.shortcutView.associatedUserDefaultsKey = kPreferenceGlobalShortcut;
61 |
62 | // Associate the preference key with an action
63 | [[MASShortcutBinder sharedBinder]
64 | bindShortcutWithDefaultsKey:kPreferenceGlobalShortcut
65 | toAction:^{
66 | // Let me know if you find a better or a more convenient API.
67 | }];
68 | ```
69 |
70 | You can see a real usage example in the Demo target. Enjoy!
71 |
72 | # Shortcut Recorder Compatibility
73 |
74 | By default, MASShortcut uses a different User Defaults storage format incompatible with Shortcut Recorder. But it’s easily possible to change that, so that you can replace Shortcut Recorder with MASShortcut without having to migrate the shortcuts previously stored by your apps. There are two parts of the story:
75 |
76 | If you bind the recorder control (`MASShortcutView`) to User defaults, set the Value Transformer field in the Interface Builder to `MASDictionaryTransformer`. This makes sure the shortcuts are written in the Shortcut Recorder format.
77 |
78 | If you use `MASShortcutBinder` to automatically load shortcuts from User Defaults, set the `bindingOptions` accordingly:
79 |
80 | ```objective-c
81 | [[MASShortcutBinder sharedBinder] setBindingOptions:@{NSValueTransformerNameBindingOption:MASDictionaryTransformerName}];
82 | ```
83 |
84 | This makes sure that the shortcuts in the Shortcut Recorder format are loaded correctly.
85 |
86 | # Notifications
87 |
88 | By registering for KVO notifications from `NSUserDefaultsController`, you can get a callback whenever a user changes the shortcut, allowing you to perform any UI updates, or other code handling tasks.
89 |
90 | This is just as easy to implement:
91 |
92 | ```objective-c
93 | // Declare an ivar for key path in the user defaults controller
94 | NSString *_observableKeyPath;
95 |
96 | // Make a global context reference
97 | void *kGlobalShortcutContext = &kGlobalShortcutContext;
98 |
99 | // Implement when loading view
100 | _observableKeyPath = [@"values." stringByAppendingString:kPreferenceGlobalShortcut];
101 | [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:_observableKeyPath
102 | options:NSKeyValueObservingOptionInitial
103 | context:kGlobalShortcutContext];
104 |
105 | // Capture the KVO change and do something
106 | - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)obj
107 | change:(NSDictionary *)change context:(void *)ctx
108 | {
109 | if (ctx == kGlobalShortcutContext) {
110 | NSLog(@"Shortcut has changed");
111 | }
112 | else {
113 | [super observeValueForKeyPath:keyPath ofObject:obj change:change context:ctx];
114 | }
115 | }
116 |
117 | // Do not forget to remove the observer
118 | [[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self
119 | forKeyPath:_observableKeyPath
120 | context:kGlobalShortcutContext];
121 | ```
122 |
123 | # Using in Swift projects
124 |
125 | 1. Install as a Pod using the latest CocoaPods with Swift support.
126 | 2. Create a bridging header file [using the instructions here](http://swiftalicio.us/2014/11/using-cocoapods-from-swift/)
127 | 3. Your bridging header file should contain the following [two](https://github.com/shpakovski/MASShortcut/issues/36) imports:
128 |
129 | ```objective-c
130 | #import
131 | #import
132 | ```
133 |
134 | # Copyright
135 |
136 | MASShortcut is licensed under the 2-clause BSD license.
137 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/cs.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /* Cancel action button in recording state */
2 | "Cancel" = "Zrušit";
3 |
4 | /* Tooltip for non-empty shortcut button */
5 | "Click to record new shortcut" = "Kliknutím nahrajete novou zkratku";
6 |
7 | /* Tooltip for hint button near the non-empty shortcut */
8 | "Delete shortcut" = "Smazat zkratku";
9 |
10 | /* VoiceOver title */
11 | "keyboard shortcut" = "klávesová zkratka";
12 |
13 | /* Alert button when shortcut is already used */
14 | "OK" = "OK";
15 |
16 | /* Empty shortcut button in normal state */
17 | "Record Shortcut" = "Nahrát zkratku";
18 |
19 | /* VoiceOver: Shortcut cleared */
20 | "Shortcut cleared" = "zkratka smazána";
21 |
22 | /* VoiceOver: Shortcut set */
23 | "Shortcut set" = "zkratka nastavena";
24 |
25 | /* Shortcut glyph name for SPACE key */
26 | "Space" = "Mezerník";
27 |
28 | /* Title for alert when shortcut is already used */
29 | "The key combination %@ cannot be used" = "Kombinace %@ se nedá použít";
30 |
31 | /* Message for alert when shortcut is already used by the system */
32 | "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Tato zkratka se nedá použít, protože už ji obsadil systém.\nKdybyste na ní trvali, většina systémových zkratek se dá přenastavit v Předvolbách systému.";
33 |
34 | /* Message for alert when shortcut is already used */
35 | "This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Tato zkratka se nedá použít, protože už je použita pro menu (%@).";
36 |
37 | /* VoiceOver shortcut help */
38 | "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Pokud chcete nahrát novou zkratku, stiskněte toto tlačítko a následně vybranou zkratku. Stisknutím Delete vymažete stávající zkratku.";
39 |
40 | /* Non-empty shortcut button in recording state */
41 | "Type New Shortcut" = "Stiskněte zkratku";
42 |
43 | /* Empty shortcut button in recording state */
44 | "Type Shortcut" = "Stiskněte zkratku";
45 |
46 | /* Cancel action button for non-empty shortcut in recording state */
47 | "Use Old Shortcut" = "Vrátit se k původní";
48 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/de.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /* Cancel action button in recording state */
2 | "Cancel" = "Abbrechen";
3 |
4 | /* Tooltip for non-empty shortcut button */
5 | "Click to record new shortcut" = "Klicken um neuen Kurzbefehl aufzunehmen";
6 |
7 | /* Tooltip for hint button near the non-empty shortcut */
8 | "Delete shortcut" = "Kurzbefehl Löschen";
9 |
10 | /* VoiceOver title */
11 | "keyboard shortcut" = "Kurzbefehl";
12 |
13 | /* Alert button when shortcut is already used */
14 | "OK" = "OK";
15 |
16 | /* Empty shortcut button in normal state */
17 | "Record Shortcut" = "Kurzbefehl aufnehmen";
18 |
19 | /* VoiceOver: Shortcut cleared */
20 | "Shortcut cleared" = "Kurzbefehl gelöscht";
21 |
22 | /* VoiceOver: Shortcut set */
23 | "Shortcut set" = "Kurzbefehl gesetzt";
24 |
25 | /* Shortcut glyph name for SPACE key */
26 | "Space" = "Leertaste";
27 |
28 | /* Title for alert when shortcut is already used */
29 | "The key combination %@ cannot be used" = "Die Tastenkombination %@ kann nicht genutzt werden";
30 |
31 | /* Message for alert when shortcut is already used by the system */
32 | "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Diese Kombination kann nicht genutzt werden, weil sie bereits als systemweiter Kurzbefehl genutzt wird.\nFalls du diese Tastenkombination wirklich benutzen willst, können die meisten Kurzbefehle in den Tastatur Systemeinstellungen geändert werden.";
33 |
34 | /* Message for alert when shortcut is already used */
35 | "This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Dieser Kurzbefehl kann nicht genutzt werden, weil er bereits vom Menüpunkt „%@“ genutzt wird.";
36 |
37 | /* VoiceOver shortcut help */
38 | "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Drücke diesen Button, um einen neuen Kurzbefehl aufzunehmen. Tippe dann den neuen Kurzbefehl oder drücke Löschen, um den aktuellen Kurzbefehl zu löschen.";
39 |
40 | /* Non-empty shortcut button in recording state */
41 | "Type New Shortcut" = "Neuen eingeben";
42 |
43 | /* Empty shortcut button in recording state */
44 | "Type Shortcut" = "Kurzbefehl eingeben";
45 |
46 | /* Cancel action button for non-empty shortcut in recording state */
47 | "Use Old Shortcut" = "Alten nutzen";
48 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/en.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /* Cancel action button in recording state */
2 | "Cancel" = "Cancel";
3 |
4 | /* Tooltip for non-empty shortcut button */
5 | "Click to record new shortcut" = "Click to record new shortcut";
6 |
7 | /* Tooltip for hint button near the non-empty shortcut */
8 | "Delete shortcut" = "Delete shortcut";
9 |
10 | /* VoiceOver title */
11 | "keyboard shortcut" = "keyboard shortcut";
12 |
13 | /* Alert button when shortcut is already used */
14 | "OK" = "OK";
15 |
16 | /* Empty shortcut button in normal state */
17 | "Record Shortcut" = "Record Shortcut";
18 |
19 | /* VoiceOver: Shortcut cleared */
20 | "Shortcut cleared" = "Shortcut cleared";
21 |
22 | /* VoiceOver: Shortcut set */
23 | "Shortcut set" = "Shortcut set";
24 |
25 | /* Shortcut glyph name for SPACE key */
26 | "Space" = "Space";
27 |
28 | /* Title for alert when shortcut is already used */
29 | "The key combination %@ cannot be used" = "The key combination %@ cannot be used";
30 |
31 | /* Message for alert when shortcut is already used by the system */
32 | "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences.";
33 |
34 | /* Message for alert when shortcut is already used */
35 | "This shortcut cannot be used because it is already used by the menu item ‘%@’." = "This shortcut cannot be used because it is already used by the menu item ‘%@’.";
36 |
37 | /* VoiceOver shortcut help */
38 | "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut.";
39 |
40 | /* Non-empty shortcut button in recording state */
41 | "Type New Shortcut" = "Type New Shortcut";
42 |
43 | /* Empty shortcut button in recording state */
44 | "Type Shortcut" = "Type Shortcut";
45 |
46 | /* Cancel action button for non-empty shortcut in recording state */
47 | "Use Old Shortcut" = "Use Old Shortcut";
48 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/es.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /* Cancel action button in recording state */
2 | "Cancel" = "Cancelar";
3 |
4 | /* Tooltip for non-empty shortcut button */
5 | "Click to record new shortcut" = "Haga clic para grabar nuevo atajo";
6 |
7 | /* Tooltip for hint button near the non-empty shortcut */
8 | "Delete shortcut" = "Borrar atajo";
9 |
10 | /* VoiceOver title */
11 | "keyboard shortcut" = "atajo de teklado";
12 |
13 | /* Alert button when shortcut is already used */
14 | "OK" = "OK";
15 |
16 | /* Empty shortcut button in normal state */
17 | "Record Shortcut" = "Grabar atajo";
18 |
19 | /* VoiceOver: Shortcut cleared */
20 | "Shortcut cleared" = "Atajo borrado";
21 |
22 | /* VoiceOver: Shortcut set */
23 | "Shortcut set" = "Atajo creado";
24 |
25 | /* Shortcut glyph name for SPACE key */
26 | "Space" = "Espacio";
27 |
28 | /* Title for alert when shortcut is already used */
29 | "The key combination %@ cannot be used" = "La combinación de claves %@ no se puede utilizada";
30 |
31 | /* Message for alert when shortcut is already used by the system */
32 | "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Esta combinación no se puede utilizar debido a que ya es en us como atajo del sistema.\nSi realmente desea utilizar esta combinación de teclas, la mayoría de los atajos se puede cambiar en el panel de Teclado y Ratón de Preferencias del Sistema.";
33 |
34 | /* Message for alert when shortcut is already used */
35 | "This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Este atajo no se puede utilizar debido a que ya es utilizado por el elemento de menú '%@'.";
36 |
37 | /* VoiceOver shortcut help */
38 | "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Para grabar un nuevo atajo, haga clic en este botón, a continuar, escriba el nuevo atajo, o pulse borrar para qutar un atajo existente.";
39 |
40 | /* Non-empty shortcut button in recording state */
41 | "Type New Shortcut" = "Escribir atajo";
42 |
43 | /* Empty shortcut button in recording state */
44 | "Type Shortcut" = "Escribir atajo";
45 |
46 | /* Cancel action button for non-empty shortcut in recording state */
47 | "Use Old Shortcut" = "Usa atajo anterior";
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/fr.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /* Cancel action button in recording state */
2 | "Cancel" = "Annuler";
3 |
4 | /* Tooltip for non-empty shortcut button */
5 | "Click to record new shortcut" = "Cliquez pour enregistrer le raccourci";
6 |
7 | /* Tooltip for hint button near the non-empty shortcut */
8 | "Delete shortcut" = "Supprimer le raccourci";
9 |
10 | /* VoiceOver title */
11 | "keyboard shortcut" = "raccourci clavier";
12 |
13 | /* Alert button when shortcut is already used */
14 | "OK" = "OK";
15 |
16 | /* Empty shortcut button in normal state */
17 | "Record Shortcut" = "Enregistrer le raccourci";
18 |
19 | /* VoiceOver: Shortcut cleared */
20 | "Shortcut cleared" = "Raccourci supprimé";
21 |
22 | /* VoiceOver: Shortcut set */
23 | "Shortcut set" = "Raccourci configuré";
24 |
25 | /* Shortcut glyph name for SPACE key */
26 | "Space" = "Espace";
27 |
28 | /* Title for alert when shortcut is already used */
29 | "The key combination %@ cannot be used" = "La combinaison %@ ne peut être utilisée";
30 |
31 | /* Message for alert when shortcut is already used by the system */
32 | "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Cette combinaison de touches ne peut être utilisée parce qu’elle est réservée pour un raccourci du système.\nSi vous désirez l’utiliser, la plupart des raccourcis peuvent être modifiés dans l’onglet Clavier, dans Préférences Système.";
33 |
34 | /* Message for alert when shortcut is already used */
35 | "This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Ce raccourci ne peut être utilisé parce qu’il est déjà utilisé par le point de menu «%@».";
36 |
37 | /* VoiceOver shortcut help */
38 | "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Pour enregistrer un nouveau raccourci, cliquez sur ce bouton et tapez le nouveau raccourci, ou bien, tapez sur «Supprimer» pour supprimer le raccourci configuré.";
39 |
40 | /* Non-empty shortcut button in recording state */
41 | "Type New Shortcut" = "Saisir un raccourci";
42 |
43 | /* Empty shortcut button in recording state */
44 | "Type Shortcut" = "Saisir un raccourci";
45 |
46 | /* Cancel action button for non-empty shortcut in recording state */
47 | "Use Old Shortcut" = "Revenir au raccourci précédent";
48 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/it.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /* Cancel action button in recording state */
2 | "Cancel" = "Annulla";
3 |
4 | /* Tooltip for non-empty shortcut button */
5 | "Click to record new shortcut" = "Cliccare per registrare una nuova combinazione";
6 |
7 | /* Tooltip for hint button near the non-empty shortcut */
8 | "Delete shortcut" = "Cancella scorciatoia";
9 |
10 | /* VoiceOver title */
11 | "keyboard shortcut" = "Scorciatoia da tastiera";
12 |
13 | /* Alert button when shortcut is already used */
14 | "OK" = "OK";
15 |
16 | /* Empty shortcut button in normal state */
17 | "Record Shortcut" = "Registra scorciatoia";
18 |
19 | /* VoiceOver: Shortcut cleared */
20 | "Shortcut cleared" = "Scorciatoia rimossa";
21 |
22 | /* VoiceOver: Shortcut set */
23 | "Shortcut set" = "Scorciatoia impostata";
24 |
25 | /* Shortcut glyph name for SPACE key */
26 | "Space" = "Spazio";
27 |
28 | /* Title for alert when shortcut is already used */
29 | "The key combination %@ cannot be used" = "Questa combinazione %@ di tasti non può essere usata";
30 |
31 | /* Message for alert when shortcut is already used by the system */
32 | "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Questa combinazione di tasti non può essere usata perchè è già usata da una scorciatoia da tastiera a livello di Sistema.\nSe volete davvero usare questa combinazione di tasti, la maggior parte delle scorciatoie possono essere cambiate nel pannello Tastiera e Mouse delle Preferenze di Sistema.";
33 |
34 | /* Message for alert when shortcut is already used */
35 | "This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Questa combinazione di tasti non può essere usata perchè è già usata dalla voce di menù ‘%@’.";
36 |
37 | /* VoiceOver shortcut help */
38 | "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Per registrare una nuova scorciatoia, cliccare su questo pulsante e poi inserire la muova scorciatoia o premere cancella per resettare una scorciatoia esistente.";
39 |
40 | /* Non-empty shortcut button in recording state */
41 | "Type New Shortcut" = "Digita nuova";
42 |
43 | /* Empty shortcut button in recording state */
44 | "Type Shortcut" = "Digita scorciatoia";
45 |
46 | /* Cancel action button for non-empty shortcut in recording state */
47 | "Use Old Shortcut" = "Usare vecchia";
48 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/ja.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /* Cancel action button in recording state */
2 | "Cancel" = "キャンセルする";
3 |
4 | /* Tooltip for non-empty shortcut button */
5 | "Click to record new shortcut" = "クリックしてショートカットを入力";
6 |
7 | /* Tooltip for hint button near the non-empty shortcut */
8 | "Delete shortcut" = "ショートカットを削除";
9 |
10 | /* VoiceOver title */
11 | "keyboard shortcut" = "キーボードショートカット";
12 |
13 | /* Alert button when shortcut is already used */
14 | "OK" = "OK";
15 |
16 | /* Empty shortcut button in normal state */
17 | "Record Shortcut" = "ショートカットを入力";
18 |
19 | /* VoiceOver: Shortcut cleared */
20 | "Shortcut cleared" = "ショートカットが削除されました";
21 |
22 | /* VoiceOver: Shortcut set */
23 | "Shortcut set" = "ショートカットが設定されました";
24 |
25 | /* Shortcut glyph name for SPACE key */
26 | "Space" = "スペース";
27 |
28 | /* Title for alert when shortcut is already used */
29 | "The key combination %@ cannot be used" = "%@ はショートカットに設定できません";
30 |
31 | /* Message for alert when shortcut is already used by the system */
32 | "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "このショートカットは、システム全体で使用されているショートカットのため、設定することができません。\nもしこのショートカットを使用したい場合、「システム環境設定」の「キーボード」、「マウス」のパネルから既に設定されているショートカットを変更してください。";
33 |
34 | /* Message for alert when shortcut is already used */
35 | "This shortcut cannot be used because it is already used by the menu item ‘%@’." = "このショートカットは、メニュー操作の「%@」で使われているため、設定できません。";
36 |
37 | /* VoiceOver shortcut help */
38 | "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "このボタンをクリックし、ショートカットを入力すると、新しいショートカットが設定されます。また、削除ボタンをおすと、ショートカットが削除されます。";
39 |
40 | /* Non-empty shortcut button in recording state */
41 | "Type New Shortcut" = "ショートカットを入力";
42 |
43 | /* Empty shortcut button in recording state */
44 | "Type Shortcut" = "ショートカットを入力";
45 |
46 | /* Cancel action button for non-empty shortcut in recording state */
47 | "Use Old Shortcut" = "古いショートカットを使用";
48 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/ko.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /* Cancel action button in recording state */
2 | "Cancel" = "취소";
3 |
4 | /* Tooltip for non-empty shortcut button */
5 | "Click to record new shortcut" = "클릭해 단축 키를 입력";
6 |
7 | /* Tooltip for hint button near the non-empty shortcut */
8 | "Delete shortcut" = "단축키 삭제";
9 |
10 | /* VoiceOver title */
11 | "keyboard shortcut" = "키보드 단축키";
12 |
13 | /* Alert button when shortcut is already used */
14 | "OK" = "좋아";
15 |
16 | /* Empty shortcut button in normal state */
17 | "Record Shortcut" = "단축키 입력";
18 |
19 | /* VoiceOver: Shortcut cleared */
20 | "Shortcut cleared" = "단축키 삭제됨";
21 |
22 | /* VoiceOver: Shortcut set */
23 | "Shortcut set" = "단축키 설정됨";
24 |
25 | /* Shortcut glyph name for SPACE key */
26 | "Space" = "스페이스 바";
27 |
28 | /* Title for alert when shortcut is already used */
29 | "The key combination %@ cannot be used" = "%@ 단축키로 설정할 수 없습니다";
30 |
31 | /* Message for alert when shortcut is already used by the system */
32 | "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "이 결합은 시스템 전체에서 사용 때문에 단축키로 설정 할 수 없습니다.\n단축키를 사용하고 싶으면 시스템 환경 설정의 키보드, 마우스 패널에서 이미 설정되어있는 단축키를 변경하십시오.";
33 |
34 | /* Message for alert when shortcut is already used */
35 | "This shortcut cannot be used because it is already used by the menu item ‘%@’." = "이 단축키는 ‘%@’ 메뉴 아이템에 사용되고 있기 때문에 설정할 수 없습니다.";
36 |
37 | /* VoiceOver shortcut help */
38 | "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "이 버튼을 클릭하고 단축키를 입력하면 새로운 단축키가 설정됩니다. 또한 삭제 버튼을 누르면 단축키가 삭제됩니다.";
39 |
40 | /* Non-empty shortcut button in recording state */
41 | "Type New Shortcut" = "새 단축키 입력";
42 |
43 | /* Empty shortcut button in recording state */
44 | "Type Shortcut" = "단축키 입력";
45 |
46 | /* Cancel action button for non-empty shortcut in recording state */
47 | "Use Old Shortcut" = "오래된 단축키를 사용";
48 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/nl.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /* Cancel action button in recording state */
2 | "Cancel" = "Verbreken";
3 |
4 | /* Tooltip for non-empty shortcut button */
5 | "Click to record new shortcut" = "Druk om een nieuwe sneltoets in te voeren";
6 |
7 | /* Tooltip for hint button near the non-empty shortcut */
8 | "Delete shortcut" = "Verwijder sneltoets";
9 |
10 | /* VoiceOver title */
11 | "keyboard shortcut" = "sneltoets";
12 |
13 | /* Alert button when shortcut is already used */
14 | "OK" = "OK";
15 |
16 | /* Empty shortcut button in normal state */
17 | "Record Shortcut" = "Sneltoets opnemen";
18 |
19 | /* VoiceOver: Shortcut cleared */
20 | "Shortcut cleared" = "Sneltoets verwijderd";
21 |
22 | /* VoiceOver: Shortcut set */
23 | "Shortcut set" = "Sneltoets zetten";
24 |
25 | /* Shortcut glyph name for SPACE key */
26 | "Space" = "Spatie";
27 |
28 | /* Title for alert when shortcut is already used */
29 | "The key combination %@ cannot be used" = "De sneltoetsencombinatie kan niet worden gebruikt";
30 |
31 | /* Message for alert when shortcut is already used by the system */
32 | "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Deze combinatie kan niet worden gebruikt want hij wordt al gebruikt door een systeembreed sneltoets.\nAls je deze combinatie echt wilt gebruiken, kun je de meeste sneltoetsen binnen Toetsenbordinstellingen veranderen.";
33 |
34 | /* Message for alert when shortcut is already used */
35 | "This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Deze sneltoets kan niet worden gebruikt want hij wordt al gebruikt door het menu item ‘%@’.";
36 |
37 | /* VoiceOver shortcut help */
38 | "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Om nieuwe sneltoets op te nemen, druk op deze knop, en voer een nieuwe sneltoets in, of druk op verwijder om bestaande sneltoets te verwijderen.";
39 |
40 | /* Non-empty shortcut button in recording state */
41 | "Type New Shortcut" = "Voer Nieuwe Sneltoets in";
42 |
43 | /* Empty shortcut button in recording state */
44 | "Type Shortcut" = "Voer Sneltoets in";
45 |
46 | /* Cancel action button for non-empty shortcut in recording state */
47 | "Use Old Shortcut" = "Gebruik Oude Sneltoets";
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/pl.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /* Cancel action button in recording state */
2 | "Cancel" = "Anuluj";
3 |
4 | /* Tooltip for non-empty shortcut button */
5 | "Click to record new shortcut" = "Kliknij, by ustawić nowy skrót";
6 |
7 | /* Tooltip for hint button near the non-empty shortcut */
8 | "Delete shortcut" = "Usuń skrót";
9 |
10 | /* VoiceOver title */
11 | "keyboard shortcut" = "skrót klawiszowy";
12 |
13 | /* Alert button when shortcut is already used */
14 | "OK" = "OK";
15 |
16 | /* Empty shortcut button in normal state */
17 | "Record Shortcut" = "Utwórz skrót";
18 |
19 | /* VoiceOver: Shortcut cleared */
20 | "Shortcut cleared" = "Skrót usunięty";
21 |
22 | /* VoiceOver: Shortcut set */
23 | "Shortcut set" = "Skrót ustawiony";
24 |
25 | /* Shortcut glyph name for SPACE key */
26 | "Space" = "Spacja";
27 |
28 | /* Title for alert when shortcut is already used */
29 | "The key combination %@ cannot be used" = "Nie można użyć kombinacji klawiszy %@";
30 |
31 | /* Message for alert when shortcut is already used by the system */
32 | "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Nie można użyć tej kombinacji, ponieważ jest już zajęta przez skrót systemowy.\nMożesz to zmienić w panelu Klawiatura w Preferencjach systemowych.";
33 |
34 | /* Message for alert when shortcut is already used */
35 | "This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Ten skrót nie może być użyty, ponieważ w menu ma już przypisaną funkcję ‘%@’.";
36 |
37 | /* VoiceOver shortcut help */
38 | "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Aby ustawić nowy skrót, użyj tego przycisku, a następnie wpisz nowy skrót albo naciśnij klawisz delete, by usunąć istniejący skrót";
39 |
40 | /* Non-empty shortcut button in recording state */
41 | "Type New Shortcut" = "Wpisz nowy skrót";
42 |
43 | /* Empty shortcut button in recording state */
44 | "Type Shortcut" = "Wpisz skrót";
45 |
46 | /* Cancel action button for non-empty shortcut in recording state */
47 | "Use Old Shortcut" = "Użyj starego skrótu";
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/ru.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /* Cancel action button in recording state */
2 | "Cancel" = "Отмена";
3 |
4 | /* Tooltip for non-empty shortcut button */
5 | "Click to record new shortcut" = "Нажмите для записи сочетания клавиш";
6 |
7 | /* Tooltip for hint button near the non-empty shortcut */
8 | "Delete shortcut" = "Удалить горячую клавишу";
9 |
10 | /* VoiceOver title */
11 | "keyboard shortcut" = "сочетание клавиш";
12 |
13 | /* Alert button when shortcut is already used */
14 | "OK" = "ОК";
15 |
16 | /* Empty shortcut button in normal state */
17 | "Record Shortcut" = "Ввести сочетание";
18 |
19 | /* VoiceOver: Shortcut cleared */
20 | "Shortcut cleared" = "Сочетание клавиш удалено";
21 |
22 | /* VoiceOver: Shortcut set */
23 | "Shortcut set" = "Сочетание клавиш назначено";
24 |
25 | /* Shortcut glyph name for SPACE key */
26 | "Space" = "Пробел";
27 |
28 | /* Title for alert when shortcut is already used */
29 | "The key combination %@ cannot be used" = "Нельзя использовать сочетание клавиш %@";
30 |
31 | /* Message for alert when shortcut is already used by the system */
32 | "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "Нельзя использовать это сочетание клавиш, потому что оно уже используется в системе.\n Если вы хотите использовать это сочетание, измените существующее системное сочетание клавиш через панель Клавиатура в Cистемных настройках.";
33 |
34 | /* Message for alert when shortcut is already used */
35 | "This shortcut cannot be used because it is already used by the menu item ‘%@’." = "Нельзя использовать это сочетание, потому что оно уже связано с элементом ‘%@’.";
36 |
37 | /* VoiceOver shortcut help */
38 | "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "Чтобы назначить новое сочетание клавиш, нажмите эту кнопку и введите новое сочетание, или нажмите \"Удалить\", чтобы удалить действующее сочетание клавиш.";
39 |
40 | /* Non-empty shortcut button in recording state */
41 | "Type New Shortcut" = "Введите сочетание";
42 |
43 | /* Empty shortcut button in recording state */
44 | "Type Shortcut" = "Введите сочетание";
45 |
46 | /* Cancel action button for non-empty shortcut in recording state */
47 | "Use Old Shortcut" = "Вернуть старое";
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/zh-Hans.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /* Cancel action button in recording state */
2 | "Cancel" = "取消";
3 |
4 | /* Tooltip for non-empty shortcut button */
5 | "Click to record new shortcut" = "点击以记录新快捷键";
6 |
7 | /* Tooltip for hint button near the non-empty shortcut */
8 | "Delete shortcut" = "删除快捷键";
9 |
10 | /* VoiceOver title */
11 | "keyboard shortcut" = "键盘快捷键";
12 |
13 | /* Alert button when shortcut is already used */
14 | "OK" = "好";
15 |
16 | /* Empty shortcut button in normal state */
17 | "Record Shortcut" = "记录快捷键";
18 |
19 | /* VoiceOver: Shortcut cleared */
20 | "Shortcut cleared" = "快捷键已清除";
21 |
22 | /* VoiceOver: Shortcut set */
23 | "Shortcut set" = "快捷键已设置";
24 |
25 | /* Shortcut glyph name for SPACE key */
26 | "Space" = "空格键";
27 |
28 | /* Title for alert when shortcut is already used */
29 | "The key combination %@ cannot be used" = "按键组合“%@”无法使用";
30 |
31 | /* Message for alert when shortcut is already used by the system */
32 | "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "当前按键组合无法使用,因为它已经用作其他系统全局快捷键。\n如果您真的想使用这个按键组合,大部分系统全局快捷键能在“系统偏好设置”里的“键盘”和“鼠标”面板中重设。";
33 |
34 | /* Message for alert when shortcut is already used */
35 | "This shortcut cannot be used because it is already used by the menu item ‘%@’." = "当前快捷键无法使用,因为它已用作菜单项“%@”的快捷键。";
36 |
37 | /* VoiceOver shortcut help */
38 | "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "若要记录新的快捷键,单击此按钮,然后键入新的快捷键,或者按“delete键”删除已经存在的快捷键。";
39 |
40 | /* Non-empty shortcut button in recording state */
41 | "Type New Shortcut" = "键入新快捷键";
42 |
43 | /* Empty shortcut button in recording state */
44 | "Type Shortcut" = "键入快捷键";
45 |
46 | /* Cancel action button for non-empty shortcut in recording state */
47 | "Use Old Shortcut" = "还原快捷键";
48 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/MASShortcut/zh-Hant.lproj/Localizable.strings:
--------------------------------------------------------------------------------
1 | /* Cancel action button in recording state */
2 | "Cancel" = "取消";
3 |
4 | /* Tooltip for non-empty shortcut button */
5 | "Click to record new shortcut" = "點選以記錄新快捷鍵";
6 |
7 | /* Tooltip for hint button near the non-empty shortcut */
8 | "Delete shortcut" = "刪除快捷鍵";
9 |
10 | /* VoiceOver title */
11 | "keyboard shortcut" = "鍵盤快捷鍵";
12 |
13 | /* Alert button when shortcut is already used */
14 | "OK" = "好";
15 |
16 | /* Empty shortcut button in normal state */
17 | "Record Shortcut" = "記錄快捷鍵";
18 |
19 | /* VoiceOver: Shortcut cleared */
20 | "Shortcut cleared" = "快捷鍵已清除";
21 |
22 | /* VoiceOver: Shortcut set */
23 | "Shortcut set" = "快捷鍵已設定";
24 |
25 | /* Shortcut glyph name for SPACE key */
26 | "Space" = "空格鍵";
27 |
28 | /* Title for alert when shortcut is already used */
29 | "The key combination %@ cannot be used" = "按鍵組合“%@”無法使用";
30 |
31 | /* Message for alert when shortcut is already used by the system */
32 | "This combination cannot be used because it is already used by a system-wide keyboard shortcut.\nIf you really want to use this key combination, most shortcuts can be changed in the Keyboard & Mouse panel in System Preferences." = "當前按鍵組合無法使用,因為它已經用作其他系統全局快捷鍵。\n如果您真的想使用這個按鍵組合,大部分系統全局快捷鍵能在“系統偏好設定”裡的“鍵盤”和“滑鼠”面板中重設。";
33 |
34 | /* Message for alert when shortcut is already used */
35 | "This shortcut cannot be used because it is already used by the menu item ‘%@’." = "當前快捷鍵無法使用,因為它已用作選單項“%@”的快捷鍵。";
36 |
37 | /* VoiceOver shortcut help */
38 | "To record a new shortcut, click this button, and then type the new shortcut, or press delete to clear an existing shortcut." = "若要記錄新的快捷鍵,單擊此按鈕,然後鍵入新的快捷鍵,或者按“delete鍵”刪除已經存在的快捷鍵。";
39 |
40 | /* Non-empty shortcut button in recording state */
41 | "Type New Shortcut" = "鍵入新快捷鍵";
42 |
43 | /* Empty shortcut button in recording state */
44 | "Type Shortcut" = "鍵入快捷鍵";
45 |
46 | /* Cancel action button for non-empty shortcut in recording state */
47 | "Use Old Shortcut" = "還原快捷鍵";
48 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - Crashlytics (3.8.4):
3 | - Fabric (~> 1.6.3)
4 | - Fabric (1.6.11)
5 | - MASShortcut (2.3.6)
6 |
7 | DEPENDENCIES:
8 | - Crashlytics
9 | - Fabric
10 | - MASShortcut
11 |
12 | SPEC CHECKSUMS:
13 | Crashlytics: 79e236942ca1e7fc641df1feb9a275360a78ab6a
14 | Fabric: 5911403591946b8228ab1c51d98f1d7137e863c6
15 | MASShortcut: 9c215e8a8a78f3d01ce56da48e2730ab66b538fa
16 |
17 | PODFILE CHECKSUM: 40dc6c9e3f089bce7dc831aa0e758ae95a7cd3d4
18 |
19 | COCOAPODS: 1.2.0
20 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Pods.xcodeproj/xcuserdata/fincher.xcuserdatad/xcschemes/MASShortcut-MASShortcut.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
45 |
46 |
52 |
53 |
55 |
56 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Pods.xcodeproj/xcuserdata/fincher.xcuserdatad/xcschemes/MASShortcut.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
45 |
46 |
52 |
53 |
55 |
56 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Pods.xcodeproj/xcuserdata/fincher.xcuserdatad/xcschemes/Pods-BoardForGitHub.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
44 |
45 |
46 |
52 |
53 |
55 |
56 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Pods.xcodeproj/xcuserdata/fincher.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | MASShortcut-MASShortcut.xcscheme
8 |
9 | isShown
10 |
11 |
12 | MASShortcut.xcscheme
13 |
14 | isShown
15 |
16 |
17 | Pods-BoardForGitHub.xcscheme
18 |
19 | isShown
20 |
21 |
22 |
23 | SuppressBuildableAutocreation
24 |
25 | 21E49887F9334B84548BFF0BA2C69086
26 |
27 | primary
28 |
29 |
30 | 2E029AB0CA275443A2AF3531E33683AB
31 |
32 | primary
33 |
34 |
35 | 9E257CC97E731BC2E0D88379517DB326
36 |
37 | primary
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Target Support Files/MASShortcut/MASShortcut-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_MASShortcut : NSObject
3 | @end
4 | @implementation PodsDummy_MASShortcut
5 | @end
6 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Target Support Files/MASShortcut/MASShortcut-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Target Support Files/MASShortcut/MASShortcut.xcconfig:
--------------------------------------------------------------------------------
1 | CONFIGURATION_BUILD_DIR = $PODS_CONFIGURATION_BUILD_DIR/MASShortcut
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/MASShortcut" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/Fabric" "${PODS_ROOT}/Headers/Public/MASShortcut"
4 | OTHER_LDFLAGS = -framework "AppKit" -framework "Carbon"
5 | PODS_BUILD_DIR = $BUILD_DIR
6 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/MASShortcut
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Target Support Files/MASShortcut/ResourceBundle-MASShortcut-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleIdentifier
8 | ${PRODUCT_BUNDLE_IDENTIFIER}
9 | CFBundleInfoDictionaryVersion
10 | 6.0
11 | CFBundleName
12 | ${PRODUCT_NAME}
13 | CFBundlePackageType
14 | BNDL
15 | CFBundleShortVersionString
16 | 2.3.6
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1
21 | NSPrincipalClass
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Target Support Files/Pods-BoardForGitHub/Pods-BoardForGitHub-acknowledgements.markdown:
--------------------------------------------------------------------------------
1 | # Acknowledgements
2 | This application makes use of the following third party libraries:
3 |
4 | ## Crashlytics
5 |
6 | Fabric: Copyright 2016 Twitter, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2016 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt
7 |
8 | ## Fabric
9 |
10 | Fabric: Copyright 2016 Twitter, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. OSS: http://get.fabric.io/terms/opensource.txt
11 |
12 | ## MASShortcut
13 |
14 | Copyright (c) 2012-2013, Vadim Shpakovski
15 | All rights reserved.
16 |
17 | Redistribution and use in source and binary forms, with or without
18 | modification, are permitted provided that the following conditions are met:
19 |
20 | 1. Redistributions of source code must retain the above copyright notice, this
21 | list of conditions and the following disclaimer.
22 | 2. Redistributions in binary form must reproduce the above copyright notice,
23 | this list of conditions and the following disclaimer in the documentation
24 | and/or other materials provided with the distribution.
25 |
26 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
27 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
28 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
29 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
30 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
32 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
33 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 |
37 | Generated by CocoaPods - https://cocoapods.org
38 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Target Support Files/Pods-BoardForGitHub/Pods-BoardForGitHub-acknowledgements.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | PreferenceSpecifiers
6 |
7 |
8 | FooterText
9 | This application makes use of the following third party libraries:
10 | Title
11 | Acknowledgements
12 | Type
13 | PSGroupSpecifier
14 |
15 |
16 | FooterText
17 | Fabric: Copyright 2016 Twitter, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. Crashlytics Kit: Copyright 2016 Crashlytics, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Crashlytics Terms of Service located at http://try.crashlytics.com/terms/terms-of-service.pdf and the Crashlytics Privacy Policy located at http://try.crashlytics.com/terms/privacy-policy.pdf. OSS: http://get.fabric.io/terms/opensource.txt
18 | License
19 | Commercial
20 | Title
21 | Crashlytics
22 | Type
23 | PSGroupSpecifier
24 |
25 |
26 | FooterText
27 | Fabric: Copyright 2016 Twitter, Inc. All Rights Reserved. Use of this software is subject to the terms and conditions of the Fabric Software and Services Agreement located at https://fabric.io/terms. OSS: http://get.fabric.io/terms/opensource.txt
28 | License
29 | Commercial
30 | Title
31 | Fabric
32 | Type
33 | PSGroupSpecifier
34 |
35 |
36 | FooterText
37 | Copyright (c) 2012-2013, Vadim Shpakovski
38 | All rights reserved.
39 |
40 | Redistribution and use in source and binary forms, with or without
41 | modification, are permitted provided that the following conditions are met:
42 |
43 | 1. Redistributions of source code must retain the above copyright notice, this
44 | list of conditions and the following disclaimer.
45 | 2. Redistributions in binary form must reproduce the above copyright notice,
46 | this list of conditions and the following disclaimer in the documentation
47 | and/or other materials provided with the distribution.
48 |
49 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
50 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
51 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
52 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
53 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
54 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
55 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
56 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
57 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
58 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
59 |
60 | License
61 | BSD 2-clause
62 | Title
63 | MASShortcut
64 | Type
65 | PSGroupSpecifier
66 |
67 |
68 | FooterText
69 | Generated by CocoaPods - https://cocoapods.org
70 | Title
71 |
72 | Type
73 | PSGroupSpecifier
74 |
75 |
76 | StringsTable
77 | Acknowledgements
78 | Title
79 | Acknowledgements
80 |
81 |
82 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Target Support Files/Pods-BoardForGitHub/Pods-BoardForGitHub-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_BoardForGitHub : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_BoardForGitHub
5 | @end
6 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Target Support Files/Pods-BoardForGitHub/Pods-BoardForGitHub-frameworks.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
5 | mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
6 |
7 | SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}"
8 |
9 | install_framework()
10 | {
11 | if [ -r "${BUILT_PRODUCTS_DIR}/$1" ]; then
12 | local source="${BUILT_PRODUCTS_DIR}/$1"
13 | elif [ -r "${BUILT_PRODUCTS_DIR}/$(basename "$1")" ]; then
14 | local source="${BUILT_PRODUCTS_DIR}/$(basename "$1")"
15 | elif [ -r "$1" ]; then
16 | local source="$1"
17 | fi
18 |
19 | local destination="${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
20 |
21 | if [ -L "${source}" ]; then
22 | echo "Symlinked..."
23 | source="$(readlink "${source}")"
24 | fi
25 |
26 | # use filter instead of exclude so missing patterns dont' throw errors
27 | echo "rsync -av --filter \"- CVS/\" --filter \"- .svn/\" --filter \"- .git/\" --filter \"- .hg/\" --filter \"- Headers\" --filter \"- PrivateHeaders\" --filter \"- Modules\" \"${source}\" \"${destination}\""
28 | rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers" --filter "- PrivateHeaders" --filter "- Modules" "${source}" "${destination}"
29 |
30 | local basename
31 | basename="$(basename -s .framework "$1")"
32 | binary="${destination}/${basename}.framework/${basename}"
33 | if ! [ -r "$binary" ]; then
34 | binary="${destination}/${basename}"
35 | fi
36 |
37 | # Strip invalid architectures so "fat" simulator / device frameworks work on device
38 | if [[ "$(file "$binary")" == *"dynamically linked shared library"* ]]; then
39 | strip_invalid_archs "$binary"
40 | fi
41 |
42 | # Resign the code if required by the build settings to avoid unstable apps
43 | code_sign_if_enabled "${destination}/$(basename "$1")"
44 |
45 | # Embed linked Swift runtime libraries. No longer necessary as of Xcode 7.
46 | if [ "${XCODE_VERSION_MAJOR}" -lt 7 ]; then
47 | local swift_runtime_libs
48 | swift_runtime_libs=$(xcrun otool -LX "$binary" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]})
49 | for lib in $swift_runtime_libs; do
50 | echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\""
51 | rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}"
52 | code_sign_if_enabled "${destination}/${lib}"
53 | done
54 | fi
55 | }
56 |
57 | # Signs a framework with the provided identity
58 | code_sign_if_enabled() {
59 | if [ -n "${EXPANDED_CODE_SIGN_IDENTITY}" -a "${CODE_SIGNING_REQUIRED}" != "NO" -a "${CODE_SIGNING_ALLOWED}" != "NO" ]; then
60 | # Use the current code_sign_identitiy
61 | echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}"
62 | local code_sign_cmd="/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} ${OTHER_CODE_SIGN_FLAGS} --preserve-metadata=identifier,entitlements '$1'"
63 |
64 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
65 | code_sign_cmd="$code_sign_cmd &"
66 | fi
67 | echo "$code_sign_cmd"
68 | eval "$code_sign_cmd"
69 | fi
70 | }
71 |
72 | # Strip invalid architectures
73 | strip_invalid_archs() {
74 | binary="$1"
75 | # Get architectures for current file
76 | archs="$(lipo -info "$binary" | rev | cut -d ':' -f1 | rev)"
77 | stripped=""
78 | for arch in $archs; do
79 | if ! [[ "${VALID_ARCHS}" == *"$arch"* ]]; then
80 | # Strip non-valid architectures in-place
81 | lipo -remove "$arch" -output "$binary" "$binary" || exit 1
82 | stripped="$stripped $arch"
83 | fi
84 | done
85 | if [[ "$stripped" ]]; then
86 | echo "Stripped $binary of architectures:$stripped"
87 | fi
88 | }
89 |
90 | if [ "${COCOAPODS_PARALLEL_CODE_SIGN}" == "true" ]; then
91 | wait
92 | fi
93 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Target Support Files/Pods-BoardForGitHub/Pods-BoardForGitHub-resources.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | set -e
3 |
4 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
5 |
6 | RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt
7 | > "$RESOURCES_TO_COPY"
8 |
9 | XCASSET_FILES=()
10 |
11 | case "${TARGETED_DEVICE_FAMILY}" in
12 | 1,2)
13 | TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone"
14 | ;;
15 | 1)
16 | TARGET_DEVICE_ARGS="--target-device iphone"
17 | ;;
18 | 2)
19 | TARGET_DEVICE_ARGS="--target-device ipad"
20 | ;;
21 | 3)
22 | TARGET_DEVICE_ARGS="--target-device tv"
23 | ;;
24 | *)
25 | TARGET_DEVICE_ARGS="--target-device mac"
26 | ;;
27 | esac
28 |
29 | install_resource()
30 | {
31 | if [[ "$1" = /* ]] ; then
32 | RESOURCE_PATH="$1"
33 | else
34 | RESOURCE_PATH="${PODS_ROOT}/$1"
35 | fi
36 | if [[ ! -e "$RESOURCE_PATH" ]] ; then
37 | cat << EOM
38 | error: Resource "$RESOURCE_PATH" not found. Run 'pod install' to update the copy resources script.
39 | EOM
40 | exit 1
41 | fi
42 | case $RESOURCE_PATH in
43 | *.storyboard)
44 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
45 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .storyboard`.storyboardc" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
46 | ;;
47 | *.xib)
48 | echo "ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile ${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib $RESOURCE_PATH --sdk ${SDKROOT} ${TARGET_DEVICE_ARGS}"
49 | ibtool --reference-external-strings-file --errors --warnings --notices --minimum-deployment-target ${!DEPLOYMENT_TARGET_SETTING_NAME} --output-format human-readable-text --compile "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$RESOURCE_PATH\" .xib`.nib" "$RESOURCE_PATH" --sdk "${SDKROOT}" ${TARGET_DEVICE_ARGS}
50 | ;;
51 | *.framework)
52 | echo "mkdir -p ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
53 | mkdir -p "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
54 | echo "rsync -av $RESOURCE_PATH ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
55 | rsync -av "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}"
56 | ;;
57 | *.xcdatamodel)
58 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH"`.mom\""
59 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodel`.mom"
60 | ;;
61 | *.xcdatamodeld)
62 | echo "xcrun momc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd\""
63 | xcrun momc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcdatamodeld`.momd"
64 | ;;
65 | *.xcmappingmodel)
66 | echo "xcrun mapc \"$RESOURCE_PATH\" \"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm\""
67 | xcrun mapc "$RESOURCE_PATH" "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$RESOURCE_PATH" .xcmappingmodel`.cdm"
68 | ;;
69 | *.xcassets)
70 | ABSOLUTE_XCASSET_FILE="$RESOURCE_PATH"
71 | XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE")
72 | ;;
73 | *)
74 | echo "$RESOURCE_PATH"
75 | echo "$RESOURCE_PATH" >> "$RESOURCES_TO_COPY"
76 | ;;
77 | esac
78 | }
79 | if [[ "$CONFIGURATION" == "Debug" ]]; then
80 | install_resource "$PODS_CONFIGURATION_BUILD_DIR/MASShortcut/MASShortcut.bundle"
81 | fi
82 | if [[ "$CONFIGURATION" == "Release" ]]; then
83 | install_resource "$PODS_CONFIGURATION_BUILD_DIR/MASShortcut/MASShortcut.bundle"
84 | fi
85 |
86 | mkdir -p "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
87 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
88 | if [[ "${ACTION}" == "install" ]] && [[ "${SKIP_INSTALL}" == "NO" ]]; then
89 | mkdir -p "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
90 | rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
91 | fi
92 | rm -f "$RESOURCES_TO_COPY"
93 |
94 | if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ]
95 | then
96 | # Find all other xcassets (this unfortunately includes those of path pods and other targets).
97 | OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d)
98 | while read line; do
99 | if [[ $line != "${PODS_ROOT}*" ]]; then
100 | XCASSET_FILES+=("$line")
101 | fi
102 | done <<<"$OTHER_XCASSETS"
103 |
104 | printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${!DEPLOYMENT_TARGET_SETTING_NAME}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}"
105 | fi
106 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Target Support Files/Pods-BoardForGitHub/Pods-BoardForGitHub.debug.xcconfig:
--------------------------------------------------------------------------------
1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/OSX" "${PODS_ROOT}/Fabric/OSX"
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/Fabric" "${PODS_ROOT}/Headers/Public/MASShortcut"
4 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/MASShortcut"
5 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -isystem "${PODS_ROOT}/Headers/Public/MASShortcut"
6 | OTHER_LDFLAGS = $(inherited) -ObjC -l"MASShortcut" -l"c++" -l"z" -framework "AppKit" -framework "Carbon" -framework "Crashlytics" -framework "Fabric" -framework "Security" -framework "SystemConfiguration"
7 | PODS_BUILD_DIR = $BUILD_DIR
8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_ROOT = ${SRCROOT}/Pods
10 |
--------------------------------------------------------------------------------
/BoardForGitHub/Pods/Target Support Files/Pods-BoardForGitHub/Pods-BoardForGitHub.release.xcconfig:
--------------------------------------------------------------------------------
1 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Crashlytics/OSX" "${PODS_ROOT}/Fabric/OSX"
2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Crashlytics" "${PODS_ROOT}/Headers/Public/Fabric" "${PODS_ROOT}/Headers/Public/MASShortcut"
4 | LIBRARY_SEARCH_PATHS = $(inherited) "$PODS_CONFIGURATION_BUILD_DIR/MASShortcut"
5 | OTHER_CFLAGS = $(inherited) -isystem "${PODS_ROOT}/Headers/Public" -isystem "${PODS_ROOT}/Headers/Public/Crashlytics" -isystem "${PODS_ROOT}/Headers/Public/Fabric" -isystem "${PODS_ROOT}/Headers/Public/MASShortcut"
6 | OTHER_LDFLAGS = $(inherited) -ObjC -l"MASShortcut" -l"c++" -l"z" -framework "AppKit" -framework "Carbon" -framework "Crashlytics" -framework "Fabric" -framework "Security" -framework "SystemConfiguration"
7 | PODS_BUILD_DIR = $BUILD_DIR
8 | PODS_CONFIGURATION_BUILD_DIR = $PODS_BUILD_DIR/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_ROOT = ${SRCROOT}/Pods
10 |
--------------------------------------------------------------------------------
/DemoImgs/1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/DemoImgs/1.jpg
--------------------------------------------------------------------------------
/DemoImgs/2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/DemoImgs/2.jpg
--------------------------------------------------------------------------------
/DemoImgs/Banner.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/DemoImgs/Banner.jpg
--------------------------------------------------------------------------------
/Design.sketch:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/JustinFincher/BoardForGitHub/a536809a89965cca6e785947397507dbd0cc3e55/Design.sketch
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Board For GitHub
2 |
3 | [](https://travis-ci.org/JustinFincher/BoardForGitHub)
4 |
5 | A small application to monitor your GitHub project web page in a native macOS app :octocat:!
6 |
7 | 
8 |
9 | ---
10 |
11 | # System Requirement
12 |
13 | 10.12, maybe 10.11 and 10.10, but I am not sure because I used a new enum (from 10.12) with `self.window.styleMask` in `JZWindowController.m` and I don't know if it will fall back to the equal state when in previous version of macOS.
14 |
15 | ---
16 |
17 | # How to use
18 |
19 | If this is the first time you open the app, you will be redirected to the login page.
20 | And shows the default project :
21 | 
22 |
23 | Then click the octocat icon ( upper-left, next to window buttons ), a dialog will open asking project url. Fill it and click OK to load web page and also save it in userdefaults so next time this app will load this url automatically.
24 | 
25 |
26 | ---
27 |
28 | # Release
29 |
30 | Go [Releases](https://github.com/JustinFincher/BoardForGitHub/releases)
31 |
--------------------------------------------------------------------------------
/docs/README.md:
--------------------------------------------------------------------------------
1 | # Board For GitHub
2 |
3 | [](https://travis-ci.org/JustinFincher/BoardForGitHub)
4 |
5 | A small application to monitor your GitHub project web page in a native macOS app :octocat:!
6 |
7 | 
8 |
9 | ---
10 |
11 | # System Requirement
12 |
13 | 10.12, maybe 10.11 and 10.10, but I am not sure because I used a new enum (from 10.12) with `self.window.styleMask` in `JZWindowController.m` and I don't know if it will fall back to the equal state when in previous version of macOS.
14 |
15 | ---
16 |
17 | # How to use
18 |
19 | If this is the first time you open the app, you will be redirected to the login page.
20 | And shows the default project :
21 | 
22 |
23 | Then click the octocat icon ( upper-left, next to window buttons ), a dialog will open asking project url. Fill it and click OK to load web page and also save it in userdefaults so next time this app will load this url automatically.
24 | 
25 |
26 | ---
27 |
28 | # Release
29 |
30 | Go [Releases](https://github.com/JustinFincher/BoardForGitHub/releases)
31 |
--------------------------------------------------------------------------------
/docs/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-merlot
--------------------------------------------------------------------------------