1#import "PreferencesWindowController.h" 2 3@implementation PreferencesWindowController 4 5+ getPreferencesWindow 6{ 7 static PreferencesWindowController *_singleton; 8 9 if (!_singleton) 10 _singleton = [[PreferencesWindowController alloc] init]; 11 [_singleton showWindow: _singleton]; 12 return _singleton; 13} 14 15- (id) init 16{ 17 self = [self initWithWindowNibName: @"PreferenceWindow"]; 18 return self; 19} 20 21- (void)load_defaults 22{ 23 NSString *title = [filetype titleOfSelectedItem]; 24 25 settings = [FileSettings getDefaultsForFileType: title]; 26} 27 28- (void)update_display 29{ 30 [interpreter reloadData]; 31 [interpreter setStringValue: [settings interpreter]]; 32 [honourhashbang setState: [settings honourhashbang]]; 33 [debug setState: [settings debug]]; 34 [verbose setState: [settings verbose]]; 35 [inspect setState: [settings inspect]]; 36 [optimize setState: [settings optimize]]; 37 [nosite setState: [settings nosite]]; 38 [tabs setState: [settings tabs]]; 39 [others setStringValue: [settings others]]; 40 [with_terminal setState: [settings with_terminal]]; 41 // Not scriptargs, it isn't for preferences 42 [commandline setStringValue: [settings commandLineForScript: @"<your script here>"]]; 43} 44 45- (void) windowDidLoad 46{ 47 [super windowDidLoad]; 48 [self load_defaults]; 49 [self update_display]; 50} 51 52- (void)update_settings 53{ 54 [settings updateFromSource: self]; 55} 56 57- (IBAction)do_filetype:(id)sender 58{ 59 [self load_defaults]; 60 [self update_display]; 61} 62 63- (IBAction)do_reset:(id)sender 64{ 65 [settings reset]; 66 [self update_display]; 67} 68 69- (IBAction)do_apply:(id)sender 70{ 71 [self update_settings]; 72 [self update_display]; 73} 74 75// FileSettingsSource protocol 76- (NSString *) interpreter { return [interpreter stringValue];}; 77- (BOOL) honourhashbang { return [honourhashbang state]; }; 78- (BOOL) debug { return [debug state];}; 79- (BOOL) verbose { return [verbose state];}; 80- (BOOL) inspect { return [inspect state];}; 81- (BOOL) optimize { return [optimize state];}; 82- (BOOL) nosite { return [nosite state];}; 83- (BOOL) tabs { return [tabs state];}; 84- (NSString *) others { return [others stringValue];}; 85- (BOOL) with_terminal { return [with_terminal state];}; 86- (NSString *) scriptargs { return @"";}; 87 88// Delegates 89- (void)controlTextDidChange:(NSNotification *)aNotification 90{ 91 [self update_settings]; 92 [self update_display]; 93}; 94 95// NSComboBoxDataSource protocol 96- (unsigned int)comboBox:(NSComboBox *)aComboBox indexOfItemWithStringValue:(NSString *)aString 97{ 98 NSArray *interp_list = [settings interpreters]; 99 unsigned int rv = [interp_list indexOfObjectIdenticalTo: aString]; 100 return rv; 101} 102 103- (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(int)index 104{ 105 NSArray *interp_list = [settings interpreters]; 106 id rv = [interp_list objectAtIndex: index]; 107 return rv; 108} 109 110- (int)numberOfItemsInComboBox:(NSComboBox *)aComboBox 111{ 112 NSArray *interp_list = [settings interpreters]; 113 int rv = [interp_list count]; 114 return rv; 115} 116 117 118@end 119