// // $Id$ // // SPAppleScriptSupport.m // sequel-pro // // Created by Stuart Connolly (stuconnolly.com) on October 14, 2010. // Copyright (c) 2010 Stuart Connolly. All rights reserved. // // Permission is hereby granted, free of charge, to any person // obtaining a copy of this software and associated documentation // files (the "Software"), to deal in the Software without // restriction, including without limitation the rights to use, // copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the // Software is furnished to do so, subject to the following // conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES // OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, // WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR // OTHER DEALINGS IN THE SOFTWARE. // // More info at #import "SPAppleScriptSupport.h" #import "SPWindowController.h" #import "SPAppController.h" #import "SPPrintController.h" #import "SPDatabaseDocument.h" #import "SPWindowManagement.h" @implementation SPAppController (SPAppleScriptSupport) /** * Is needed to interact with AppleScript for set/get internal SP variables */ - (BOOL)application:(NSApplication *)sender delegateHandlesKey:(NSString *)key { NSLog(@"Not yet implemented."); return NO; } /** * AppleScript call to get the available documents. */ - (NSArray *)orderedDocuments { NSMutableArray *orderedDocuments = [NSMutableArray array]; for (NSWindow *aWindow in [self orderedWindows]) { if ([[aWindow windowController] isMemberOfClass:[SPWindowController class]]) { [orderedDocuments addObjectsFromArray:[[aWindow windowController] documents]]; } } return orderedDocuments; } /** * AppleScript support for 'make new document'. * * TODO: following tab support this has been disabled - need to discuss reimplmenting vs syntax. */ - (void)insertInOrderedDocuments:(SPDatabaseDocument *)doc { [self newWindow:self]; // Set autoconnection if appropriate if ([[NSUserDefaults standardUserDefaults] boolForKey:SPAutoConnectToDefault]) { [[self frontDocument] connect]; } } /** * AppleScript call to get the available windows. */ - (NSArray *)orderedWindows { return [NSApp orderedWindows]; } /** * AppleScript handler to quit Sequel Pro * * This handler is required to allow termination via the Dock or AppleScript event after activating it using AppleScript */ - (id)handleQuitScriptCommand:(NSScriptCommand *)command { [NSApp terminate:self]; return nil; } /** * AppleScript open handler * * This handler is required to catch the 'open' command if no argument was passed which would cause a crash. */ - (id)handleOpenScriptCommand:(NSScriptCommand *)command { return nil; } /** * AppleScript print handler * * This handler prints the active view. */ - (id)handlePrintScriptCommand:(NSScriptCommand *)command { SPDatabaseDocument *frontDoc = [self frontDocument]; if (frontDoc && ![frontDoc isWorking] && ![[frontDoc connectionID] isEqualToString:@"_"]) { [frontDoc startPrintDocumentOperation]; } return nil; } @end