From 2b0000ca23aa26d1d5c5b718b2039c0a6d83ca08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Berg?= Date: Mon, 26 Oct 2009 16:26:52 +0100 Subject: [PATCH] Add menu and toolbar changes from cyberfox --- Crystal_Clear_action_2downarrow.png | Bin 0 -> 10231 bytes Crystal_Clear_action_2uparrow.png | Bin 0 -> 10137 bytes Crystal_Clear_action_reload.png | Bin 0 -> 10703 bytes English.lproj/RepositoryWindow.xib | 705 +++++++++++++++++++++++++++- GitX.xcodeproj/project.pbxproj | 12 + PBGitHistoryView.xib | 178 ++++++- PBRefController.h | 9 + PBRefController.m | 111 +++-- 8 files changed, 958 insertions(+), 57 deletions(-) create mode 100644 Crystal_Clear_action_2downarrow.png create mode 100644 Crystal_Clear_action_2uparrow.png create mode 100644 Crystal_Clear_action_reload.png diff --git a/Crystal_Clear_action_2downarrow.png b/Crystal_Clear_action_2downarrow.png new file mode 100644 index 0000000000000000000000000000000000000000..df7adc6389c9bf377e3193c035614994fc5336a8 GIT binary patch literal 10231 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 literal 0 HcmV?d00001 diff --git a/English.lproj/RepositoryWindow.xib b/English.lproj/RepositoryWindow.xib index 003254b..6803f32 100644 --- a/English.lproj/RepositoryWindow.xib +++ b/English.lproj/RepositoryWindow.xib @@ -2,10 +2,10 @@ 1050 - 9F33 + 9L31a 677 - 949.34 - 352.00 + 949.54 + 353.00 YES @@ -42,7 +42,471 @@ 1886912512 GitX NSWindow - + + + 27A2F5CF-4BCA-4353-B806-0E0F13EB2FFD + + + YES + YES + YES + YES + 1 + 1 + + YES + + YES + 1E431E79-1591-49E7-9E17-49497CA4622A + 2C3809A1-DBAB-456F-B222-A133DAC6C633 + 5D2A15BF-26CE-4E1A-972B-2428B7334A86 + 7FFB691C-2D2F-49A9-997F-AE1AE8BFF3F1 + 86360841-A2B1-4802-845A-AE424521FE99 + 99C2C9EB-AE16-42A9-BE52-46CE903E9AF9 + E8AEE3B4-5661-4310-B27C-B158726D7F15 + NSToolbarFlexibleSpaceItem + NSToolbarSeparatorItem + + + YES + + + 1E431E79-1591-49E7-9E17-49497CA4622A + + View + View selector + + + + 268 + {{0, 14}, {87, 25}} + 3 + YES + + 67239424 + 0 + + LucidaGrande + 1.300000e+01 + 1044 + + + + YES + + 4.000000e+01 + + NSImage + HistoryViewTemplate + + + History View + 0 + + + 4.000000e+01 + + NSImage + CommitViewTemplate + + + Commit View + YES + 0 + + + 1 + 2 + + + + + + {87, 25} + {87, 25} + YES + YES + 3 + YES + 0 + + + + 2C3809A1-DBAB-456F-B222-A133DAC6C633 + + Fetch + Fetch + RmV0Y2ggdGhlIGxhdGVzdCBjaGFuZ2VzIGZyb20gdGhlIHJlbW90ZSByZXBvc2l0b3J5LCBidXQgZG9u +J3QgbWVyZ2UgdGhlbSBpbnRvIGxvY2FsIGNoYW5nZXMuA + + + NSImage + Crystal_Clear_action_reload + + + + {0, 0} + {0, 0} + YES + YES + 0 + YES + 0 + + + + 5D2A15BF-26CE-4E1A-972B-2428B7334A86 + + Push + Push + Push local commits up to the remote repository. + + + NSImage + Crystal_Clear_action_2uparrow + + + + {0, 0} + {0, 0} + YES + YES + 0 + YES + 0 + + + + 7FFB691C-2D2F-49A9-997F-AE1AE8BFF3F1 + + Search + + Search Field + + + + + 265 + {{0, 14}, {183, 22}} + YES + + 343014976 + 268436480 + + Subject + + YES + 1 + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + 130560 + 0 + search + _searchFieldSearch: + + + 138690815 + 0 + + 400 + 75 + + + 130560 + 0 + clear + + YES + + YES + + YES + AXDescription + NSAccessibilityEncodedAttributesValueType + + + YES + cancel + + + + + _searchFieldCancel: + + + 138690815 + 0 + + 400 + 75 + + 255 + CAAAAA + + + + + + {183, 22} + {183, 22} + YES + YES + 0 + YES + 0 + + + + 86360841-A2B1-4802-845A-AE424521FE99 + + Create Branch + Create Branch + + + + 268 + {{21, 14}, {40, 25}} + YES + + -2080244224 + 134217728 + + + + -2033434369 + 163 + + NSImage + AddBranchTemplate + + + + 400 + 75 + + + + + + {40, 25} + {40, 25} + YES + YES + 0 + YES + 0 + + + + 99C2C9EB-AE16-42A9-BE52-46CE903E9AF9 + + Branch + Branch + + + + 268 + {{0, 14}, {134, 26}} + YES + + -2076049856 + 2048 + + + 109199615 + 1 + + + 400 + 75 + + + master + + 1048576 + 2147483647 + 1 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + _popUpItemAction: + + + YES + + OtherViews + + YES + + + + Item 2 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + Item 3 + + 1048576 + 2147483647 + + + _popUpItemAction: + + + + + 1 + YES + YES + 2 + + + + + + {134, 26} + {134, 26} + YES + YES + 0 + YES + 0 + + + + E8AEE3B4-5661-4310-B27C-B158726D7F15 + + Rebase + Rebase + Pull the latest version from the remote repository, and replay local changes on top of it. + + + NSImage + Crystal_Clear_action_2downarrow + + + + {0, 0} + {0, 0} + YES + YES + 0 + YES + 0 + + + NSToolbarFlexibleSpaceItem + + Flexible Space + + + + + + {1, 5} + {20000, 32} + YES + YES + -1 + YES + 0 + + YES + YES + + + 1048576 + 2147483647 + + + + + + NSToolbarSeparatorItem + + Separator + + + + + + {12, 5} + {12, 1000} + YES + YES + -1 + YES + 0 + + YES + YES + + + 1048576 + 2147483647 + + + + + + + + YES + + + + + + + + + + + + YES + + + + + + + + + + + + YES + + {3.40282e+38, 3.40282e+38} {213, 107} @@ -52,7 +516,7 @@ {{0, 0}, {1440, 878}} - {213, 129} + {213, 179} {3.40282e+38, 3.40282e+38} GitX @@ -112,6 +576,7 @@ YES + Window @@ -124,6 +589,171 @@ + + 351 + + + YES + + + + + + + + + + + + History Toolbar + + + 352 + + + + + 353 + + + + + 354 + + + + + 355 + + + + + 356 + + + YES + + + + + + 357 + + + YES + + + + + + 358 + + + YES + + + + + + 359 + + + YES + + + + + + 360 + + + + + 361 + + + YES + + + + + + 362 + + + + + 363 + + + YES + + + + + + 364 + + + + + 365 + + + YES + + + + + + 366 + + + + + 367 + + + YES + + + + + + 368 + + + YES + + + + + + 369 + + + YES + + + + + + + + 370 + + + + + 371 + + + + + 372 + + + @@ -142,6 +772,31 @@ 3.windowTemplate.hasMinSize 3.windowTemplate.maxSize 3.windowTemplate.minSize + 351.IBEditorWindowLastContentRect + 351.IBPluginDependency + 351.editorWindowContentRectSynchronizationRect + 353.IBPluginDependency + 354.IBPluginDependency + 355.IBPluginDependency + 356.IBPluginDependency + 357.IBPluginDependency + 358.IBPluginDependency + 359.IBPluginDependency + 361.IBPluginDependency + 362.IBPluginDependency + 363.IBPluginDependency + 364.IBPluginDependency + 365.IBAttributePlaceholdersKey + 365.IBPluginDependency + 366.IBPluginDependency + 367.IBPluginDependency + 368.IBPluginDependency + 369.IBEditorWindowLastContentRect + 369.IBPluginDependency + 369.editorWindowContentRectSynchronizationRect + 370.IBPluginDependency + 371.IBPluginDependency + 372.IBPluginDependency 5.IBPluginDependency 5.ImportedFromIB2 @@ -150,15 +805,47 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilderKit com.apple.InterfaceBuilderKit - {{1047, 395}, {850, 418}} - {{1047, 395}, {850, 418}} - + {{64, 65}, {850, 418}} + {{64, 65}, {850, 418}} + {{15, 196}, {850, 418}} {3.40282e+38, 3.40282e+38} {213, 107} + {{204, 463}, {616, 0}} + com.apple.InterfaceBuilder.CocoaPlugin + {{132, 614}, {616, 0}} + 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 + + ToolTip + + ToolTip + + Create Branch + + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{725, 616}, {134, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + {{848, 458}, {116, 63}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -183,7 +870,7 @@ - 350 + 372 diff --git a/GitX.xcodeproj/project.pbxproj b/GitX.xcodeproj/project.pbxproj index 2bee4af..e6d4993 100644 --- a/GitX.xcodeproj/project.pbxproj +++ b/GitX.xcodeproj/project.pbxproj @@ -31,6 +31,9 @@ 47DBDBCA0E95016F00671A1E /* PBNSURLPathUserDefaultsTransfomer.m in Sources */ = {isa = PBXBuildFile; fileRef = 47DBDBC90E95016F00671A1E /* PBNSURLPathUserDefaultsTransfomer.m */; }; 654D16E8108C6CA6008D960C /* PBQLOutlineView.m in Sources */ = {isa = PBXBuildFile; fileRef = F513085A0E0740F2000C8BCD /* PBQLOutlineView.m */; }; 65C77FA0108BF560003BD3B5 /* Quartz.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65C77F9F108BF560003BD3B5 /* Quartz.framework */; }; + 66D5992E1094012B000D397A /* Crystal_Clear_action_2downarrow.png in Resources */ = {isa = PBXBuildFile; fileRef = 66D5992B1094012B000D397A /* Crystal_Clear_action_2downarrow.png */; }; + 66D5992F1094012B000D397A /* Crystal_Clear_action_2uparrow.png in Resources */ = {isa = PBXBuildFile; fileRef = 66D5992C1094012B000D397A /* Crystal_Clear_action_2uparrow.png */; }; + 66D599301094012B000D397A /* Crystal_Clear_action_reload.png in Resources */ = {isa = PBXBuildFile; fileRef = 66D5992D1094012B000D397A /* Crystal_Clear_action_reload.png */; }; 770B37ED0679A11B001EADE2 /* GitTest_DataModel.xcdatamodel in Sources */ = {isa = PBXBuildFile; fileRef = 770B37EC0679A11B001EADE2 /* GitTest_DataModel.xcdatamodel */; }; 77C8280E06725ACE000B614F /* ApplicationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 77C8280C06725ACE000B614F /* ApplicationController.m */; }; 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; @@ -191,6 +194,9 @@ 654D18EF108C9597008D960C /* Install.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Install.xcconfig; sourceTree = ""; }; 654D18F6108C96CB008D960C /* install.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = install.sh; sourceTree = ""; }; 65C77F9F108BF560003BD3B5 /* Quartz.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Quartz.framework; path = System/Library/Frameworks/Quartz.framework; sourceTree = SDKROOT; }; + 66D5992B1094012B000D397A /* Crystal_Clear_action_2downarrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Crystal_Clear_action_2downarrow.png; sourceTree = ""; }; + 66D5992C1094012B000D397A /* Crystal_Clear_action_2uparrow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Crystal_Clear_action_2uparrow.png; sourceTree = ""; }; + 66D5992D1094012B000D397A /* Crystal_Clear_action_reload.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Crystal_Clear_action_reload.png; sourceTree = ""; }; 770B37EC0679A11B001EADE2 /* GitTest_DataModel.xcdatamodel */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wrapper.xcdatamodel; path = GitTest_DataModel.xcdatamodel; sourceTree = ""; }; 77C82804067257F0000B614F /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; 77C8280B06725ACE000B614F /* ApplicationController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ApplicationController.h; sourceTree = ""; }; @@ -434,6 +440,9 @@ 32CA4F630368D1EE00C91783 /* GitX_Prefix.pch */, 29B97316FDCFA39411CA2CEA /* main.m */, F5E92A220E88569500056E75 /* new_file.png */, + 66D5992B1094012B000D397A /* Crystal_Clear_action_2downarrow.png */, + 66D5992C1094012B000D397A /* Crystal_Clear_action_2uparrow.png */, + 66D5992D1094012B000D397A /* Crystal_Clear_action_reload.png */, ); name = "Other Sources"; sourceTree = ""; @@ -843,6 +852,9 @@ 47DBDB6A0E94EF6500671A1E /* Preferences.xib in Resources */, 47DBDBB10E94F6CA00671A1E /* Updates.png in Resources */, F569AE930F2CBD7C00C2FFA7 /* Credits.html in Resources */, + 66D5992E1094012B000D397A /* Crystal_Clear_action_2downarrow.png in Resources */, + 66D5992F1094012B000D397A /* Crystal_Clear_action_2uparrow.png in Resources */, + 66D599301094012B000D397A /* Crystal_Clear_action_reload.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/PBGitHistoryView.xib b/PBGitHistoryView.xib index 68b7789..61f3853 100644 --- a/PBGitHistoryView.xib +++ b/PBGitHistoryView.xib @@ -8,8 +8,8 @@ 353.00 YES - + YES @@ -913,7 +913,7 @@ {1000, 102} {346, 102} - + 256 YES @@ -1022,7 +1022,6 @@ {346, 102} - {{0, 0}, {1680, 1028}} {346, 124} @@ -1044,9 +1043,12 @@ YES 1E431E79-1591-49E7-9E17-49497CA4622A + 2C3809A1-DBAB-456F-B222-A133DAC6C633 + 5D2A15BF-26CE-4E1A-972B-2428B7334A86 7FFB691C-2D2F-49A9-997F-AE1AE8BFF3F1 86360841-A2B1-4802-845A-AE424521FE99 99C2C9EB-AE16-42A9-BE52-46CE903E9AF9 + E8AEE3B4-5661-4310-B27C-B158726D7F15 NSToolbarFlexibleSpaceItem NSToolbarSeparatorItem @@ -1060,9 +1062,10 @@ View selector - + 268 {{0, 14}, {87, 25}} + 3 YES @@ -1109,6 +1112,51 @@ YES 0 + + + 2C3809A1-DBAB-456F-B222-A133DAC6C633 + + Fetch + Fetch + RmV0Y2ggdGhlIGxhdGVzdCBjaGFuZ2VzIGZyb20gdGhlIHJlbW90ZSByZXBvc2l0b3J5LCBidXQgZG9u +J3QgbWVyZ2UgdGhlbSBpbnRvIGxvY2FsIGNoYW5nZXMuA + + + NSImage + Crystal_Clear_action_reload + + + + {0, 0} + {0, 0} + YES + YES + 0 + YES + 0 + + + + 5D2A15BF-26CE-4E1A-972B-2428B7334A86 + + Push + Push + Push local commits up to the remote repository. + + + NSImage + Crystal_Clear_action_2uparrow + + + + {0, 0} + {0, 0} + YES + YES + 0 + YES + 0 + 7FFB691C-2D2F-49A9-997F-AE1AE8BFF3F1 @@ -1119,9 +1167,10 @@ - + 265 {{0, 14}, {183, 22}} + YES 343014976 @@ -1198,9 +1247,10 @@ Create Branch - + 268 {{21, 14}, {40, 25}} + YES -2080244224 @@ -1239,9 +1289,10 @@ Branch - + 268 {{0, 14}, {134, 26}} + YES -2076049856 @@ -1311,8 +1362,30 @@ - {134, 25} - {134, 25} + {134, 26} + {134, 26} + YES + YES + 0 + YES + 0 + + + + E8AEE3B4-5661-4310-B27C-B158726D7F15 + + Rebase + Rebase + Pull the latest version from the remote repository, and replay local changes on top of it. + + + NSImage + Crystal_Clear_action_2downarrow + + + + {0, 0} + {0, 0} YES YES 0 @@ -1383,6 +1456,9 @@ + + + YES @@ -1390,6 +1466,10 @@ + + + + @@ -1995,6 +2075,30 @@ 291 + + + rebaseButton: + + + + 296 + + + + pushButton: + + + + 297 + + + + fetchButton: + + + + 298 + @@ -2411,10 +2515,13 @@ YES - + + + + History Toolbar @@ -2433,11 +2540,6 @@ - - 222 - - - 223 @@ -2579,6 +2681,26 @@ + + 292 + + + + + 293 + + + + + 294 + + + + + 222 + + + @@ -2660,6 +2782,9 @@ 288.IBPluginDependency 29.IBPluginDependency 29.IBShouldRemoveOnLegacySave + 292.IBPluginDependency + 293.IBPluginDependency + 294.IBPluginDependency 3.IBPluginDependency 3.ImportedFromIB2 30.CustomClassName @@ -2702,7 +2827,7 @@ com.apple.InterfaceBuilderKit com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{312, 366}, {616, 227}} + {{707, 168}, {616, 227}} com.apple.InterfaceBuilder.CocoaPlugin {{132, 614}, {616, 0}} com.apple.InterfaceBuilder.CocoaPlugin @@ -2788,6 +2913,9 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin PBUnsortableTableHeader com.apple.InterfaceBuilder.CocoaPlugin @@ -2817,7 +2945,7 @@ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{321, 67}, {852, 432}} + {{235, 559}, {852, 432}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -2851,11 +2979,19 @@ - 291 + 304 YES + + NSToolbarItem + NSObject + + IBUserSource + + + PBCollapsibleSplitView PBNiceSplitView @@ -3004,6 +3140,9 @@ addRef: changeBranch: closeSheet: + fetchButton: + pushButton: + rebaseButton: saveSheet: @@ -3012,6 +3151,9 @@ NSMenuItem id id + id + id + id diff --git a/PBRefController.h b/PBRefController.h index 0706fc5..037b7c0 100644 --- a/PBRefController.h +++ b/PBRefController.h @@ -29,10 +29,19 @@ - (IBAction)closeSheet:(id) sender; - (IBAction)saveSheet:(id) sender; +- (IBAction)rebaseButton:(id)sender; +- (IBAction)pushButton:(id)sender; +- (IBAction)fetchButton:(id)sender; + - (NSArray *) menuItemsForRef:(PBGitRef *)ref commit:(PBGitCommit *)commit; - (void) changeBranch:(NSMenuItem *)sender; - (void) selectCurrentBranch; - (void) updateBranchMenu; +- (void) pullImpl:(NSString *)refName; +- (void) pushImpl:(NSString *)refName; +- (void) rebaseImpl:(NSString *)refName; + + @end diff --git a/PBRefController.m b/PBRefController.m index ebe31d4..4d6cbb7 100644 --- a/PBRefController.m +++ b/PBRefController.m @@ -70,44 +70,17 @@ - (void) pushRef:(PBRefMenuItem *)sender { - int ret = 1; - NSString *remote = [[historyController.repository config] valueForKeyPath:[NSString stringWithFormat:@"branch.%@.remote", [[sender ref] shortName]]]; - NSString *rval = [historyController.repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"push", remote, [[sender ref] shortName], nil] retValue: &ret]; - if (ret) { - NSString *info = [NSString stringWithFormat:@"There was an error pushing the branch to the remote repository.\n\n%d\n%@", ret, rval]; - [[historyController.repository windowController] showMessageSheet:@"Pushing branch failed" infoText:info]; - return; - } - [historyController.repository reloadRefs]; - [commitController rearrangeObjects]; + [self pushImpl:[[sender ref] shortName]]; } - (void) pullRef:(PBRefMenuItem *)sender { - int ret = 1; - NSString *remote = [[historyController.repository config] valueForKeyPath:[NSString stringWithFormat:@"branch.%@.remote", [[sender ref] shortName]]]; - NSString *rval = [historyController.repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"pull", remote, [[sender ref] shortName], nil] retValue: &ret]; - if (ret) { - NSString *info = [NSString stringWithFormat:@"There was an error pulling from the remote repository.\n\n%d\n%@", ret, rval]; - [[historyController.repository windowController] showMessageSheet:@"Pulling from remote failed" infoText:info]; - return; - } - [historyController.repository reloadRefs]; - [commitController rearrangeObjects]; + [self pullImpl:[[sender ref] shortName]]; } - (void) rebaseRef:(PBRefMenuItem *)sender { - int ret = 1; - NSString *remote = [[historyController.repository config] valueForKeyPath:[NSString stringWithFormat:@"branch.%@.remote", [[sender ref] shortName]]]; - NSString *rval = [historyController.repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"pull", @"--rebase", remote, [[sender ref] shortName], nil] retValue: &ret]; - if (ret) { - NSString *info = [NSString stringWithFormat:@"There was an error rebasing from the remote repository.\n\n%d\n%@", ret, rval]; - [[historyController.repository windowController] showMessageSheet:@"Rebasing from remote failed" infoText:info]; - return; - } - [historyController.repository reloadRefs]; - [commitController rearrangeObjects]; + [self rebaseImpl:[[sender ref] shortName]]; } - (void) tagInfo:(PBRefMenuItem *)sender @@ -128,6 +101,63 @@ return [PBRefMenuItem defaultMenuItemsForRef:ref commit:commit target:self]; } +- (void) pushImpl:(NSString *)refName +{ + int ret = 1; + NSString *remote = [[historyController.repository config] valueForKeyPath:[NSString stringWithFormat:@"branch.%@.remote", refName]]; + NSString *rval = [historyController.repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"push", remote, refName, nil] retValue: &ret]; + if (ret) { + NSString *info = [NSString stringWithFormat:@"There was an error pushing the branch to the remote repository.\n\n%d\n%@", ret, rval]; + [[historyController.repository windowController] showMessageSheet:@"Pushing branch failed" infoText:info]; + return; + } + [historyController.repository reloadRefs]; + [commitController rearrangeObjects]; +} + +- (void) pullImpl:(NSString *)refName +{ + int ret = 1; + NSString *remote = [[historyController.repository config] valueForKeyPath:[NSString stringWithFormat:@"branch.%@.remote", refName]]; + NSString *rval = [historyController.repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"pull", remote, refName, nil] retValue: &ret]; + if (ret) { + NSString *info = [NSString stringWithFormat:@"There was an error pulling from the remote repository.\n\n%d\n%@", ret, rval]; + [[historyController.repository windowController] showMessageSheet:@"Pulling from remote failed" infoText:info]; + return; + } + [historyController.repository reloadRefs]; + [commitController rearrangeObjects]; +} + +- (void) rebaseImpl:(NSString *)refName +{ + int ret = 1; + NSString *remote = [[historyController.repository config] valueForKeyPath:[NSString stringWithFormat:@"branch.%@.remote", refName]]; + NSString *rval = [historyController.repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"pull", @"--rebase", remote, refName, nil] retValue: &ret]; + if (ret) { + NSString *info = [NSString stringWithFormat:@"There was an error rebasing from the remote repository.\n\n%d\n%@", ret, rval]; + [[historyController.repository windowController] showMessageSheet:@"Rebasing from remote failed" infoText:info]; + return; + } + [historyController.repository reloadRefs]; + [commitController rearrangeObjects]; +} + +- (void) fetchImpl:(NSString *)refName +{ + int ret = 1; + NSString *remote = nil; + if(refName != nil) remote = [[historyController.repository config] valueForKeyPath:[NSString stringWithFormat:@"branch.%@.remote", refName]]; + NSString *rval = [historyController.repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"fetch", remote, refName, nil] retValue: &ret]; + if (ret) { + NSString *info = [NSString stringWithFormat:@"There was an error fetching from the remote repository.\n\n%d\n%@", ret, rval]; + [[historyController.repository windowController] showMessageSheet:@"Rebasing from remote failed" infoText:info]; + return; + } + [historyController.repository reloadRefs]; + [commitController rearrangeObjects]; +} + # pragma mark Tableview delegate methods - (BOOL)tableView:(NSTableView *)tv writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard*)pboard @@ -220,6 +250,27 @@ contextInfo:NULL]; } +-(void)rebaseButton:(id)sender +{ + NSString *refName =[historyController.repository.currentBranch simpleRef]; + [self rebaseImpl:refName]; +// NSLog([NSString stringWithFormat:@"Rebase hit for %@!", refName]); +} + +-(void)pushButton:(id)sender +{ + NSString *refName =[historyController.repository.currentBranch simpleRef]; + [self pushImpl:refName]; +// NSLog([NSString stringWithFormat:@"Push hit for %@!", refName]); +} + +-(void)fetchButton:(id)sender +{ + NSString *refName =[historyController.repository.currentBranch simpleRef]; + [self fetchImpl:refName]; +// NSLog([NSString stringWithFormat:@"Fetch hit for %@!", refName]); +} + -(void)saveSheet:(id) sender { NSString *branchName = [@"refs/heads/" stringByAppendingString:[newBranchName stringValue]];