From e6ce23e63b1829dd37399c0ab8a10662e43be387 Mon Sep 17 00:00:00 2001 From: Sergii Stoian Date: Sun, 15 Mar 2009 00:12:00 +0000 Subject: [PATCH] * Headers/Protocols/Preferences.h: Add new methods. * PCPrefController.m: Implemented set/get of preferences value dependent. All values are stored in preferences as NSString values and converted upon request to specified type. * Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m: Use new methods of PCPrefController. Implemented setting of editor fonts. (setDefaults): Removed. * Modules/Preferences/Build/PCBuildPrefs.m, * Modules/Preferences/Misc/PCMiscPrefs.m, * Modules/Preferences/Saving/PCSavingPrefs.m: Use new methods of PCPrefController. (setDefaults): Removed. * Framework/PCProjectLoadedFiles.m, * Framework/PCMakefileFactory.m, * Framework/PCProject.m, * Framework/PCProjectLauncherPanel.m, * Framework/PCFileManager.m, * Framework/PCProjectBrowser.m, * Framework/PCProjectBuilder.m, * Framework/PCEditorManager.m, * Framework/PCProjectLoadedFilesPanel.m, * Framework/PCProjectLauncher.m, * Framework/PCProjectBuilderPanel.m, * Framework/PCProjectWindow.m, * PCAppController.m, * Framework/PCProjectManager.m: Use new methods of PCPrefController. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28074 72102866-910b-0410-8b05-ffd578937521 --- English.lproj/Preferences.gorm/objects.gorm | Bin 2969 -> 2969 bytes Framework/PCEditorManager.m | 2 +- Framework/PCFileManager.m | 12 +- Framework/PCMakefileFactory.m | 2 +- Framework/PCProject.m | 8 +- Framework/PCProjectBrowser.m | 2 +- Framework/PCProjectBuilder.m | 16 +- Framework/PCProjectBuilderPanel.m | 2 +- Framework/PCProjectLauncher.m | 2 +- Framework/PCProjectLauncherPanel.m | 2 +- Framework/PCProjectLoadedFiles.m | 2 +- Framework/PCProjectLoadedFilesPanel.m | 2 +- Framework/PCProjectManager.m | 19 +- Framework/PCProjectWindow.m | 12 +- Headers/Protocols/Preferences.h | 28 ++- Modules/Preferences/Build/PCBuildPrefs.m | 52 ++---- .../Preferences/EditorFSC/PCEditorFSCPrefs.h | 3 + .../Preferences/EditorFSC/PCEditorFSCPrefs.m | 172 ++++++++++++------ .../EditorFSCPrefs.gorm/data.classes | 14 ++ .../EditorFSCPrefs.gorm/objects.gorm | Bin 8982 -> 9110 bytes Modules/Preferences/Misc/PCMiscPrefs.m | 78 +++----- Modules/Preferences/Saving/PCSavingPrefs.m | 63 +++---- PCAppController.m | 18 +- PCPrefController.m | 122 +++++++++++-- 24 files changed, 381 insertions(+), 252 deletions(-) diff --git a/English.lproj/Preferences.gorm/objects.gorm b/English.lproj/Preferences.gorm/objects.gorm index c2acdc96869928886fd654023cd2067f246e56d1..2b73d125962138c3c66820f5f97bcf693bb337fd 100644 GIT binary patch delta 204 zcmbO!K2v-{AR~J*0|U2<$AQfej2dig3qYKP$!+XUMA%dr7#LVZfdm_qQ+|bpfu@1s zk z1Ehr=ZX`QXSY~QD(98|S23A0YQp`ph#3nm&c>y)_a*1=APnclfv{8P8)#SBYu0XNR dTp2(zhFe3_04U=Fl(F1kFu}lgqb$f=1^~sRFSP&w delta 255 zcmbO!K2v-{AR~KM0|U2<1HEz2CZhU4C zF$M$kjba8ClhrwASzF?^#b|?=ffYoW9c~LdQ&?tdInbI7rjwnxyci88_i~AI8cvvC q;IvVGgXQG4T&_T|&s-TmGKO12)Cef!1C+7aU^KzNccU!GO$-2&hd3bs diff --git a/Framework/PCEditorManager.m b/Framework/PCEditorManager.m index cde8c5f..fd10a5f 100644 --- a/Framework/PCEditorManager.m +++ b/Framework/PCEditorManager.m @@ -145,7 +145,7 @@ NSString *PCEditorDidResignActiveNotification = { id prefs = [_projectManager prefController]; - ASSIGN(editorName, [prefs objectForKey:Editor]); + ASSIGN(editorName, [prefs stringForKey:Editor]); } // =========================================================================== diff --git a/Framework/PCFileManager.m b/Framework/PCFileManager.m index 83965d4..29c6013 100644 --- a/Framework/PCFileManager.m +++ b/Framework/PCFileManager.m @@ -353,24 +353,24 @@ static PCFileManager *_mgr = nil; panel = [NSOpenPanel openPanel]; [panel setCanChooseFiles:YES]; [panel setCanChooseDirectories:NO]; - lastOpenDir = [prefs objectForKey:@"FileOpenLastDirectory"]; + lastOpenDir = [prefs stringForKey:@"FileOpenLastDirectory"]; break; case PCSaveFileOperation: panel = [NSSavePanel savePanel]; - lastOpenDir = [prefs objectForKey:@"FileSaveLastDirectory"]; + lastOpenDir = [prefs stringForKey:@"FileSaveLastDirectory"]; break; case PCOpenProjectOperation: panel = [NSOpenPanel openPanel]; [panel setAllowsMultipleSelection:NO]; [panel setCanChooseFiles:YES]; [panel setCanChooseDirectories:YES]; - lastOpenDir = [prefs objectForKey:@"ProjectOpenLastDirectory"]; + lastOpenDir = [prefs stringForKey:@"ProjectOpenLastDirectory"]; break; case PCOpenDirectoryOperation: panel = [NSOpenPanel openPanel]; [panel setCanChooseFiles:NO]; [panel setCanChooseDirectories:YES]; - lastOpenDir = [prefs objectForKey:@"FileOpenLastDirectory"]; + lastOpenDir = [prefs stringForKey:@"FileOpenLastDirectory"]; break; case PCAddFileOperation: if (addFilesPanel == nil) @@ -378,7 +378,7 @@ static PCFileManager *_mgr = nil; addFilesPanel = [PCAddFilesPanel addFilesPanel]; } panel = addFilesPanel; - lastOpenDir = [prefs objectForKey:@"FileAddLastDirectory"]; + lastOpenDir = [prefs stringForKey:@"FileAddLastDirectory"]; break; default: return nil; @@ -430,7 +430,7 @@ static PCFileManager *_mgr = nil; if (key != nil) { - [prefs setObject:[panel directory] forKey:key notify:NO]; + [prefs setString:[panel directory] forKey:key notify:NO]; } } diff --git a/Framework/PCMakefileFactory.m b/Framework/PCMakefileFactory.m index adef6dd..ed5ddc9 100644 --- a/Framework/PCMakefileFactory.m +++ b/Framework/PCMakefileFactory.m @@ -64,7 +64,7 @@ static PCMakefileFactory *_factory = nil; - (void)createMakefileForProject:(PCProject *)project { id prefs = [[project projectManager] prefController]; - NSString *buildDir = [prefs objectForKey:RootBuildDirectory]; + NSString *buildDir = [prefs stringForKey:RootBuildDirectory]; NSString *prName = [project projectName]; NSString *buildName = [prName stringByAppendingPathExtension:@"build"]; NSString *instDir = [[project projectDict] objectForKey:PCInstallDir]; diff --git a/Framework/PCProject.m b/Framework/PCProject.m index 46c8f1a..bde1caf 100644 --- a/Framework/PCProject.m +++ b/Framework/PCProject.m @@ -125,13 +125,9 @@ NSString - (void)loadPreferences:(NSNotification *)aNotification { id prefs = [projectManager prefController]; - NSString *val; - val = [prefs objectForKey:RememberWindows]; - rememberWindows = ([val isEqualToString:@"YES"]) ? YES : NO; - - val = [prefs objectForKey:KeepBackup]; - keepBackup = ([val isEqualToString:@"YES"]) ? YES : NO; + rememberWindows = [prefs boolForKey:RememberWindows]; + keepBackup = [prefs boolForKey:KeepBackup]; } // ============================================================================ diff --git a/Framework/PCProjectBrowser.m b/Framework/PCProjectBrowser.m index e14bbc3..f406daa 100644 --- a/Framework/PCProjectBrowser.m +++ b/Framework/PCProjectBrowser.m @@ -439,7 +439,7 @@ NSString *PCBrowserDidSetPathNotification = @"PCBrowserDidSetPathNotification"; // from Info-gnustep.plist file of PC. if(foundApp == NO || [appName isEqualToString:@"ProjectCenter.app"]) { - appName = [prefs objectForKey:Editor]; + appName = [prefs stringForKey:Editor]; if (![appName isEqualToString:@"ProjectCenter"]) { diff --git a/Framework/PCProjectBuilder.m b/Framework/PCProjectBuilder.m index 25745ef..f443548 100644 --- a/Framework/PCProjectBuilder.m +++ b/Framework/PCProjectBuilder.m @@ -246,16 +246,14 @@ - (void)loadPreferences:(NSNotification *)aNotification { id prefs = [[project projectManager] prefController]; - NSString *val; - ASSIGN(successSound, [prefs objectForKey:SuccessSound]); - ASSIGN(failureSound, [prefs objectForKey:FailureSound]); + ASSIGN(successSound, [prefs stringForKey:SuccessSound]); + ASSIGN(failureSound, [prefs stringForKey:FailureSound]); - ASSIGN(rootBuildDir, [prefs objectForKey:RootBuildDirectory]); - ASSIGN(buildTool, [prefs objectForKey:BuildTool]); + ASSIGN(rootBuildDir, [prefs stringForKey:RootBuildDirectory]); + ASSIGN(buildTool, [prefs stringForKey:BuildTool]); - val = [prefs objectForKey:PromptOnClean]; - promptOnClean = ([val isEqualToString:@"YES"]) ? YES : NO; + promptOnClean = [prefs boolForKey:PromptOnClean]; } - (void)updateTargetField @@ -382,14 +380,12 @@ - (void)startClean:(id)sender { - id prefs = [[project projectManager] prefController]; - if ([self stopMake:self] == YES) {// We've just stopped build process return; } - if ([[prefs objectForKey:PromptOnClean] isEqualToString:@"YES"]) + if (promptOnClean) { if (NSRunAlertPanel(@"Project Clean", @"Do you really want to clean project '%@'?", diff --git a/Framework/PCProjectBuilderPanel.m b/Framework/PCProjectBuilderPanel.m index 8927e0b..3b97c8e 100644 --- a/Framework/PCProjectBuilderPanel.m +++ b/Framework/PCProjectBuilderPanel.m @@ -118,7 +118,7 @@ PCProject *rootProject; id prefs = [projectManager prefController]; - if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"NO"]) + if (![prefs boolForKey:UseTearOffWindows]) { return; } diff --git a/Framework/PCProjectLauncher.m b/Framework/PCProjectLauncher.m index 104be44..fee949b 100644 --- a/Framework/PCProjectLauncher.m +++ b/Framework/PCProjectLauncher.m @@ -257,7 +257,7 @@ enum { // Debugger - gdbPath = [[[project projectManager] prefController] objectForKey:Debugger]; + gdbPath = [[[project projectManager] prefController] stringForKey:Debugger]; if (gdbPath == nil) { gdbPath = [NSString stringWithString:@"/usr/bin/gdb"]; diff --git a/Framework/PCProjectLauncherPanel.m b/Framework/PCProjectLauncherPanel.m index a1099da..439ac53 100644 --- a/Framework/PCProjectLauncherPanel.m +++ b/Framework/PCProjectLauncherPanel.m @@ -128,7 +128,7 @@ PCProject *rootProject; id prefs = [projectManager prefController]; - if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"NO"]) + if (![prefs boolForKey:UseTearOffWindows]) { return; } diff --git a/Framework/PCProjectLoadedFiles.m b/Framework/PCProjectLoadedFiles.m index 6bd03a7..fe76512 100644 --- a/Framework/PCProjectLoadedFiles.m +++ b/Framework/PCProjectLoadedFiles.m @@ -80,7 +80,7 @@ [filesScroll setDocumentView:filesList]; [filesScroll setHasHorizontalScroller:NO]; [filesScroll setHasVerticalScroller:YES]; - if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"NO"]) + if (![prefs boolForKey:UseTearOffWindows]) { [filesScroll setBorderType:NSBezelBorder]; } diff --git a/Framework/PCProjectLoadedFilesPanel.m b/Framework/PCProjectLoadedFilesPanel.m index 62165e9..5c0809b 100644 --- a/Framework/PCProjectLoadedFilesPanel.m +++ b/Framework/PCProjectLoadedFilesPanel.m @@ -128,7 +128,7 @@ PCProject *rootProject; id prefs = [projectManager prefController]; - if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"NO"]) + if (![prefs boolForKey:UseTearOffWindows]) { return; } diff --git a/Framework/PCProjectManager.m b/Framework/PCProjectManager.m index 57c91f7..5dc8068 100644 --- a/Framework/PCProjectManager.m +++ b/Framework/PCProjectManager.m @@ -217,7 +217,7 @@ NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; /* interval = [[[PCPrefController sharedPCPreferences] objectForKey:AutoSavePeriod] intValue];*/ - interval = [[prefController objectForKey:AutoSavePeriod] intValue]; + interval = [[prefController stringForKey:AutoSavePeriod] intValue]; if (interval > 0 && saveTimer == nil) { @@ -300,8 +300,7 @@ NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; - (NSPanel *)loadedFilesPanel { - if (!loadedFilesPanel - && [[prefController objectForKey:UseTearOffWindows] isEqualToString:@"YES"]) + if (!loadedFilesPanel && [prefController boolForKey:UseTearOffWindows]) { loadedFilesPanel = [[PCProjectLoadedFilesPanel alloc] initWithProjectManager:self]; @@ -312,7 +311,7 @@ NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; - (void)showProjectLoadedFiles:(id)sender { - if ([[prefController objectForKey:UseTearOffWindows] isEqualToString:@"YES"]) + if ([prefController boolForKey:UseTearOffWindows]) { [[self loadedFilesPanel] orderFront:nil]; } @@ -320,8 +319,7 @@ NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; - (NSPanel *)buildPanel { - if (!buildPanel - && [[prefController objectForKey:UseTearOffWindows] isEqualToString:@"YES"]) + if (!buildPanel && [prefController boolForKey:UseTearOffWindows]) { buildPanel = [[PCProjectBuilderPanel alloc] initWithProjectManager:self]; } @@ -331,8 +329,7 @@ NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; - (NSPanel *)launchPanel { - if (!launchPanel - && [[prefController objectForKey:UseTearOffWindows] isEqualToString:@"YES"]) + if (!launchPanel && [prefController boolForKey:UseTearOffWindows]) { launchPanel = [[PCProjectLauncherPanel alloc] initWithProjectManager:self]; } @@ -394,7 +391,7 @@ NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; // PCLogInfo(self, @"saveAllProjectsIfNeeded"); // If this method was called not by NSTimer, check if we should save projects - if ([[prefController objectForKey:SaveOnQuit] isEqualToString:@"YES"]) + if ([prefController boolForKey:SaveOnQuit]) { [self saveAllProjects]; } @@ -978,7 +975,7 @@ NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; - (void)closeProject { - if ([[prefController objectForKey:SaveOnQuit] isEqualToString:@"YES"]) + if ([prefController boolForKey:SaveOnQuit]) { [activeProject save]; } @@ -996,7 +993,7 @@ NSString *PCActiveProjectDidChangeNotification = @"PCActiveProjectDidChange"; while ([loadedProjects count] > 0) { project = [enumerator nextObject]; - if ([[prefController objectForKey:SaveOnQuit] isEqualToString:@"YES"]) + if ([prefController boolForKey:SaveOnQuit]) { [project save]; } diff --git a/Framework/PCProjectWindow.m b/Framework/PCProjectWindow.m index f128bce..d4f33c8 100644 --- a/Framework/PCProjectWindow.m +++ b/Framework/PCProjectWindow.m @@ -84,7 +84,7 @@ [loadedFilesButton setToolTip:@"Loaded Files"]; [loadedFilesButton setImage:IMAGE(@"Files")]; - if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"NO"]) + if (![prefs boolForKey:UseTearOffWindows]) { [loadedFilesButton setEnabled:NO]; } @@ -133,7 +133,7 @@ /* * LoadedFiles */ - if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"NO"]) + if (![prefs boolForKey:UseTearOffWindows]) { [self showProjectLoadedFiles:self]; } @@ -313,7 +313,7 @@ NSLog(@"ProjectWindow showProjectBuild: componentView RC:%i", [view retainCount]); - if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"YES"]) + if ([prefs boolForKey:UseTearOffWindows]) { if ([customView contentView] == view) { @@ -343,7 +343,7 @@ view = [[project projectLauncher] componentView]; launchPanel = [[project projectManager] launchPanel]; - if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"YES"]) + if ([prefs boolForKey:UseTearOffWindows]) { if ([customView contentView] == view) { @@ -373,7 +373,7 @@ // PCLogInfo(self, @"showProjectLoadedFiles"); - if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"YES"]) + if ([prefs boolForKey:UseTearOffWindows]) { [componentView setBorderType:NSNoBorder]; [componentView removeFromSuperview]; @@ -555,7 +555,7 @@ return; }*/ - if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"YES"]) + if ([prefs boolForKey:UseTearOffWindows]) { // Project Build if ([[[project projectBuilder] componentView] window] == projectWindow) diff --git a/Headers/Protocols/Preferences.h b/Headers/Protocols/Preferences.h index ac08bcd..3d427bb 100644 --- a/Headers/Protocols/Preferences.h +++ b/Headers/Protocols/Preferences.h @@ -32,15 +32,37 @@ @protocol PCPreferences -- (id)objectForKey:(NSString *)key; -- (void)setObject:(id)anObject forKey:(NSString *)aKey notify:(BOOL)notify; +- (NSString *)stringForKey:(NSString *)key; +- (NSString *)stringForKey:(NSString *)key + defaultValue:(NSString *)defaultValue; + +- (BOOL)boolForKey:(NSString *)key; +- (BOOL)boolForKey:(NSString *)key + defaultValue:(BOOL)defaultValue; + +- (float)floatForKey:(NSString *)key; +- (float)floatForKey:(NSString *)key + defaultValue:(float)defaultValue; + +- (void)setString:(NSString *)stringValue + forKey:(NSString *)aKey + notify:(BOOL)notify; +- (void)setBool:(BOOL)boolValue + forKey:(NSString *)aKey + notify:(BOOL)notify; +- (void)setFloat:(float)floatValue + forKey:(NSString *)aKey + notify:(BOOL)notify; + +//- (id)objectForKey:(NSString *)key; +//- (void)setObject:(id)anObject forKey:(NSString *)aKey notify:(BOOL)notify; @end @protocol PCPrefsSection - (id)initWithPrefController:(id )aPrefs; -- (void)setDefaults; +//- (void)setDefaults; - (void)readPreferences; - (NSView *)view; diff --git a/Modules/Preferences/Build/PCBuildPrefs.m b/Modules/Preferences/Build/PCBuildPrefs.m index fc97f90..61efc16 100644 --- a/Modules/Preferences/Build/PCBuildPrefs.m +++ b/Modules/Preferences/Build/PCBuildPrefs.m @@ -76,42 +76,29 @@ } // Protocol -- (void)setDefaults -{ - [prefs setObject:@"" forKey:SuccessSound notify:NO]; - [prefs setObject:@"" forKey:FailureSound notify:NO]; - [prefs setObject:@"" forKey:RootBuildDirectory notify:NO]; - [prefs setObject:PCDefaultBuildTool forKey:BuildTool notify:NO]; - [prefs setObject:@"YES" forKey:DeleteCacheWhenQuitting notify:NO]; - [prefs setObject:@"YES" forKey:PromptOnClean notify:NO]; -} - - (void)readPreferences { NSString *val; + BOOL bVal; int state; - if (!(val = [prefs objectForKey:SuccessSound])) - val = @""; + val = [prefs stringForKey:SuccessSound defaultValue:@""]; [successField setStringValue:val]; - if (!(val = [prefs objectForKey:FailureSound])) - val = @""; + val = [prefs stringForKey:FailureSound defaultValue:@""]; [failureField setStringValue:val]; - if (!(val = [prefs objectForKey:RootBuildDirectory])) - val = @""; + val = [prefs stringForKey:RootBuildDirectory defaultValue:@""]; [rootBuildDirField setStringValue:val]; - if (!(val = [prefs objectForKey:BuildTool])) - val = PCDefaultBuildTool; + val = [prefs stringForKey:BuildTool defaultValue:PCDefaultBuildTool]; [buildToolField setStringValue:val]; - val = [prefs objectForKey:DeleteCacheWhenQuitting]; - state = [val isEqualToString:@"YES"] ? NSOnState : NSOffState; + bVal = [prefs boolForKey:DeleteCacheWhenQuitting defaultValue:YES]; + state = bVal ? NSOnState : NSOffState; [deleteCache setState:state]; - val = [prefs objectForKey:PromptOnClean]; - state = [val isEqualToString:@"YES"] ? NSOnState : NSOffState; + bVal = [prefs boolForKey:PromptOnClean defaultValue:YES]; + state = bVal ? NSOnState : NSOffState; [promptOnClean setState:state]; } @@ -153,7 +140,7 @@ if (path) { [successField setStringValue:path]; - [prefs setObject:path forKey:SuccessSound notify:YES]; + [prefs setString:path forKey:SuccessSound notify:YES]; } [[buildingView window] makeFirstResponder:successField]; @@ -183,7 +170,7 @@ if (path) { [failureField setStringValue:path]; - [prefs setObject:path forKey:FailureSound notify:YES]; + [prefs setString:path forKey:FailureSound notify:YES]; } [[buildingView window] makeFirstResponder:failureField]; @@ -212,7 +199,7 @@ if (path) { [rootBuildDirField setStringValue:path]; - [prefs setObject:path forKey:RootBuildDirectory notify:YES]; + [prefs setString:path forKey:RootBuildDirectory notify:YES]; } [[buildingView window] makeFirstResponder:rootBuildDirField]; @@ -241,7 +228,7 @@ if (path) { [buildToolField setStringValue:path]; - [prefs setObject:path forKey:BuildTool notify:YES]; + [prefs setString:path forKey:BuildTool notify:YES]; } [[buildingView window] makeFirstResponder:buildToolField]; @@ -249,7 +236,7 @@ - (void)setDeleteCache:(id)sender { - NSString *state; + BOOL state; if (deleteCache == nil) {// HACK!!! need to be fixed in GNUstep @@ -257,13 +244,13 @@ return; } - state = ([sender state] == NSOffState) ? @"NO" : @"YES"; - [prefs setObject:state forKey:DeleteCacheWhenQuitting notify:YES]; + state = ([sender state] == NSOffState) ? NO : YES; + [prefs setBool:state forKey:DeleteCacheWhenQuitting notify:YES]; } - (void)setPromptOnClean:(id)sender { - NSString *state; + BOOL state; if (promptOnClean == nil) {// HACK!!! need to be fixed in GNUstep @@ -271,9 +258,8 @@ return; } - state = ([sender state] == NSOffState) ? @"NO" : @"YES"; - NSLog(@"Set PromptOnClean to %@", state); - [prefs setObject:state forKey:PromptOnClean notify:YES]; + state = ([sender state] == NSOffState) ? NO : YES; + [prefs setBool:state forKey:PromptOnClean notify:YES]; } @end diff --git a/Modules/Preferences/EditorFSC/PCEditorFSCPrefs.h b/Modules/Preferences/EditorFSC/PCEditorFSCPrefs.h index ba23273..ae7488d 100644 --- a/Modules/Preferences/EditorFSC/PCEditorFSCPrefs.h +++ b/Modules/Preferences/EditorFSC/PCEditorFSCPrefs.h @@ -56,6 +56,9 @@ IBOutlet NSColorWell *foregroundColorWell; IBOutlet NSColorWell *backgroundColorWell; IBOutlet NSColorWell *selectionColorWell; + + NSFont *currentPlainFont; + NSFont *currentRichFont; } - (void)setEditorPlainTextFont:(id)sender; diff --git a/Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m b/Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m index b7ab484..3623bf9 100644 --- a/Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m +++ b/Modules/Preferences/EditorFSC/PCEditorFSCPrefs.m @@ -28,6 +28,30 @@ #import "PCEditorFSCPrefs.h" +// ---------------------------------------------------------------------------- +// --- PCEditorFSCPrefsFontButton created to forward changeFont: message +// --- to PCEditorFSCPrefs class +// ---------------------------------------------------------------------------- + +@interface PCEditorFSCPrefsFontButton : NSButton +{ +} +@end +@implementation PCEditorFSCPrefsFontButton + +- (void)changeFont:(id)sender +{ + [[_cell target] changeFont:sender]; +} + +- (BOOL)resignFirstResponder +{ + [[NSFontPanel sharedFontPanel] close]; + return YES; +} + +@end + @implementation PCEditorFSCPrefs // ---------------------------------------------------------------------------- @@ -44,6 +68,8 @@ } prefs = aPrefs; + currentPlainFont = nil; + currentRichFont = nil; RETAIN(editorFSCView); @@ -65,56 +91,97 @@ - (void)awakeFromNib { - [plainTextFontButton setRefusesFirstResponder:YES]; - [plainTextFontField setDelegate:self]; - [richTextFontButton setRefusesFirstResponder:YES]; + [plainTextFontButton setTarget:self]; + [plainTextFontField setAllowsEditingTextAttributes:YES]; + + [richTextFontButton setTarget:self]; + [richTextFontField setAllowsEditingTextAttributes:YES]; } -// Protocol -- (void)setDefaults +// ---------------------------------------------------------------------------- +// --- Utility methods +// ---------------------------------------------------------------------------- + +- (void)pickFont:(NSFont *)currentFont { - [prefs setObject:@"30" forKey:EditorLines notify:NO]; - [prefs setObject:@"80" forKey:EditorColumns notify:NO]; + NSFontManager *fontManager = [NSFontManager sharedFontManager]; + + [fontManager setSelectedFont:currentPlainFont isMultiple:NO]; + [fontManager orderFrontFontPanel:self]; } +- (void)changeFont:(id)sender +{ + NSButton *button = (NSButton *)[[editorFSCView window] firstResponder]; + int buttonTag; + NSFont *font; + NSString *fontString; + + if (![button isKindOfClass:[NSButton class]]) + { + return; + } + + font = [sender convertFont:currentPlainFont]; + fontString = [NSString stringWithFormat:@"%@ %0.1f", + [font fontName], [font pointSize]]; + + buttonTag = [button tag]; + if (buttonTag == 0) // plain text font button + { + [plainTextFontField setStringValue:fontString]; + [plainTextFontField setFont:font]; + [prefs setString:[font fontName] forKey:EditorPlainTextFont notify:YES]; + [prefs setFloat:[font pointSize] + forKey:EditorPlainTextFontSize + notify:YES]; + } + else if (buttonTag == 1) // rich text font button + { + [richTextFontField setStringValue:fontString]; + [richTextFontField setFont:font]; + [prefs setString:[font fontName] forKey:EditorRichTextFont notify:YES]; + [prefs setFloat:[font pointSize] + forKey:EditorRichTextFontSize + notify:YES]; + } +} + +// ---------------------------------------------------------------------------- +// --- Protocol +// ---------------------------------------------------------------------------- - (void)readPreferences { + NSString *fontName; + float fontSize; + NSFont *plainFont = [NSFont userFixedPitchFontOfSize:0.0]; + NSFont *richFont = [NSFont systemFontOfSize:0.0]; NSString *val; - NSNumber *fval; - NSFont *font; // Plain text font - font = [NSFont userFixedPitchFontOfSize:0.0]; - if (!(val = [prefs objectForKey:EditorPlainTextFont])) - { - val = [font fontName]; - } - if (!(val = [prefs objectForKey:EditorPlainTextFontSize])) - { - fval = [NSNumber numberWithFloat:[font pointSize]]; - } - [plainTextFontField setStringValue: - [NSString stringWithFormat:@"%@ %0.1f", val, [fval floatValue]]]; + fontName = [prefs stringForKey:EditorPlainTextFont + defaultValue:[plainFont fontName]]; + fontSize = [prefs floatForKey:EditorPlainTextFontSize + defaultValue:[plainFont pointSize]]; + currentPlainFont = [NSFont fontWithName:fontName size:fontSize]; + [plainTextFontField setStringValue:[NSString stringWithFormat:@"%@ %0.1f", + [currentPlainFont fontName], [currentPlainFont pointSize]]]; + [plainTextFontField setFont:currentPlainFont]; -/* // Rich text font - font = [NSFont systemFontOfSize:0.0]; - if (!(val = [prefs objectForKey:EditorRichTextFont])) - { - val = [font fontName]; - } - if (!(fval = [prefs objectForKey:EditorRichTextFontSize])) - { - fval = [font pointSize]; - } - [richTextFontField setStringValue: - [NSString stringWithFormat:@"%@ %0.1f", val, fval];*/ + // Rich text font + fontName = [prefs stringForKey:EditorRichTextFont + defaultValue:[richFont fontName]]; + fontSize = [prefs floatForKey:EditorRichTextFontSize + defaultValue:[richFont pointSize]]; + currentRichFont = [NSFont fontWithName:fontName size:fontSize]; + [richTextFontField setStringValue:[NSString stringWithFormat:@"%@ %0.1f", + [currentRichFont fontName], [currentRichFont pointSize]]]; + [richTextFontField setFont:currentRichFont]; // Editor window size - if (!(val = [prefs objectForKey:EditorLines])) - val = @"30"; + val = [prefs stringForKey:EditorLines defaultValue:@"30"]; [editorLinesField setStringValue:val]; - if (!(val = [prefs objectForKey:EditorColumns])) - val = @"80"; + val = [prefs stringForKey:EditorColumns defaultValue:@"80"]; [editorColumnsField setStringValue:val]; } @@ -123,29 +190,26 @@ return editorFSCView; } -// Actions +// ---------------------------------------------------------------------------- +// --- Actions +// ---------------------------------------------------------------------------- + - (void)setEditorPlainTextFont:(id)sender { - NSFontManager *fm = [NSFontManager sharedFontManager]; - NSFont *currentFont; - - [[editorFSCView window] makeFirstResponder:plainTextFontField]; - currentFont = [NSFont - fontWithName:[prefs objectForKey:EditorPlainTextFont] - size:[[prefs objectForKey:EditorPlainTextFontSize] floatValue]]; - - [fm setSelectedFont:currentFont isMultiple:NO]; - [fm orderFrontFontPanel:self]; + [[editorFSCView window] makeFirstResponder:plainTextFontButton]; + [self pickFont:currentPlainFont]; } - (void)setEditorRichTextFont:(id)sender { + [[editorFSCView window] makeFirstResponder:richTextFontButton]; + [self pickFont:currentRichFont]; } - (void)setEditorSize:(id)sender { - NSString *val = nil; - NSString *key = nil; + NSString *val; + NSString *key; if (sender == editorLinesField) { @@ -158,20 +222,12 @@ val = [editorColumnsField stringValue]; } - [prefs setObject:val forKey:key notify:YES]; + [prefs setString:val forKey:key notify:YES]; } - (void)setEditorColor:(id)sender { } --(void)changeFont:(id)sender -{ - NSLog(@"%@: Font: '%@ %0.1f'", [sender className], - [[NSFont userFixedPitchFontOfSize:0.0] fontName], - [[NSFont userFixedPitchFontOfSize:0.0] pointSize]); - -} - @end diff --git a/Modules/Preferences/EditorFSC/Resources/EditorFSCPrefs.gorm/data.classes b/Modules/Preferences/EditorFSC/Resources/EditorFSCPrefs.gorm/data.classes index ca44951..3b9e39a 100644 --- a/Modules/Preferences/EditorFSC/Resources/EditorFSCPrefs.gorm/data.classes +++ b/Modules/Preferences/EditorFSC/Resources/EditorFSCPrefs.gorm/data.classes @@ -21,4 +21,18 @@ ); Super = NSObject; }; + PCEditorFSCPrefsFontButton = { + Actions = ( + ); + Outlets = ( + ); + Super = NSButton; + }; + PCEditorFSCPrefsView = { + Actions = ( + ); + Outlets = ( + ); + Super = NSBox; + }; } \ No newline at end of file diff --git a/Modules/Preferences/EditorFSC/Resources/EditorFSCPrefs.gorm/objects.gorm b/Modules/Preferences/EditorFSC/Resources/EditorFSCPrefs.gorm/objects.gorm index 51b5565d33360a6ed7f55cb13ac6e45a64a731f1..932c474e2e0c788c5ad62120922b34a97144bf70 100644 GIT binary patch delta 1415 zcmb7^Yj6`)6vubdNn>VhJ8d2|$!7Cts4O$;SwO^&U!*0Kacr20U;N-WrKV%XkYHS_ zfRa`etG2p$v4W^=?TeSAPB+qnA1q@Kw}!a**CyySSND+Z-fcdxNy4SWGbB4swlah4oI;30q0GDSvAD+1hO*1+~s4XV)XSlNZ+ zUvInDbW;~}V^1FOJ`${~x8Khk+6@noSfxxZwwEvKF>9gs{~U+uA#0pXjtBqK!$YPQ zjMD6++Uw+#?Cw z>?!VIKX+Mn%bK*F$hNn(CFmYf^qbtw32UIqA2GCeK=_(rr-SSs1zwW_T9X%fWu0 zg>D1P@~oU<73Z)C51aWmIKbC2^kz6njwk`~5JrW>dA5UFQ|U@LTs+Gq>=9f7Piua1 zNx+?(rUwmp#`M!Xoi^ZEgb|uI;5mdTI%2@{2xD~0fFlU~bj*Mk5GaEe5k?ujgfPqC zWrRsOZ@?=E!wgpVK0N%5e_kU17Tl|(VIx~tk_!!`y zSj@W!2bl97!VGiXN0^{91{^~$>4X6vAdEBkP*VhFOS~nyF1ArmC3Jj^q!VrUeqhgy zKnJPSgpafUxhir3y(&~Eo#J{DzCyhr6p_B>dKkVz-H-ZPt_$!T>Z2I{J=b|Sjry;UQuc!u zB>u49HckiONA#`?FP45XgLoW+@H1*Xe4+FUYKnRR^=LTYI)i!^r&xerktT8FEUp|6 d2P40s9>$fk@HuVgqaK>8Dnax z2rVF10qbp7E2wQ~OKD5`IENM}_y8Y>;tSvJ2R>1&sNbD&&xz>_%Keb}{rB$ffA^fp z?Y+4-V)`{>O)bc0%@Q6qoVc=ZEuL`Rhg(Z-uWaQ-l?pwJ#Sg4E+{(objmuin>13iV z8jn+OfdXx~S#zSpWmns9q0NbxyYABN=Y_J+gbldUeNDjwyaYDlX;+215xa|Y?65bh zo3Le3q_{n2p}MG<3LSWgVw-a@i-=iZ3kFIffvx9_@*uwiw&gvTpKZexg(=%Zd=Ya& zC(YwlAI36ArTq~RVV$rYZ*}N+rQNz<2fq}%OX{6F&+GRncSG0w9$oW$JeKzWQ|{4C zd-UK*_hPjtzefR5>~Xxuv&;5`^zW7aPhz#V%DXF9ZxshvAl9*3R>l&mldZ5D*Lihy zH*WVXujx<}t^P(j;ivu`3ZBlxGloZTHZ*3zv|c z1`|}GtCP}-`g>qX;&oxR1(=vLL}^XHFWiEL+XM%sE2Y)Kv@Bj4W>>%rjqFzs%6F8u z77k%eAfO(W88qT@n8ghNZ~Kwl5m$>_sfMG5t~eSR8)8j$$wVUBoKB|15i4wh9Wvor zuCq}#VZw6+Lu}N9=LyEykO?mk46|_)juG^+VH1uMObU3BV6T9e2&M(ROps->CcMJi zbv7vI1cjJ@R|)nBI7x6=z-t8i1-wo$E6h$291xK=2>RK832ze22zZNNK;*nla8N|v zA>bl%nqZ7^6W%45Vq+$}$8|d!5%j*{!@e@zmSI!yf#JvFWi{G|+{ZF(1U}+^yeL?q zeJpi9d_sC@FrS_3j^ig{MwbWVohV)tLcSh<# z_?C2Os6zWrY6jnvj)clr{2=ux{K);{BT_W~=P9y8SI6jPB8_!-#-gq8lMzr{`AbWu zlJWoC-3ZITS!#MDRHgmQ19VUs_=WUb=rZkB(vzg;Nc+nJxBW(Xn%16!--)vH=3LIc lc;3F)a&I(!lboO~8BeBa;SWk3q@r{1ClQnM7x&0d-#>hn<$wSH diff --git a/Modules/Preferences/Misc/PCMiscPrefs.m b/Modules/Preferences/Misc/PCMiscPrefs.m index 07beb06..ff1ea94 100644 --- a/Modules/Preferences/Misc/PCMiscPrefs.m +++ b/Modules/Preferences/Misc/PCMiscPrefs.m @@ -76,49 +76,36 @@ } // Protocol -- (void)setDefaults -{ - [prefs setObject:@"YES" forKey:PromptOnQuit notify:NO]; - [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]; -} - - (void)readPreferences { NSString *val; + BOOL bVal; int state; - val = [prefs objectForKey:PromptOnQuit]; - state = [val isEqualToString:@"YES"] ? NSOnState : NSOffState; + bVal = [prefs boolForKey:PromptOnQuit defaultValue:YES]; + state = bVal ? NSOnState : NSOffState; [promptWhenQuit setState:state]; - val = [prefs objectForKey:FullPathInFilePanels]; - state = [val isEqualToString:@"YES"] ? NSOnState : NSOffState; + bVal = [prefs boolForKey:FullPathInFilePanels defaultValue:YES]; + state = bVal ? NSOnState : NSOffState; [fullPathInFilePanels setState:state]; - val = [prefs objectForKey:RememberWindows]; - state = [val isEqualToString:@"YES"] ? NSOnState : NSOffState; + bVal = [prefs boolForKey:RememberWindows defaultValue:YES]; + state = bVal ? NSOnState : NSOffState; [rememberWindows setState:state]; - val = [prefs objectForKey:DisplayLog]; - state = [val isEqualToString:@"YES"] ? NSOnState : NSOffState; + bVal = [prefs boolForKey:DisplayLog defaultValue:NO]; + state = bVal ? NSOnState : NSOffState; [displayLog setState:state]; - val = [prefs objectForKey:UseTearOffWindows]; - state = [val isEqualToString:@"YES"] ? NSOnState : NSOffState; + bVal = [prefs boolForKey:UseTearOffWindows defaultValue:YES]; + state = bVal ? NSOnState : NSOffState; [useTearOffWindows setState:state]; - if (!(val = [prefs objectForKey:Debugger])) - val = PCDefaultDebugger; + val = [prefs stringForKey:Debugger defaultValue:PCDefaultDebugger]; [debuggerField setStringValue:val]; - if (!(val = [prefs objectForKey:Editor])) - val = @"ProjectCenter"; + val = [prefs stringForKey:Editor defaultValue:@"ProjectCenter"]; [editorField setStringValue:val]; } @@ -130,7 +117,7 @@ // Actions - (void)setPromptWhenQuit:(id)sender { - NSString *state; + BOOL state; if (promptWhenQuit == nil) {// HACK!!! need to be fixed in GNUstep @@ -138,13 +125,13 @@ return; } - state = ([sender state] == NSOffState) ? @"NO" : @"YES"; - [prefs setObject:state forKey:PromptOnQuit notify:YES]; + state = ([sender state] == NSOffState) ? NO : YES; + [prefs setBool:state forKey:PromptOnQuit notify:YES]; } - (void)setFullPathInFilePanels:(id)sender { - NSString *state; + BOOL state; if (fullPathInFilePanels == nil) {// HACK!!! need to be fixed in GNUstep @@ -152,13 +139,13 @@ return; } - state = ([sender state] == NSOffState) ? @"NO" : @"YES"; - [prefs setObject:state forKey:FullPathInFilePanels notify:YES]; + state = ([sender state] == NSOffState) ? NO : YES; + [prefs setBool:state forKey:FullPathInFilePanels notify:YES]; } - (void)setRememberWindows:(id)sender { - NSString *state; + BOOL state; if (rememberWindows == nil) { @@ -166,13 +153,13 @@ return; } - state = ([sender state] == NSOffState) ? @"NO" : @"YES"; - [prefs setObject:state forKey:RememberWindows notify:YES]; + state = ([sender state] == NSOffState) ? NO : YES; + [prefs setBool:state forKey:RememberWindows notify:YES]; } - (void)setDisplayLog:(id)sender { - NSString *state; + BOOL state; if (displayLog == nil) { @@ -180,13 +167,13 @@ return; } - state = ([sender state] == NSOffState) ? @"NO" : @"YES"; - [prefs setObject:state forKey:DisplayLog notify:YES]; + state = ([sender state] == NSOffState) ? NO : YES; + [prefs setBool:state forKey:DisplayLog notify:YES]; } - (void)setUseTearOffWindows:(id)sender { - NSString *state; + BOOL state; if (useTearOffWindows == nil) { @@ -194,8 +181,8 @@ return; } - state = ([sender state] == NSOffState) ? @"NO" : @"YES"; - [prefs setObject:state forKey:UseTearOffWindows notify:YES]; + state = ([sender state] == NSOffState) ? NO : YES; + [prefs setBool:state forKey:UseTearOffWindows notify:YES]; } - (void)setDebugger:(id)sender @@ -251,7 +238,7 @@ // Set [debuggerField setStringValue:path]; - [prefs setObject:path forKey:Debugger notify:YES]; + [prefs setString:path forKey:Debugger notify:YES]; } - (void)setEditor:(id)sender @@ -278,9 +265,6 @@ path = [files objectAtIndex:0]; } -// [separateEditor setEnabled:YES]; -// [self setEditorSizeEnabled:YES]; - [[miscView window] makeFirstResponder:editorField]; if (!path) { @@ -309,8 +293,6 @@ @"Close", nil, nil, path); path = @""; } -// [separateEditor setEnabled:NO]; -// [self setEditorSizeEnabled:NO]; } if ([path isEqualToString:@""] || !path) @@ -320,7 +302,7 @@ // Set [editorField setStringValue:path]; - [prefs setObject:path forKey:Editor notify:YES]; + [prefs setString:path forKey:Editor notify:YES]; } @end diff --git a/Modules/Preferences/Saving/PCSavingPrefs.m b/Modules/Preferences/Saving/PCSavingPrefs.m index 084da77..c5b49a5 100644 --- a/Modules/Preferences/Saving/PCSavingPrefs.m +++ b/Modules/Preferences/Saving/PCSavingPrefs.m @@ -56,32 +56,6 @@ [keepBackup setRefusesFirstResponder:YES]; } -- (void)setDefaults -{ - [prefs setObject:@"YES" forKey:SaveOnQuit notify:NO]; - [prefs setObject:@"YES" forKey:KeepBackup notify:NO]; - [prefs setObject:@"120" forKey:AutoSavePeriod notify:NO]; -} - -- (void)readPreferences -{ - NSString *val; - int state; - - if (!(val = [prefs objectForKey:AutoSavePeriod])) - val = @"120"; - [autosaveField setStringValue:val]; - [autosaveSlider setFloatValue:[val floatValue]]; - - val = [prefs objectForKey:SaveOnQuit]; - state = [val isEqualToString:@"YES"] ? NSOnState : NSOffState; - [saveOnQuit setState:state]; - - val = [prefs objectForKey:KeepBackup]; - state = [val isEqualToString:@"YES"] ? NSOnState : NSOffState; - [keepBackup setState:state]; -} - - (void)dealloc { #ifdef DEBUG @@ -96,6 +70,25 @@ } // Protocol +- (void)readPreferences +{ + NSString *val; + BOOL bVal; + int state; + + val = [prefs stringForKey:AutoSavePeriod defaultValue:@"120"]; + [autosaveField setStringValue:val]; + [autosaveSlider setFloatValue:[val floatValue]]; + + bVal = [prefs boolForKey:SaveOnQuit defaultValue:YES]; + state = bVal ? NSOnState : NSOffState; + [saveOnQuit setState:state]; + + bVal = [prefs boolForKey:KeepBackup defaultValue:YES]; + state = bVal ? NSOnState : NSOffState; + [keepBackup setState:state]; +} + - (NSView *)view { return savingView; @@ -104,7 +97,7 @@ // Actions - (void)setSaveOnQuit:(id)sender { - NSString *state; + BOOL state; if (saveOnQuit == nil) {// HACK!!! need to be fixed in GNUstep @@ -112,13 +105,13 @@ return; } - state = ([sender state] == NSOffState) ? @"NO" : @"YES"; - [prefs setObject:state forKey:SaveOnQuit notify:YES]; + state = ([sender state] == NSOffState) ? NO : YES; + [prefs setBool:state forKey:SaveOnQuit notify:YES]; } - (void)setKeepBackup:(id)sender { - NSString *state; + BOOL state; if (keepBackup == nil) {// HACK!!! need to be fixed in GNUstep @@ -126,13 +119,13 @@ return; } - state = ([sender state] == NSOffState) ? @"NO" : @"YES"; - [prefs setObject:state forKey:KeepBackup notify:YES]; + state = ([sender state] == NSOffState) ? NO : YES; + [prefs setBool:state forKey:KeepBackup notify:YES]; } - (void)setSavePeriod:(id)sender { - NSString *periodString = nil; + NSString *periodString; if (sender == autosaveSlider) { @@ -140,7 +133,7 @@ } periodString = [autosaveField stringValue]; - [prefs setObject:periodString forKey:AutoSavePeriod notify:YES]; + [prefs setString:periodString forKey:AutoSavePeriod notify:YES]; // TODO: Check if this can be replaced with generic notification // posted by PCPrefsController @@ -149,7 +142,5 @@ object:periodString]; } - - @end diff --git a/PCAppController.m b/PCAppController.m index 7cbef12..e51d1ab 100644 --- a/PCAppController.m +++ b/PCAppController.m @@ -132,7 +132,7 @@ { // NSString *connectionName = [NSString stringWithFormat:@"ProjectCenter"]; - if ([[prefController objectForKey:DisplayLog] isEqualToString:@"YES"]) + if ([prefController boolForKey:DisplayLog]) { [logController showPanel]; } @@ -147,13 +147,9 @@ - (BOOL)applicationShouldTerminate:(id)sender { - NSString *promptOnQuit; - NSString *saveOnQuit; - BOOL quit = YES; + BOOL quit = YES; - promptOnQuit = [prefController objectForKey:PromptOnQuit]; - saveOnQuit = [prefController objectForKey:SaveOnQuit]; - if ([promptOnQuit isEqualToString:@"YES"]) + if ([prefController boolForKey:PromptOnQuit]) { if (NSRunAlertPanel(@"Quit", @"Do you really want to quit ProjectCenter?", @@ -165,7 +161,7 @@ } // Save projects unconditionally if preferences tells that - if ([saveOnQuit isEqualToString:@"YES"]) + if ([prefController boolForKey:SaveOnQuit]) { quit = [projectManager saveAllProjects]; } @@ -185,7 +181,6 @@ - (void)applicationWillTerminate:(NSNotification *)notification { - NSString *deleteCache; NSFileManager *fm; PCFileManager *pcfm; NSString *rootBuildDir; @@ -197,13 +192,12 @@ NSLog(@"--- Application WILL terminate"); #endif - deleteCache = [prefController objectForKey:DeleteCacheWhenQuitting]; - if ([deleteCache isEqualToString:@"YES"]) + if ([prefController boolForKey:DeleteCacheWhenQuitting]) { fm = [NSFileManager defaultManager]; pcfm = [PCFileManager defaultManager]; - rootBuildDir = [prefController objectForKey:RootBuildDirectory]; + rootBuildDir = [prefController stringForKey:RootBuildDirectory]; rootBuildDirList = [fm directoryContentsAtPath:rootBuildDir]; enumerator = [rootBuildDirList objectEnumerator]; diff --git a/PCPrefController.m b/PCPrefController.m index f29a231..99c63ed 100644 --- a/PCPrefController.m +++ b/PCPrefController.m @@ -62,21 +62,13 @@ static PCPrefController *_prefCtrllr = nil; if ([userDefaults objectForKey:@"Version"] == nil) { - PCLogInfo(self, @"setDefaultValues"); - - [self loadPrefsSections]; - // Clean preferences [NSUserDefaults resetStandardUserDefaults]; - [self setObject:@"0.5" forKey:@"Version" notify:NO]; - - // Make preferences modules load default values - [[sectionsDict allValues] - makeObjectsPerformSelector:@selector(setDefaults)]; - - [userDefaults synchronize]; + [self setString:@"0.5" forKey:@"Version" notify:NO]; } + [self loadPrefsSections]; + return self; } @@ -98,14 +90,107 @@ static PCPrefController *_prefCtrllr = nil; } // Accessory -- (id)objectForKey:(NSString *)key +- (NSString *)stringForKey:(NSString *)key { - return [userDefaults objectForKey:key]; + return [self stringForKey:key defaultValue:nil]; } -- (void)setObject:(id)anObject forKey:(NSString *)aKey notify:(BOOL)notify +- (NSString *)stringForKey:(NSString *)key + defaultValue:(NSString *)defaultValue { - [userDefaults setObject:anObject forKey:aKey]; + NSString *stringValue = [userDefaults objectForKey:key]; + + if (stringValue) + { + return stringValue; + } + else + { + [self setString:defaultValue forKey:key notify:NO]; + return defaultValue; + } +} + +- (BOOL)boolForKey:(NSString *)key +{ + return [self boolForKey:key defaultValue:-1]; +} + +- (BOOL)boolForKey:(NSString *)key + defaultValue:(BOOL)defaultValue +{ + NSString *stringValue = [userDefaults objectForKey:key]; + + if (stringValue) + { + return [stringValue boolValue]; + } + else + { + [self setBool:defaultValue forKey:key notify:NO]; + return defaultValue; + } +} + +- (float)floatForKey:(NSString *)key +{ + return [self floatForKey:key defaultValue:0.0]; +} + +- (float)floatForKey:(NSString *)key defaultValue:(float)defaultValue +{ + NSString *stringValue = [userDefaults objectForKey:key]; + + if (stringValue) + { + return [stringValue floatValue]; + } + else + { + [self setFloat:defaultValue forKey:key notify:NO]; + return defaultValue; + } +} + +- (void)setString:(NSString *)stringValue + forKey:(NSString *)aKey + notify:(BOOL)notify +{ + [userDefaults setObject:stringValue forKey:aKey]; + [userDefaults synchronize]; + + if (notify) + { + [[NSNotificationCenter defaultCenter] + postNotificationName:PCPreferencesDidChangeNotification + object:self]; + } +} + +- (void)setBool:(BOOL)boolValue + forKey:(NSString *)aKey + notify:(BOOL)notify +{ + NSString *stringValue = boolValue ? @"YES" : @"NO"; + + [userDefaults setObject:stringValue forKey:aKey]; + [userDefaults synchronize]; + + if (notify) + { + [[NSNotificationCenter defaultCenter] + postNotificationName:PCPreferencesDidChangeNotification + object:self]; + } +} + +- (void)setFloat:(float)floatValue + forKey:(NSString *)aKey + notify:(BOOL)notify +{ + NSString *stringValue = [NSString stringWithFormat:@"%0.1f", floatValue]; + + [userDefaults setObject:stringValue forKey:aKey]; [userDefaults synchronize]; if (notify) @@ -141,6 +226,8 @@ static PCPrefController *_prefCtrllr = nil; [section readPreferences]; [sectionsDict setObject:section forKey:sectionName]; } + + [userDefaults synchronize]; } - (void)showPanel:(id)sender @@ -183,4 +270,9 @@ static PCPrefController *_prefCtrllr = nil; // [sectionsView display]; } +- (void)changeFont:(id)sender +{ + NSLog(@"PCPrefController: changeFont"); +} + @end