summaryrefslogtreecommitdiffstats
path: root/Mac/PythonLauncher
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/PythonLauncher')
-rwxr-xr-xMac/PythonLauncher/FileSettings.h5
-rwxr-xr-xMac/PythonLauncher/FileSettings.m46
-rw-r--r--Mac/PythonLauncher/MyAppDelegate.m6
-rwxr-xr-xMac/PythonLauncher/MyDocument.m20
-rw-r--r--Mac/PythonLauncher/PreferencesWindowController.m11
-rw-r--r--Mac/PythonLauncher/doscript.h2
-rw-r--r--Mac/PythonLauncher/doscript.m78
-rwxr-xr-xMac/PythonLauncher/main.m4
8 files changed, 77 insertions, 95 deletions
diff --git a/Mac/PythonLauncher/FileSettings.h b/Mac/PythonLauncher/FileSettings.h
index d807bae..7b74a9b 100755
--- a/Mac/PythonLauncher/FileSettings.h
+++ b/Mac/PythonLauncher/FileSettings.h
@@ -45,18 +45,13 @@
+ (id)getFactorySettingsForFileType: (NSString *)filetype;
+ (id)newSettingsForFileType: (NSString *)filetype;
-//- (id)init;
- (id)initForFileType: (NSString *)filetype;
- (id)initForFSDefaultFileType: (NSString *)filetype;
- (id)initForDefaultFileType: (NSString *)filetype;
-//- (id)initWithFileSettings: (FileSettings *)source;
- (void)updateFromSource: (id <FileSettingsSource>)source;
- (NSString *)commandLineForScript: (NSString *)script;
-//- (void)applyFactorySettingsForFileType: (NSString *)filetype;
-//- (void)saveDefaults;
-//- (void)applyUserDefaults: (NSString *)filetype;
- (void)applyValuesFromDict: (NSDictionary *)dict;
- (void)reset;
- (NSArray *) interpreters;
diff --git a/Mac/PythonLauncher/FileSettings.m b/Mac/PythonLauncher/FileSettings.m
index 66b4fdc..3438870 100755
--- a/Mac/PythonLauncher/FileSettings.m
+++ b/Mac/PythonLauncher/FileSettings.m
@@ -14,7 +14,7 @@
{
static FileSettings *fsdefault_py, *fsdefault_pyw, *fsdefault_pyc;
FileSettings **curdefault;
-
+
if ([filetype isEqualToString: @"Python Script"]) {
curdefault = &fsdefault_py;
} else if ([filetype isEqualToString: @"Python GUI Script"]) {
@@ -36,7 +36,7 @@
{
static FileSettings *default_py, *default_pyw, *default_pyc;
FileSettings **curdefault;
-
+
if ([filetype isEqualToString: @"Python Script"]) {
curdefault = &default_py;
} else if ([filetype isEqualToString: @"Python GUI Script"]) {
@@ -57,7 +57,7 @@
+ (id)newSettingsForFileType: (NSString *)filetype
{
FileSettings *cur;
-
+
cur = [FileSettings new];
[cur initForFileType: filetype];
return [cur retain];
@@ -67,7 +67,7 @@
{
self = [super init];
if (!self) return self;
-
+
interpreter = [source->interpreter retain];
honourhashbang = source->honourhashbang;
debug = source->debug;
@@ -81,36 +81,30 @@
with_terminal = source->with_terminal;
prefskey = source->prefskey;
if (prefskey) [prefskey retain];
-
+
return self;
}
- (id)initForFileType: (NSString *)filetype
{
FileSettings *defaults;
-
+
defaults = [FileSettings getDefaultsForFileType: filetype];
self = [self initWithFileSettings: defaults];
origsource = [defaults retain];
return self;
}
-//- (id)init
-//{
-// self = [self initForFileType: @"Python Script"];
-// return self;
-//}
-
- (id)initForFSDefaultFileType: (NSString *)filetype
{
int i;
NSString *filename;
NSDictionary *dict;
static NSDictionary *factorySettings;
-
+
self = [super init];
if (!self) return self;
-
+
if (factorySettings == NULL) {
NSBundle *bdl = [NSBundle mainBundle];
NSString *path = [ bdl pathForResource: @"factorySettings"
@@ -149,18 +143,18 @@
{
NSUserDefaults *defaults;
NSDictionary *dict;
-
+
defaults = [NSUserDefaults standardUserDefaults];
dict = [defaults dictionaryForKey: filetype];
if (!dict)
return;
[self applyValuesFromDict: dict];
}
-
+
- (id)initForDefaultFileType: (NSString *)filetype
{
FileSettings *fsdefaults;
-
+
fsdefaults = [FileSettings getFactorySettingsForFileType: filetype];
self = [self initWithFileSettings: fsdefaults];
if (!self) return self;
@@ -220,7 +214,7 @@
- (void)applyValuesFromDict: (NSDictionary *)dict
{
id value;
-
+
value = [dict objectForKey: @"interpreter"];
if (value) interpreter = [value retain];
value = [dict objectForKey: @"honourhashbang"];
@@ -247,12 +241,12 @@
- (NSString*)_replaceSingleQuotes: (NSString*)string
{
- /* Replace all single-quotes by '"'"', that way shellquoting will
- * be correct when the result value is delimited using single quotes.
- */
- NSArray* components = [string componentsSeparatedByString:@"'"];
+ /* Replace all single-quotes by '"'"', that way shellquoting will
+ * be correct when the result value is delimited using single quotes.
+ */
+ NSArray* components = [string componentsSeparatedByString:@"'"];
- return [components componentsJoinedByString:@"'\"'\"'"];
+ return [components componentsJoinedByString:@"'\"'\"'"];
}
- (NSString *)commandLineForScript: (NSString *)script
@@ -265,7 +259,7 @@
script_dir = [script substringToIndex:
[script length]-[[script lastPathComponent] length]];
-
+
if (honourhashbang &&
(fp=fopen([script fileSystemRepresentation], "r")) &&
fgets(hashbangbuf, sizeof(hashbangbuf), fp) &&
@@ -278,7 +272,7 @@
}
if (!cur_interp)
cur_interp = interpreter;
-
+
return [NSString stringWithFormat:
@"cd '%@' && '%@'%s%s%s%s%s%s %@ '%@' %@ %s",
[self _replaceSingleQuotes:script_dir],
@@ -297,7 +291,7 @@
- (NSArray *) interpreters { return interpreters;};
-// FileSettingsSource protocol
+// FileSettingsSource protocol
- (NSString *) interpreter { return interpreter;};
- (BOOL) honourhashbang { return honourhashbang; };
- (BOOL) debug { return debug;};
diff --git a/Mac/PythonLauncher/MyAppDelegate.m b/Mac/PythonLauncher/MyAppDelegate.m
index a5ba751..e75fb06 100644
--- a/Mac/PythonLauncher/MyAppDelegate.m
+++ b/Mac/PythonLauncher/MyAppDelegate.m
@@ -33,7 +33,7 @@
- (BOOL)shouldShowUI
{
- // if this call comes before applicationDidFinishLaunching: we
+ // if this call comes before applicationDidFinishLaunching: we
// should terminate immedeately after starting the script.
if (!initial_action_done)
should_terminate = YES;
@@ -62,7 +62,7 @@
static NSString *extensions[] = { @"py", @"pyw", @"pyc", NULL};
NSString **ext_p;
int i;
-
+
if ([[NSUserDefaults standardUserDefaults] boolForKey: @"SkipFileBindingTest"])
return;
ourUrl = [NSURL fileURLWithPath: [[NSBundle mainBundle] bundlePath]];
@@ -92,5 +92,5 @@
}
}
}
-
+
@end
diff --git a/Mac/PythonLauncher/MyDocument.m b/Mac/PythonLauncher/MyDocument.m
index 8f851e7..90c5db9 100755
--- a/Mac/PythonLauncher/MyDocument.m
+++ b/Mac/PythonLauncher/MyDocument.m
@@ -16,7 +16,7 @@
{
self = [super init];
if (self) {
-
+
// Add your subclass-specific initialization here.
// If an error occurs here, send a [self dealloc] message and return nil.
script = [@"<no script>.py" retain];
@@ -37,20 +37,17 @@
{
NSApplication *app = [NSApplication sharedApplication];
[super close];
- if ([[app delegate] shouldTerminate])
+ if ([(MyAppDelegate*)[app delegate] shouldTerminate])
[app terminate: self];
}
- (void)load_defaults
{
-// if (settings) [settings release];
settings = [FileSettings newSettingsForFileType: filetype];
}
- (void)update_display
{
-// [[self window] setTitle: script];
-
[interpreter setStringValue: [settings interpreter]];
[honourhashbang setState: [settings honourhashbang]];
[debug setState: [settings debug]];
@@ -62,7 +59,7 @@
[others setStringValue: [settings others]];
[scriptargs setStringValue: [settings scriptargs]];
[with_terminal setState: [settings with_terminal]];
-
+
[commandline setStringValue: [settings commandLineForScript: script]];
}
@@ -75,7 +72,7 @@
{
const char *cmdline;
int sts;
-
+
cmdline = [[settings commandLineForScript: script] UTF8String];
if ([settings with_terminal]) {
sts = doscript(cmdline);
@@ -107,14 +104,13 @@
{
// Insert code here to read your document from the given data. You can also choose to override -loadFileWrapperRepresentation:ofType: or -readFromFile:ofType: instead.
BOOL show_ui;
-
- // ask the app delegate whether we should show the UI or not.
- show_ui = [[[NSApplication sharedApplication] delegate] shouldShowUI];
+
+ // ask the app delegate whether we should show the UI or not.
+ show_ui = [(MyAppDelegate*)[[NSApplication sharedApplication] delegate] shouldShowUI];
[script release];
script = [fileName retain];
[filetype release];
filetype = [type retain];
-// if (settings) [settings release];
settings = [FileSettings newSettingsForFileType: filetype];
if (show_ui) {
[self update_display];
@@ -152,7 +148,7 @@
[self update_display];
}
-// FileSettingsSource protocol
+// FileSettingsSource protocol
- (NSString *) interpreter { return [interpreter stringValue];};
- (BOOL) honourhashbang { return [honourhashbang state];};
- (BOOL) debug { return [debug state];};
diff --git a/Mac/PythonLauncher/PreferencesWindowController.m b/Mac/PythonLauncher/PreferencesWindowController.m
index 311c375..dc65064 100644
--- a/Mac/PythonLauncher/PreferencesWindowController.m
+++ b/Mac/PythonLauncher/PreferencesWindowController.m
@@ -5,7 +5,7 @@
+ getPreferencesWindow
{
static PreferencesWindowController *_singleton;
-
+
if (!_singleton)
_singleton = [[PreferencesWindowController alloc] init];
[_singleton showWindow: _singleton];
@@ -21,15 +21,13 @@
- (void)load_defaults
{
NSString *title = [filetype titleOfSelectedItem];
-
+
settings = [FileSettings getDefaultsForFileType: title];
}
- (void)update_display
{
-// [[self window] setTitle: script];
-
- [interpreter reloadData];
+ [interpreter reloadData];
[interpreter setStringValue: [settings interpreter]];
[honourhashbang setState: [settings honourhashbang]];
[debug setState: [settings debug]];
@@ -41,7 +39,6 @@
[others setStringValue: [settings others]];
[with_terminal setState: [settings with_terminal]];
// Not scriptargs, it isn't for preferences
-
[commandline setStringValue: [settings commandLineForScript: @"<your script here>"]];
}
@@ -75,7 +72,7 @@
[self update_display];
}
-// FileSettingsSource protocol
+// FileSettingsSource protocol
- (NSString *) interpreter { return [interpreter stringValue];};
- (BOOL) honourhashbang { return [honourhashbang state]; };
- (BOOL) debug { return [debug state];};
diff --git a/Mac/PythonLauncher/doscript.h b/Mac/PythonLauncher/doscript.h
index eef0b56..3fd3187 100644
--- a/Mac/PythonLauncher/doscript.h
+++ b/Mac/PythonLauncher/doscript.h
@@ -9,4 +9,4 @@
#include <Carbon/Carbon.h>
-extern int doscript(const char *command); \ No newline at end of file
+extern int doscript(const char *command);
diff --git a/Mac/PythonLauncher/doscript.m b/Mac/PythonLauncher/doscript.m
index 024b883..cbb783b 100644
--- a/Mac/PythonLauncher/doscript.m
+++ b/Mac/PythonLauncher/doscript.m
@@ -11,49 +11,49 @@
#import <ApplicationServices/ApplicationServices.h>
#import "doscript.h"
-extern int
+extern int
doscript(const char *command)
{
- char *bundleID = "com.apple.Terminal";
- AppleEvent evt, res;
- AEDesc desc;
- OSStatus err;
+ char *bundleID = "com.apple.Terminal";
+ AppleEvent evt, res;
+ AEDesc desc;
+ OSStatus err;
- [[NSWorkspace sharedWorkspace] launchApplication:@"/Applications/Utilities/Terminal.app/"];
+ [[NSWorkspace sharedWorkspace] launchApplication:@"/Applications/Utilities/Terminal.app/"];
- // Build event
- err = AEBuildAppleEvent(kAECoreSuite, kAEDoScript,
- typeApplicationBundleID,
- bundleID, strlen(bundleID),
- kAutoGenerateReturnID,
- kAnyTransactionID,
- &evt, NULL,
- "'----':utf8(@)", strlen(command),
- command);
- if (err) {
- NSLog(@"AEBuildAppleEvent failed: %d\n", err);
- return err;
- }
+ // Build event
+ err = AEBuildAppleEvent(kAECoreSuite, kAEDoScript,
+ typeApplicationBundleID,
+ bundleID, strlen(bundleID),
+ kAutoGenerateReturnID,
+ kAnyTransactionID,
+ &evt, NULL,
+ "'----':utf8(@)", strlen(command),
+ command);
+ if (err) {
+ NSLog(@"AEBuildAppleEvent failed: %ld\n", (long)err);
+ return err;
+ }
- // Send event and check for any Apple Event Manager errors
- err = AESendMessage(&evt, &res, kAEWaitReply, kAEDefaultTimeout);
- AEDisposeDesc(&evt);
- if (err) {
- NSLog(@"AESendMessage failed: %d\n", err);
- return err;
- }
- // Check for any application errors
- err = AEGetParamDesc(&res, keyErrorNumber, typeSInt32, &desc);
- AEDisposeDesc(&res);
- if (!err) {
- AEGetDescData(&desc, &err, sizeof(err));
- NSLog(@"Terminal returned an error: %d", err);
- AEDisposeDesc(&desc);
- } else if (err == errAEDescNotFound) {
- err = noErr;
- } else {
- NSLog(@"AEGetPArmDesc returned an error: %d", err);
- }
+ // Send event and check for any Apple Event Manager errors
+ err = AESendMessage(&evt, &res, kAEWaitReply, kAEDefaultTimeout);
+ AEDisposeDesc(&evt);
+ if (err) {
+ NSLog(@"AESendMessage failed: %ld\n", (long)err);
+ return err;
+ }
+ // Check for any application errors
+ err = AEGetParamDesc(&res, keyErrorNumber, typeSInt32, &desc);
+ AEDisposeDesc(&res);
+ if (!err) {
+ AEGetDescData(&desc, &err, sizeof(err));
+ NSLog(@"Terminal returned an error: %ld", (long)err);
+ AEDisposeDesc(&desc);
+ } else if (err == errAEDescNotFound) {
+ err = noErr;
+ } else {
+ NSLog(@"AEGetPArmDesc returned an error: %ld", (long)err);
+ }
- return err;
+ return err;
}
diff --git a/Mac/PythonLauncher/main.m b/Mac/PythonLauncher/main.m
index 6841433..04b4d73 100755
--- a/Mac/PythonLauncher/main.m
+++ b/Mac/PythonLauncher/main.m
@@ -11,7 +11,7 @@
int main(int argc, const char *argv[])
{
- char *home = getenv("HOME");
- if (home) chdir(home);
+ char *home = getenv("HOME");
+ if (home) chdir(home);
return NSApplicationMain(argc, argv);
}