Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
allendowney
GitHub Repository: allendowney/cpython
Path: blob/main/Mac/PythonLauncher/PreferencesWindowController.m
12 views
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
120