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
|
---|