Basic preferences handling

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@7533 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Robert Slover 2000-09-17 14:40:56 +00:00
parent c4b41a26b9
commit 299c0b49e7
5 changed files with 235 additions and 167 deletions

View file

@ -32,7 +32,6 @@
#define IMAGE(X) [[[NSImage alloc] initWithContentsOfFile:[[NSBundle mainBundle] pathForImageResource:(X)]] autorelease]
#endif
#define BUILD_KEY @"BuildKey"
#define BUILD_ARGS_KEY @"BuildArgsKey"
#define BUILD_HOST_KEY @"BuildHostKey"
@ -60,13 +59,6 @@
typedef int PCProjInfoBits;
typedef enum {
defaultTarget = 0,
debug,
profile,
install
} btarget;
//===========================================================================================
// ==== Project keys
//===========================================================================================
@ -108,7 +100,6 @@ static NSString * const PCLibraryVar = @"LIBRARY_VAR";
id buildTargetPanel;
id buildTargetHostField;
id buildTargetArgsField;
id buildTargetPopup;
id buildStatusField;
id targetField;
@ -122,7 +113,6 @@ static NSString * const PCLibraryVar = @"LIBRARY_VAR";
@private
BOOL _needsReleasing;
btarget _target;
}
//===========================================================================================
@ -224,7 +214,6 @@ static NSString * const PCLibraryVar = @"LIBRARY_VAR";
- (id)updatedFilesView;
- (void)showBuildTargetPanel:(id)sender;
- (void)setTarget:(id)sender;
- (void)setHost:(id)sender;
- (void)setArguments:(id)sender;

View file

