apps-projectcenter/Framework/PCProjectBuilderOptions.m
Sergii Stoian 8b186c4ad7 * Framework/PCProjectBuilder.m:
(-startBuild:), (-startClean:): Move _isBuilding and _isCleaning vars
before build: method call for correct determination in cleanupAfterMake
method.
(build:): Initialize build time vars before call to preBuildChecj method.
* Framework/PCProjectBuilderOptions.m: Do not notify when changing project
properties (build options).


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/apps/projectcenter/trunk@28216 72102866-910b-0410-8b05-ffd578937521
2009-04-14 23:24:14 +00:00

196 lines
4.8 KiB
Objective-C

/*
GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
Copyright (C) 2000-2007 Free Software Foundation
Authors: Philippe C.D. Robert
Sergii Stoian
This file is part of GNUstep.
This application is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This application is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
*/
#import <ProjectCenter/PCProjectBuilderOptions.h>
#import <ProjectCenter/PCDefines.h>
#import <ProjectCenter/PCProject.h>
#import <ProjectCenter/PCLogController.h>
@implementation PCProjectBuilderOptions
- (void)_setStateForButton:(id)button
key:(NSString *)key
defaultState:(int)dState
{
NSString *value = [[project projectDict] objectForKey:key];
int state;
if (value == nil)
{
state = dState;
}
else
{
if ([value isEqualToString:@"YES"])
state = NSOnState;
else
state = NSOffState;
}
[button setState:state];
}
- (id)initWithProject:(PCProject *)aProject delegate:(id)aDelegate
{
if ((self = [super init]))
{
project = aProject;
delegate = aDelegate;
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(loadProjectProperties:)
name:PCProjectDictDidChangeNotification
object:nil];
}
return self;
}
- (void)dealloc
{
#ifdef DEBUG
NSLog (@"PCProjectBuilderOptions: dealloc");
#endif
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
- (void)awakeFromNib
{
[verboseButton setRefusesFirstResponder:YES];
[debugButton setRefusesFirstResponder:YES];
[stripButton setRefusesFirstResponder:YES];
[sharedLibsButton setRefusesFirstResponder:YES];
[self loadProjectProperties:nil];
}
- (void)show:(NSRect)builderRect
{
NSRect opRect;
if (!optionsPanel)
{
if ([NSBundle loadNibNamed:@"BuilderOptions" owner:self] == NO)
{
PCLogError(self, @"error loading BuilderOptions NIB file!");
return;
}
}
opRect = [optionsPanel frame];
opRect.origin.x = builderRect.origin.x +
(builderRect.size.width - opRect.size.width)/2;
opRect.origin.y = builderRect.origin.y +
(builderRect.size.height - opRect.size.height)/2;
[optionsPanel setFrame:opRect display:NO];
[optionsPanel makeKeyAndOrderFront:nil];
[optionsPanel makeFirstResponder:buildArgsField];
}
- (NSString *)buildTarget
{
if (targetPopup)
{
return [targetPopup titleOfSelectedItem];
}
return nil;
}
- (void)optionsPopupChanged:(id)sender
{
[delegate targetDidSet:[targetPopup titleOfSelectedItem]];
}
- (void)controlTextDidEndEditing:(NSNotification *)aNotif
{
id object = [aNotif object];
NSMutableArray *args;
if (object != buildArgsField)
return;
args = [[[buildArgsField stringValue] componentsSeparatedByString:@" "]
mutableCopy];
[args removeObject:@""];
[args removeObject:@" "];
[project setProjectDictObject:args forKey:PCBuilderArguments notify:NO];
[delegate targetDidSet:[targetPopup titleOfSelectedItem]];
}
- (void)optionsButtonClicked:(id)sender
{
NSString *value = [sender state] == NSOnState ? @"YES" : @"NO";
NSString *key;
if (sender == verboseButton)
key = PCBuilderVerbose;
if (sender == debugButton)
key = PCBuilderDebug;
if (sender == stripButton)
key = PCBuilderStrip;
if (sender == sharedLibsButton)
key = PCBuilderSharedLibs;
[project setProjectDictObject:value forKey:key notify:NO];
}
- (void)loadProjectProperties:(NSNotification *)aNotif
{
NSArray *args;
// Setup target popup
[targetPopup removeAllItems];
[targetPopup addItemsWithTitles:[project buildTargets]];
[targetPopup selectItemAtIndex:0];
// Setup build arguments field
args = [[project projectDict] objectForKey:PCBuilderArguments];
[buildArgsField setStringValue:[args componentsJoinedByString:@" "]];
// Setup option buttons
[self _setStateForButton:verboseButton
key:PCBuilderVerbose
defaultState:NSOffState];
[self _setStateForButton:debugButton
key:PCBuilderDebug
defaultState:NSOnState];
[self _setStateForButton:stripButton
key:PCBuilderStrip
defaultState:NSOffState];
[self _setStateForButton:sharedLibsButton
key:PCBuilderSharedLibs
defaultState:NSOnState];
}
@end