From 755f87477407c55fa6dcc673fab0f881e5e0f421 Mon Sep 17 00:00:00 2001 From: Sergii Stoian Date: Fri, 11 Jun 2004 23:02:47 +0000 Subject: [PATCH] Fix bugs appearing during openning legacy projects git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@19501 72102866-910b-0410-8b05-ffd578937521 --- Documentation/ChangeLog | 9 +++++- Library/PCProject.m | 15 +++------- Library/PCProjectManager.m | 5 +++- PCAppController.m | 1 + PCPrefController.h | 1 + PCPrefController.m | 56 ++++++++++++++++++++++++++++++++++++++ 6 files changed, 74 insertions(+), 13 deletions(-) diff --git a/Documentation/ChangeLog b/Documentation/ChangeLog index 854e0a5..3628d63 100644 --- a/Documentation/ChangeLog +++ b/Documentation/ChangeLog @@ -1,6 +1,13 @@ +2004-06-12 Serg Stoyan + + * Library/PCProjectManager.m: + * Library/PCProject.m: + * PCPrefController.m: + Fix bugs related to opening legacy projects. + 2004-06-11 Serg Stoyan - * Library/PCProjectManager.[m]: + * Library/PCProjectManager.m: (loadProjectAt:): Fix loading "Gorm" poject. 2004-06-09 Serg Stoyan diff --git a/Library/PCProject.m b/Library/PCProject.m index 9b0293f..03ec396 100644 --- a/Library/PCProject.m +++ b/Library/PCProject.m @@ -1000,18 +1000,11 @@ NSString { if ([self isValidDictionary:projectDict] == NO) { - int ret = NSRunAlertPanel(@"Attention!", - @"The project file lacks some entries\nUpdate it automatically?", - @"Update",@"Leave",nil); + [self updateProjectDict]; - if (ret == NSAlertDefaultReturn) - { - [self updateProjectDict]; - - NSRunAlertPanel(@"Project updated!", - @"The project file has been updated successfully!\nPlease make sure that all new project keys contain valid entries!", - @"OK",nil,nil); - } + NSRunAlertPanel(@"Project updated!", + @"The project file was converted from previous version!\nPlease make sure that every project attribute contain valid values!", + @"OK",nil,nil); } } diff --git a/Library/PCProjectManager.m b/Library/PCProjectManager.m index 3de554f..7439253 100644 --- a/Library/PCProjectManager.m +++ b/Library/PCProjectManager.m @@ -409,6 +409,7 @@ NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; { projectTypeName = [NSString stringWithString:@"Application"];; projectClassName = [projectTypes objectForKey:projectTypeName]; + projectTypeName = nil; } if (projectClassName == nil) @@ -426,11 +427,12 @@ NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; pPath = [[aPath stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"PC.project"]; - [[NSFileManager defaultManager] removeFileAtPath:aPath handler:nil]; +// [[NSFileManager defaultManager] removeFileAtPath:aPath handler:nil]; [projectFile removeObjectForKey:PCProjectBuilderClass]; projectTypeName = [projectCreator projectTypeName]; [projectFile setObject:projectTypeName forKey:PCProjectType]; + [projectFile removeObjectForKey:PCPrincipalClass]; [projectFile writeToFile:pPath atomically:YES]; aPath = pPath; @@ -443,6 +445,7 @@ NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; // Started only if there's not save timer yet [self startSaveTimer]; [project validateProjectDict]; + return project; } diff --git a/PCAppController.m b/PCAppController.m index 4d2796d..04bf341 100644 --- a/PCAppController.m +++ b/PCAppController.m @@ -46,6 +46,7 @@ if ((self = [super init])) { infoController = [[PCInfoController alloc] init]; + // Termporary workaround to initialize defaults values prefController = [PCPrefController sharedPCPreferences]; logController = [PCLogController sharedLogController]; diff --git a/PCPrefController.h b/PCPrefController.h index 5e938b3..735b906 100644 --- a/PCPrefController.h +++ b/PCPrefController.h @@ -83,6 +83,7 @@ - (id)init; - (void)dealloc; +- (void)setDefaultValues; - (void)loadPrefernces; - (NSDictionary *)preferencesDict; diff --git a/PCPrefController.m b/PCPrefController.m index d409026..e3425a3 100644 --- a/PCPrefController.m +++ b/PCPrefController.m @@ -28,6 +28,9 @@ #include "PCLogController.h" +// TODO: rewrite it as PCPrefernces, use +sharedPreferences instead of +// [NSUserDefaults standardUserDefaults] in every part of ProjectCenter + @implementation PCPrefController // =========================================================================== @@ -60,6 +63,11 @@ static PCPrefController *_prefCtrllr = nil; prefs = [[NSUserDefaults standardUserDefaults] dictionaryRepresentation]; preferencesDict = [[NSMutableDictionary alloc] initWithDictionary:prefs]; + if ([preferencesDict objectForKey:@"Version"] == nil) + { + [self setDefaultValues]; + } + return self; } @@ -81,6 +89,54 @@ static PCPrefController *_prefCtrllr = nil; [super dealloc]; } +- (void)setDefaultValues +{ + NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; + + PCLogInfo(self, @"setDefaultValues"); + + // Clean preferences + [preferencesDict removeAllObjects]; + + [preferencesDict setObject:@"0.4" forKey:@"Version"]; + + // Building + [preferencesDict setObject:@"" forKey:SuccessSound]; + [preferencesDict setObject:@"" forKey:FailureSound]; + [preferencesDict setObject:@"YES" forKey:PromptOnClean]; + [preferencesDict setObject:@"" forKey:RootBuildDirectory]; + + // Saving + [preferencesDict setObject:@"YES" forKey:SaveOnQuit]; + [preferencesDict setObject:@"YES" forKey:KeepBackup]; + [preferencesDict setObject:@"120" forKey:AutoSavePeriod]; + + // Key Bindings + [preferencesDict setObject:@"Tab" forKey:TabBehaviour]; + + // Miscellaneous + [preferencesDict setObject:@"YES" forKey:PromptOnQuit]; + [preferencesDict setObject:@"YES" forKey:DeleteCacheWhenQuitting]; + [preferencesDict setObject:@"YES" forKey:FullPathInFilePanels]; + [preferencesDict setObject:@"/usr/bin/gdb" forKey:Debugger]; + [preferencesDict setObject:@"ProjectCenter" forKey:Editor]; + + // Interface + [preferencesDict setObject:@"YES" forKey:SeparateBuilder]; + [preferencesDict setObject:@"YES" forKey:SeparateLauncher]; + [preferencesDict setObject:@"NO" forKey:SeparateEditor]; + [preferencesDict setObject:@"YES" forKey:SeparateLoadedFiles]; + + [preferencesDict setObject:@"30" forKey:EditorLines]; + [preferencesDict setObject:@"80" forKey:EditorColumns]; + + [preferencesDict setObject:@"YES" forKey:RememberWindows]; + [preferencesDict setObject:@"NO" forKey:DisplayLog]; + + [ud setPersistentDomain:preferencesDict forName:@"ProjectCenter"]; + [ud synchronize]; +} + - (void)loadPrefernces { NSDictionary *prefs = nil;