From 4ee31e2a7c963bc8126dfdfe30b8e66639984f84 Mon Sep 17 00:00:00 2001 From: "Philippe C.D. Robert" Date: Thu, 21 Feb 2002 10:05:42 +0000 Subject: [PATCH] Cleaned up the code which is called upon seleting a file in the project browser. Now libraries etc. do not show up in the internal editor anymore. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@12613 72102866-910b-0410-8b05-ffd578937521 --- PCLib/PCBrowserController.h | 2 ++ PCLib/PCBrowserController.m | 62 ++++++++++++++++++++----------------- PCLib/PCProject.h | 3 +- PCLib/PCProject.m | 14 ++++++++- 4 files changed, 50 insertions(+), 31 deletions(-) diff --git a/PCLib/PCBrowserController.h b/PCLib/PCBrowserController.h index 620c3f9..3a1df3a 100644 --- a/PCLib/PCBrowserController.h +++ b/PCLib/PCBrowserController.h @@ -42,6 +42,8 @@ - (void)click:(id)sender; - (void)doubleClick:(id)sender; +- (BOOL)isEditableCategory:(NSString *)category; + - (void)projectDictDidChange:(NSNotification *)aNotif; - (NSString *)nameOfSelectedFile; diff --git a/PCLib/PCBrowserController.m b/PCLib/PCBrowserController.m index 5d9f4ef..9f60370 100644 --- a/PCLib/PCBrowserController.m +++ b/PCLib/PCBrowserController.m @@ -25,8 +25,6 @@ */ #import "PCBrowserController.h" -#import "PCEditorController.h" -#import "PCEditor.h" #import "PCProject.h" #import "PCFileManager.h" @@ -43,42 +41,31 @@ { if ([[sender selectedCell] isLeaf]) { - NSString *ltitle = [[sender selectedCell] stringValue]; - NSString *ctitle = [[sender selectedCellInColumn:0] stringValue]; - NSString *ctitlef = [[project projectPath] stringByAppendingPathComponent:ltitle]; + NSString *ltitle = [[sender selectedCell] stringValue]; + NSString *category = [[sender selectedCellInColumn:0] stringValue]; - [project browserDidSelectFileNamed:ltitle]; + if ([self isEditableCategory:category]) + { + [project browserDidClickFile:ltitle category:category]; + } } } - (void)doubleClick:(id)sender { - if ([sender selectedColumn] != 0) + if ([[sender selectedCell] isLeaf]) { - NSString *category = [[[browser path] componentsSeparatedByString:@"/"] objectAtIndex:1]; - NSString *k = [[project rootCategories] objectForKey:category]; + NSString *category = [[sender selectedCellInColumn:0] stringValue]; + NSString *fn = [self nameOfSelectedFile]; + NSString *f = [[project projectPath] stringByAppendingPathComponent:fn]; - if ([k isEqualToString:PCClasses] || - [k isEqualToString:PCHeaders] || - [k isEqualToString:PCOtherSources]) + if ([self isEditableCategory:category]) { - NSString *projectPath = [project projectPath]; - NSString *fn = [self nameOfSelectedFile]; - NSString *file = [projectPath stringByAppendingPathComponent:fn]; - - [[[project editorController] editorForFile:file] show]; + [project browserDidDblClickFile:f category:category]; } - else + else if([[NSWorkspace sharedWorkspace] openFile:f] == NO) { - NSString *fi; - NSString *sf = [self nameOfSelectedFile]; - - fi = [[project projectPath] stringByAppendingPathComponent:sf]; - - if([[NSWorkspace sharedWorkspace] openFile:fi] == NO) - { - NSRunAlertPanel(@"Attention!",@"Could not open %@.",@"OK",nil,nil,fi); - } + NSRunAlertPanel(@"Attention!",@"Could not open %@.",@"OK",nil,nil,f); } } else @@ -87,6 +74,23 @@ } } +- (BOOL)isEditableCategory:(NSString *)category +{ + NSString *k = [[project rootCategories] objectForKey:category]; + + if ([k isEqualToString:PCClasses] || + [k isEqualToString:PCHeaders] || + [k isEqualToString:PCOtherResources] || + [k isEqualToString:PCSupportingFiles] || + [k isEqualToString:PCDocuFiles] || + [k isEqualToString:PCOtherSources]) + { + return YES; + } + + return NO; +} + - (void)projectDictDidChange:(NSNotification *)aNotif { if (browser) { @@ -133,8 +137,8 @@ - (void)setProject:(PCProject *)aProj { - [project autorelease]; - project = [aProj retain]; + AUTORELEASE(project); + project = RETAIN(aProj); } @end diff --git a/PCLib/PCProject.h b/PCLib/PCProject.h index d91edfe..83df4e5 100644 --- a/PCLib/PCProject.h +++ b/PCLib/PCProject.h @@ -212,7 +212,8 @@ static NSString * const PCBuildTool = @"BUILDTOOL"; // ==== File Handling //============================================================================= -- (void)browserDidSelectFileNamed:(NSString *)fileName; +- (void)browserDidClickFile:(NSString *)fileName category:(NSString*)c; +- (void)browserDidDblClickFile:(NSString *)fileName category:(NSString*)c; - (BOOL)doesAcceptFile:(NSString *)file forKey:(NSString *)key; // Returns YES if type is a valid key and file is not contained in the project already diff --git a/PCLib/PCProject.m b/PCLib/PCProject.m index f5a3ff4..c284183 100644 --- a/PCLib/PCProject.m +++ b/PCLib/PCProject.m @@ -637,7 +637,7 @@ // ==== File Handling //============================================================================= -- (void)browserDidSelectFileNamed:(NSString *)fileName +- (void)browserDidClickFile:(NSString *)fileName category:(NSString*)c { NSString *p = [[self projectPath] stringByAppendingPathComponent:fileName]; PCEditor *e; @@ -660,6 +660,18 @@ [projectWindow makeFirstResponder:[projectEditor editorView]]; } +- (void)browserDidDblClickFile:(NSString *)fileName category:(NSString*)c +{ + PCEditor *e; + + e = [editorController editorForFile:fileName]; + + if( e ) + { + [e show]; + } +} + - (BOOL)doesAcceptFile:(NSString *)file forKey:(NSString *)type { if ([[projectDict allKeys] containsObject:type]) {