From 76e176e8b4ac59438340b129874ffbdfa7404ea3 Mon Sep 17 00:00:00 2001 From: Pieter de Bie Date: Wed, 24 Sep 2008 00:47:41 +0200 Subject: [PATCH] Add staging and unstaging of files --- PBChangedFile.h | 3 ++- PBChangedFile.m | 10 ++++++++++ PBGitCommitController.m | 23 +++++++++++++++++++---- PBGitCommitView.xib | 11 ++++++----- 4 files changed, 37 insertions(+), 10 deletions(-) diff --git a/PBChangedFile.h b/PBChangedFile.h index 5376e52..4fee589 100644 --- a/PBChangedFile.h +++ b/PBChangedFile.h @@ -28,7 +28,8 @@ typedef enum { @property (assign) BOOL cached; - (NSImage *)icon; - (NSString *)changes; - +- (void) stageChanges; +- (void) unstageChanges; - (id) initWithPath:(NSString *)p andRepository:(PBGitRepository *)r; @end diff --git a/PBChangedFile.m b/PBChangedFile.m index 936dd5c..0e5ebe7 100644 --- a/PBChangedFile.m +++ b/PBChangedFile.m @@ -47,6 +47,16 @@ return [[NSImage alloc] initByReferencingFile: p]; } +- (void) stageChanges +{ + [repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"add", path, nil]]; + self.cached = YES; +} +- (void) unstageChanges +{ [repository outputInWorkdirForArguments:[NSArray arrayWithObjects:@"reset", path, nil]]; + self.cached = NO; +} + + (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector { return NO; diff --git a/PBGitCommitController.m b/PBGitCommitController.m index 2c2cd70..be1e30c 100644 --- a/PBGitCommitController.m +++ b/PBGitCommitController.m @@ -16,12 +16,13 @@ - (void)awakeFromNib { - [unstagedFilesController setFilterPredicate:[NSPredicate predicateWithFormat:@"cached == 0"]]; - [cachedFilesController setFilterPredicate:[NSPredicate predicateWithFormat:@"cached == 1"]]; [unstagedButtonCell setAction:@selector(cellClicked:)]; [cachedButtonCell setAction:@selector(cellClicked:)]; [self refresh:self]; + + [unstagedFilesController setFilterPredicate:[NSPredicate predicateWithFormat:@"cached == 0"]]; + [cachedFilesController setFilterPredicate:[NSPredicate predicateWithFormat:@"cached == 1"]]; } - (void) readOtherFiles @@ -43,6 +44,7 @@ - (void) refresh:(id) sender { files = [NSMutableArray array]; + [repository outputForCommand:@"update-index"]; [self readUnstagedFiles]; [self readCachedFiles]; [self readOtherFiles]; @@ -87,11 +89,24 @@ if([tableView numberOfSelectedRows] == 1) { NSUInteger selectionIndex = [[tableView selectedRowIndexes] firstIndex]; - id selectedItem = [[(([tableView tag] == 0) ? unstagedFilesController : cachedFilesController) arrangedObjects] objectAtIndex:selectionIndex]; - NSLog(@"%s selectedItem: %@", _cmd, [selectedItem valueForKey:@"path"]); + PBChangedFile *selectedItem = [[(([tableView tag] == 0) ? unstagedFilesController : cachedFilesController) arrangedObjects] objectAtIndex:selectionIndex]; + if (selectedItem.cached == NO) { + [selectedItem stageChanges]; + + } + else { + [selectedItem unstageChanges]; + } + [self refreshControllers]; + } } +- (void) refreshControllers +{ + [self refresh:self]; +} + - (void)tableView:(NSTableView*)tableView willDisplayCell:(id)cell forTableColumn:(NSTableColumn*)tableColumn row:(int)rowIndex { [[tableColumn dataCell] setImage:[[[(([tableView tag] == 0) ? unstagedFilesController : cachedFilesController) arrangedObjects] objectAtIndex:rowIndex] icon]]; diff --git a/PBGitCommitView.xib b/PBGitCommitView.xib index 492a71b..8729c7f 100644 --- a/PBGitCommitView.xib +++ b/PBGitCommitView.xib @@ -2,9 +2,9 @@ 1050 - 9E17 + 9F33 670 - 949.33 + 949.34 352.00 YES @@ -160,7 +160,7 @@ YES - 1.660000e+02 + 1.850000e+02 1.000000e+01 3.402823e+38 @@ -751,6 +751,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA 4352 {213, 193} + 1 YES @@ -760,7 +761,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA YES - 1.910000e+02 + 2.100000e+02 1.000000e+01 3.402823e+38 @@ -1404,7 +1405,7 @@ AAMAAAABAAEAAAFTAAMAAAAEAAAFwgAAAAAACAAIAAgACAABAAEAAQABA com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilderKit com.apple.InterfaceBuilderKit - {{41, 123}, {852, 432}} + {{312, 344}, {852, 432}} com.apple.InterfaceBuilder.CocoaPlugin