|
|
#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
|