diff --git a/ChangeLog b/ChangeLog index 6b5f176..8f2f78a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,17 @@ -2009-03-03 00:08 Sergii Stoian +2009-03-05 02:43 Sergii Stoian + + * ChangeLog: Update. + * Modules/Preferences/Misc/PCMiscPrefs.h, + * Modules/Preferences/Misc/PCMiscPrefs.m, + * Modules/Preferences/Misc/Resources/MiscPrefs.gorm/data.classes, + * Modules/Preferences/Misc/Resources/MiscPrefs.gorm/objects.gorm: + Add new setting UseTearOffWindows. + * Framework/PCProjectWindow.m: Use new setting. + * Modules/Editors/ProjectCenter/PCEditor.m: + (dealloc): Add releasing _window. + * Documentation/TODO: Update. + +2009-03-05 01:01 Sergii Stoian * Framework/PCProjectManager.m: (convertLegacyProject:atPath:): Correctly convert legacy application @@ -8,7 +21,7 @@ is not text file. Situation when editor for non text files called to be opened must be reviewd. -2009-03-03 00:08 Sergii Stoian +2009-03-05 00:08 Sergii Stoian * Framework/PCProjectBrowser.m: Stop using 'SeparateEditor' prefernce. Remove use of preferences code. diff --git a/Documentation/TODO b/Documentation/TODO index 6143a31..be43a8e 100644 --- a/Documentation/TODO +++ b/Documentation/TODO @@ -55,10 +55,11 @@ ProjectCenter 0.6 - Finish parsing gcc output (make errors, etc.) stoyan - Implement interaction with Editor (errors, warnings) stoyan --- Project Editor --------------------------------------------- - - go to line stoyan + - review situations when editor is opened stoyan + - implement go to line stoyan - Implement interaction with Builder (errors, warnings) stoyan - Implement indentation stoyan - - undo inside editor stoyan + - implement undo inside editor stoyan - Think about imlementing pending adding/removal of files ??? - Split "Application" to "Application GORM" and "Application Renaissance" project types ??? @@ -74,6 +75,7 @@ ProjectCenter 0.7 - Add support for non-project files ??? - Implement symbols indexing. This feature touches Browser (class and method list) and Editor (autocompletion) ??? +- Editor: implement autocompletion ??? - Implement Plist editor for editing project files ??? - An initial project wide find feature ??? - Better integration with other tools (GORM) ??? diff --git a/Framework/PCProjectBuilderPanel.m b/Framework/PCProjectBuilderPanel.m index c17d8ee..8735ce7 100644 --- a/Framework/PCProjectBuilderPanel.m +++ b/Framework/PCProjectBuilderPanel.m @@ -95,8 +95,8 @@ [contentBox display]; } -/* PCLogInfo(self, @"orderFront: %@ -> %@", - builderView, [builderView superview]);*/ +/* NSLog(self, @"orderFront: %@ -> %@", + builderView, [builderView superview]);*/ [panel orderFront:self]; } diff --git a/Framework/PCProjectWindow.m b/Framework/PCProjectWindow.m index c7616e2..aaf4f2b 100644 --- a/Framework/PCProjectWindow.m +++ b/Framework/PCProjectWindow.m @@ -338,11 +338,11 @@ - (void)showProjectBuild:(id)sender { - NSView *view = [[project projectBuilder] componentView]; - NSPanel *buildPanel = [[project projectManager] buildPanel]; + id prefs = [[project projectManager] prefController]; + NSView *view = [[project projectBuilder] componentView]; + NSPanel *buildPanel = [[project projectManager] buildPanel]; - if ([[[[project projectManager] prefController] objectForKey:SeparateBuilder] - isEqualToString: @"YES"]) + if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"YES"]) { if ([customView contentView] == view) { @@ -369,13 +369,13 @@ view = [[project projectLauncher] componentView]; launchPanel = [[project projectManager] launchPanel]; - if ([[prefs objectForKey:SeparateLauncher] isEqualToString: @"YES"]) + if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"YES"]) { if ([customView contentView] == view) { [self showProjectEditor:self]; } - [launchPanel orderFront: nil]; + [launchPanel orderFront:nil]; } else { @@ -389,14 +389,22 @@ - (void)showProjectLoadedFiles:(id)sender { - NSPanel *panel = [[project projectManager] loadedFilesPanel]; - NSScrollView *componentView; + id prefs = [[project projectManager] prefController]; + NSPanel *panel = [[project projectManager] loadedFilesPanel]; + NSScrollView *componentView; componentView = (NSScrollView *)[[project projectLoadedFiles] componentView]; // PCLogInfo(self, @"showProjectLoadedFiles"); - if ([self hasLoadedFilesView]) +// if ([self hasLoadedFilesView]) + if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"YES"]) + { + [componentView setBorderType:NSNoBorder]; + [panel orderFront:nil]; + [v_split adjustSubviews]; + } + else { if (panel && [panel isVisible]) { @@ -408,12 +416,6 @@ [v_split addSubview:[[project projectLoadedFiles] componentView]]; [v_split adjustSubviews]; } - else - { - [componentView setBorderType:NSNoBorder]; - [panel orderFront:nil]; - [v_split adjustSubviews]; - } } - (void)showProjectInspector:(id)sender @@ -582,6 +584,48 @@ customView = nil; }*/ + if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"YES"]) + { + // Project Build + if ([[[project projectBuilder] componentView] window] == projectWindow) + { + [self showProjectBuild:self]; + } + // Project Launch + if ([[[project projectLauncher] componentView] window] == projectWindow) + { + [self showProjectLaunch:self]; + } + // Loaded Files + if ([[v_split subviews] count] == 2) + { + [self showProjectLoadedFiles:self]; + } + [loadedFilesButton setEnabled:YES]; + } + else + { + NSPanel *buildPanel = [[project projectManager] buildPanel]; + NSPanel *launchPanel = [[project projectManager] launchPanel]; + + // Project Build + if ([buildPanel isVisible] == YES) + { + [self showProjectBuild:self]; + } + // Project Launch + if ([launchPanel isVisible] == YES) + { + [self showProjectLaunch:self]; + } + // Loaded Files + if ([[v_split subviews] count] == 1) + { + [self showProjectLoadedFiles:self]; + } + [loadedFilesButton setEnabled:NO]; + } +/* // Project Builder if ([[prefs objectForKey:@"SeparateBuilder"] isEqualToString:@"YES"]) { @@ -635,7 +679,7 @@ [self showProjectLoadedFiles:self]; } [loadedFilesButton setEnabled:YES]; - } + }*/ } - (void)browserDidSetPath:(NSNotification *)aNotif diff --git a/Modules/Editors/ProjectCenter/PCEditor.m b/Modules/Editors/ProjectCenter/PCEditor.m index 38b859b..f604610 100644 --- a/Modules/Editors/ProjectCenter/PCEditor.m +++ b/Modules/Editors/ProjectCenter/PCEditor.m @@ -212,6 +212,7 @@ RELEASE(_categoryPath); RELEASE(_intScrollView); RELEASE(_storage); + RELEASE(_window); // RELEASE(parserClasses); RELEASE(parserMethods); diff --git a/Modules/Preferences/Misc/PCMiscPrefs.h b/Modules/Preferences/Misc/PCMiscPrefs.h index f13ee8a..6f8ef17 100644 --- a/Modules/Preferences/Misc/PCMiscPrefs.h +++ b/Modules/Preferences/Misc/PCMiscPrefs.h @@ -34,6 +34,7 @@ #define FullPathInFilePanels @"FullPathInFilePanels" #define RememberWindows @"RememberWindows" #define DisplayLog @"DisplayLog" +#define UseTearOffWindows @"UseTearOffWindows" #define Debugger @"Debugger" #define Editor @"Editor" @@ -47,6 +48,7 @@ IBOutlet NSButton *fullPathInFilePanels; IBOutlet NSButton *rememberWindows; IBOutlet NSButton *displayLog; + IBOutlet NSButton *useTearOffWindows; IBOutlet NSTextField *debuggerField; IBOutlet NSButton *debuggerButton; diff --git a/Modules/Preferences/Misc/PCMiscPrefs.m b/Modules/Preferences/Misc/PCMiscPrefs.m index b85979e..07beb06 100644 --- a/Modules/Preferences/Misc/PCMiscPrefs.m +++ b/Modules/Preferences/Misc/PCMiscPrefs.m @@ -56,6 +56,7 @@ [fullPathInFilePanels setRefusesFirstResponder:YES]; [rememberWindows setRefusesFirstResponder:YES]; [displayLog setRefusesFirstResponder:YES]; + [useTearOffWindows setRefusesFirstResponder:YES]; [debuggerButton setRefusesFirstResponder:YES]; [editorButton setRefusesFirstResponder:YES]; @@ -81,6 +82,7 @@ [prefs setObject:@"YES" forKey:FullPathInFilePanels notify:NO]; [prefs setObject:@"YES" forKey:RememberWindows notify:NO]; [prefs setObject:@"NO" forKey:DisplayLog notify:NO]; + [prefs setObject:@"YES" forKey:UseTearOffWindows notify:NO]; [prefs setObject:@"/usr/bin/gdb" forKey:Debugger notify:NO]; [prefs setObject:@"ProjectCenter" forKey:Editor notify:NO]; @@ -107,6 +109,10 @@ state = [val isEqualToString:@"YES"] ? NSOnState : NSOffState; [displayLog setState:state]; + val = [prefs objectForKey:UseTearOffWindows]; + state = [val isEqualToString:@"YES"] ? NSOnState : NSOffState; + [useTearOffWindows setState:state]; + if (!(val = [prefs objectForKey:Debugger])) val = PCDefaultDebugger; [debuggerField setStringValue:val]; @@ -178,6 +184,20 @@ [prefs setObject:state forKey:DisplayLog notify:YES]; } +- (void)setUseTearOffWindows:(id)sender +{ + NSString *state; + + if (useTearOffWindows == nil) + { + useTearOffWindows = sender; + return; + } + + state = ([sender state] == NSOffState) ? @"NO" : @"YES"; + [prefs setObject:state forKey:UseTearOffWindows notify:YES]; +} + - (void)setDebugger:(id)sender { NSArray *files; diff --git a/Modules/Preferences/Misc/Resources/MiscPrefs.gorm/data.classes b/Modules/Preferences/Misc/Resources/MiscPrefs.gorm/data.classes index 89438f9..e1a1215 100644 --- a/Modules/Preferences/Misc/Resources/MiscPrefs.gorm/data.classes +++ b/Modules/Preferences/Misc/Resources/MiscPrefs.gorm/data.classes @@ -2,8 +2,9 @@ "## Comment" = "Do NOT change this file, Gorm maintains it"; FirstResponder = { Actions = ( - "setDisplayLog:", + "setUseTearOffWindows:", "setDebugger:", + "setDisplayLog:", "setEditor:", "setFullPathInFilePanels:", "setPromptWhenQuit:", @@ -18,7 +19,8 @@ "setFullPathInFilePanels:", "setPromptWhenQuit:", "setDisplayLog:", - "setRememberWindows:" + "setRememberWindows:", + "setUseTearOffWindows:" ); Outlets = ( debuggerButton, @@ -29,7 +31,8 @@ miscView, promptWhenQuit, displayLog, - rememberWindows + rememberWindows, + useTearOffWindows ); Super = NSObject; }; diff --git a/Modules/Preferences/Misc/Resources/MiscPrefs.gorm/objects.gorm b/Modules/Preferences/Misc/Resources/MiscPrefs.gorm/objects.gorm index 51dc255..180c937 100644 Binary files a/Modules/Preferences/Misc/Resources/MiscPrefs.gorm/objects.gorm and b/Modules/Preferences/Misc/Resources/MiscPrefs.gorm/objects.gorm differ