2
// GNUstep ProjectCenter - http://www.gnustep.org/experience/ProjectCenter.html
4
// Copyright (C) 2001-2009 Free Software Foundation
6
// Authors: Sergii Stoian
10
// This file is part of GNUstep.
12
// This application is free software; you can redistribute it and/or
13
// modify it under the terms of the GNU General Public License as published
14
// by the Free Software Foundation; either version 2 of the License, or
15
// (at your option) any later version.
17
// This application is distributed in the hope that it will be useful,
18
// but WITHOUT ANY WARRANTY; without even the implied warranty of
19
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
// Library General Public License for more details.
22
// You should have received a copy of the GNU General Public
23
// License along with this library; if not, write to the Free Software
24
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
26
#import <ProjectCenter/PCFileManager.h>
28
#import "PCMiscPrefs.h"
30
@implementation PCMiscPrefs
32
// ----------------------------------------------------------------------------
34
// ----------------------------------------------------------------------------
36
- (id)initWithPrefController:(id <PCPreferences>)aPrefs
40
if ([NSBundle loadNibNamed:@"MiscPrefs" owner:self] == NO)
42
NSLog(@"PCMiscPrefs: error loading NIB file!");
54
[promptWhenQuit setRefusesFirstResponder:YES];
55
[fullPathInFilePanels setRefusesFirstResponder:YES];
56
[rememberWindows setRefusesFirstResponder:YES];
57
[displayLog setRefusesFirstResponder:YES];
58
[useTearOffWindows setRefusesFirstResponder:YES];
60
[debuggerButton setRefusesFirstResponder:YES];
61
[editorButton setRefusesFirstResponder:YES];
67
NSLog (@"PCMiscPrefs: dealloc");
70
[[NSNotificationCenter defaultCenter] removeObserver:self];
78
- (void)readPreferences
84
bVal = [prefs boolForKey:PromptOnQuit defaultValue:YES];
85
state = bVal ? NSOnState : NSOffState;
86
[promptWhenQuit setState:state];
88
bVal = [prefs boolForKey:FullPathInFilePanels defaultValue:YES];
89
state = bVal ? NSOnState : NSOffState;
90
[fullPathInFilePanels setState:state];
92
bVal = [prefs boolForKey:RememberWindows defaultValue:YES];
93
state = bVal ? NSOnState : NSOffState;
94
[rememberWindows setState:state];
96
bVal = [prefs boolForKey:DisplayLog defaultValue:NO];
97
state = bVal ? NSOnState : NSOffState;
98
[displayLog setState:state];
100
bVal = [prefs boolForKey:UseTearOffWindows defaultValue:YES];
101
state = bVal ? NSOnState : NSOffState;
102
[useTearOffWindows setState:state];
104
val = [prefs stringForKey:Debugger defaultValue:PCDefaultDebugger];
105
[debuggerField setStringValue:val];
107
val = [prefs stringForKey:Editor defaultValue:@"ProjectCenter"];
108
[editorField setStringValue:val];
117
- (void)setPromptWhenQuit:(id)sender
121
if (promptWhenQuit == nil)
122
{// HACK!!! need to be fixed in GNUstep
123
promptWhenQuit = sender;
127
state = ([sender state] == NSOffState) ? NO : YES;
128
[prefs setBool:state forKey:PromptOnQuit notify:YES];
131
- (void)setFullPathInFilePanels:(id)sender
135
if (fullPathInFilePanels == nil)
136
{// HACK!!! need to be fixed in GNUstep
137
fullPathInFilePanels = sender;
141
state = ([sender state] == NSOffState) ? NO : YES;
142
[prefs setBool:state forKey:FullPathInFilePanels notify:YES];
145
- (void)setRememberWindows:(id)sender
149
if (rememberWindows == nil)
151
rememberWindows = sender;
155
state = ([sender state] == NSOffState) ? NO : YES;
156
[prefs setBool:state forKey:RememberWindows notify:YES];
159
- (void)setDisplayLog:(id)sender
163
if (displayLog == nil)
169
state = ([sender state] == NSOffState) ? NO : YES;
170
[prefs setBool:state forKey:DisplayLog notify:YES];
173
- (void)setUseTearOffWindows:(id)sender
177
if (useTearOffWindows == nil)
179
useTearOffWindows = sender;
183
state = ([sender state] == NSOffState) ? NO : YES;
184
[prefs setBool:state forKey:UseTearOffWindows notify:YES];
187
- (void)setDebugger:(id)sender
191
NSFileManager *fm = [NSFileManager defaultManager];
194
if ((sender == debuggerField))
196
path = [debuggerField stringValue];
200
files = [[PCFileManager defaultManager]
202
operation:PCOpenFileOperation
204
title:@"Choose Debugger Tool"
206
path = [files objectAtIndex:0];
209
[[miscView window] makeFirstResponder:debuggerField];
216
if (path && ![fm fileExistsAtPath:path])
218
NSRunAlertPanel(@"Set Debugger Tool",
219
@"File %@ doesn't exist!\n"
220
"Setting field to default value.",
221
@"Close", nil, nil, path);
224
else if (path && ![fm isExecutableFileAtPath:path])
226
NSRunAlertPanel(@"Set Debugger Tool",
227
@"File %@ exists but is not executable!\n"
228
"Setting field to default value.",
229
@"Close", nil, nil, path);
233
if ([path isEqualToString:@""])
235
path = PCDefaultDebugger;
239
[debuggerField setStringValue:path];
240
[prefs setString:path forKey:Debugger notify:YES];
243
- (void)setEditor:(id)sender
247
NSString *editorPath;
248
NSFileManager *fm = [NSFileManager defaultManager];
249
NSWorkspace *ws = [NSWorkspace sharedWorkspace];
252
if ((sender == debuggerField))
254
path = [debuggerField stringValue];
256
else if ([path = [editorField stringValue] isEqualToString:@""])
258
files = [[PCFileManager defaultManager]
260
operation:PCOpenFileOperation
262
title:@"Choose Editor"
264
path = [files objectAtIndex:0];
267
[[miscView window] makeFirstResponder:editorField];
274
if (path && ![ws fullPathForApplication:path])
276
editorPath = [[path componentsSeparatedByString:@" "] objectAtIndex:0];
277
if (![fm fileExistsAtPath:editorPath])
279
[editorField selectText:self];
280
NSRunAlertPanel(@"Set Editor",
281
@"Editor %@ doesn't exist!\n"
282
@"Setting field to default value.",
283
@"Close", nil, nil, path);
286
else if (path && ![fm isExecutableFileAtPath:editorPath])
288
[editorField selectText:self];
289
NSRunAlertPanel(@"Set Editor",
290
@"File %@ exists but is not executable!\n"
291
"Setting field to default value.",
292
@"Close", nil, nil, path);
297
if ([path isEqualToString:@""] || !path)
299
path = @"ProjectCenter";
303
[editorField setStringValue:path];
304
[prefs setString:path forKey:Editor notify:YES];