Added filtering to File Browser

Conflicts:

	GitX.xcodeproj/project.pbxproj
	PBGitHistoryView.xib
This commit is contained in:
German Laullon
2011-03-01 23:28:28 -08:00
parent 6beb754a53
commit ff53bcd3e7
7 changed files with 2409 additions and 274 deletions
+51 -18
View File
@@ -49,6 +49,12 @@
212A49AB12A31328009DAFAD /* deleted_file.png in Resources */ = {isa = PBXBuildFile; fileRef = 212A49A912A31328009DAFAD /* deleted_file.png */; };
212A49AD12A31350009DAFAD /* ignored_file.png in Resources */ = {isa = PBXBuildFile; fileRef = 212A49AC12A31350009DAFAD /* ignored_file.png */; };
212A49AF12A3135C009DAFAD /* modified_file.png in Resources */ = {isa = PBXBuildFile; fileRef = 212A49AE12A3135C009DAFAD /* modified_file.png */; };
213C598D12EB8BEB006F0CAE /* PBResetSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = 213C598C12EB8BEB006F0CAE /* PBResetSheet.xib */; };
213C599012EB8BFC006F0CAE /* PBResetSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = 213C598F12EB8BFC006F0CAE /* PBResetSheet.m */; };
213C5A6812EB8E95006F0CAE /* GTTopBlackGradientView.m in Sources */ = {isa = PBXBuildFile; fileRef = 213C5A6712EB8E95006F0CAE /* GTTopBlackGradientView.m */; };
213C5A6B12EB8EC5006F0CAE /* GTGradientView.m in Sources */ = {isa = PBXBuildFile; fileRef = 213C5A6A12EB8EC5006F0CAE /* GTGradientView.m */; };
213C5AC512EB91F5006F0CAE /* GTSheetWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 213C5AC112EB91F5006F0CAE /* GTSheetWindow.m */; };
213C5AC612EB91F5006F0CAE /* GTWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = 213C5AC312EB91F5006F0CAE /* GTWindow.m */; };
217FF0B912A1CB3300785A65 /* PBStashController.m in Sources */ = {isa = PBXBuildFile; fileRef = 217FF0B312A1CB3300785A65 /* PBStashController.m */; };
217FF0BA12A1CB3300785A65 /* PBSubmoduleController.m in Sources */ = {isa = PBXBuildFile; fileRef = 217FF0B512A1CB3300785A65 /* PBSubmoduleController.m */; };
217FF0BB12A1CB3300785A65 /* PBGitResetController.m in Sources */ = {isa = PBXBuildFile; fileRef = 217FF0B712A1CB3300785A65 /* PBGitResetController.m */; };
@@ -60,7 +66,6 @@
31460CD4124185BA00B90AED /* ReadMe.txt in Resources */ = {isa = PBXBuildFile; fileRef = 31460CAF124185BA00B90AED /* ReadMe.txt */; };
31460CD5124185BA00B90AED /* Source Code License.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 31460CB0124185BA00B90AED /* Source Code License.rtf */; };
31460CD6124185BA00B90AED /* TODO in Resources */ = {isa = PBXBuildFile; fileRef = 31460CB1124185BA00B90AED /* TODO */; };
31DAA7ED1317737100463846 /* gitx_l_pub.pem in Resources */ = {isa = PBXBuildFile; fileRef = 31DAA7EC1317737100463846 /* gitx_l_pub.pem */; };
3BC07F4C0ED5A5C5009A7768 /* HistoryViewTemplate.png in Resources */ = {isa = PBXBuildFile; fileRef = 3BC07F4A0ED5A5C5009A7768 /* HistoryViewTemplate.png */; };
3BC07F4D0ED5A5C5009A7768 /* CommitViewTemplate.png in Resources */ = {isa = PBXBuildFile; fileRef = 3BC07F4B0ED5A5C5009A7768 /* CommitViewTemplate.png */; };
47DBDB580E94EDE700671A1E /* DBPrefsWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 47DBDB570E94EDE700671A1E /* DBPrefsWindowController.m */; };
@@ -83,9 +88,6 @@
91B103CC0E898EC300C84364 /* PBIconAndTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 91B103CB0E898EC300C84364 /* PBIconAndTextCell.m */; };
93CB42C20EAB7B2200530609 /* PBGitDefaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 93CB42C10EAB7B2200530609 /* PBGitDefaults.m */; };
93F7857F0EA3ABF100C1F443 /* PBCommitMessageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 93F7857E0EA3ABF100C1F443 /* PBCommitMessageView.m */; };
C3B13DD812F3A89D0045437C /* SecurityFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3B13DD712F3A89D0045437C /* SecurityFoundation.framework */; };
C3B13DE412F3A8D70045437C /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3B13DE312F3A8D70045437C /* Security.framework */; };
C3B13E2312F3A9130045437C /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C3B13DE312F3A8D70045437C /* Security.framework */; };
D26DC6450E782C9000C777B2 /* gitx.icns in Resources */ = {isa = PBXBuildFile; fileRef = D26DC6440E782C9000C777B2 /* gitx.icns */; };
D8022FE811E124A0003C21F6 /* PBGitXMessageSheet.xib in Resources */ = {isa = PBXBuildFile; fileRef = D8022FE711E124A0003C21F6 /* PBGitXMessageSheet.xib */; };
D8022FED11E124C8003C21F6 /* PBGitXMessageSheet.m in Sources */ = {isa = PBXBuildFile; fileRef = D8022FEC11E124C8003C21F6 /* PBGitXMessageSheet.m */; };
@@ -322,6 +324,17 @@
212A49A912A31328009DAFAD /* deleted_file.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = deleted_file.png; sourceTree = "<group>"; };
212A49AC12A31350009DAFAD /* ignored_file.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = ignored_file.png; sourceTree = "<group>"; };
212A49AE12A3135C009DAFAD /* modified_file.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = modified_file.png; sourceTree = "<group>"; };
213C598C12EB8BEB006F0CAE /* PBResetSheet.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PBResetSheet.xib; sourceTree = "<group>"; };
213C598E12EB8BFC006F0CAE /* PBResetSheet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBResetSheet.h; sourceTree = "<group>"; };
213C598F12EB8BFC006F0CAE /* PBResetSheet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PBResetSheet.m; sourceTree = "<group>"; };
213C5A6612EB8E95006F0CAE /* GTTopBlackGradientView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTTopBlackGradientView.h; sourceTree = "<group>"; };
213C5A6712EB8E95006F0CAE /* GTTopBlackGradientView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTTopBlackGradientView.m; sourceTree = "<group>"; };
213C5A6912EB8EB3006F0CAE /* GTGradientView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTGradientView.h; sourceTree = "<group>"; };
213C5A6A12EB8EC5006F0CAE /* GTGradientView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTGradientView.m; sourceTree = "<group>"; };
213C5AC112EB91F5006F0CAE /* GTSheetWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTSheetWindow.m; sourceTree = "<group>"; };
213C5AC212EB91F5006F0CAE /* GTWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTWindow.h; sourceTree = "<group>"; };
213C5AC312EB91F5006F0CAE /* GTWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTWindow.m; sourceTree = "<group>"; };
213C5AC412EB91F5006F0CAE /* GTSheetWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTSheetWindow.h; sourceTree = "<group>"; };
217FF0B312A1CB3300785A65 /* PBStashController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PBStashController.m; sourceTree = SOURCE_ROOT; };
217FF0B412A1CB3300785A65 /* PBStashController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBStashController.h; sourceTree = SOURCE_ROOT; };
217FF0B512A1CB3300785A65 /* PBSubmoduleController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PBSubmoduleController.m; sourceTree = "<group>"; };
@@ -347,7 +360,6 @@
31460CAF124185BA00B90AED /* ReadMe.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ReadMe.txt; sourceTree = "<group>"; };
31460CB0124185BA00B90AED /* Source Code License.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = "Source Code License.rtf"; sourceTree = "<group>"; };
31460CB1124185BA00B90AED /* TODO */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TODO; sourceTree = "<group>"; };
31DAA7EC1317737100463846 /* gitx_l_pub.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = gitx_l_pub.pem; sourceTree = "<group>"; };
32CA4F630368D1EE00C91783 /* GitX_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GitX_Prefix.pch; sourceTree = "<group>"; };
3BC07F4A0ED5A5C5009A7768 /* HistoryViewTemplate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = HistoryViewTemplate.png; path = Images/HistoryViewTemplate.png; sourceTree = "<group>"; };
3BC07F4B0ED5A5C5009A7768 /* CommitViewTemplate.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = CommitViewTemplate.png; path = Images/CommitViewTemplate.png; sourceTree = "<group>"; };
@@ -380,8 +392,6 @@
93F7857D0EA3ABF100C1F443 /* PBCommitMessageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PBCommitMessageView.h; sourceTree = "<group>"; };
93F7857E0EA3ABF100C1F443 /* PBCommitMessageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PBCommitMessageView.m; sourceTree = "<group>"; };
93FCCBA80EA8AF450061B02B /* PBGitConfig.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PBGitConfig.m; sourceTree = "<group>"; };
C3B13DD712F3A89D0045437C /* SecurityFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SecurityFoundation.framework; path = System/Library/Frameworks/SecurityFoundation.framework; sourceTree = SDKROOT; };
C3B13DE312F3A8D70045437C /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
D26DC6440E782C9000C777B2 /* gitx.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = gitx.icns; sourceTree = "<group>"; };
D8022A3411DFCCA5003C21F6 /* build_libgit2.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = build_libgit2.sh; sourceTree = "<group>"; };
D8022FE711E124A0003C21F6 /* PBGitXMessageSheet.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PBGitXMessageSheet.xib; sourceTree = "<group>"; };
@@ -580,7 +590,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
C3B13E2312F3A9130045437C /* Security.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -596,8 +605,6 @@
F5C580E50EDA250900995434 /* libgit2.a in Frameworks */,
D8E3B2B810DC9FB2001096A3 /* ScriptingBridge.framework in Frameworks */,
D87127011229A21C00012334 /* QuartzCore.framework in Frameworks */,
C3B13DD812F3A89D0045437C /* SecurityFoundation.framework in Frameworks */,
C3B13DE412F3A8D70045437C /* Security.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -711,6 +718,8 @@
21230ED41285ED760046E5A1 /* View */ = {
isa = PBXGroup;
children = (
213C5AC012EB91F5006F0CAE /* Window */,
213C5A5D12EB8E72006F0CAE /* Gradient */,
21230ED71285EDAF0046E5A1 /* PBArgumentPicker.h */,
21230ED81285EDAF0046E5A1 /* PBArgumentPicker.m */,
21CF0B22129C7ED90065B37C /* TrackableOutlineView.h */,
@@ -749,6 +758,28 @@
path = "File Markers";
sourceTree = "<group>";
};
213C5A5D12EB8E72006F0CAE /* Gradient */ = {
isa = PBXGroup;
children = (
213C5A6612EB8E95006F0CAE /* GTTopBlackGradientView.h */,
213C5A6712EB8E95006F0CAE /* GTTopBlackGradientView.m */,
213C5A6912EB8EB3006F0CAE /* GTGradientView.h */,
213C5A6A12EB8EC5006F0CAE /* GTGradientView.m */,
);
path = Gradient;
sourceTree = "<group>";
};
213C5AC012EB91F5006F0CAE /* Window */ = {
isa = PBXGroup;
children = (
213C5AC412EB91F5006F0CAE /* GTSheetWindow.h */,
213C5AC112EB91F5006F0CAE /* GTSheetWindow.m */,
213C5AC212EB91F5006F0CAE /* GTWindow.h */,
213C5AC312EB91F5006F0CAE /* GTWindow.m */,
);
path = Window;
sourceTree = "<group>";
};
29B97314FDCFA39411CA2CEA /* GitTest */ = {
isa = PBXGroup;
children = (
@@ -769,7 +800,6 @@
F5886A120ED5D33D0066E74C /* SpeedTest-Info.plist */,
F567CC3A106E6B910059BB9D /* GitXTesting-Info.plist */,
D89E9AB21218A9DA0097A90B /* ScriptingBridge.framework */,
C3B13DD712F3A89D0045437C /* SecurityFoundation.framework */,
);
name = GitTest;
sourceTree = "<group>";
@@ -817,7 +847,6 @@
21025C1112947AB200D87200 /* sourceListActionOver.png */,
02B41A5F123E307F00DFC531 /* PBCommitHookFailedSheet.xib */,
F5F7D0641062E7940072C81C /* UpdateKey.pem */,
31DAA7EC1317737100463846 /* gitx_l_pub.pem */,
F50A41130EBB872D00208746 /* Widgets */,
47DBDB920E94F47200671A1E /* Preference Icons */,
D26DC6440E782C9000C777B2 /* gitx.icns */,
@@ -840,6 +869,7 @@
21230ED11285EB5A0046E5A1 /* PBArgumentPicker.xib */,
F58DB55F10566E3900CFDF4A /* PBGitSidebarView.xib */,
D8022FE711E124A0003C21F6 /* PBGitXMessageSheet.xib */,
213C598C12EB8BEB006F0CAE /* PBResetSheet.xib */,
);
name = Resources;
sourceTree = "<group>";
@@ -850,7 +880,6 @@
F5C580E40EDA250900995434 /* libgit2.a */,
1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
C3B13DE312F3A8D70045437C /* Security.framework */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -931,6 +960,8 @@
D8083E02111FA33700337480 /* PBCloneRepositoryPanel.m */,
D8022FEB11E124C8003C21F6 /* PBGitXMessageSheet.h */,
D8022FEC11E124C8003C21F6 /* PBGitXMessageSheet.m */,
213C598E12EB8BFC006F0CAE /* PBResetSheet.h */,
213C598F12EB8BFC006F0CAE /* PBResetSheet.m */,
);
name = Sheets;
sourceTree = "<group>";
@@ -1338,6 +1369,7 @@
isa = PBXProject;
buildConfigurationList = 26FC0A880875C7B200E6366F /* Build configuration list for PBXProject "GitX" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
@@ -1427,7 +1459,7 @@
212A49AB12A31328009DAFAD /* deleted_file.png in Resources */,
212A49AD12A31350009DAFAD /* ignored_file.png in Resources */,
212A49AF12A3135C009DAFAD /* modified_file.png in Resources */,
31DAA7ED1317737100463846 /* gitx_l_pub.pem in Resources */,
213C598D12EB8BEB006F0CAE /* PBResetSheet.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1597,6 +1629,11 @@
217FF0BA12A1CB3300785A65 /* PBSubmoduleController.m in Sources */,
217FF0BB12A1CB3300785A65 /* PBGitResetController.m in Sources */,
217FF0BE12A1CB3E00785A65 /* PBRevealWithFinderCommand.m in Sources */,
213C599012EB8BFC006F0CAE /* PBResetSheet.m in Sources */,
213C5A6812EB8E95006F0CAE /* GTTopBlackGradientView.m in Sources */,
213C5A6B12EB8EC5006F0CAE /* GTGradientView.m in Sources */,
213C5AC512EB91F5006F0CAE /* GTSheetWindow.m in Sources */,
213C5AC612EB91F5006F0CAE /* GTWindow.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1818,12 +1855,10 @@
GCC_ENABLE_OBJC_GC = required;
GCC_PREPROCESSOR_DEFINITIONS = DEBUG;
GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS = DEBUG_BUILD;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_PREPROCESS = YES;
PREBINDING = NO;
RUN_CLANG_STATIC_ANALYZER = YES;
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
};
name = Debug;
@@ -1837,13 +1872,11 @@
x86_64,
);
GCC_ENABLE_OBJC_GC = required;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
INFOPLIST_PREFIX_HEADER = $PROJECT_TEMP_DIR/revision;
INFOPLIST_PREPROCESS = YES;
PREBINDING = NO;
RUN_CLANG_STATIC_ANALYZER = YES;
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
};
name = Release;
+2127
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -27,6 +27,7 @@
IBOutlet PBRefController *refController;
IBOutlet NSSearchField *searchField;
IBOutlet NSArrayController* commitController;
IBOutlet NSSearchField *filesSearchField;
IBOutlet NSTreeController* treeController;
IBOutlet NSOutlineView* fileBrowser;
NSArray *currentFileBrowserSelectionPath;
@@ -93,6 +94,7 @@
// Find/Search methods
- (IBAction)selectNext:(id)sender;
- (IBAction)selectPrevious:(id)sender;
- (IBAction) updateSearch:(id) sender;
- (void) copyCommitInfo;
- (void) copyCommitSHA;
+26
View File
@@ -810,6 +810,32 @@
NSImage *image = [workspace iconForFile:path];
[image setSize:NSMakeSize(15, 15)];
[cell setImage:image];
NSColor *textColor = [NSColor blackColor];
if ([object filterPredicate] && !([[filesSearchField stringValue] length] > 0 && [[object filterPredicate] evaluateWithObject:object])) {
textColor = [NSColor lightGrayColor];
}
[cell setTextColor:textColor];
}
#pragma mark -
- (IBAction) updateSearch:(NSSearchField *) sender {
static NSPredicate *predicateTemplate = nil;
if (!predicateTemplate) {
predicateTemplate = [NSPredicate predicateWithFormat:@"path CONTAINS[c] $SEARCH_STRING"];
}
NSString *searchString = [sender stringValue];
NSPredicate *predicate = nil;
if ([searchString length] > 0) {
predicate = [predicateTemplate predicateWithSubstitutionVariables:
[NSDictionary dictionaryWithObject:searchString forKey:@"SEARCH_STRING"]];
}
[gitTree setFilterPredicate:predicate];
[treeController setContent:gitTree.filteredChildren];
}
@end
+147 -256
View File
@@ -2,10 +2,10 @@
<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
<data>
<int key="IBDocument.SystemTarget">1050</int>
<string key="IBDocument.SystemVersion">10J567</string>
<string key="IBDocument.InterfaceBuilderVersion">788</string>
<string key="IBDocument.SystemVersion">10H574</string>
<string key="IBDocument.InterfaceBuilderVersion">804</string>
<string key="IBDocument.AppKitVersion">1038.35</string>
<string key="IBDocument.HIToolboxVersion">462.00</string>
<string key="IBDocument.HIToolboxVersion">461.00</string>
<object class="NSMutableDictionary" key="IBDocument.PluginVersions">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
@@ -15,13 +15,13 @@
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>788</string>
<string>788</string>
<string>804</string>
<string>804</string>
</object>
</object>
<object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
<bool key="EncodedWithXMLCoder">YES</bool>
<integer value="491"/>
<integer value="475"/>
</object>
<object class="NSArray" key="IBDocument.PluginDependencies">
<bool key="EncodedWithXMLCoder">YES</bool>
@@ -491,7 +491,7 @@
<integer value="1"/>
</object>
</object>
<string key="NS.format">d 'de' MMMM 'de' yyyy HH:mm</string>
<string key="NS.format">d MMMM yyyy HH:mm</string>
<bool key="NS.natural">NO</bool>
</object>
<reference key="NSControlView" ref="254268962"/>
@@ -968,184 +968,109 @@
<int key="NSvFlags">4370</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSCustomView" id="812023425">
<object class="NSScrollView" id="776605770">
<reference key="NSNextResponder" ref="626906425"/>
<int key="NSvFlags">274</int>
<int key="NSvFlags">4372</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSSearchField" id="655114161">
<reference key="NSNextResponder" ref="812023425"/>
<int key="NSvFlags">266</int>
<string key="NSFrame">{{5, 212.5}, {196, 19}}</string>
<reference key="NSSuperview" ref="812023425"/>
<bool key="NSEnabled">YES</bool>
<object class="NSSearchFieldCell" key="NSCell" id="464567343">
<int key="NSCellFlags">343014976</int>
<int key="NSCellFlags2">268698688</int>
<string key="NSContents"/>
<object class="NSFont" key="NSSupport">
<string key="NSName">LucidaGrande</string>
<double key="NSSize">9</double>
<int key="NSfFlags">3614</int>
</object>
<reference key="NSControlView" ref="655114161"/>
<bool key="NSDrawsBackground">YES</bool>
<int key="NSTextBezelStyle">1</int>
<reference key="NSBackgroundColor" ref="870781813"/>
<reference key="NSTextColor" ref="57062640"/>
<object class="NSButtonCell" key="NSSearchButtonCell">
<int key="NSCellFlags">130560</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">search</string>
<reference key="NSControlView" ref="655114161"/>
<string key="NSAction">_searchFieldSearch:</string>
<reference key="NSTarget" ref="464567343"/>
<int key="NSButtonFlags">138690815</int>
<int key="NSButtonFlags2">0</int>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<object class="NSButtonCell" key="NSCancelButtonCell">
<int key="NSCellFlags">130560</int>
<int key="NSCellFlags2">0</int>
<string key="NSContents">clear</string>
<object class="NSMutableArray" key="NSAccessibilityOverriddenAttributes">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSMutableDictionary">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSArray" key="dict.sortedKeys">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>AXDescription</string>
<string>NSAccessibilityEncodedAttributesValueType</string>
</object>
<object class="NSMutableArray" key="dict.values">
<bool key="EncodedWithXMLCoder">YES</bool>
<string>cancel</string>
<integer value="1"/>
</object>
</object>
</object>
<reference key="NSControlView" ref="655114161"/>
<string key="NSAction">_searchFieldCancel:</string>
<reference key="NSTarget" ref="464567343"/>
<int key="NSButtonFlags">138690815</int>
<int key="NSButtonFlags2">0</int>
<string key="NSKeyEquivalent"/>
<int key="NSPeriodicDelay">400</int>
<int key="NSPeriodicInterval">75</int>
</object>
<int key="NSMaximumRecents">255</int>
</object>
</object>
<object class="NSScrollView" id="776605770">
<reference key="NSNextResponder" ref="812023425"/>
<int key="NSvFlags">4370</int>
<object class="NSClipView" id="859661469">
<reference key="NSNextResponder" ref="776605770"/>
<int key="NSvFlags">2304</int>
<object class="NSMutableArray" key="NSSubviews">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSClipView" id="859661469">
<reference key="NSNextResponder" ref="776605770"/>
<int key="NSvFlags">2304</int>
<object class="NSMutableArray" key="NSSubviews">
<object class="NSOutlineView" id="216928480">
<reference key="NSNextResponder" ref="859661469"/>
<int key="NSvFlags">4368</int>
<string key="NSFrameSize">{216, 233}</string>
<reference key="NSSuperview" ref="859661469"/>
<bool key="NSEnabled">YES</bool>
<object class="_NSCornerView" key="NSCornerView">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<string key="NSFrame">{{223, 0}, {16, 17}}</string>
</object>
<object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSOutlineView" id="216928480">
<reference key="NSNextResponder" ref="859661469"/>
<int key="NSvFlags">4368</int>
<string key="NSFrameSize">{190, 208}</string>
<reference key="NSSuperview" ref="859661469"/>
<bool key="NSEnabled">YES</bool>
<object class="_NSCornerView" key="NSCornerView">
<nil key="NSNextResponder"/>
<int key="NSvFlags">256</int>
<string key="NSFrame">{{223, 0}, {16, 17}}</string>
</object>
<object class="NSMutableArray" key="NSTableColumns">
<bool key="EncodedWithXMLCoder">YES</bool>
<object class="NSTableColumn" id="728334291">
<double key="NSWidth">187</double>
<double key="NSMinWidth">16</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
</object>
<reference key="NSTextColor" ref="160578461"/>
</object>
<object class="NSTextFieldCell" key="NSDataCell" id="161807197">
<int key="NSCellFlags">337772096</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="924107556"/>
<reference key="NSControlView" ref="216928480"/>
<reference key="NSBackgroundColor" ref="827363147"/>
<reference key="NSTextColor" ref="57062640"/>
</object>
<int key="NSResizingMask">3</int>
<bool key="NSIsResizeable">YES</bool>
<reference key="NSTableView" ref="216928480"/>
<object class="NSTableColumn" id="728334291">
<double key="NSWidth">213</double>
<double key="NSMinWidth">16</double>
<double key="NSMaxWidth">1000</double>
<object class="NSTableHeaderCell" key="NSHeaderCell">
<int key="NSCellFlags">75628096</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents"/>
<reference key="NSSupport" ref="26"/>
<object class="NSColor" key="NSBackgroundColor">
<int key="NSColorSpace">3</int>
<bytes key="NSWhite">MC4zMzMzMzI5ODU2AA</bytes>
</object>
<reference key="NSTextColor" ref="160578461"/>
</object>
<double key="NSIntercellSpacingWidth">3</double>
<double key="NSIntercellSpacingHeight">2</double>
<reference key="NSBackgroundColor" ref="965176493"/>
<reference key="NSGridColor" ref="248885916"/>
<double key="NSRowHeight">17</double>
<int key="NSTvFlags">-624951296</int>
<reference key="NSDelegate"/>
<reference key="NSDataSource"/>
<int key="NSColumnAutoresizingStyle">4</int>
<int key="NSDraggingSourceMaskForLocal">15</int>
<int key="NSDraggingSourceMaskForNonLocal">0</int>
<bool key="NSAllowsTypeSelect">YES</bool>
<int key="NSTableViewDraggingDestinationStyle">0</int>
<object class="NSTextFieldCell" key="NSDataCell" id="161807197">
<int key="NSCellFlags">337772096</int>
<int key="NSCellFlags2">2048</int>
<string key="NSContents">Text Cell</string>
<reference key="NSSupport" ref="924107556"/>
<reference key="NSControlView" ref="216928480"/>
<reference key="NSBackgroundColor" ref="827363147"/>
<reference key="NSTextColor" ref="57062640"/>
</object>
<int key="NSResizingMask">3</int>
<bool key="NSIsResizeable">YES</bool>
<reference key="NSTableView" ref="216928480"/>
</object>
</object>
<string key="NSFrame">{{1, 1}, {190, 208}}</string>
<reference key="NSSuperview" ref="776605770"/>
<reference key="NSNextKeyView" ref="216928480"/>
<reference key="NSDocView" ref="216928480"/>
<reference key="NSBGColor" ref="827363147"/>
<int key="NScvFlags">4</int>
</object>
<object class="NSScroller" id="692013536">
<reference key="NSNextResponder" ref="776605770"/>
<int key="NSvFlags">256</int>
<string key="NSFrame">{{191, 1}, {15, 208}}</string>
<reference key="NSSuperview" ref="776605770"/>
<reference key="NSTarget" ref="776605770"/>
<string key="NSAction">_doScroller:</string>
<double key="NSPercent">0.98701298701298701</double>
</object>
<object class="NSScroller" id="471196443">
<reference key="NSNextResponder" ref="776605770"/>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-100, -100}, {502, 15}}</string>
<reference key="NSSuperview" ref="776605770"/>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="776605770"/>
<string key="NSAction">_doScroller:</string>
<double key="NSCurValue">0.0045045050792396069</double>
<double key="NSPercent">0.99801188707351685</double>
<double key="NSIntercellSpacingWidth">3</double>
<double key="NSIntercellSpacingHeight">2</double>
<reference key="NSBackgroundColor" ref="965176493"/>
<reference key="NSGridColor" ref="248885916"/>
<double key="NSRowHeight">17</double>
<int key="NSTvFlags">-624951296</int>
<reference key="NSDelegate"/>
<reference key="NSDataSource"/>
<int key="NSColumnAutoresizingStyle">4</int>
<int key="NSDraggingSourceMaskForLocal">15</int>
<int key="NSDraggingSourceMaskForNonLocal">0</int>
<bool key="NSAllowsTypeSelect">YES</bool>
<int key="NSTableViewDraggingDestinationStyle">0</int>
</object>
</object>
<string key="NSFrame">{{0, 0.5}, {207, 210}}</string>
<reference key="NSSuperview" ref="812023425"/>
<reference key="NSNextKeyView" ref="859661469"/>
<int key="NSsFlags">18</int>
<reference key="NSVScroller" ref="692013536"/>
<reference key="NSHScroller" ref="471196443"/>
<reference key="NSContentView" ref="859661469"/>
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
<string key="NSFrame">{{1, 1}, {216, 233}}</string>
<reference key="NSSuperview" ref="776605770"/>
<reference key="NSNextKeyView" ref="216928480"/>
<reference key="NSDocView" ref="216928480"/>
<reference key="NSBGColor" ref="827363147"/>
<int key="NScvFlags">4</int>
</object>
<object class="NSScroller" id="692013536">
<reference key="NSNextResponder" ref="776605770"/>
<int key="NSvFlags">256</int>
<string key="NSFrame">{{217, 1}, {15, 233}}</string>
<reference key="NSSuperview" ref="776605770"/>
<reference key="NSTarget" ref="776605770"/>
<string key="NSAction">_doScroller:</string>
<double key="NSPercent">0.99481862783432007</double>
</object>
<object class="NSScroller" id="471196443">
<reference key="NSNextResponder" ref="776605770"/>
<int key="NSvFlags">-2147483392</int>
<string key="NSFrame">{{-100, -100}, {502, 15}}</string>
<reference key="NSSuperview" ref="776605770"/>
<int key="NSsFlags">1</int>
<reference key="NSTarget" ref="776605770"/>
<string key="NSAction">_doScroller:</string>
<double key="NSCurValue">0.0045045050792396069</double>
<double key="NSPercent">0.99801188707351685</double>
</object>
</object>
<string key="NSFrameSize">{207, 235}</string>
<string key="NSFrameSize">{233, 235}</string>
<reference key="NSSuperview" ref="626906425"/>
<string key="NSClassName">NSView</string>
<reference key="NSNextKeyView" ref="859661469"/>
<int key="NSsFlags">18</int>
<reference key="NSVScroller" ref="692013536"/>
<reference key="NSHScroller" ref="471196443"/>
<reference key="NSContentView" ref="859661469"/>
<bytes key="NSScrollAmts">QSAAAEEgAABBmAAAQZgAAA</bytes>
</object>
<object class="NSCustomView" id="891500945">
<reference key="NSNextResponder" ref="626906425"/>
@@ -1191,12 +1116,12 @@
</object>
</object>
</object>
<string key="NSFrame">{{665, 0}, {84, 24}}</string>
<string key="NSFrame">{{639, 0}, {84, 24}}</string>
<reference key="NSSuperview" ref="375746871"/>
<string key="NSClassName">NSView</string>
</object>
</object>
<string key="NSFrame">{{0, 211}, {749, 24}}</string>
<string key="NSFrame">{{0, 211}, {723, 24}}</string>
<reference key="NSSuperview" ref="891500945"/>
<string key="NSClassName">MGScopeBar</string>
</object>
@@ -1224,7 +1149,7 @@
<string>public.url-name</string>
</object>
</object>
<string key="NSFrameSize">{749, 210}</string>
<string key="NSFrameSize">{723, 210}</string>
<reference key="NSSuperview" ref="891500945"/>
<reference key="NSNextKeyView"/>
<string key="FrameName"/>
@@ -1234,7 +1159,7 @@
<bool key="AllowsUndo">YES</bool>
</object>
</object>
<string key="NSFrame">{{208, 0}, {749, 235}}</string>
<string key="NSFrame">{{234, 0}, {723, 235}}</string>
<reference key="NSSuperview" ref="626906425"/>
<string key="NSClassName">NSView</string>
</object>
@@ -2332,11 +2257,56 @@
<reference key="object" ref="626906425"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="776605770"/>
<reference ref="891500945"/>
<reference ref="812023425"/>
</object>
<reference key="parent" ref="657042048"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="776605770"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="692013536"/>
<reference ref="471196443"/>
<reference ref="216928480"/>
</object>
<reference key="parent" ref="626906425"/>
<string key="objectName">File List Scroll View</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">17</int>
<reference key="object" ref="692013536"/>
<reference key="parent" ref="776605770"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">16</int>
<reference key="object" ref="471196443"/>
<reference key="parent" ref="776605770"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">15</int>
<reference key="object" ref="216928480"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="728334291"/>
</object>
<reference key="parent" ref="776605770"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">18</int>
<reference key="object" ref="728334291"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="161807197"/>
</object>
<reference key="parent" ref="216928480"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">19</int>
<reference key="object" ref="161807197"/>
<reference key="parent" ref="728334291"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">311</int>
<reference key="object" ref="428755155"/>
@@ -2650,75 +2620,6 @@
<reference key="object" ref="102056827"/>
<reference key="parent" ref="16222431"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">491</int>
<reference key="object" ref="812023425"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="776605770"/>
<reference ref="655114161"/>
</object>
<reference key="parent" ref="626906425"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">10</int>
<reference key="object" ref="776605770"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="692013536"/>
<reference ref="471196443"/>
<reference ref="216928480"/>
</object>
<reference key="parent" ref="812023425"/>
<string key="objectName">File List Scroll View</string>
</object>
<object class="IBObjectRecord">
<int key="objectID">17</int>
<reference key="object" ref="692013536"/>
<reference key="parent" ref="776605770"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">16</int>
<reference key="object" ref="471196443"/>
<reference key="parent" ref="776605770"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">15</int>
<reference key="object" ref="216928480"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="728334291"/>
</object>
<reference key="parent" ref="776605770"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">18</int>
<reference key="object" ref="728334291"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="161807197"/>
</object>
<reference key="parent" ref="216928480"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">19</int>
<reference key="object" ref="161807197"/>
<reference key="parent" ref="728334291"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">492</int>
<reference key="object" ref="655114161"/>
<object class="NSMutableArray" key="children">
<bool key="EncodedWithXMLCoder">YES</bool>
<reference ref="464567343"/>
</object>
<reference key="parent" ref="812023425"/>
</object>
<object class="IBObjectRecord">
<int key="objectID">493</int>
<reference key="object" ref="464567343"/>
<reference key="parent" ref="655114161"/>
</object>
</object>
</object>
<object class="NSMutableDictionary" key="flattenedProperties">
@@ -2781,7 +2682,6 @@
<string>333.IBPluginDependency</string>
<string>337.IBAttributePlaceholdersKey</string>
<string>337.IBPluginDependency</string>
<string>337.IBViewBoundsToFrameTransform</string>
<string>338.IBPluginDependency</string>
<string>34.CustomClassName</string>
<string>34.IBPluginDependency</string>
@@ -2834,9 +2734,6 @@
<string>486.IBPluginDependency</string>
<string>49.IBAttributePlaceholdersKey</string>
<string>49.IBPluginDependency</string>
<string>491.IBPluginDependency</string>
<string>492.IBPluginDependency</string>
<string>493.IBPluginDependency</string>
<string>50.IBPluginDependency</string>
<string>51.IBPluginDependency</string>
<string>6.IBPluginDependency</string>
@@ -2929,9 +2826,6 @@
</object>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<object class="NSAffineTransform">
<bytes key="NSTransformStruct">P4AAAL+AAABC6AAAwdAAAA</bytes>
</object>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>GitXTextFieldCell</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3018,7 +2912,7 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.WebKitIBPlugin</string>
<string>{{1702, 241}, {955, 434}}</string>
<string>{{1084, 241}, {955, 434}}</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
@@ -3038,9 +2932,6 @@
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
<string>com.apple.InterfaceBuilder.CocoaPlugin</string>
</object>
</object>
<object class="NSMutableDictionary" key="unlocalizedProperties">
@@ -3059,7 +2950,7 @@
</object>
</object>
<nil key="sourceID"/>
<int key="maxID">493</int>
<int key="maxID">490</int>
</object>
<object class="IBClassDescriber" key="IBDocument.Classes">
<object class="NSMutableArray" key="referencedPartialClassDescriptions">
+6
View File
@@ -21,6 +21,9 @@
NSString* localFileName;
NSDate* localMtime;
NSPredicate *filterPredicate;
NSMutableArray *filteredChildren;
}
+ (PBGitTree*) rootForCommit: (id) commit;
@@ -41,6 +44,9 @@
@property(retain) PBGitRepository* repository;
@property(assign) __weak PBGitTree* parent;
@property (nonatomic, copy) NSPredicate *filterPredicate;
@property(readonly) NSArray *filteredChildren;
@property(readonly) NSArray* children;
@property(readonly) NSString* fullPath;
@property(readonly) NSString* contents;
+50
View File
@@ -15,6 +15,55 @@
@implementation PBGitTree
@synthesize sha, path, repository, leaf, parent;
@synthesize filterPredicate;
@synthesize filteredChildren;
#pragma mark -
#pragma mark get/set
- (NSArray *) filteredChildren {
if (!filteredChildren) {
filteredChildren = [[NSMutableArray alloc] init];
[filteredChildren addObjectsFromArray:self.children];
}
return filteredChildren;
}
- (void) setFilterPredicate:(NSPredicate *) newPredicate {
if (newPredicate != filterPredicate) {
[filterPredicate release];
filterPredicate = [newPredicate retain];
if (leaf) {
return;
}
// initiate filtering
[filteredChildren removeAllObjects];
filteredChildren = [[NSMutableArray alloc] init];
if (filterPredicate == nil) {
[filteredChildren addObjectsFromArray:self.children];
}
for (id item in self.children) {
[item setFilterPredicate:filterPredicate];
if (filterPredicate) {
if ([item leaf]) {
if ([filterPredicate evaluateWithObject:item]) {
[filteredChildren addObject:item];
}
} else {
if ([[item filteredChildren] count] > 0) {
[filteredChildren addObject:item];
}
}
}
}
}
}
#pragma mark -
+ (PBGitTree*) rootForCommit:(id) commit
{
@@ -40,6 +89,7 @@
- init
{
filteredChildren = nil;
children = nil;
localFileName = nil;
leaf = YES;