diff options
Diffstat (limited to 'Mac/OSX/PythonLauncher/FileSettings.m')
-rwxr-xr-x | Mac/OSX/PythonLauncher/FileSettings.m | 182 |
1 files changed, 182 insertions, 0 deletions
diff --git a/Mac/OSX/PythonLauncher/FileSettings.m b/Mac/OSX/PythonLauncher/FileSettings.m new file mode 100755 index 0000000..99a1166 --- /dev/null +++ b/Mac/OSX/PythonLauncher/FileSettings.m @@ -0,0 +1,182 @@ +// +// FileSettings.m +// PythonLauncher +// +// Created by Jack Jansen on Sun Jul 21 2002. +// Copyright (c) 2002 __MyCompanyName__. All rights reserved. +// + +#import "FileSettings.h" + +@implementation FileSettings ++ (id)getDefaultsForFileType: (NSString *)filetype +{ + 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"]) { + curdefault = &default_pyw; + } else if ([filetype isEqualToString: @"Python Bytecode Document"]) { + curdefault = &default_pyc; + } else { + NSLog(@"Funny File Type: %@\n", filetype); + curdefault = &default_py; + filetype = @"Python Script"; + } + if (!*curdefault) { + *curdefault = [[FileSettings new] init]; + [*curdefault factorySettingsForFileType: filetype]; + [*curdefault updateFromUserDefaults: filetype]; + } + return *curdefault; +} + ++ (id)newSettingsForFileType: (NSString *)filetype +{ + FileSettings *cur; + + cur = [[FileSettings new] init]; + [cur initWithFileSettings: [FileSettings getDefaultsForFileType: filetype]]; + return cur; +} + +- (id)init +{ + self = [super init]; + return [self factorySettingsForFileType: @"Python Script"]; +} + +- (id)factorySettingsForFileType: (NSString *)filetype +{ + debug = NO; + verbose = NO; + inspect = NO; + optimize = NO; + nosite = NO; + tabs = NO; + others = @""; + if ([filetype isEqualToString: @"Python Script"] || + [filetype isEqualToString: @"Python Bytecode Document"]) { + interpreter = @"/usr/local/bin/python"; + with_terminal = YES; + } else if ([filetype isEqualToString: @"Python GUI Script"]) { + interpreter = @"/Applications/Python.app/Contents/MacOS/python"; + with_terminal = NO; + } else { + NSLog(@"Funny File Type: %@\n", filetype); + } + origsource = NULL; + return self; +} + +- (id)initWithFileSettings: (FileSettings *)source +{ + interpreter = [source->interpreter retain]; + debug = source->debug; + verbose = source->verbose; + inspect = source->inspect; + optimize = source->optimize; + nosite = source->nosite; + tabs = source->tabs; + others = [source->others retain]; + with_terminal = source->with_terminal; + + origsource = [source retain]; + return self; +} + +- (void)saveDefaults +{ + [origsource updateFromSource: self]; +} + +- (void)updateFromSource: (id <FileSettingsSource>)source +{ + interpreter = [[source interpreter] retain]; + debug = [source debug]; + verbose = [source verbose]; + inspect = [source inspect]; + optimize = [source optimize]; + nosite = [source nosite]; + tabs = [source tabs]; + others = [[source others] retain]; + with_terminal = [source with_terminal]; + if (!origsource) { + NSUserDefaults *defaults; + NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys: + interpreter, @"interpreter", + [NSNumber numberWithBool: debug], @"debug", + [NSNumber numberWithBool: verbose], @"verbose", + [NSNumber numberWithBool: inspect], @"inspect", + [NSNumber numberWithBool: optimize], @"optimize", + [NSNumber numberWithBool: nosite], @"nosite", + [NSNumber numberWithBool: nosite], @"nosite", + others, @"others", + [NSNumber numberWithBool: with_terminal], @"with_terminal", + nil]; + defaults = [NSUserDefaults standardUserDefaults]; + [defaults setObject: dict forKey: prefskey]; + } +} + +- (void)updateFromUserDefaults: (NSString *)filetype +{ + NSUserDefaults *defaults; + NSDictionary *dict; + id value; + + prefskey = [filetype retain]; + defaults = [NSUserDefaults standardUserDefaults]; + dict = [defaults dictionaryForKey: filetype]; + if (!dict) + return; + value = [dict objectForKey: @"interpreter"]; + if (value) interpreter = [value retain]; + value = [dict objectForKey: @"debug"]; + if (value) debug = [value boolValue]; + value = [dict objectForKey: @"verbose"]; + if (value) verbose = [value boolValue]; + value = [dict objectForKey: @"inspect"]; + if (value) inspect = [value boolValue]; + value = [dict objectForKey: @"optimize"]; + if (value) optimize = [value boolValue]; + value = [dict objectForKey: @"nosite"]; + if (value) nosite = [value boolValue]; + value = [dict objectForKey: @"nosite"]; + if (value) tabs = [value boolValue]; + value = [dict objectForKey: @"others"]; + if (value) others = [value retain]; + value = [dict objectForKey: @"with_terminal"]; + if (value) with_terminal = [value boolValue]; +} + +- (NSString *)commandLineForScript: (NSString *)script +{ + return [NSString stringWithFormat: + @"\"%@\"%s%s%s%s%s%s %@ \"%@\" %s", + interpreter, + debug?" -d":"", + verbose?" -v":"", + inspect?" -i":"", + optimize?" -O":"", + nosite?" -S":"", + tabs?" -t":"", + others, + script, + with_terminal? "" : " &"]; +} + +// FileSettingsSource protocol +- (NSString *) interpreter { return interpreter;}; +- (BOOL) debug { return debug;}; +- (BOOL) verbose { return verbose;}; +- (BOOL) inspect { return inspect;}; +- (BOOL) optimize { return optimize;}; +- (BOOL) nosite { return nosite;}; +- (BOOL) tabs { return tabs;}; +- (NSString *) others { return others;}; +- (BOOL) with_terminal { return with_terminal;}; + +@end |