Skip to content

Commit 636068c

Browse files
author
Uwe Hees
committed
Merge remote-tracking branch 'laullon/master'
2 parents bb46584 + d609816 commit 636068c

File tree

7 files changed

+339
-113
lines changed

7 files changed

+339
-113
lines changed

English.lproj/Preferences.xib

Lines changed: 257 additions & 106 deletions
Large diffs are not rendered by default.

GLFileView.m

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -430,8 +430,10 @@ + (NSString *)parseDiffHeader:(NSString *)txt
430430

431431
+(NSString *)getFileName:(NSString *)line
432432
{
433-
NSRange b = [line rangeOfString:@"b/"];
434-
NSString *file=[line substringFromIndex:b.location+2];
433+
NSRange b = [line rangeOfString:@" b/"];
434+
NSString *file=[line substringFromIndex:b.location+3];
435+
DLog(@"line=%@",line);
436+
DLog(@"file=%@",file);
435437
return file;
436438
}
437439

GitX.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,7 @@
232232
F5FE6C030EB13BC900F30D12 /* PBServicesController.m in Sources */ = {isa = PBXBuildFile; fileRef = F5FE6C020EB13BC900F30D12 /* PBServicesController.m */; };
233233
F5FF4E180E0829C20006317A /* PBGitRevList.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5FF4E170E0829C20006317A /* PBGitRevList.mm */; };
234234
F5FF4E7A0E082E440006317A /* PBGitGrapher.mm in Sources */ = {isa = PBXBuildFile; fileRef = F5FF4E790E082E440006317A /* PBGitGrapher.mm */; };
235+
FA8DFF3E131AEE2700C0F289 /* Start_iTerm2.applescript in Resources */ = {isa = PBXBuildFile; fileRef = FA8DFF37131AEDD400C0F289 /* Start_iTerm2.applescript */; };
235236
/* End PBXBuildFile section */
236237

237238
/* Begin PBXContainerItemProxy section */
@@ -575,6 +576,7 @@
575576
F5FF4E170E0829C20006317A /* PBGitRevList.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PBGitRevList.mm; sourceTree = "<group>"; };
576577
F5FF4E780E082E440006317A /* PBGitGrapher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBGitGrapher.h; sourceTree = "<group>"; };
577578
F5FF4E790E082E440006317A /* PBGitGrapher.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PBGitGrapher.mm; sourceTree = "<group>"; };
579+
FA8DFF37131AEDD400C0F289 /* Start_iTerm2.applescript */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.applescript; path = Start_iTerm2.applescript; sourceTree = "<group>"; };
578580
/* End PBXFileReference section */
579581

580582
/* Begin PBXFrameworksBuildPhase section */
@@ -815,6 +817,7 @@
815817
29B97317FDCFA39411CA2CEA /* Resources */ = {
816818
isa = PBXGroup;
817819
children = (
820+
FA8DFF37131AEDD400C0F289 /* Start_iTerm2.applescript */,
818821
316E7200131EE9C600AFBB36 /* list_Template.png */,
819822
316E7201131EE9C600AFBB36 /* sidebar_Template.png */,
820823
21025C1012947AB200D87200 /* sourceListAction.png */,
@@ -1360,6 +1363,7 @@
13601363
isa = PBXResourcesBuildPhase;
13611364
buildActionMask = 2147483647;
13621365
files = (
1366+
FA8DFF3E131AEE2700C0F289 /* Start_iTerm2.applescript in Resources */,
13631367
F5E92A1B0E88550E00056E75 /* empty_file.png in Resources */,
13641368
913D5E500E55645900CECEA2 /* gitx in Resources */,
13651369
551BF176112F3F4B00265053 /* gitx_askpasswd in Resources */,

PBGitDefaults.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@
3535
+ (void) setBranchFilter:(NSInteger)state;
3636
+ (NSInteger)historySearchMode;
3737
+ (void)setHistorySearchMode:(NSInteger)mode;
38+
+ (BOOL) isUseITerm2;
39+
+ (BOOL) isITerm2Available;
40+
+ (void) setITerm2Available:(BOOL)iTerm2Available;
3841

3942

4043
// Suppressed Dialog Warnings

PBGitDefaults.m

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
#define kBranchFilterState @"PBBranchFilter"
2929
#define kHistorySearchMode @"PBHistorySearchMode"
3030
#define kSuppressedDialogWarnings @"Suppressed Dialog Warnings"
31+
#define kUseITerm2 @"PBUseITerm2"
32+
#define kITerm2Available @"PBITerm2Available"
3133

3234

3335
@implementation PBGitDefaults
@@ -61,6 +63,10 @@ + (void)initialize
6163
forKey:kOpenPreviousDocumentsOnLaunch];
6264
[defaultValues setObject:[NSNumber numberWithInteger:kGitXBasicSeachMode]
6365
forKey:kHistorySearchMode];
66+
[defaultValues setObject:[NSNumber numberWithBool:NO]
67+
forKey:kUseITerm2];
68+
[defaultValues setObject:[NSNumber numberWithBool:NO]
69+
forKey:kITerm2Available];
6470
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultValues];
6571
}
6672

