diff --git a/Classes/Controllers/PBPrefsWindowController.h b/Classes/Controllers/PBPrefsWindowController.h index 5176c3f90..8b979e517 100644 --- a/Classes/Controllers/PBPrefsWindowController.h +++ b/Classes/Controllers/PBPrefsWindowController.h @@ -21,6 +21,8 @@ IBOutlet NSView *gitPathOpenAccessory; NSOpenPanel *gitPathOpenPanel; + IBOutlet NSTextField *gistAccessTokenDescription; + } - (IBAction) checkGitValidity: sender; diff --git a/Classes/Controllers/PBPrefsWindowController.m b/Classes/Controllers/PBPrefsWindowController.m index 7b8eca045..29079a9dc 100644 --- a/Classes/Controllers/PBPrefsWindowController.m +++ b/Classes/Controllers/PBPrefsWindowController.m @@ -20,7 +20,7 @@ - (void)setupToolbar { // GENERAL [self addView:generalPrefsView label:@"General" image:[NSImage imageNamed:@"gitx"]]; - // INTERGRATION + // INTEGRATION [self addView:integrationPrefsView label:@"Integration" image:[NSImage imageNamed:NSImageNameNetwork]]; // UPDATES [self addView:updatesPrefsView label:@"Updates"]; @@ -42,6 +42,25 @@ - (NSString *)defaultViewIdentifier return [super defaultViewIdentifier]; } +- (void)windowDidLoad +{ + [super windowDidLoad]; + + // Linkify the description of how to obtain a personal access token from github : + NSMutableAttributedString* description = [[gistAccessTokenDescription attributedStringValue] mutableCopy]; + NSRange linkRange = [[description string] rangeOfString:@"Personal API Access Token"]; + NSURL* url = [NSURL URLWithString:@"https://github.com/settings/applications"]; + + [description addAttribute:NSLinkAttributeName value:url range:linkRange]; + [description addAttribute:NSCursorAttributeName value:[NSCursor pointingHandCursor]range:linkRange]; + [description addAttribute:NSForegroundColorAttributeName value:[NSColor blueColor] range:linkRange]; + + [gistAccessTokenDescription setAttributedStringValue:description]; + // necessary so that the textfield will register clicks : + [gistAccessTokenDescription setAllowsEditingTextAttributes:YES]; + [gistAccessTokenDescription setSelectable:YES]; +} + #pragma mark - #pragma mark Delegate methods diff --git a/Classes/Controllers/PBWebHistoryController.m b/Classes/Controllers/PBWebHistoryController.m index ff366b64f..c4a278605 100644 --- a/Classes/Controllers/PBWebHistoryController.m +++ b/Classes/Controllers/PBWebHistoryController.m @@ -172,6 +172,15 @@ - (void)webView:(WebView *)sender decidePolicyForNewWindowAction:(NSDictionary return [config stringForKey:key]; } +- getPreference:(NSString*)key +{ + if ([key isEqualToString:@"gistAccessToken"]) { + return [PBGitDefaults gistAccessToken]; + } else { + NSLog(@"Unknown config key %@", key); + return nil; + } +} - (void) preferencesChanged { diff --git a/Classes/git/PBGitDefaults.h b/Classes/git/PBGitDefaults.h index b43e27cc1..bbd15a9f4 100644 --- a/Classes/git/PBGitDefaults.h +++ b/Classes/git/PBGitDefaults.h @@ -18,6 +18,7 @@ + (BOOL) isGravatarEnabled; + (BOOL) confirmPublicGists; + (BOOL) isGistPublic; ++ (NSString *) gistAccessToken; + (BOOL)showWhitespaceDifferences; + (BOOL) shouldCheckoutBranch; + (void) setShouldCheckoutBranch:(BOOL)shouldCheckout; diff --git a/Classes/git/PBGitDefaults.m b/Classes/git/PBGitDefaults.m index 4eca29d3e..2d534d546 100644 --- a/Classes/git/PBGitDefaults.m +++ b/Classes/git/PBGitDefaults.m @@ -18,6 +18,7 @@ #define kEnableGravatar @"PBEnableGravatar" #define kConfirmPublicGists @"PBConfirmPublicGists" #define kPublicGist @"PBGistPublic" +#define kGistAccessToken @"PBGistAccessToken" #define kShowWhitespaceDifferences @"PBShowWhitespaceDifferences" #define kOpenCurDirOnLaunch @"PBOpenCurDirOnLaunch" #define kShowOpenPanelOnLaunch @"PBShowOpenPanelOnLaunch" @@ -102,6 +103,11 @@ + (BOOL) isGistPublic return [[NSUserDefaults standardUserDefaults] boolForKey:kPublicGist]; } ++ (NSString *) gistAccessToken +{ + return [[NSUserDefaults standardUserDefaults] stringForKey:kGistAccessToken]; +} + + (BOOL)showWhitespaceDifferences { return [[NSUserDefaults standardUserDefaults] boolForKey:kShowWhitespaceDifferences]; diff --git a/English.lproj/Preferences.xib b/English.lproj/Preferences.xib index 0625ede09..64d565d23 100644 --- a/English.lproj/Preferences.xib +++ b/English.lproj/Preferences.xib @@ -2,13 +2,13 @@ 1060 - 12C60 - 2844 - 1187.34 - 625.00 + 12E55 + 3084 + 1187.39 + 626.00 com.apple.InterfaceBuilder.CocoaPlugin - 2844 + 3084 NSButton @@ -642,10 +642,70 @@ 268 + + + 268 + {{37, 52}, {346, 28}} + + + + YES + + 67108864 + 1346502656 + You can enter a Personal API Access Token to associate Gists with your Github account. + + + + + + NO + + + + 268 + {{137, 85}, {243, 22}} + + + + YES + + -1804599231 + 272630784 + + + + YES + + + + NO + + + + 268 + {{37, 88}, {95, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + Access Token: + + _NS:1535 + + + + + NO + 268 - {{18, 80}, {111, 18}} + {{18, 153}, {111, 18}} @@ -695,7 +755,7 @@ 268 - {{38, 60}, {181, 18}} + {{38, 133}, {181, 18}} @@ -720,10 +780,10 @@ 268 - {{38, 38}, {179, 18}} + {{38, 111}, {179, 18}} - + YES -2080374784 @@ -743,7 +803,7 @@ NO - {400, 116} + {400, 189} @@ -824,6 +884,14 @@ 140 + + + gistAccessTokenDescription + + + + 185 + value: automaticallyChecksForUpdates @@ -1153,6 +1221,42 @@ 163 + + + enabled: values.PBEnableGist + + + + + + enabled: values.PBEnableGist + enabled + values.PBEnableGist + 2 + + + 173 + + + + value: values.PBGistAccessToken + + + + + + value: values.PBGistAccessToken + value + values.PBGistAccessToken + + NSContinuouslyUpdatesValue + + + 2 + + + 179 + @@ -1425,8 +1529,11 @@ - + + + + Integration @@ -1600,6 +1707,45 @@ + + 164 + + + + + + + + 165 + + + + + 166 + + + + + + + + 167 + + + + + 169 + + + + + + + + 170 + + + @@ -1649,7 +1795,13 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -1693,13 +1845,24 @@ - 163 + 185 DBPrefsWindowController NSWindowController + + showWindow: + id + + + showWindow: + + showWindow: + id + + IBProjectSource ./Classes/DBPrefsWindowController.h @@ -1735,6 +1898,7 @@ NSImageView NSView + NSTextField NSPathControl NSView NSView @@ -1749,6 +1913,10 @@ generalPrefsView NSView + + gistAccessTokenDescription + NSTextField + gitPathController NSPathControl diff --git a/html/views/history/history.js b/html/views/history/history.js index fb0639e95..dee736c2d 100644 --- a/html/views/history/history.js +++ b/html/views/history/history.js @@ -81,13 +81,13 @@ var confirm_gist = function(confirmation_message) { } var gistie = function() { - notify("Uploading code to Gistie..", 0); + notify("Uploading code to gist.github.com...", 0); var parameters = {public:false, files:{}}; var filename = commit.object.subject.replace(/[^a-zA-Z0-9]/g, "-") + ".patch"; parameters.files[filename] = {content: commit.object.patch()}; - var accessToken = Controller.getConfig_("github.token"); // obtain a personal access token from https://github.com/settings/applications + var accessToken = Controller.getPreference_("gistAccessToken"); // TODO: Replace true with private preference if (Controller.isFeatureEnabled_("publicGist")) parameters.public = true; @@ -100,7 +100,10 @@ var gistie = function() { if (success && response.html_url) { notify("Code uploaded to "+response.html_url+"", 1); } else { - notify("Pasting to Gistie failed :(.", -1); + var message = "Pasting to gist.github.com failed :(."; + if (response && response.message) + message += " (" + response.message + ")"; + notify(message, -1); Controller.log_(t.responseText); } } @@ -116,7 +119,7 @@ var gistie = function() { try { t.send(JSON.stringify(parameters)); } catch(e) { - notify("Pasting to Gistie failed: " + e, -1); + notify("Pasting to gist.github.com failed: " + e, -1); } }