@ -171,7 +171,10 @@
[button setImage:IMAGE(@"ProjectCentre_find.tiff")];
[button setButtonType:NSMomentaryPushButton];
// Status
/*
* Status
*/
textField = [[NSTextField alloc] initWithFrame:NSMakeRect(152,296,48,15)];
[textField setAlignment: NSRightTextAlignment];
[textField setBordered: NO];
@ -183,7 +186,10 @@
NSViewMinYMargin)];
[_c_view addSubview:[textField autorelease]];
// Status message
/*
* Status message
*/
buildStatusField = [[NSTextField alloc] initWithFrame:NSMakeRect(204,296,104,15)];
[buildStatusField setAlignment: NSLeftTextAlignment];
[buildStatusField setBordered: NO];
@ -196,7 +202,10 @@
NSViewMinYMargin)];
[_c_view addSubview:[buildStatusField autorelease]];
// Target
/*
* Target
*/
textField = [[NSTextField alloc] initWithFrame:NSMakeRect(152,272,48,15)];
[textField setAlignment: NSRightTextAlignment];
[textField setBordered: NO];
@ -208,7 +217,10 @@
NSViewMinYMargin)];
[_c_view addSubview:[textField autorelease]];
// Target message
/*
* Target message
*/
targetField = [[NSTextField alloc] initWithFrame:NSMakeRect(204,272,104,15)];
[targetField setAlignment: NSLeftTextAlignment];
[targetField setBordered: NO];
@ -222,39 +234,19 @@
[_c_view addSubview:[targetField autorelease]];
/*
* Build Panel
* Build Options Panel
*
*/
_w_frame = NSMakeRect(100,100,272,104);
_w_frame = NSMakeRect(100,100,272,80);
buildTargetPanel = [[NSWindow alloc] initWithContentRect:_w_frame styleMask:style backing:NSBackingStoreBuffered defer:NO];
[buildTargetPanel setDelegate:self];
[buildTargetPanel setReleasedWhenClosed:NO];
[buildTargetPanel setTitle:@"Build Options"];
_c_view = [buildTargetPanel contentView];
buildTargetPopup = [[NSPopUpButton alloc] initWithFrame:NSMakeRect(72,24,184,20)];
[buildTargetPopup addItemWithTitle:@"Default"];
[buildTargetPopup addItemWithTitle:@"Debug"];
[buildTargetPopup addItemWithTitle:@"Profile"];
[buildTargetPopup addItemWithTitle:@"Install"];
[buildTargetPopup autorelease];
[buildTargetPopup setTarget:self];
[buildTargetPopup setAction:@selector(setTarget:)];
[_c_view addSubview:buildTargetPopup];
// Target (popup)
textField = [[NSTextField alloc] initWithFrame:NSMakeRect(16,24,56,21)];
[textField setAlignment: NSRightTextAlignment];
[textField setBordered: NO];
[textField setEditable: NO];
[textField setBezeled: NO];
[textField setDrawsBackground: NO];
[textField setStringValue:@"Target:"];
[_c_view addSubview:[textField autorelease]];
// Host
textField = [[NSTextField alloc] initWithFrame:NSMakeRect(16,48,56,21)];
textField = [[NSTextField alloc] initWithFrame:NSMakeRect(16,24,56,21)];
[textField setAlignment: NSRightTextAlignment];
[textField setBordered: NO];
[textField setEditable: NO];
@ -264,7 +256,7 @@
[_c_view addSubview:[textField autorelease]];
// Host message
buildTargetHostField = [[NSTextField alloc] initWithFrame:NSMakeRect(72,48,184,21)];
buildTargetHostField = [[NSTextField alloc] initWithFrame:NSMakeRect(72,24,184,21)];
[buildTargetHostField setAlignment: NSLeftTextAlignment];
[buildTargetHostField setBordered: NO];
[buildTargetHostField setEditable: YES];
@ -277,7 +269,7 @@
[_c_view addSubview:[buildTargetHostField autorelease]];
// Args
textField = [[NSTextField alloc] initWithFrame:NSMakeRect(12,68,60,21)];
textField = [[NSTextField alloc] initWithFrame:NSMakeRect(12,44,60,21)];
[textField setAlignment: NSRightTextAlignment];
[textField setBordered: NO];
[textField setEditable: NO];
@ -287,7 +279,7 @@
[_c_view addSubview:[textField autorelease]];
// Args message
buildTargetArgsField = [[NSTextField alloc] initWithFrame:NSMakeRect(72,68,184,21)];
buildTargetArgsField = [[NSTextField alloc] initWithFrame:NSMakeRect(72,44,184,21)];
[buildTargetArgsField setAlignment: NSLeftTextAlignment];
[buildTargetArgsField setBordered: NO];
[buildTargetArgsField setEditable: YES];
@ -314,11 +306,7 @@
- (id)init
{
if ((self = [super init])) {
_target = defaultTarget;
buildOptions = [[NSMutableDictionary alloc] init];
[buildOptions setObject:TARGET_MAKE forKey:BUILD_KEY];
[self _initUI];
}
return self;
@ -735,13 +723,6 @@
[buildTargetPanel makeKeyAndOrderFront:self];
}
- (void)setTarget:(id)sender
{
_target = [buildTargetPopup indexOfSelectedItem];
[buildOptions setObject:[NSNumber numberWithInt:_target] forKey:BUILD_KEY];
}
- (void)setHost:(id)sender
{
NSString *host = [buildTargetHostField stringValue];

View file

@ -106,7 +106,7 @@
[scrollView2 setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
[scrollView2 autorelease];
split = [[[NSSplitView alloc] initWithFrame:NSMakeRect(8,0,496,264)] autorelease];
split = [[[NSSplitView alloc] initWithFrame:NSMakeRect(8,0,496,288)] autorelease];
[split setAutoresizingMask: (NSViewWidthSizable | NSViewHeightSizable)];
[split addSubview: scrollView1];
[split addSubview: scrollView2];
@ -115,41 +115,51 @@
[_c_view addSubview:split];
/*
* Buttons
* 5 build Buttons
*/
_w_frame = NSMakeRect(8,268,144,48);
_w_frame = NSMakeRect(8,292,244,24);
matrix = [[[NSMatrix alloc] initWithFrame: _w_frame
mode: NSHighlightModeMatrix
prototype: buttonCell
numberOfRows: 1
numberOfColumns: 3] autorelease];
numberOfColumns: 5] autorelease];
[matrix setIntercellSpacing:NSMakeSize(1,1)];
[matrix setSelectionByRect:YES];
[matrix setAutoresizingMask: (NSViewMaxXMargin | NSViewMinYMargin)];
[matrix setTarget:self];
[matrix setAction:@selector(build:)];
[_c_view addSubview:matrix];
button = [matrix cellAtRow:0 column:0];
[button setImagePosition:NSImageOnly];
[button setImage:IMAGE(@"ProjectCentre_build.tiff")];
[button setTag:0];
[button setImagePosition:NSNoImage];
[button setButtonType:NSMomentaryPushButton];
[button setTarget:self];
[button setAction:@selector(build:)];
[button setTitle:@"Build"];
button = [matrix cellAtRow:0 column:1];
[button setImagePosition:NSImageOnly];
[button setImage:IMAGE(@"ProjectCentre_clean.tiff")];
[button setTag:1];
[button setImagePosition:NSNoImage];
[button setButtonType:NSMomentaryPushButton];
[button setTarget:self];
[button setAction:@selector(clean:)];
[button setTitle:@"Clean"];
button = [matrix cellAtRow:0 column:2];
[button setImagePosition:NSImageOnly];
[button setImage:IMAGE(@"ProjectCentre_prefs.tiff")];
[button setTarget:self];
[button setAction:@selector(showBuildTarget:)];
[button setTag:2];
[button setImagePosition:NSNoImage];
[button setButtonType:NSMomentaryPushButton];
[button setTarget:self];
[button setAction:@selector(install:)];
[button setTitle:@"Debug"];
button = [matrix cellAtRow:0 column:3];
[button setTag:3];
[button setImagePosition:NSNoImage];
[button setButtonType:NSMomentaryPushButton];
[button setTitle:@"Profile"];
button = [matrix cellAtRow:0 column:4];
[button setTag:4];
[button setImagePosition:NSNoImage];
[button setButtonType:NSMomentaryPushButton];
[button setTitle:@"Install"];
}
@end
@ -222,42 +232,49 @@ static PCProjectBuilder *_builder;
makeTask = [[NSTask alloc] init];
optionDict = [currentProject buildOptions];
args = [NSMutableArray array];
if ((tg = [optionDict objectForKey:BUILD_KEY])) {
if ([tg isEqualToString:TARGET_MAKE_DEBUG]) {
args = [NSMutableArray array];
[args addObject:@"debug=yes"];
[makeTask setArguments:args];
}
else if ([tg isEqualToString:TARGET_MAKE_PROFILE]) {
args = [NSMutableArray array];
[args addObject:@"profile=YES"];
[args addObject:@"static=YES"];
[makeTask setArguments:args];
}
[makeTask setCurrentDirectoryPath:[currentProject projectPath]];
[makeTask setLaunchPath:makePath];
[makeTask setStandardOutput:logPipe];
[makeTask setStandardError:logPipe];
[makeTask launch];
/*
* This is just a quick hack for now...
*/
while ((inData = [readHandle availableData]) && [inData length]) {
output = [[NSString alloc] initWithData:inData encoding:NSASCIIStringEncoding];
[logOutput setString:[NSString stringWithFormat:@"%@%@\n", [logOutput string], output]];
[logOutput scrollRangeToVisible:NSMakeRange([[logOutput textStorage] length], 0)];
[output release];
}
[makeTask waitUntilExit];
[makeTask autorelease];
switch ([[sender selectedCell] tag]) {
case 0:
break;
case 1:
[args addObject:@"clean"];
break;
case 2:
[args addObject:@"debug=yes"];
break;
case 3:
[args addObject:@"profile=yes"];
[args addObject:@"static=yes"];
break;
case 4:
[args addObject:@"install"];
break;
}
[makeTask setArguments:args];
[makeTask setCurrentDirectoryPath:[currentProject projectPath]];
[makeTask setLaunchPath:makePath];
[makeTask setStandardOutput:logPipe];
[makeTask setStandardError:logPipe];
[makeTask launch];
/*
* This is just a quick hack for now...
*/
while ((inData = [readHandle availableData]) && [inData length]) {
output = [[NSString alloc] initWithData:inData encoding:NSASCIIStringEncoding];
[logOutput setString:[NSString stringWithFormat:@"%@%@\n", [logOutput string], output]];
[logOutput scrollRangeToVisible:NSMakeRange([[logOutput textStorage] length], 0)];
[output release];
}
[makeTask waitUntilExit];
[makeTask autorelease];
}
- (void)clean:(id)sender

