| #import "PreferencesWindowController.h" |
| |
| @implementation PreferencesWindowController |
| |
| + getPreferencesWindow |
| { |
| static PreferencesWindowController *_singleton; |
| |
| if (!_singleton) |
| _singleton = [[PreferencesWindowController alloc] init]; |
| [_singleton showWindow: _singleton]; |
| return _singleton; |
| } |
| |
| - (id) init |
| { |
| self = [self initWithWindowNibName: @"PreferenceWindow"]; |
| return self; |
| } |
| |
| - (void)load_defaults |
| { |
| NSString *title = [filetype titleOfSelectedItem]; |
| |
| settings = [FileSettings getDefaultsForFileType: title]; |
| } |
| |
| - (void)update_display |
| { |
| [interpreter reloadData]; |
| [interpreter setStringValue: [settings interpreter]]; |
| [honourhashbang setState: [settings honourhashbang]]; |
| [debug setState: [settings debug]]; |
| [verbose setState: [settings verbose]]; |
| [inspect setState: [settings inspect]]; |
| [optimize setState: [settings optimize]]; |
| [nosite setState: [settings nosite]]; |
| [tabs setState: [settings tabs]]; |
| [others setStringValue: [settings others]]; |
| [with_terminal setState: [settings with_terminal]]; |
| // Not scriptargs, it isn't for preferences |
| [commandline setStringValue: [settings commandLineForScript: @"<your script here>"]]; |
| } |
| |
| - (void) windowDidLoad |
| { |
| [super windowDidLoad]; |
| [self load_defaults]; |
| [self update_display]; |
| } |
| |
| - (void)update_settings |
| { |
| [settings updateFromSource: self]; |
| } |
| |
| - (IBAction)do_filetype:(id)sender |
| { |
| [self load_defaults]; |
| [self update_display]; |
| } |
| |
| - (IBAction)do_reset:(id)sender |
| { |
| [settings reset]; |
| [self update_display]; |
| } |
| |
| - (IBAction)do_apply:(id)sender |
| { |
| [self update_settings]; |
| [self update_display]; |
| } |
| |
| // FileSettingsSource protocol |
| - (NSString *) interpreter { return [interpreter stringValue];}; |
| - (BOOL) honourhashbang { return [honourhashbang state]; }; |
| - (BOOL) debug { return [debug state];}; |
| - (BOOL) verbose { return [verbose state];}; |
| - (BOOL) inspect { return [inspect state];}; |
| - (BOOL) optimize { return [optimize state];}; |
| - (BOOL) nosite { return [nosite state];}; |
| - (BOOL) tabs { return [tabs state];}; |
| - (NSString *) others { return [others stringValue];}; |
| - (BOOL) with_terminal { return [with_terminal state];}; |
| - (NSString *) scriptargs { return @"";}; |
| |
| // Delegates |
| - (void)controlTextDidChange:(NSNotification *)aNotification |
| { |
| [self update_settings]; |
| [self update_display]; |
| }; |
| |
| // NSComboBoxDataSource protocol |
| - (unsigned int)comboBox:(NSComboBox *)aComboBox indexOfItemWithStringValue:(NSString *)aString |
| { |
| NSArray *interp_list = [settings interpreters]; |
| unsigned int rv = [interp_list indexOfObjectIdenticalTo: aString]; |
| return rv; |
| } |
| |
| - (id)comboBox:(NSComboBox *)aComboBox objectValueForItemAtIndex:(int)index |
| { |
| NSArray *interp_list = [settings interpreters]; |
| id rv = [interp_list objectAtIndex: index]; |
| return rv; |
| } |
| |
| - (int)numberOfItemsInComboBox:(NSComboBox *)aComboBox |
| { |
| NSArray *interp_list = [settings interpreters]; |
| int rv = [interp_list count]; |
| return rv; |
| } |
| |
| |
| @end |