Move Mac/OSX/PythonLauncher one level up
diff --git a/Mac/PythonLauncher/MyAppDelegate.m b/Mac/PythonLauncher/MyAppDelegate.m
new file mode 100644
index 0000000..a5ba751
--- /dev/null
+++ b/Mac/PythonLauncher/MyAppDelegate.m
@@ -0,0 +1,96 @@
+#import "MyAppDelegate.h"
+#import "PreferencesWindowController.h"
+#import <Carbon/Carbon.h>
+#import <ApplicationServices/ApplicationServices.h>
+
+@implementation MyAppDelegate
+
+- (id)init
+{
+ self = [super init];
+ initial_action_done = NO;
+ should_terminate = NO;
+ return self;
+}
+
+- (IBAction)showPreferences:(id)sender
+{
+ [PreferencesWindowController getPreferencesWindow];
+}
+
+- (void)applicationDidFinishLaunching:(NSNotification *)notification
+{
+ // Test that the file mappings are correct
+ [self testFileTypeBinding];
+ // If we were opened because of a file drag or doubleclick
+ // we've set initial_action_done in shouldShowUI
+ // Otherwise we open a preferences dialog.
+ if (!initial_action_done) {
+ initial_action_done = YES;
+ [self showPreferences: self];
+ }
+}
+
+- (BOOL)shouldShowUI
+{
+ // if this call comes before applicationDidFinishLaunching: we
+ // should terminate immedeately after starting the script.
+ if (!initial_action_done)
+ should_terminate = YES;
+ initial_action_done = YES;
+ if( GetCurrentKeyModifiers() & optionKey )
+ return YES;
+ return NO;
+}
+
+- (BOOL)shouldTerminate
+{
+ return should_terminate;
+}
+
+- (BOOL)applicationShouldOpenUntitledFile:(NSApplication *)sender
+{
+ return NO;
+}
+
+- (void)testFileTypeBinding
+{
+ NSURL *ourUrl;
+ OSStatus err;
+ FSRef appRef;
+ NSURL *appUrl;
+ static NSString *extensions[] = { @"py", @"pyw", @"pyc", NULL};
+ NSString **ext_p;
+ int i;
+
+ if ([[NSUserDefaults standardUserDefaults] boolForKey: @"SkipFileBindingTest"])
+ return;
+ ourUrl = [NSURL fileURLWithPath: [[NSBundle mainBundle] bundlePath]];
+ for( ext_p = extensions; *ext_p; ext_p++ ) {
+ err = LSGetApplicationForInfo(
+ kLSUnknownType,
+ kLSUnknownCreator,
+ (CFStringRef)*ext_p,
+ kLSRolesViewer,
+ &appRef,
+ (CFURLRef *)&appUrl);
+ if (err || ![appUrl isEqual: ourUrl] ) {
+ i = NSRunAlertPanel(@"File type binding",
+ @"PythonLauncher is not the default application for all " \
+ @"Python script types. You should fix this with the " \
+ @"Finder's \"Get Info\" command.\n\n" \
+ @"See \"Changing the application that opens a file\" in " \
+ @"Mac Help for details.",
+ @"OK",
+ @"Don't show this warning again",
+ NULL);
+ if ( i == 0 ) { // Don't show again
+ [[NSUserDefaults standardUserDefaults]
+ setObject:@"YES" forKey:@"SkipFileBindingTest"];
+ }
+ return;
+ }
+ }
+}
+
+@end