View file

@ -40,6 +40,8 @@
id failureField;
id autoSaveField;;
id useExternalEditor;
id editorField;
id debuggerField;
@ -47,9 +49,6 @@
id bundlePathField;
NSMutableDictionary *preferencesDict;
@private
BOOL _needsReleasing;
}
- (id)init;
@ -66,6 +65,8 @@
- (void)setRemoveBackup:(id)sender;
- (void)setSavePeriod:(id)sender;
- (void)setUseExternalEditor:(id)sender;
- (void)setEditor:(id)sender;
- (void)setCompiler:(id)sender;
- (void)setDebugger:(id)sender;

View file

@ -48,6 +48,7 @@
NSBox *line;
NSBox *v;
NSButton *b;
NSTextField *textField;
/*
* Pref Window
@ -116,15 +117,93 @@
[prefMiscView setBorderType:NSNoBorder];
v = [[[NSBox alloc] init] autorelease];
[v setTitle:@"External"];
[v setTitle:@"External Editor"];
[v setFrameFromContentFrame:NSMakeRect(16,184,228,96)];
[prefMiscView addSubview:v];
/*
* Editor
*/
textField = [[NSTextField alloc] initWithFrame:NSMakeRect(12,24,60,21)];
[textField setAlignment: NSRightTextAlignment];
[textField setBordered: NO];
[textField setEditable: NO];
[textField setBezeled: NO];
[textField setDrawsBackground: NO];
[textField setStringValue:@"Editor:"];
[v addSubview:[textField autorelease]];
editorField = [[NSTextField alloc] initWithFrame:NSMakeRect(72,24,184,21)];
[editorField setAlignment: NSLeftTextAlignment];
[editorField setBordered: NO];
[editorField setEditable: YES];
[editorField setBezeled: YES];
[editorField setDrawsBackground: YES];
[editorField setTarget:self];
[editorField setAction:@selector(setEditor:)];
[v addSubview:[editorField autorelease]];
/*
* Compiler
*/
textField = [[NSTextField alloc] initWithFrame:NSMakeRect(12,48,60,21)];
[textField setAlignment: NSRightTextAlignment];
[textField setBordered: NO];
[textField setEditable: NO];
[textField setBezeled: NO];
[textField setDrawsBackground: NO];
[textField setStringValue:@"Compiler:"];
[v addSubview:[textField autorelease]];
compilerField = [[NSTextField alloc] initWithFrame:NSMakeRect(72,48,184,21)];
[compilerField setAlignment: NSLeftTextAlignment];
[compilerField setBordered: NO];
[compilerField setEditable: YES];
[compilerField setBezeled: YES];
[compilerField setDrawsBackground: YES];
[compilerField setTarget:self];
[compilerField setAction:@selector(setCompiler:)];
[v addSubview:[compilerField autorelease]];
/*
* Debugger
*/
textField = [[NSTextField alloc] initWithFrame:NSMakeRect(12,72,60,21)];
[textField setAlignment: NSRightTextAlignment];
[textField setBordered: NO];
[textField setEditable: NO];
[textField setBezeled: NO];
[textField setDrawsBackground: NO];
[textField setStringValue:@"Debugger:"];
[v addSubview:[textField autorelease]];
debuggerField = [[NSTextField alloc] initWithFrame:NSMakeRect(72,72,184,21)];
[debuggerField setAlignment: NSLeftTextAlignment];
[debuggerField setBordered: NO];
[debuggerField setEditable: YES];
[debuggerField setBezeled: YES];
[debuggerField setDrawsBackground: YES];
[debuggerField setTarget:self];
[debuggerField setAction:@selector(setDebugger:)];
[v addSubview:[debuggerField autorelease]];
v = [[[NSBox alloc] init] autorelease];
[v setTitle:@"Bundles"];
[v setFrameFromContentFrame:NSMakeRect(16,120,228,48)];
[v setFrameFromContentFrame:NSMakeRect(16,120,228,24)];
[prefMiscView addSubview:v];
useExternalEditor = [[[NSButton alloc] initWithFrame:NSMakeRect(32,60,144,15)] autorelease];
[useExternalEditor setTitle:@"use external Editor"];
[useExternalEditor setButtonType:NSSwitchButton];
[useExternalEditor setBordered:NO];
[useExternalEditor setTarget:self];
[useExternalEditor setAction:@selector(setUseExternalEditor:)];
[useExternalEditor setContinuous:NO];
[prefMiscView addSubview:useExternalEditor];
b = [[[NSButton alloc] initWithFrame:NSMakeRect(32,80,144,15)] autorelease];
[b setTitle:@"Prompt when quitting"];
[b setButtonType:NSSwitchButton];
@ -159,7 +238,7 @@
[v addSubview:b];
b = [[[NSButton alloc] initWithFrame:NSMakeRect(13,13,124,15)] autorelease];
[b setTitle:@"Remoe Backup"];
[b setTitle:@"Remove Backup"];
[b setButtonType:NSSwitchButton];
[b setBordered:NO];
[b setTarget:self];
@ -171,8 +250,6 @@
[v setTitle:@"Auto-Save"];
[v setFrameFromContentFrame:NSMakeRect(16,104,228,80)];
[prefSavingView addSubview:v];
_needsReleasing = YES;
}
@end
@ -195,16 +272,16 @@
{
[preferencesDict release];
if (_needsReleasing) {
[prefWindow release];
[prefPopup release];
[prefEmptyView release];
[prefBuildingView release];
[prefMiscView release];
[prefSavingView release];
}
[prefWindow release];
[prefPopup release];
[prefEmptyView release];
[prefBuildingView release];
[prefMiscView release];
[prefSavingView release];
[[NSUserDefaults standardUserDefaults] synchronize];
[super dealloc];
}
@ -214,20 +291,15 @@
id view;
NSString *val;
#if defined(GNUSTEP)
[self _initUI];
#else
if(![NSBundle loadNibNamed:@"Preferences.nib" owner:self]) {
[[NSException exceptionWithName:NIB_NOT_FOUND_EXCEPTION reason:@"Could not load Preferences.gmodel" userInfo:nil] raise];
return;
}
#endif
// Fill in the defaults
[compilerField setStringValue:(val=[preferencesDict objectForKey:Compiler]) ? val : @""];
[debuggerField setStringValue:(val=[preferencesDict objectForKey:Debugger]) ? val : @""];
[editorField setStringValue:(val=[preferencesDict objectForKey:Editor]) ? val : @""];
[bundlePathField setStringValue:(val=[preferencesDict objectForKey:BundlePaths]) ? val : @""];
[useExternalEditor setState:([[preferencesDict objectForKey:ExternalEditor] isEqualToString:@"YES"])?NSOnState:NSOffState];
// The popup and selected view
[prefPopup removeAllItems];
@ -305,40 +377,48 @@
{
}
- (void)setUseExternalEditor:(id)sender
{
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
switch ([[sender selectedCell] state]) {
case 0:
[def setObject:@"NO" forKey:ExternalEditor];
break;
case 1:
[def setObject:@"YES" forKey:ExternalEditor];
break;
}
[def synchronize];
}
- (void)setEditor:(id)sender
{
NSString *path = [self selectFileWithTypes:[NSArray arrayWithObjects:@"app",nil]];
if (path) {
[editorField setStringValue:path];
[[NSUserDefaults standardUserDefaults] setObject:path forKey:Editor];
[preferencesDict setObject:path forKey:Editor];
}
NSString *path = [editorField stringValue];
if (path) {
[[NSUserDefaults standardUserDefaults] setObject:path forKey:Editor];
[preferencesDict setObject:path forKey:Editor];
}
}
- (void)setCompiler:(id)sender
{
NSString *path = [self selectFileWithTypes:nil];
NSString *path = [compilerField stringValue];
if (path) {
[compilerField setStringValue:path];
[[NSUserDefaults standardUserDefaults] setObject:path forKey:Compiler];
[preferencesDict setObject:path forKey:Compiler];
}
if (path) {
[[NSUserDefaults standardUserDefaults] setObject:path forKey:Compiler];
[preferencesDict setObject:path forKey:Compiler];
}
}
- (void)setDebugger:(id)sender
{
NSString *path = [self selectFileWithTypes:nil];
if (path) {
[debuggerField setStringValue:path];
[[NSUserDefaults standardUserDefaults] setObject:path forKey:Debugger];
[preferencesDict setObject:path forKey:Debugger];
}
NSString *path = [debuggerField stringValue];
if (path) {
[[NSUserDefaults standardUserDefaults] setObject:path forKey:Debugger];
[preferencesDict setObject:path forKey:Debugger];
}
}
- (void)setBundlePath:(id)sender
@ -364,23 +444,23 @@
- (NSString *)selectFileWithTypes:(NSArray *)types
{
NSString *file = nil;
NSOpenPanel *openPanel;
int retval;
openPanel = [NSOpenPanel openPanel];
[openPanel setAllowsMultipleSelection:NO];
[openPanel setCanChooseDirectories:YES];
[openPanel setCanChooseFiles:YES];
retval = [openPanel runModalForDirectory:[[NSUserDefaults standardUserDefaults] objectForKey:@"LastOpenDirectory"] file:nil types:types];
if (retval == NSOKButton) {
[[NSUserDefaults standardUserDefaults] setObject:[openPanel directory] forKey:@"LastOpenDirectory"];
file = [[openPanel filenames] objectAtIndex:0];
NSString *file = nil;
NSOpenPanel *openPanel;
int retval;
}
return file;
openPanel = [NSOpenPanel openPanel];
[openPanel setAllowsMultipleSelection:NO];
[openPanel setCanChooseDirectories:YES];
[openPanel setCanChooseFiles:YES];
retval = [openPanel runModalForDirectory:[[NSUserDefaults standardUserDefaults] objectForKey:@"LastOpenDirectory"] file:nil types:types];
if (retval == NSOKButton) {
[[NSUserDefaults standardUserDefaults] setObject:[openPanel directory] forKey:@"LastOpenDirectory"];
file = [[openPanel filenames] objectAtIndex:0];
}
return file;
}
@end