Implemented more preference handling and cleaned up some ugly parts of the

code. Removed the loadedProjectsWindow feature, it just does not make any sense.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@11912 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Philippe C.D. Robert 2001-12-29 14:10:57 +00:00
parent f23771be80
commit b4b59ad657
8 changed files with 154 additions and 44 deletions

View file

@ -39,7 +39,6 @@
- (void)newProject:(id)sender;
- (void)saveProject:(id)sender;
- (void)saveProjectAs:(id)sender;
- (void)showLoadedProjects:(id)sender;
- (void)saveFiles:(id)sender;
- (void)revertToSaved:(id)sender;

View file

@ -72,11 +72,6 @@
[menuController saveProjectAs:sender];
}
- (void)showLoadedProjects:(id)sender
{
[menuController showLoadedProjects:sender];
}
- (void)saveFiles:(id)sender
{
[menuController saveFiles:sender];

View file

@ -29,6 +29,9 @@
#import <ProjectCenter/ProjectCenter.h>
#define REL_LIB_PC @"Library/ProjectCenter"
#define ABS_LIB_PC @"/usr/GNUstep/Local/Library/ProjectCenter"
@implementation PCAppController
//============================================================================
@ -43,10 +46,10 @@
NSString *_bundlePath;
if (prefix && ![prefix isEqualToString:@""]) {
_bundlePath = [prefix stringByAppendingPathComponent:@"Library/ProjectCenter"];
_bundlePath = [prefix stringByAppendingPathComponent:REL_LIB_PC];
}
else {
_bundlePath = [NSString stringWithString:@"/usr/GNUstep/Local/Library/ProjectCenter"];
_bundlePath = [NSString stringWithString:ABS_LIB_PC];
}
[defaults setObject:_bundlePath forKey:BundlePaths];
@ -59,14 +62,13 @@
[defaults setObject:[NSString stringWithFormat:@"%@/ProjectCenterBuildDir",NSTemporaryDirectory()] forKey:RootBuildDirectory];
/*
[defaults setBool:YES forKey:PromtOnClean];
[defaults setBool:YES forKey:PromtOnQuit];
[defaults setBool:YES forKey:AutoSave];
[defaults setBool:NO forKey:RemoveBackup];
[defaults setInteger:60 forKey:AutoSavePeriod];
[defaults setBool:NO forKey:DeleteCacheWhenQuitting];
*/
[defaults setObject:@"YES" forKey:SaveOnQuit];
[defaults setObject:@"YES" forKey:PromptOnClean];
[defaults setObject:@"YES" forKey:PromptOnQuit];
[defaults setObject:@"YES" forKey:AutoSave];
[defaults setObject:@"YES" forKey:KeepBackup];
[defaults setObject:@"120" forKey:AutoSavePeriod];
[defaults setObject:@"NO" forKey:DeleteCacheWhenQuitting];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
[[NSUserDefaults standardUserDefaults] synchronize];
@ -223,14 +225,23 @@
- (BOOL)applicationShouldTerminate:(id)sender
{
// This should be queried per project!
/*
if ([projectManager hasEditedDocuments]) {
if (NSRunAlertPanel(@"Unsaved projects!", @"Do you want to save them?", @"Yes", @"No", nil)) {
[projectManager saveAllProjects];
NSString *poq = [[NSUserDefaults standardUserDefaults] objectForKey:PromptOnQuit];
NSString *soq = [[NSUserDefaults standardUserDefaults] objectForKey:SaveOnQuit];
if( [poq isEqualToString:@"YES"] )
{
if (NSRunAlertPanel(@"Quit!",
@"Do you really want to quit?",
@"No", @"Yes", nil)) {
return NO;
}
}
*/
if ( [soq isEqualToString:@"YES"] ) {
[projectManager saveAllProjects];
}
[[NSNotificationCenter defaultCenter] postNotificationName:PCAppWillTerminateNotification object:nil];
return YES;
@ -243,6 +254,7 @@
if ([[[NSUserDefaults standardUserDefaults] stringForKey:DeleteCacheWhenQuitting] isEqualToString:@"YES"]) {
[[NSFileManager defaultManager] removeFileAtPath:[projectManager rootBuildPath] handler:nil];
}
[[NSUserDefaults standardUserDefaults] synchronize];
}

View file

@ -61,7 +61,6 @@
- (void)newProject:(id)sender;
- (void)saveProject:(id)sender;
- (void)saveProjectAs:(id)sender;
- (void)showLoadedProjects:(id)sender;
- (void)saveFiles:(id)sender;
- (void)revertToSaved:(id)sender;

View file

@ -155,11 +155,6 @@
[projectManager saveProjectAs:proj];
}
- (void)showLoadedProjects:(id)sender
{
[projectManager showLoadedProjects];
}
- (void)saveFiles:(id)sender
{
[projectManager saveFiles];

View file

@ -41,7 +41,8 @@
id autoSaveField;
id saveAutomatically;
id removeBackup;
id keepBackup;
id saveOnQuit;
id useExternalEditor;
id promptWhenQuit;
@ -66,8 +67,9 @@
- (void)setPromptOnClean:(id)sender;
- (void)setSaveAutomatically:(id)sender;
- (void)setRemoveBackup:(id)sender;
- (void)setKeepBackup:(id)sender;
- (void)setSavePeriod:(id)sender;
- (void)setSaveOnQuit:(id)sender;
- (void)setUseExternalEditor:(id)sender;

View file

@ -269,6 +269,16 @@
[prefSavingView addSubview:v];
RELEASE(v);
saveOnQuit=[[NSButton alloc] initWithFrame:NSMakeRect(24,52,124,15)];
[saveOnQuit setTitle:@"Save Projects Upon Quit"];
[saveOnQuit setButtonType:NSSwitchButton];
[saveOnQuit setBordered:NO];
[saveOnQuit setTarget:self];
[saveOnQuit setAction:@selector(setSaveOnQuit:)];
[saveOnQuit setContinuous:NO];
[v addSubview:saveOnQuit];
[saveOnQuit sizeToFit];
saveAutomatically=[[NSButton alloc] initWithFrame:NSMakeRect(24,32,124,15)];
[saveAutomatically setTitle:@"Save Project Automatically"];
[saveAutomatically setButtonType:NSSwitchButton];
@ -279,15 +289,15 @@
[v addSubview:saveAutomatically];
[saveAutomatically sizeToFit];
removeBackup = [[NSButton alloc] initWithFrame:NSMakeRect(24,12,124,15)];
[removeBackup setTitle:@"Remove Backup Project"];
[removeBackup setButtonType:NSSwitchButton];
[removeBackup setBordered:NO];
[removeBackup setTarget:self];
[removeBackup setAction:@selector(setRemoveBackup:)];
[removeBackup setContinuous:NO];
[v addSubview:removeBackup];
[removeBackup sizeToFit];
keepBackup = [[NSButton alloc] initWithFrame:NSMakeRect(24,12,124,15)];
[keepBackup setTitle:@"Keep Project Backup"];
[keepBackup setButtonType:NSSwitchButton];
[keepBackup setBordered:NO];
[keepBackup setTarget:self];
[keepBackup setAction:@selector(setKeepBackup:)];
[keepBackup setContinuous:NO];
[v addSubview:keepBackup];
[keepBackup sizeToFit];
v = [[NSBox alloc] init];
[v setTitle:@"Auto-Save"];
@ -347,8 +357,9 @@
RELEASE(useExternalEditor);
RELEASE(promptWhenQuit);
RELEASE(promptOnClean);
RELEASE(saveOnQuit);
RELEASE(saveAutomatically);
RELEASE(removeBackup);
RELEASE(keepBackup);
RELEASE(editorField);
RELEASE(debuggerField);
@ -396,6 +407,18 @@
[useExternalEditor setState:([[preferencesDict objectForKey:ExternalEditor] isEqualToString:@"YES"]) ? NSOnState : NSOffState];
[saveAutomatically setState:([[preferencesDict objectForKey:AutoSave] isEqualToString:@"YES"]) ? NSOnState : NSOffState];
[promptOnClean setState:([[preferencesDict objectForKey:PromptOnClean] isEqualToString:@"YES"]) ? NSOnState : NSOffState];
[keepBackup setState:([[preferencesDict objectForKey:KeepBackup] isEqualToString:@"YES"]) ? NSOnState : NSOffState];
[promptWhenQuit setState:([[preferencesDict objectForKey:PromptOnQuit] isEqualToString:@"YES"]) ? NSOnState : NSOffState];
[saveOnQuit setState:([[preferencesDict objectForKey:SaveOnQuit] isEqualToString:@"YES"]) ? NSOnState : NSOffState];
[autoSaveField setStringValue:(val=[preferencesDict objectForKey:AutoSavePeriod]) ? val : @"120"];
if (![prefWindow isVisible]) {
[prefWindow setFrameUsingName:@"Preferences"];
}
@ -424,7 +447,8 @@
- (void)setSuccessSound:(id)sender
{
NSString *path = [self selectFileWithTypes:[NSArray arrayWithObjects:@"snd",@"au",nil]];
NSArray *types = [NSArray arrayWithObjects:@"snd",@"au",nil];
NSString *path = [self selectFileWithTypes:types];
if (path) {
[successField setStringValue:path];
@ -448,18 +472,86 @@
- (void)setPromptOnClean:(id)sender
{
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
switch ([[sender selectedCell] state]) {
case 0:
[def setObject:@"NO" forKey:PromptOnClean];
break;
case 1:
[def setObject:@"YES" forKey:PromptOnClean];
break;
}
[def synchronize];
[preferencesDict setObject:[def objectForKey:PromptOnClean]
forKey:PromptOnClean];
}
- (void)setSaveAutomatically:(id)sender
{
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
switch ([[sender selectedCell] state]) {
case 0:
[def setObject:@"NO" forKey:AutoSave];
break;
case 1:
[def setObject:@"YES" forKey:AutoSave];
break;
}
[def synchronize];
[preferencesDict setObject:[def objectForKey:AutoSave] forKey:AutoSave];
}
- (void)setRemoveBackup:(id)sender
- (void)setKeepBackup:(id)sender
{
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
switch ([[sender selectedCell] state]) {
case 0:
[def setObject:@"NO" forKey:KeepBackup];
break;
case 1:
[def setObject:@"YES" forKey:KeepBackup];
break;
}
[def synchronize];
[preferencesDict setObject:[def objectForKey:KeepBackup]
forKey:KeepBackup];
}
- (void)setSavePeriod:(id)sender
{
NSString *periodString = [autoSaveField stringValue];
if (periodString == nil || [periodString isEqualToString:@""]) {
periodString = [NSString stringWithString:@"120"];
}
[[NSUserDefaults standardUserDefaults] setObject:periodString
forKey:AutoSavePeriod];
[preferencesDict setObject:periodString forKey:AutoSavePeriod];
}
- (void)setSaveOnQuit:(id)sender
{
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
switch ([[sender selectedCell] state]) {
case 0:
[def setObject:@"NO" forKey:SaveOnQuit];
break;
case 1:
[def setObject:@"YES" forKey:SaveOnQuit];
break;
}
[def synchronize];
[preferencesDict setObject:[def objectForKey:SaveOnQuit]
forKey:SaveOnQuit];
}
- (void)setUseExternalEditor:(id)sender
@ -475,6 +567,9 @@
break;
}
[def synchronize];
[preferencesDict setObject:[def objectForKey:ExternalEditor]
forKey:ExternalEditor];
}
- (void)setEditor:(id)sender
@ -519,6 +614,20 @@
- (void)promptWhenQuitting:(id)sender
{
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
switch ([[sender selectedCell] state]) {
case 0:
[def setObject:@"NO" forKey:PromptOnQuit];
break;
case 1:
[def setObject:@"YES" forKey:PromptOnQuit];
break;
}
[def synchronize];
[preferencesDict setObject:[def objectForKey:PromptOnQuit]
forKey:PromptOnQuit];
}
- (NSDictionary *)preferencesDict

View file

@ -99,7 +99,7 @@ void createMenu()
[project addItemWithTitle:@"Open" action:@selector(openProject:) keyEquivalent:@"o"];
[project addItemWithTitle:@"New" action:@selector(newProject:) keyEquivalent:@"n"];
[project addItemWithTitle:@"Save" action:@selector(saveProject:) keyEquivalent:@"s"];
[project addItemWithTitle:@"Save As" action:@selector(saveProjectAs:) keyEquivalent:@""];
[project addItemWithTitle:@"Save As" action:@selector(saveProjectAs:) keyEquivalent:@"S"];
[project addItemWithTitle:@"Subprojects" action:action keyEquivalent:@""];
[project addItemWithTitle:@"Close" action:@selector(closeProject:) keyEquivalent:@""];
@ -163,7 +163,6 @@ void createMenu()
tools = [[[NSMenu alloc] init] autorelease];
[menu setSubmenu:tools forItem:[menu itemWithTitle:@"Tools"]];
[tools addItemWithTitle:@"Loaded Projects..." action:@selector(showLoadedProjects:) keyEquivalent:@""];
[tools addItemWithTitle:@"Build Panel" action:@selector(showBuildPanel:) keyEquivalent:@""];
[tools addItemWithTitle:@"Find Panel" action:@selector(showFindPanel:) keyEquivalent:@"F"];
[tools addItemWithTitle:@"Inspector Panel" action:@selector(showInspector:) keyEquivalent:@""];