doubleclicks a .py, .pyw or .pyc file. It runs the file by invoking the relevant interpreter (either the command line Python in a terminal window or a Python.app for GUI-based scripts). Interpreter to use and the options to pass are settable through preferences. If PythonLauncher wasn't running it does its thing for one script and exits. If it was manually started before a dialog is presented where the user can set the options to use, etc. To be done: - option-drag/doubleclick should always open the interactive dialog - Terminal-window isn't done yet - Should be reimplemented in Python, but pyobjc isn't part of the core. - Various menu entries should be disabled.
95 lines
2.2 KiB
Objective-C
95 lines
2.2 KiB
Objective-C
#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
|
|
{
|
|
// [[self window] setTitle: script];
|
|
|
|
[interpreter setStringValue: [settings interpreter]];
|
|
[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]];
|
|
|
|
[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
|
|
{
|
|
[self load_defaults];
|
|
[self update_display];
|
|
}
|
|
|
|
- (IBAction)do_apply:(id)sender
|
|
{
|
|
[self update_settings];
|
|
[self update_display];
|
|
}
|
|
|
|
// FileSettingsSource protocol
|
|
- (NSString *) interpreter { return [interpreter stringValue];};
|
|
- (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];};
|
|
|
|
// Delegates
|
|
- (void)controlTextDidChange:(NSNotification *)aNotification
|
|
{
|
|
[self update_settings];
|
|
[self update_display];
|
|
};
|
|
|
|
|
|
@end
|