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