* 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
This commit is contained in:
Sergii Stoian 2009-03-15 00:12:00 +00:00
parent 8300389ecf
commit e6ce23e63b
24 changed files with 381 additions and 252 deletions

View file

@ -145,7 +145,7 @@ NSString *PCEditorDidResignActiveNotification =
{
id <PCPreferences> prefs = [_projectManager prefController];
ASSIGN(editorName, [prefs objectForKey:Editor]);
ASSIGN(editorName, [prefs stringForKey:Editor]);
}
// ===========================================================================

View file

@ -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];
}
}

View file

@ -64,7 +64,7 @@ static PCMakefileFactory *_factory = nil;
- (void)createMakefileForProject:(PCProject *)project
{
id <PCPreferences> 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];

View file

@ -125,13 +125,9 @@ NSString
- (void)loadPreferences:(NSNotification *)aNotification
{
id <PCPreferences> 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];
}
// ============================================================================

View file

@ -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"])
{

View file

@ -246,16 +246,14 @@
- (void)loadPreferences:(NSNotification *)aNotification
{
id <PCPreferences> 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 <PCPreferences> 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 '%@'?",

View file

@ -118,7 +118,7 @@
PCProject *rootProject;
id <PCPreferences> prefs = [projectManager prefController];
if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"NO"])
if (![prefs boolForKey:UseTearOffWindows])
{
return;
}

View file

@ -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"];

View file

@ -128,7 +128,7 @@
PCProject *rootProject;
id <PCPreferences> prefs = [projectManager prefController];
if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"NO"])
if (![prefs boolForKey:UseTearOffWindows])
{
return;
}

View file

@ -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];
}

View file

@ -128,7 +128,7 @@
PCProject *rootProject;
id <PCPreferences> prefs = [projectManager prefController];
if ([[prefs objectForKey:UseTearOffWindows] isEqualToString:@"NO"])
if (![prefs boolForKey:UseTearOffWindows])
{
return;
}

View file

@ -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];
}

View file

@ -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)

View file

@ -32,15 +32,37 @@
@protocol PCPreferences <NSObject>
- (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 <NSObject>
- (id)initWithPrefController:(id <PCPreferences>)aPrefs;
- (void)setDefaults;
//- (void)setDefaults;
- (void)readPreferences;
- (NSView *)view;

View file

@ -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

View file

@ -56,6 +56,9 @@
IBOutlet NSColorWell *foregroundColorWell;
IBOutlet NSColorWell *backgroundColorWell;
IBOutlet NSColorWell *selectionColorWell;
NSFont *currentPlainFont;
NSFont *currentRichFont;
}
- (void)setEditorPlainTextFont:(id)sender;

View file

@ -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

View file

@ -21,4 +21,18 @@
);
Super = NSObject;
};
PCEditorFSCPrefsFontButton = {
Actions = (
);
Outlets = (
);
Super = NSButton;
};
PCEditorFSCPrefsView = {
Actions = (
);
Outlets = (
);
Super = NSBox;
};
}

View file

@ -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

View file

@ -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

View file

@ -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];

View file

@ -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