mirror of
https://github.com/gnustep/apps-projectcenter.git
synced 2025-02-15 08:00:56 +00:00
(-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
196 lines
4.8 KiB
Objective-C
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
|