@@ -183,6 +189,28 @@ + (void)setHistorySearchMode:(NSInteger)mode
183189
[[NSUserDefaults standardUserDefaults] setInteger:mode forKey:kHistorySearchMode];
184190
}
185191

192+
+ (BOOL) isUseITerm2
193+
{
194+
[self isITerm2Available];
195+
return [[NSUserDefaults standardUserDefaults] boolForKey:kUseITerm2];
196+
}
197+
198+
+ (BOOL) isITerm2Available
199+
{
200+
NSString *iTermPath = [[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:@"com.googlecode.iterm2"];
201+
[self setITerm2Available:[[NSFileManager defaultManager] fileExistsAtPath:iTermPath]];
202+
203+
return [[NSUserDefaults standardUserDefaults] boolForKey:kITerm2Available];
204+
}
205+
206+
+ (void) setITerm2Available:(BOOL)iTerm2Available
207+
{
208+
if (!iTerm2Available)
209+
[[NSUserDefaults standardUserDefaults] setBool:iTerm2Available forKey:kUseITerm2];
210+
211+
[[NSUserDefaults standardUserDefaults] setBool:iTerm2Available forKey:kITerm2Available];
212+
[[NSUserDefaults standardUserDefaults] synchronize];
213+
}
186214

187215

188216
// Suppressed Dialog Warnings

PBGitWindowController.m

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,15 @@ - (void)windowDidBecomeKey:(NSNotification *)notification
140140
if ([PBGitDefaults refreshAutomatically]) {
141141
[contentController refresh:nil];
142142
}
143+
144+
if ([PBGitDefaults isUseITerm2]) {
145+
[terminalItem setImage:[[NSWorkspace sharedWorkspace] iconForFile:[[NSWorkspace sharedWorkspace] absolutePathForAppBundleWithIdentifier:@"com.googlecode.iterm2"]]];
146+
[terminalItem setLabel:@"iTerm"];
147+
}
148+
else {
149+
[terminalItem setImage:[[NSWorkspace sharedWorkspace] iconForFile:@"/Applications/Utilities/Terminal.app/"]];
150+
[terminalItem setLabel:@"Terminal"];
151+
}
143152
}
144153

145154
- (void)showErrorSheetTitle:(NSString *)title message:(NSString *)message arguments:(NSArray *)arguments output:(NSString *)output
@@ -161,12 +170,25 @@ - (IBAction) revealInFinder:(id)sender
161170

162171
- (IBAction) openInTerminal:(id)sender
163172
{
164-
TerminalApplication *term = [SBApplication applicationWithBundleIdentifier: @"com.apple.Terminal"];
165173
NSString *workingDirectory = [[repository workingDirectory] stringByAppendingString:@"/"];
166-
NSString *cmd = [NSString stringWithFormat: @"cd \"%@\"; clear; echo '# Opened by GitX:'; git status", workingDirectory];
167-
[term doScript: cmd in: nil];
168-
[NSThread sleepForTimeInterval: 0.1];
169-
[term activate];
174+
175+
if ([PBGitDefaults isUseITerm2]) {
176+
NSStringEncoding encoding;
177+
NSString *resourcePath = [[[NSBundle bundleForClass:[self class]] resourcePath] stringByAppendingPathComponent:@"Start_iTerm2.applescript"];
178+
NSString *scriptSource = [NSString stringWithContentsOfFile:resourcePath usedEncoding:&encoding error:nil];
179+
NSString *iTerm2StartScript = [scriptSource stringByReplacingOccurrencesOfString:@"%%workDir%%" withString:workingDirectory];
180+
181+
NSAppleScript *scriptObject = [[NSAppleScript alloc] initWithSource:iTerm2StartScript];
182+
[scriptObject executeAndReturnError:nil];
183+
}
184+
else {
185+
TerminalApplication *term = [SBApplication applicationWithBundleIdentifier:@"com.apple.Terminal"];
186+
NSString *cmd = [NSString stringWithFormat: @"cd \"%@\"; clear; echo '# Opened by GitX:'; git status", workingDirectory];
187+
[term doScript: cmd in: nil];
188+
[NSThread sleepForTimeInterval: 0.1];
189+
[term activate];
190+
}
191+
170192
}
171193

172194
- (IBAction) cloneTo:(id)sender

Start_iTerm2.applescript

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
tell application "iTerm"
2+
activate
3+
try
4+
set myterm to the first terminal
5+
on error
6+
set myterm to (make new terminal)
7+
end try
8+
tell myterm
9+
launch session "gitx"
10+
tell the last session
11+
set name to "Opened by GitX"
12+
exec command "/bin/bash"
13+
write text "cd %%workDir%%; clear; echo '# Opened by GitX:'; git status"
14+
end tell
15+
end tell
16+
end tell

0 commit comments

Comments
 (0)