├── .gitignore ├── File Templates └── Cocoa-Python │ ├── Pure Python file.xctemplate │ ├── TemplateInfo.plist │ └── class.py │ ├── Python NSDocument subclass.xctemplate │ ├── TemplateInfo.plist │ └── class.py │ ├── Python NSObject subclass.xctemplate │ ├── TemplateInfo.plist │ └── class.py │ ├── Python NSView subclass.xctemplate │ ├── TemplateInfo.plist │ └── class.py │ └── Python NSWindowController subclass.xctemplate │ ├── TemplateInfo.plist │ └── class.py ├── Project Templates └── Cocoa-Python │ ├── Cocoa-Python Application Base.xctemplate │ ├── Credits.rtf │ └── TemplateInfo.plist │ ├── Cocoa-Python Application.xctemplate │ ├── AppDelegate.py │ ├── MainMenuApp.xib │ ├── TemplateInfo.plist │ └── main.py │ ├── Cocoa-Python Core Data Application.xctemplate │ ├── AppDelegate.py │ ├── MainMenuApp.xib │ ├── TemplateInfo.plist │ ├── ___PACKAGENAMEASIDENTIFIER___.xcdatamodeld │ │ ├── .xccurrentversion │ │ └── ___PACKAGENAMEASIDENTIFIER___.xcdatamodel │ │ │ └── contents │ └── main.py │ ├── Cocoa-Python Core Data Document-based Application.xctemplate │ ├── CocoaAppDocument.py │ ├── CocoaAppDocument.xib │ ├── Document.xcdatamodeld │ │ ├── .xccurrentversion │ │ └── Document.xcdatamodel │ │ │ └── contents │ ├── MainMenuApp.xib │ ├── TemplateInfo.plist │ └── main.py │ └── Cocoa-Python Document-based Application.xctemplate │ ├── CocoaAppDocument.py │ ├── CocoaAppDocument.xib │ ├── MainMenuApp.xib │ ├── TemplateInfo.plist │ └── main.py └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /File Templates/Cocoa-Python/Pure Python file.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AllowedTypes 6 | 7 | public.python-script 8 | 9 | DefaultCompletionName 10 | MyPythonLibrary 11 | Description 12 | Template for a pure python file. 13 | Kind 14 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 15 | MainTemplateFile 16 | class.py 17 | Platforms 18 | 19 | com.apple.platform.macosx 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /File Templates/Cocoa-Python/Pure Python file.xctemplate/class.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # ___FILENAME___ 4 | # ___PROJECTNAME___ 5 | # 6 | # Created by ___FULLUSERNAME___ on ___DATE___. 7 | # Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | # 9 | 10 | #import os 11 | #import sys 12 | 13 | 14 | -------------------------------------------------------------------------------- /File Templates/Cocoa-Python/Python NSDocument subclass.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AllowedTypes 6 | 7 | public.python-script 8 | 9 | DefaultCompletionName 10 | MyDocument 11 | Description 12 | A Python subclass of NSDocument. Imports Foundation and AppKit. 13 | Kind 14 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 15 | MainTemplateFile 16 | class.py 17 | Platforms 18 | 19 | com.apple.platform.macosx 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /File Templates/Cocoa-Python/Python NSDocument subclass.xctemplate/class.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # ___FILENAME___ 4 | # ___PROJECTNAME___ 5 | # 6 | # Created by ___FULLUSERNAME___ on ___DATE___. 7 | # Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | # 9 | 10 | from objc import YES, NO, IBAction, IBOutlet 11 | from Foundation import * 12 | from AppKit import * 13 | 14 | class ___FILEBASENAMEASIDENTIFIER___(NSDocument): 15 | def windowNibName(self): 16 | # Implement this to return a nib to load OR 17 | # implement -makeWindowControllers to manually create your controllers. 18 | return u"___FILEBASENAMEASIDENTIFIER___" 19 | 20 | def windowControllerDidLoadNib_(self, aController): 21 | super(___FILEBASENAMEASIDENTIFIER___, self).windowControllerDidLoadNib_(aController) 22 | # Any UI customization that must be done after the NIB is loaded goes here. 23 | 24 | def dataOfType_error_(self, typeName, outError): 25 | # Insert code here to write your document to data of the specified type. If the given outError != NULL, 26 | # ensure that you set *outError when returning nil. You can also choose to override -fileWrapperOfType:error:, -writeToURL:ofType:error:, 27 | # or -writeToURL:ofType:forSaveOperation:originalContentsURL:error: instead. 28 | return None 29 | 30 | def readFromData_ofType_error_(self, data, typeName, outError): 31 | # Insert code here to read your document from the given data of the specified type. If the given outError != NULL, 32 | # ensure that you set *outError when returning NO. You can also choose to override -readFromFileWrapper:ofType:error: 33 | # or -readFromURL:ofType:error: instead. 34 | return NO 35 | -------------------------------------------------------------------------------- /File Templates/Cocoa-Python/Python NSObject subclass.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AllowedTypes 6 | 7 | public.python-script 8 | 9 | DefaultCompletionName 10 | MyObject 11 | Description 12 | A Python subclass of NSObject. Imports Foundation. 13 | Kind 14 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 15 | MainTemplateFile 16 | class.py 17 | Platforms 18 | 19 | com.apple.platform.macosx 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /File Templates/Cocoa-Python/Python NSObject subclass.xctemplate/class.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # ___FILENAME___ 4 | # ___PROJECTNAME___ 5 | # 6 | # Created by ___FULLUSERNAME___ on ___DATE___. 7 | # Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | # 9 | 10 | from Foundation import * 11 | 12 | class ___FILEBASENAMEASIDENTIFIER___(NSObject): 13 | pass 14 | -------------------------------------------------------------------------------- /File Templates/Cocoa-Python/Python NSView subclass.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AllowedTypes 6 | 7 | public.python-script 8 | 9 | DefaultCompletionName 10 | MyView 11 | Description 12 | A Python subclass of NSView. Imports Foundation and AppKit. 13 | Kind 14 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 15 | MainTemplateFile 16 | class.py 17 | Platforms 18 | 19 | com.apple.platform.macosx 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /File Templates/Cocoa-Python/Python NSView subclass.xctemplate/class.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # ___FILENAME___ 4 | # ___PROJECTNAME___ 5 | # 6 | # Created by ___FULLUSERNAME___ on ___DATE___. 7 | # Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | # 9 | 10 | from objc import YES, NO, IBAction, IBOutlet 11 | from Foundation import * 12 | from AppKit import * 13 | 14 | class ___FILEBASENAMEASIDENTIFIER___(NSView): 15 | def initWithFrame_(self, frame): 16 | self = super(___FILEBASENAMEASIDENTIFIER___, self).initWithFrame_(frame) 17 | if self: 18 | # initialization code here 19 | pass 20 | return self 21 | 22 | def drawRect_(self, rect): 23 | # drawing code here 24 | 25 | -------------------------------------------------------------------------------- /File Templates/Cocoa-Python/Python NSWindowController subclass.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | AllowedTypes 6 | 7 | public.python-script 8 | 9 | DefaultCompletionName 10 | MyWindowController 11 | Description 12 | A Python subclass of NSWindowController. Imports Foundation. 13 | Kind 14 | Xcode.IDEKit.TextSubstitutionFileTemplateKind 15 | MainTemplateFile 16 | class.py 17 | Platforms 18 | 19 | com.apple.platform.macosx 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /File Templates/Cocoa-Python/Python NSWindowController subclass.xctemplate/class.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # ___FILENAME___ 4 | # ___PROJECTNAME___ 5 | # 6 | # Created by ___FULLUSERNAME___ on ___DATE___. 7 | # Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | # 9 | 10 | from objc import YES, NO, IBAction, IBOutlet 11 | from Foundation import * 12 | from AppKit import * 13 | 14 | class ___FILEBASENAMEASIDENTIFIER___(NSWindowController): 15 | pass 16 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Application Base.xctemplate/Credits.rtf: -------------------------------------------------------------------------------- 1 | {\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;} 2 | {\colortbl;\red255\green255\blue255;} 3 | \paperw9840\paperh8400 4 | \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural 5 | 6 | \f0\b\fs24 \cf0 Engineering: 7 | \b0 \ 8 | Some people\ 9 | \ 10 | 11 | \b Human Interface Design: 12 | \b0 \ 13 | Some other people\ 14 | \ 15 | 16 | \b Testing: 17 | \b0 \ 18 | Hopefully not nobody\ 19 | \ 20 | 21 | \b Documentation: 22 | \b0 \ 23 | Whoever\ 24 | \ 25 | 26 | \b With special thanks to: 27 | \b0 \ 28 | Mom\ 29 | } 30 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Application Base.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Definitions 6 | 7 | en.lproj/Credits.rtf 8 | 9 | Path 10 | Credits.rtf 11 | Group 12 | Supporting Files 13 | 14 | main.m:imports:importFoundation 15 | #import <Foundation/Foundation.h> 16 | main.m:imports:importPython 17 | #import <Python.h> 18 | main.m:main:NSApplicationMain 19 | 20 | @autoreleasepool { 21 | 22 | NSBundle *mainBundle = [NSBundle mainBundle]; 23 | NSString *resourcePath = [mainBundle resourcePath]; 24 | NSArray *pythonPathArray = [NSArray arrayWithObjects: resourcePath, [resourcePath stringByAppendingPathComponent:@"PyObjC"], nil]; 25 | 26 | setenv("PYTHONPATH", [[pythonPathArray componentsJoinedByString:@":"] UTF8String], 1); 27 | 28 | NSArray *possibleMainExtensions = [NSArray arrayWithObjects: @"py", @"pyc", @"pyo", nil]; 29 | NSString *mainFilePath = nil; 30 | 31 | for (NSString *possibleMainExtension in possibleMainExtensions) { 32 | mainFilePath = [mainBundle pathForResource: @"main" ofType: possibleMainExtension]; 33 | if ( mainFilePath != nil ) break; 34 | } 35 | 36 | if ( !mainFilePath ) { 37 | [NSException raise: NSInternalInconsistencyException format: @"%s:%d main() Failed to find the Main.{py,pyc,pyo} file in the application wrapper's Resources directory.", __FILE__, __LINE__]; 38 | } 39 | 40 | Py_SetProgramName("/usr/bin/python"); 41 | Py_Initialize(); 42 | PySys_SetArgv(argc, (char **)argv); 43 | 44 | const char *mainFilePathPtr = [mainFilePath UTF8String]; 45 | FILE *mainFile = fopen(mainFilePathPtr, "r"); 46 | int result = PyRun_SimpleFile(mainFile, (char *)[[mainFilePath lastPathComponent] UTF8String]); 47 | 48 | if ( result != 0 ) { 49 | [NSException raise: NSInternalInconsistencyException 50 | format: @"%s:%d main() PyRun_SimpleFile failed with file '%@'. See console for errors.", __FILE__, __LINE__, mainFilePath]; 51 | } 52 | return result; 53 | } 54 | 55 | Info.plist:ApplicationCategory 56 | <key>LSApplicationCategoryType</key> 57 | <string>___VARIABLE_applicationCategory:XML___</string> 58 | 59 | 60 | Kind 61 | Xcode.Xcode3.ProjectTemplateUnitKind 62 | Ancestors 63 | 64 | com.apple.dt.unit.cocoaApplicationBase 65 | 66 | Identifier 67 | com.github.gregneagle.cocoaPythonApplicationBase 68 | Options 69 | 70 | 71 | NotPersisted 72 | 73 | Placeholder 74 | None 75 | Identifier 76 | applicationCategory 77 | Name 78 | App Store Category 79 | Description 80 | The category for your application in the Mac App Store 81 | SpecialType 82 | LSApplicationCategoryType 83 | Type 84 | popup 85 | Units 86 | 87 | 88 | 89 | 90 | Definitions 91 | 92 | Info.plist:ApplicationCategory 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | NotPersisted 101 | 102 | Identifier 103 | pythonVersion 104 | Name 105 | Python version 106 | Description 107 | Version of Python to use 108 | Type 109 | popup 110 | Default 111 | 2.6 112 | Values 113 | 114 | 2.6 115 | 2.7 116 | 117 | Units 118 | 119 | 2.6 120 | 121 | 122 | Definitions 123 | 124 | libpython2.6.dylib 125 | 126 | Path 127 | /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config/libpython2.6.dylib 128 | PathType 129 | Absolute 130 | Group 131 | SharedLibraries 132 | 133 | 134 | Nodes 135 | 136 | libpython2.6.dylib 137 | 138 | Project 139 | 140 | SharedSettings 141 | 142 | HEADER_SEARCH_PATHS 143 | 144 | $(inherited) 145 | /System/Library/Frameworks/Python.framework/Versions/2.6/include/python2.6 146 | 147 | LIBRARY_SEARCH_PATHS 148 | 149 | $(inherited) 150 | $(SYSTEM_LIBRARY_DIR)/Frameworks/Python.framework/Versions/2.6/lib/python2.6/config 151 | 152 | 153 | 154 | 155 | 156 | 2.7 157 | 158 | 159 | Definitions 160 | 161 | libpython2.7.dylib 162 | 163 | Path 164 | /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config/libpython2.7.dylib 165 | PathType 166 | Absolute 167 | Group 168 | SharedLibraries 169 | 170 | 171 | Nodes 172 | 173 | libpython2.7.dylib 174 | 175 | Project 176 | 177 | SharedSettings 178 | 179 | HEADER_SEARCH_PATHS 180 | 181 | $(inherited) 182 | /System/Library/Frameworks/Python.framework/Versions/2.7/include/python2.7 183 | 184 | LIBRARY_SEARCH_PATHS 185 | 186 | $(inherited) 187 | $(SYSTEM_LIBRARY_DIR)/Frameworks/Python.framework/Versions/2.7/lib/python2.7/config 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | Targets 197 | 198 | 199 | OtherFrameworks 200 | 201 | AppKit 202 | CoreData 203 | Foundation 204 | 205 | Frameworks 206 | 207 | Cocoa 208 | 209 | 210 | 211 | Nodes 212 | 213 | main.m:imports:importCocoa 214 | main.m:imports:importPython 215 | main.m:main:NSApplicationMain 216 | Info.plist:ApplicationCategory 217 | en.lproj/Credits.rtf 218 | 219 | Project 220 | 221 | 222 | 223 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Application.xctemplate/AppDelegate.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # AppDelegate.py 4 | # ___PROJECTNAME___ 5 | # 6 | # Created by ___FULLUSERNAME___ on ___DATE___. 7 | # Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | # 9 | 10 | from Foundation import * 11 | from AppKit import * 12 | 13 | class AppDelegate(NSObject): 14 | def applicationDidFinishLaunching_(self, sender): 15 | NSLog("Application did finish launching.") 16 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Application.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Kind 6 | Xcode.Xcode3.ProjectTemplateUnitKind 7 | Identifier 8 | com.googlecode.gneagle.cocoaPythonApplication 9 | Concrete 10 | 11 | Description 12 | This project builds a Cocoa-based application written in a mix of Python and Objective-C. 13 | SortOrder 14 | 1 15 | Ancestors 16 | 17 | com.github.gregneagle.cocoaPythonApplicationBase 18 | 19 | Definitions 20 | 21 | main.py 22 | 23 | Path 24 | main.py 25 | 26 | AppDelegate.py 27 | 28 | Path 29 | AppDelegate.py 30 | 31 | en.lproj/MainMenu.xib 32 | 33 | Path 34 | MainMenuApp.xib 35 | 36 | 37 | Nodes 38 | 39 | main.py 40 | AppDelegate.py 41 | en.lproj/MainMenu.xib 42 | 43 | 44 | 45 | 46 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Application.xctemplate/main.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # main.py 4 | # ___PROJECTNAME___ 5 | # 6 | # Created by ___FULLUSERNAME___ on ___DATE___. 7 | # Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | # 9 | 10 | # import modules required by application 11 | import objc 12 | import Foundation 13 | import AppKit 14 | 15 | from PyObjCTools import AppHelper 16 | 17 | # import modules containing classes required to start application and load MainMenu.nib 18 | import AppDelegate 19 | 20 | # pass control to AppKit 21 | AppHelper.runEventLoop() 22 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Core Data Application.xctemplate/AppDelegate.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # AppDelegate.py 4 | # ___PROJECTNAME___ 5 | # 6 | # Created by ___FULLUSERNAME___ on ___DATE___. 7 | # Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | # 9 | 10 | from objc import YES, NO, IBAction, IBOutlet 11 | from Foundation import * 12 | from AppKit import * 13 | from CoreData import * 14 | 15 | import os 16 | 17 | class AppDelegate(NSObject): 18 | window = IBOutlet() 19 | _managedObjectModel = None 20 | _persistentStoreCoordinator = None 21 | _managedObjectContext = None 22 | 23 | def applicationDidFinishLaunching_(self, sender): 24 | self.managedObjectContext() 25 | 26 | def applicationSupportFolder(self): 27 | paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES) 28 | basePath = paths[0] if (len(paths) > 0) else NSTemporaryDirectory() 29 | return os.path.join(basePath, "___PROJECTNAMEASIDENTIFIER___") 30 | 31 | def managedObjectModel(self): 32 | if self._managedObjectModel: return self._managedObjectModel 33 | 34 | self._managedObjectModel = NSManagedObjectModel.mergedModelFromBundles_(None) 35 | return self._managedObjectModel 36 | 37 | def persistentStoreCoordinator(self): 38 | if self._persistentStoreCoordinator: return self._persistentStoreCoordinator 39 | 40 | applicationSupportFolder = self.applicationSupportFolder() 41 | if not os.path.exists(applicationSupportFolder): 42 | os.mkdir(applicationSupportFolder) 43 | 44 | storePath = os.path.join(applicationSupportFolder, "___PROJECTNAMEASIDENTIFIER___.xml") 45 | url = NSURL.fileURLWithPath_(storePath) 46 | self._persistentStoreCoordinator = NSPersistentStoreCoordinator.alloc().initWithManagedObjectModel_(self.managedObjectModel()) 47 | 48 | success, error = self._persistentStoreCoordinator.addPersistentStoreWithType_configuration_URL_options_error_(NSXMLStoreType, None, url, None, None) 49 | if not success: 50 | NSApp().presentError_(error) 51 | 52 | return self._persistentStoreCoordinator 53 | 54 | def managedObjectContext(self): 55 | if self._managedObjectContext: return self._managedObjectContext 56 | 57 | coordinator = self.persistentStoreCoordinator() 58 | if coordinator: 59 | self._managedObjectContext = NSManagedObjectContext.alloc().init() 60 | self._managedObjectContext.setPersistentStoreCoordinator_(coordinator) 61 | 62 | return self._managedObjectContext 63 | 64 | def windowWillReturnUndoManager_(self, window): 65 | return self.managedObjectContext().undoManager() 66 | 67 | @IBAction 68 | def saveAction_(self, sender): 69 | success, error = self.managedObjectContext().save_(None) 70 | if not success: 71 | NSApp().presentError_(error) 72 | 73 | def applicationShouldTerminate_(self, sender): 74 | if not self._managedObjectContext: 75 | return NSTerminateNow 76 | 77 | if not self._managedObjectContext.commitEditing(): 78 | NSLog(u'Delegate unable to commit editing to terminate') 79 | return NSTerminateCancel 80 | 81 | if not self._managedObjectContext.hasChanges(): 82 | return NSTerminateNow 83 | 84 | success, error = self._managedObjectContext.save_(None) 85 | 86 | if success: 87 | return NSTerminateNow 88 | 89 | if NSApp().presentError_(error): 90 | return NSTerminateCancel 91 | else: 92 | question = NSLocalizedString( 93 | u"Could not save changes while quitting. Quit anyway?", 94 | u"Quit without saves error question message") 95 | info = NSLocalizedString( 96 | u"Quitting now will lose any changes you have made since the last successful save", 97 | u"Quit without saves error question info") 98 | quitButton = NSLocalizedString( 99 | "Quit anyway", "Quit anyway button title") 100 | cancelButton = NSLocalizedString( 101 | u"Cancel", u"Cancel button title") 102 | alert = NSAlert.alloc().init().autorelease() 103 | alert.setMessageText_(question) 104 | alert.setInformativeText_(info) 105 | alert.addButtonWithTitle_(quitButton) 106 | alert.addButtonWithTitle_(cancelButton) 107 | 108 | answer = alert.runModal() 109 | 110 | if answer == NSAlertAlternateReturn: 111 | return NSTerminateCancel 112 | 113 | return NSTerminateNow 114 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Core Data Application.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Kind 6 | Xcode.Xcode3.ProjectTemplateUnitKind 7 | Identifier 8 | com.googlecode.gneagle.cocoaPythonCoreDataApplication 9 | Concrete 10 | 11 | Description 12 | This project builds a Core Data Cocoa-based application written in a mix of Python and Objective-C. 13 | SortOrder 14 | 1 15 | Ancestors 16 | 17 | com.github.gregneagle.cocoaPythonApplicationBase 18 | 19 | Definitions 20 | 21 | ___PACKAGENAMEASIDENTIFIER___.xcdatamodeld 22 | 23 | Path 24 | ___PACKAGENAMEASIDENTIFIER___.xcdatamodeld 25 | 26 | main.py 27 | 28 | Path 29 | main.py 30 | 31 | AppDelegate.py 32 | 33 | Path 34 | AppDelegate.py 35 | 36 | en.lproj/MainMenu.xib 37 | 38 | Path 39 | MainMenuApp.xib 40 | 41 | 42 | Nodes 43 | 44 | ___PACKAGENAMEASIDENTIFIER___.xcdatamodeld 45 | main.py 46 | AppDelegate.py 47 | en.lproj/MainMenu.xib 48 | 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Core Data Application.xctemplate/___PACKAGENAMEASIDENTIFIER___.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Core Data Application.xctemplate/___PACKAGENAMEASIDENTIFIER___.xcdatamodeld/___PACKAGENAMEASIDENTIFIER___.xcdatamodel/contents: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Core Data Application.xctemplate/main.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # main.py 4 | # ___PROJECTNAME___ 5 | # 6 | # Created by ___FULLUSERNAME___ on ___DATE___. 7 | # Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | # 9 | 10 | # import modules required by application 11 | import objc 12 | import Foundation 13 | import AppKit 14 | import CoreData 15 | 16 | from PyObjCTools import AppHelper 17 | 18 | # import modules containing classes required to start application and load MainMenu.nib 19 | import AppDelegate 20 | 21 | # pass control to AppKit 22 | AppHelper.runEventLoop() 23 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Core Data Document-based Application.xctemplate/CocoaAppDocument.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # Document.py 4 | # ___PROJECTNAME___ 5 | # 6 | # Created by ___FULLUSERNAME___ on ___DATE___. 7 | # Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | # 9 | 10 | from Foundation import * 11 | from CoreData import * 12 | from AppKit import * 13 | 14 | class Document(NSPersistentDocument): 15 | def init(self): 16 | self = super(Document, self).init() 17 | # initialization code 18 | return self 19 | 20 | def windowNibName(self): 21 | return u"Document" 22 | 23 | def windowControllerDidLoadNib_(self, aController): 24 | super(Document, self).windowControllerDidLoadNib_(aController) 25 | # user interface preparation code 26 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Core Data Document-based Application.xctemplate/CocoaAppDocument.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1050 5 | 9A475 6 | 608 7 | 912.1 8 | 316.00 9 | 10 | YES 11 | 12 | 13 | YES 14 | com.apple.InterfaceBuilder.CocoaPlugin 15 | 16 | 17 | YES 18 | 19 | Document 20 | 21 | 22 | FirstResponder 23 | 24 | 25 | NSApplication 26 | 27 | 28 | 15 29 | 2 30 | {{78, 334}, {466, 466}} 31 | 1886912512 32 | Window 33 | NSWindow 34 | View 35 | {3.40282e+38, 3.40282e+38} 36 | {131.131, 86} 37 | 38 | 39 | 256 40 | 41 | YES 42 | 43 | 44 | 256 45 | {{98, 222}, {269, 22}} 46 | 47 | YES 48 | 49 | 67239424 50 | 138412032 51 | Your document contents here 52 | 53 | LucidaGrande 54 | 1.800000e+01 55 | 16 56 | 57 | 58 | 59 | 6 60 | System 61 | controlColor 62 | 63 | 3 64 | MC42NjY2NjY2OQA 65 | 66 | 67 | 68 | 6 69 | 70 | controlTextColor 71 | 72 | 3 73 | MAA 74 | 75 | 76 | 77 | 78 | 79 | {466, 466} 80 | 81 | {{0, 0}, {1440, 877}} 82 | {131.131, 108} 83 | 84 | 85 | 86 | 87 | 88 | YES 89 | 90 | 91 | delegate 92 | 93 | 94 | 95 | 17 96 | 97 | 98 | 99 | window 100 | 101 | 102 | 103 | 18 104 | 105 | 106 | 107 | 108 | YES 109 | 110 | 0 111 | 112 | YES 113 | 114 | 115 | 116 | 117 | 118 | -2 119 | 120 | 121 | RmlsZSdzIE93bmVyA 122 | 123 | 124 | -1 125 | 126 | 127 | First Responder 128 | 129 | 130 | 5 131 | 132 | 133 | YES 134 | 135 | 136 | 137 | 138 | 139 | 140 | 6 141 | 142 | 143 | YES 144 | 145 | 146 | 147 | 148 | 149 | 20 150 | 151 | 152 | YES 153 | 154 | 155 | 156 | 157 | 158 | 100020 159 | 160 | 161 | 162 | 163 | -3 164 | 165 | 166 | Application 167 | 168 | 169 | 170 | 171 | YES 172 | 173 | YES 174 | -1.IBPluginDependency 175 | -2.IBPluginDependency 176 | 20.IBPluginDependency 177 | 20.ImportedFromIB2 178 | 5.IBPluginDependency 179 | 5.ImportedFromIB2 180 | 5.editorWindowContentRectSynchronizationRect 181 | 5.windowTemplate.hasMaxSize 182 | 5.windowTemplate.hasMinSize 183 | 5.windowTemplate.maxSize 184 | 5.windowTemplate.minSize 185 | 6.IBPluginDependency 186 | 6.ImportedFromIB2 187 | 188 | 189 | YES 190 | 191 | 192 | 193 | 194 | 195 | 196 | {{78, 334}, {466, 466}} 197 | 198 | 199 | 200 | {131.131, 86} 201 | 202 | 203 | 204 | 205 | 206 | YES 207 | 208 | YES 209 | 210 | 211 | YES 212 | 213 | 214 | 215 | 216 | YES 217 | 218 | YES 219 | 220 | 221 | YES 222 | 223 | 224 | 225 | 100020 226 | 227 | 228 | 229 | YES 230 | 231 | Document 232 | NSPersistentDocument 233 | 234 | YES 235 | 236 | YES 237 | 238 | 239 | YES 240 | 241 | 242 | 243 | YES 244 | 245 | YES 246 | 247 | 248 | YES 249 | 250 | 251 | 252 | IBProjectSource 253 | Document.py 254 | 255 | 256 | 257 | FirstResponder 258 | 259 | 260 | YES 261 | 262 | YES 263 | 264 | 265 | YES 266 | 267 | 268 | 269 | YES 270 | 271 | YES 272 | 273 | 274 | YES 275 | 276 | 277 | 278 | IBUserSource 279 | 280 | 281 | 282 | 283 | NSPersistentDocument 284 | 285 | 286 | YES 287 | 288 | YES 289 | 290 | 291 | YES 292 | 293 | 294 | 295 | YES 296 | 297 | YES 298 | 299 | 300 | YES 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 0 311 | ../../CocoaDocApp.xcodeproj 312 | 313 | YnBsaXN0MDDUAAEAAgADAAQABQAGAAkAClgkdmVyc2lvblQkdG9wWSRhcmNoaXZlclgkb2JqZWN0cxIA 314 | AYag0QAHAAhdSUIub2JqZWN0ZGF0YYABXxAPTlNLZXllZEFyY2hpdmVyrxBKAAsADAAxADUANgA8AD0A 315 | QQBFAEoAUgBuAG8AcABxAHIAcwB0AH4AggCNAI4AngCfAKcAqACrALUAtgC3ALwAvgDDAMQAxwDLANEA 316 | 1QDWANgA2QDaAN0A3gDiAOcA6ADwAPMA9AD2AP4BBwEQAREBEgETARQBFQEYARsBJgExATIBMwE0ATUA 317 | sgE2ATcBOAE7AT4BQVUkbnVsbN8QEgANAA4ADwAQABEAEgATABQAFQAWABcAGAAZABoAGwAcAB0AHgAf 318 | ACAAIQAiACMAJAAlACYAJwAoACkAKgArACwALQAuAC8AMFZOU1Jvb3RWJGNsYXNzXU5TT2JqZWN0c0tl 319 | eXNfEA9OU0NsYXNzZXNWYWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlPaWRzVmFsdWVzXU5TQ29ubmVjdGlv 320 | bnNbTlNOYW1lc0tleXNbTlNGcmFtZXdvcmtdTlNDbGFzc2VzS2V5c1pOU09pZHNLZXlzXU5TTmFtZXNW 321 | YWx1ZXNfEBlOU0FjY2Vzc2liaWxpdHlDb25uZWN0b3JzXU5TRm9udE1hbmFnZXJfEBBOU1Zpc2libGVX 322 | aW5kb3dzXxAPTlNPYmplY3RzVmFsdWVzXxAXTlNBY2Nlc3NpYmlsaXR5T2lkc0tleXNZTlNOZXh0T2lk 323 | XE5TT2lkc1ZhbHVlc4ACgEmALoA7gEiACIAzgAWAOoA8gDSARoAAgAaAMoBHEgABhrWAPdIADgAyADMA 324 | NFtOU0NsYXNzTmFtZYAEgANfECN4Y1BST0pFQ1ROQU1FQVNJREVOVElGSUVSeGNEb2N1bWVudNIANwA4 325 | ADkAOlgkY2xhc3Nlc1okY2xhc3NuYW1logA6ADteTlNDdXN0b21PYmplY3RYTlNPYmplY3RfEBBJQkNv 326 | Y29hRnJhbWV3b3Jr0gAOAD4APwBAWk5TLm9iamVjdHOAB6DSADcAOABCAEOjAEMARAA7XE5TTXV0YWJs 327 | ZVNldFVOU1NldNIADgA+AEYAR4AkogBIAEmACYAs1AAOAEsATABNAE4AHwBQAFFdTlNEZXN0aW5hdGlv 328 | blhOU1NvdXJjZVdOU0xhYmVsgCuAAoAKgCreAFMADgBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEA 329 | YgBjAGQAZQBmAGcAaABiAGoAawBsAG1cTlNXaW5kb3dWaWV3XxAWTlNXaW5kb3dDb250ZW50TWF4U2l6 330 | ZVxOU1NjcmVlblJlY3RdTlNXaW5kb3dUaXRsZVlOU1dURmxhZ3NdTlNXaW5kb3dDbGFzc18QFk5TV2lu 331 | ZG93Q29udGVudE1pblNpemVcTlNXaW5kb3dSZWN0WU5TTWF4U2l6ZV8QD05TV2luZG93QmFja2luZ18Q 332 | EU5TV2luZG93U3R5bGVNYXNrWU5TTWluU2l6ZVtOU1ZpZXdDbGFzc4ARgCmAD4AngAwScHgAAIANgBCA 333 | C4APEAIQD4AogA5fEBd7ezc4LCAzMzR9LCB7NDY2LCA0NjZ9fVZXaW5kb3dYTlNXaW5kb3dUVmlld18Q 334 | GnszLjQwMjgyZSszOCwgMy40MDI4MmUrMzh9XXsxMzEuMTMxLCA4Nn3VAHUADgB2AHcAeAArAHoAewB8 335 | AH1fEA9OU05leHRSZXNwb25kZXJaTlNTdWJ2aWV3c1hOU3ZGbGFnc1tOU0ZyYW1lU2l6ZYAAgCaAEhEB 336 | AIAl0gAOAD4ARgCAgCShAIGAE9cAdQAOAIMAhAB3AIUAhgBgAIgAiQCKAHwAiwBgV05TRnJhbWVWTlND 337 | ZWxsWU5TRW5hYmxlZFtOU1N1cGVydmlld4ARgCOAFIAVCYARXxAWe3s5OCwgMjIyfSwgezI2OSwgMjJ9 338 | fdgAjwAOAJAAkQCSAJMAlACVAJYAlwCYAJkAmgCBAJwAnVtOU0NlbGxGbGFnc18QEU5TQmFja2dyb3Vu 339 | ZENvbG9yWk5TQ29udGVudHNZTlNTdXBwb3J0XU5TQ29udHJvbFZpZXdcTlNDZWxsRmxhZ3MyW05TVGV4 340 | dENvbG9yEgQB/gCAIoAagBaAF4ATEghAAACAH18QG1lvdXIgZG9jdW1lbnQgY29udGVudHMgaGVyZdQA 341 | DgCgAKEAogCjAKQApQCmVk5TU2l6ZVZOU05hbWVYTlNmRmxhZ3OAGSNAMgAAAAAAAIAYEBBcTHVjaWRh 342 | R3JhbmRl0gA3ADgAqQCqogCqADtWTlNGb2501QAOAKwArQCuAK8AsACxALIAswC0V05TQ29sb3JcTlND 343 | b2xvclNwYWNlW05TQ29sb3JOYW1lXU5TQ2F0YWxvZ05hbWWAHoAdEAaAHIAbVlN5c3RlbVxjb250cm9s 344 | Q29sb3LTAA4ArQC4ALAAugC7V05TV2hpdGWAHhADSzAuNjY2NjY2NjkA0gA3ADgAvQCsogCsADvVAA4A 345 | rACtAK4ArwCwAMAAsgDBALSAHoAhgCCAG18QEGNvbnRyb2xUZXh0Q29sb3LTAA4ArQC4ALAAugDGgB5C 346 | MADSADcAOADIAMmkAMkAygCEADtfEA9OU1RleHRGaWVsZENlbGxcTlNBY3Rpb25DZWxs0gA3ADgAzADN 347 | pQDNAM4AzwDQADtbTlNUZXh0RmllbGRZTlNDb250cm9sVk5TVmlld1tOU1Jlc3BvbmRlctIANwA4ANIA 348 | 06MA0wDUADteTlNNdXRhYmxlQXJyYXlXTlNBcnJheVp7NDY2LCA0NjZ90gA3ADgA1wDPowDPANAAO18Q 349 | FXt7MCwgMH0sIHsxNDQwLCA4Nzd9fV57MTMxLjEzMSwgMTA4fdIANwA4ANsA3KIA3AA7XxAQTlNXaW5k 350 | b3dUZW1wbGF0ZVhkZWxlZ2F0ZdIANwA4AN8A4KMA4ADhADtfEBROU05pYk91dGxldENvbm5lY3Rvcl5O 351 | U05pYkNvbm5lY3RvctQADgBLAEwATQBOAFAAHwDmgCuACoACgC1Wd2luZG930gAOAD4A6QDqgDGlAFAA 352 | igDtAGAAgYAKgBWAL4ARgBPSAA4AMgAzAPKABIAwXU5TQXBwbGljYXRpb27SADcAOAD1ANSiANQAO9IA 353 | DgA+AOkA+IAxpQAfAIEAHwBQAGCAAoATgAKACoAR0gAOAD4A6QEAgDGmAB8AUADtAGAAgQCKgAKACoAv 354 | gBGAE4AV0gAOAD4A6QEJgDGmAQoAZAEMAQ0BDgEPgDWADIA2gDeAOIA5XEZpbGUncyBPd25lcltBcHBs 355 | aWNhdGlvblxDb250ZW50IFZpZXdfEClTdGF0aWMgVGV4dCAoWW91ciBkb2N1bWVudCBjb250ZW50cyBo 356 | ZXJlKV8QLVRleHQgRmllbGQgQ2VsbCAoWW91ciBkb2N1bWVudCBjb250ZW50cyBoZXJlKdIADgA+AOkB 357 | F4AxoNIADgA+AOkBGoAxoNIADgA+AOkBHYAxqACKAEgAHwBQAO0AYACBAEmAFYAJgAKACoAvgBGAE4As 358 | 0gAOAD4A6QEogDGoASkBKgErASwBLQEuAS8BMIA+gD+AQIBBgEKAQ4BEgEUSAAGGtBAREAEQBRP///// 359 | /////RAUEBLSAA4APgBGATqAJKDSAA4APgDpAT2AMaDSAA4APgDpAUCAMaDSADcAOAFCAUOiAUMAO15O 360 | U0lCT2JqZWN0RGF0YQAIABkAIgAnADEAOgA/AEQAUgBUAGYA/QEDAU4BVQFcAWoBfAGYAaYBsgG+AcwB 361 | 1wHlAgECDwIiAjQCTgJYAmUCZwJpAmsCbQJvAnECcwJ1AncCeQJ7An0CfwKBAoMChQKKAowClQKhAqMC 362 | pQLLAtQC3QLoAu0C/AMFAxgDIQMsAy4DLwM4Az8DTANSA1sDXQNiA2QDZgN3A4UDjgOWA5gDmgOcA54D 363 | 1wPkA/0ECgQYBCIEMARJBFYEYARyBIYEkAScBJ4EoASiBKQEpgSrBK0ErwSxBLMEtQS3BLkEuwTVBNwE 364 | 5QTqBQcFFQUqBTwFRwVQBVwFXgVgBWIFZQVnBXAFcgV1BXcFlAWcBaMFrQW5BbsFvQW/BcEFwgXEBd0F 365 | /gYKBh4GKQYzBkEGTgZaBl8GYQZjBmUGZwZpBm4GcAaOBp8GpgatBrYGuAbBBsMGxQbSBtsG4AbnBvwH 366 | BAcRBx0HKwctBy8HMQczBzUHPAdJB1YHXgdgB2IHbgd3B3wHkQeTB5UHlweZB6wHuQe7B74HxwfQB+IH 367 | 7wf4CAMIDwgZCCAILAg1CDwISwhTCF4IZwhuCIYIlQieCKMItgi/CMgIzwjmCPUJBgkICQoJDAkOCRUJ 368 | HgkgCSsJLQkvCTEJMwk1CT4JQAlCCVAJWQleCWcJaQl0CXYJeAl6CXwJfgmHCYkJlgmYCZoJnAmeCaAJ 369 | ogmrCa0Jugm8Cb4JwAnCCcQJxgnTCd8J7AoYCkgKUQpTClQKXQpfCmAKaQprCnwKfgqACoIKhAqGCogK 370 | igqMCpUKlwqoCqoKrAquCrAKsgq0CrYKuAq9Cr8KwQrDCswKzgrQCtkK2wrcCuUK5wroCvEK8wr0Cv0L 371 | AgAAAAAAAAICAAAAAAAAAUQAAAAAAAAAAAAAAAAAAAsRA 372 | 373 | 374 | 375 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Core Data Document-based Application.xctemplate/Document.xcdatamodeld/.xccurrentversion: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | _XCCurrentVersionName 6 | ___VARIABLE_classPrefix___Document.xcdatamodel 7 | 8 | 9 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Core Data Document-based Application.xctemplate/Document.xcdatamodeld/Document.xcdatamodel/contents: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Core Data Document-based Application.xctemplate/MainMenuApp.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1050 5 | 9F33 6 | 670 7 | 949.34 8 | 352.00 9 | 10 | YES 11 | 12 | 13 | 14 | YES 15 | com.apple.InterfaceBuilder.CocoaPlugin 16 | 17 | 18 | YES 19 | 20 | 21 | NSApplication 22 | 23 | 24 | 25 | FirstResponder 26 | 27 | 28 | NSApplication 29 | 30 | 31 | MainMenu 32 | 33 | YES 34 | 35 | 36 | ___PROJECTNAME___ 37 | 38 | 1048576 39 | 2147483647 40 | 41 | NSImage 42 | NSMenuCheckmark 43 | 44 | 45 | NSImage 46 | NSMenuMixedState 47 | 48 | submenuAction: 49 | 50 | ___PROJECTNAME___ 51 | 52 | YES 53 | 54 | 55 | About ___PROJECTNAME___ 56 | 57 | 2147483647 58 | 59 | 60 | 61 | 62 | 63 | YES 64 | YES 65 | 66 | 67 | 1048576 68 | 2147483647 69 | 70 | 71 | 72 | 73 | 74 | UHJlZmVyZW5jZXPigKY 75 | , 76 | 1048576 77 | 2147483647 78 | 79 | 80 | 81 | 82 | 83 | YES 84 | YES 85 | 86 | 87 | 1048576 88 | 2147483647 89 | 90 | 91 | 92 | 93 | 94 | Services 95 | 96 | 1048576 97 | 2147483647 98 | 99 | 100 | submenuAction: 101 | 102 | 103 | Services 104 | 105 | 106 | YES 107 | 108 | _NSServicesMenu 109 | 110 | 111 | 112 | 113 | YES 114 | YES 115 | 116 | 117 | 1048576 118 | 2147483647 119 | 120 | 121 | 122 | 123 | 124 | Hide ___PROJECTNAME___ 125 | h 126 | 1048576 127 | 2147483647 128 | 129 | 130 | 131 | 132 | 133 | Hide Others 134 | h 135 | 1572864 136 | 2147483647 137 | 138 | 139 | 140 | 141 | 142 | Show All 143 | 144 | 1048576 145 | 2147483647 146 | 147 | 148 | 149 | 150 | 151 | YES 152 | YES 153 | 154 | 155 | 1048576 156 | 2147483647 157 | 158 | 159 | 160 | 161 | 162 | Quit ___PROJECTNAME___ 163 | q 164 | 1048576 165 | 2147483647 166 | 167 | 168 | 169 | 170 | _NSAppleMenu 171 | 172 | 173 | 174 | 175 | File 176 | 177 | 1048576 178 | 2147483647 179 | 180 | 181 | submenuAction: 182 | 183 | 184 | File 185 | 186 | 187 | YES 188 | 189 | 190 | New 191 | n 192 | 1048576 193 | 2147483647 194 | 195 | 196 | 197 | 198 | 199 | T3BlbuKApg 200 | o 201 | 1048576 202 | 2147483647 203 | 204 | 205 | 206 | 207 | 208 | Open Recent 209 | 210 | 1048576 211 | 2147483647 212 | 213 | 214 | submenuAction: 215 | 216 | 217 | Open Recent 218 | 219 | 220 | YES 221 | 222 | 223 | Clear Menu 224 | 225 | 1048576 226 | 2147483647 227 | 228 | 229 | 230 | 231 | _NSRecentDocumentsMenu 232 | 233 | 234 | 235 | 236 | YES 237 | YES 238 | 239 | 240 | 1048576 241 | 2147483647 242 | 243 | 244 | 245 | 246 | 247 | Close 248 | w 249 | 1048576 250 | 2147483647 251 | 252 | 253 | 254 | 255 | 256 | Save 257 | s 258 | 1048576 259 | 2147483647 260 | 261 | 262 | 263 | 264 | 265 | U2F2ZSBBc+KApg 266 | S 267 | 1048576 268 | 2147483647 269 | 270 | 271 | 272 | 273 | 274 | Revert to Saved 275 | 276 | 2147483647 277 | 278 | 279 | 280 | 281 | 282 | YES 283 | YES 284 | 285 | 286 | 1048576 287 | 2147483647 288 | 289 | 290 | 291 | 292 | 293 | UGFnZSBTZXR1cOKApg 294 | P 295 | 1048576 296 | 2147483647 297 | 298 | 299 | 300 | 301 | 302 | UHJpbnTigKY 303 | p 304 | 1048576 305 | 2147483647 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | Edit 315 | 316 | 1048576 317 | 2147483647 318 | 319 | 320 | submenuAction: 321 | 322 | 323 | Edit 324 | 325 | 326 | YES 327 | 328 | 329 | Undo 330 | z 331 | 1048576 332 | 2147483647 333 | 334 | 335 | 336 | 337 | 338 | Redo 339 | Z 340 | 1048576 341 | 2147483647 342 | 343 | 344 | 345 | 346 | 347 | YES 348 | YES 349 | 350 | 351 | 1048576 352 | 2147483647 353 | 354 | 355 | 356 | 357 | 358 | Cut 359 | x 360 | 1048576 361 | 2147483647 362 | 363 | 364 | 365 | 366 | 367 | Copy 368 | c 369 | 1048576 370 | 2147483647 371 | 372 | 373 | 374 | 375 | 376 | Paste 377 | v 378 | 1048576 379 | 2147483647 380 | 381 | 382 | 383 | 384 | 385 | Delete 386 | 387 | 1048576 388 | 2147483647 389 | 390 | 391 | 392 | 393 | 394 | Select All 395 | a 396 | 1048576 397 | 2147483647 398 | 399 | 400 | 401 | 402 | 403 | YES 404 | YES 405 | 406 | 407 | 1048576 408 | 2147483647 409 | 410 | 411 | 412 | 413 | 414 | Find 415 | 416 | 1048576 417 | 2147483647 418 | 419 | 420 | submenuAction: 421 | 422 | 423 | Find 424 | 425 | 426 | YES 427 | 428 | 429 | RmluZOKApg 430 | f 431 | 1048576 432 | 2147483647 433 | 434 | 435 | 1 436 | 437 | 438 | 439 | Find Next 440 | g 441 | 1048576 442 | 2147483647 443 | 444 | 445 | 2 446 | 447 | 448 | 449 | Find Previous 450 | G 451 | 1048576 452 | 2147483647 453 | 454 | 455 | 3 456 | 457 | 458 | 459 | Use Selection for Find 460 | e 461 | 1048576 462 | 2147483647 463 | 464 | 465 | 7 466 | 467 | 468 | 469 | Jump to Selection 470 | j 471 | 1048576 472 | 2147483647 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | Spelling and Grammar 482 | 483 | 1048576 484 | 2147483647 485 | 486 | 487 | submenuAction: 488 | 489 | Spelling and Grammar 490 | 491 | YES 492 | 493 | 494 | U2hvdyBTcGVsbGluZ+KApg 495 | : 496 | 1048576 497 | 2147483647 498 | 499 | 500 | 501 | 502 | 503 | Check Spelling 504 | ; 505 | 1048576 506 | 2147483647 507 | 508 | 509 | 510 | 511 | 512 | Check Spelling While Typing 513 | 514 | 1048576 515 | 2147483647 516 | 517 | 518 | 519 | 520 | 521 | Check Grammar With Spelling 522 | 523 | 1048576 524 | 2147483647 525 | 526 | 527 | 528 | 529 | 530 | 531 | 532 | 533 | Substitutions 534 | 535 | 1048576 536 | 2147483647 537 | 538 | 539 | submenuAction: 540 | 541 | Substitutions 542 | 543 | YES 544 | 545 | 546 | Smart Copy/Paste 547 | f 548 | 1048576 549 | 2147483647 550 | 551 | 552 | 553 | 554 | 555 | Smart Quotes 556 | g 557 | 1048576 558 | 2147483647 559 | 560 | 561 | 562 | 563 | 564 | Smart Links 565 | G 566 | 1048576 567 | 2147483647 568 | 569 | 570 | 571 | 572 | 573 | 574 | 575 | 576 | Speech 577 | 578 | 1048576 579 | 2147483647 580 | 581 | 582 | submenuAction: 583 | 584 | Speech 585 | 586 | YES 587 | 588 | 589 | Start Speaking 590 | 591 | 2147483647 592 | 593 | 594 | 595 | 596 | 597 | Stop Speaking 598 | 599 | 2147483647 600 | 601 | 602 | 603 | 604 | 605 | 606 | 607 | 608 | 609 | 610 | 611 | Format 612 | 613 | 2147483647 614 | 615 | 616 | submenuAction: 617 | 618 | Format 619 | 620 | YES 621 | 622 | 623 | Font 624 | 625 | 2147483647 626 | 627 | 628 | submenuAction: 629 | 630 | Font 631 | 632 | YES 633 | 634 | 635 | Show Fonts 636 | t 637 | 1048576 638 | 2147483647 639 | 640 | 641 | 642 | 643 | 644 | Bold 645 | b 646 | 1048576 647 | 2147483647 648 | 649 | 650 | 2 651 | 652 | 653 | 654 | Italic 655 | i 656 | 1048576 657 | 2147483647 658 | 659 | 660 | 1 661 | 662 | 663 | 664 | Underline 665 | u 666 | 1048576 667 | 2147483647 668 | 669 | 670 | 671 | 672 | 673 | YES 674 | YES 675 | 676 | 677 | 2147483647 678 | 679 | 680 | 681 | 682 | 683 | Bigger 684 | + 685 | 1048576 686 | 2147483647 687 | 688 | 689 | 3 690 | 691 | 692 | 693 | Smaller 694 | - 695 | 1048576 696 | 2147483647 697 | 698 | 699 | 4 700 | 701 | 702 | 703 | YES 704 | YES 705 | 706 | 707 | 2147483647 708 | 709 | 710 | 711 | 712 | 713 | Kern 714 | 715 | 2147483647 716 | 717 | 718 | submenuAction: 719 | 720 | Kern 721 | 722 | YES 723 | 724 | 725 | Use Default 726 | 727 | 2147483647 728 | 729 | 730 | 731 | 732 | 733 | Use None 734 | 735 | 2147483647 736 | 737 | 738 | 739 | 740 | 741 | Tighten 742 | 743 | 2147483647 744 | 745 | 746 | 747 | 748 | 749 | Loosen 750 | 751 | 2147483647 752 | 753 | 754 | 755 | 756 | 757 | 758 | 759 | 760 | Ligature 761 | 762 | 2147483647 763 | 764 | 765 | submenuAction: 766 | 767 | Ligature 768 | 769 | YES 770 | 771 | 772 | Use Default 773 | 774 | 2147483647 775 | 776 | 777 | 778 | 779 | 780 | Use None 781 | 782 | 2147483647 783 | 784 | 785 | 786 | 787 | 788 | Use All 789 | 790 | 2147483647 791 | 792 | 793 | 794 | 795 | 796 | 797 | 798 | 799 | Baseline 800 | 801 | 2147483647 802 | 803 | 804 | submenuAction: 805 | 806 | Baseline 807 | 808 | YES 809 | 810 | 811 | Use Default 812 | 813 | 2147483647 814 | 815 | 816 | 817 | 818 | 819 | Superscript 820 | 821 | 2147483647 822 | 823 | 824 | 825 | 826 | 827 | Subscript 828 | 829 | 2147483647 830 | 831 | 832 | 833 | 834 | 835 | Raise 836 | 837 | 2147483647 838 | 839 | 840 | 841 | 842 | 843 | Lower 844 | 845 | 2147483647 846 | 847 | 848 | 849 | 850 | 851 | 852 | 853 | 854 | YES 855 | YES 856 | 857 | 858 | 2147483647 859 | 860 | 861 | 862 | 863 | 864 | Show Colors 865 | C 866 | 1048576 867 | 2147483647 868 | 869 | 870 | 871 | 872 | 873 | YES 874 | YES 875 | 876 | 877 | 2147483647 878 | 879 | 880 | 881 | 882 | 883 | Copy Style 884 | c 885 | 1572864 886 | 2147483647 887 | 888 | 889 | 890 | 891 | 892 | Paste Style 893 | v 894 | 1572864 895 | 2147483647 896 | 897 | 898 | 899 | 900 | _NSFontMenu 901 | 902 | 903 | 904 | 905 | Text 906 | 907 | 2147483647 908 | 909 | 910 | submenuAction: 911 | 912 | Text 913 | 914 | YES 915 | 916 | 917 | Align Left 918 | { 919 | 1048576 920 | 2147483647 921 | 922 | 923 | 924 | 925 | 926 | Center 927 | | 928 | 1048576 929 | 2147483647 930 | 931 | 932 | 933 | 934 | 935 | Justify 936 | 937 | 2147483647 938 | 939 | 940 | 941 | 942 | 943 | Align Right 944 | } 945 | 1048576 946 | 2147483647 947 | 948 | 949 | 950 | 951 | 952 | YES 953 | YES 954 | 955 | 956 | 2147483647 957 | 958 | 959 | 960 | 961 | 962 | Show Ruler 963 | 964 | 2147483647 965 | 966 | 967 | 968 | 969 | 970 | Copy Ruler 971 | c 972 | 1310720 973 | 2147483647 974 | 975 | 976 | 977 | 978 | 979 | Paste Ruler 980 | v 981 | 1310720 982 | 2147483647 983 | 984 | 985 | 986 | 987 | 988 | 989 | 990 | 991 | 992 | 993 | 994 | View 995 | 996 | 1048576 997 | 2147483647 998 | 999 | 1000 | submenuAction: 1001 | 1002 | View 1003 | 1004 | YES 1005 | 1006 | 1007 | Show Toolbar 1008 | t 1009 | 1572864 1010 | 2147483647 1011 | 1012 | 1013 | 1014 | 1015 | 1016 | Q3VzdG9taXplIFRvb2xiYXLigKY 1017 | 1018 | 1048576 1019 | 2147483647 1020 | 1021 | 1022 | 1023 | 1024 | 1025 | 1026 | 1027 | 1028 | Window 1029 | 1030 | 1048576 1031 | 2147483647 1032 | 1033 | 1034 | submenuAction: 1035 | 1036 | Window 1037 | 1038 | YES 1039 | 1040 | 1041 | Minimize 1042 | m 1043 | 1048576 1044 | 2147483647 1045 | 1046 | 1047 | 1048 | 1049 | 1050 | Zoom 1051 | 1052 | 1048576 1053 | 2147483647 1054 | 1055 | 1056 | 1057 | 1058 | 1059 | YES 1060 | YES 1061 | 1062 | 1063 | 1048576 1064 | 2147483647 1065 | 1066 | 1067 | 1068 | 1069 | 1070 | Bring All to Front 1071 | 1072 | 1048576 1073 | 2147483647 1074 | 1075 | 1076 | 1077 | 1078 | _NSWindowsMenu 1079 | 1080 | 1081 | 1082 | 1083 | Help 1084 | 1085 | 1048576 1086 | 2147483647 1087 | 1088 | 1089 | submenuAction: 1090 | 1091 | 1092 | Help 1093 | 1094 | 1095 | YES 1096 | 1097 | 1098 | ___PROJECTNAME___ Help 1099 | ? 1100 | 1048576 1101 | 2147483647 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | _NSMainMenu 1110 | 1111 | 1112 | NSFontManager 1113 | 1114 | 1115 | 1116 | 1117 | YES 1118 | 1119 | 1120 | runPageLayout: 1121 | 1122 | 1123 | 1124 | 87 1125 | 1126 | 1127 | 1128 | showHelp: 1129 | 1130 | 1131 | 1132 | 122 1133 | 1134 | 1135 | 1136 | clearRecentDocuments: 1137 | 1138 | 1139 | 1140 | 127 1141 | 1142 | 1143 | 1144 | terminate: 1145 | 1146 | 1147 | 1148 | 139 1149 | 1150 | 1151 | 1152 | orderFrontStandardAboutPanel: 1153 | 1154 | 1155 | 1156 | 142 1157 | 1158 | 1159 | 1160 | hideOtherApplications: 1161 | 1162 | 1163 | 1164 | 146 1165 | 1166 | 1167 | 1168 | hide: 1169 | 1170 | 1171 | 1172 | 152 1173 | 1174 | 1175 | 1176 | unhideAllApplications: 1177 | 1178 | 1179 | 1180 | 153 1181 | 1182 | 1183 | 1184 | cut: 1185 | 1186 | 1187 | 1188 | 175 1189 | 1190 | 1191 | 1192 | paste: 1193 | 1194 | 1195 | 1196 | 176 1197 | 1198 | 1199 | 1200 | redo: 1201 | 1202 | 1203 | 1204 | 178 1205 | 1206 | 1207 | 1208 | selectAll: 1209 | 1210 | 1211 | 1212 | 179 1213 | 1214 | 1215 | 1216 | undo: 1217 | 1218 | 1219 | 1220 | 180 1221 | 1222 | 1223 | 1224 | copy: 1225 | 1226 | 1227 | 1228 | 181 1229 | 1230 | 1231 | 1232 | showGuessPanel: 1233 | 1234 | 1235 | 1236 | 188 1237 | 1238 | 1239 | 1240 | checkSpelling: 1241 | 1242 | 1243 | 1244 | 190 1245 | 1246 | 1247 | 1248 | toggleContinuousSpellChecking: 1249 | 1250 | 1251 | 1252 | 192 1253 | 1254 | 1255 | 1256 | performClose: 1257 | 1258 | 1259 | 1260 | 193 1261 | 1262 | 1263 | 1264 | newDocument: 1265 | 1266 | 1267 | 1268 | 194 1269 | 1270 | 1271 | 1272 | openDocument: 1273 | 1274 | 1275 | 1276 | 195 1277 | 1278 | 1279 | 1280 | saveDocument: 1281 | 1282 | 1283 | 1284 | 196 1285 | 1286 | 1287 | 1288 | saveDocumentAs: 1289 | 1290 | 1291 | 1292 | 197 1293 | 1294 | 1295 | 1296 | revertDocumentToSaved: 1297 | 1298 | 1299 | 1300 | 198 1301 | 1302 | 1303 | 1304 | printDocument: 1305 | 1306 | 1307 | 1308 | 200 1309 | 1310 | 1311 | 1312 | delete: 1313 | 1314 | 1315 | 1316 | 201 1317 | 1318 | 1319 | 1320 | performFindPanelAction: 1321 | 1322 | 1323 | 1324 | 205 1325 | 1326 | 1327 | 1328 | performFindPanelAction: 1329 | 1330 | 1331 | 1332 | 206 1333 | 1334 | 1335 | 1336 | performFindPanelAction: 1337 | 1338 | 1339 | 1340 | 207 1341 | 1342 | 1343 | 1344 | performFindPanelAction: 1345 | 1346 | 1347 | 1348 | 208 1349 | 1350 | 1351 | 1352 | centerSelectionInVisibleArea: 1353 | 1354 | 1355 | 1356 | 209 1357 | 1358 | 1359 | 1360 | performZoom: 1361 | 1362 | 1363 | 1364 | 245 1365 | 1366 | 1367 | 1368 | performMiniaturize: 1369 | 1370 | 1371 | 1372 | 246 1373 | 1374 | 1375 | 1376 | arrangeInFront: 1377 | 1378 | 1379 | 1380 | 247 1381 | 1382 | 1383 | 1384 | startSpeaking: 1385 | 1386 | 1387 | 1388 | 249 1389 | 1390 | 1391 | 1392 | stopSpeaking: 1393 | 1394 | 1395 | 1396 | 250 1397 | 1398 | 1399 | 1400 | runToolbarCustomizationPalette: 1401 | 1402 | 1403 | 1404 | 336 1405 | 1406 | 1407 | 1408 | toggleToolbarShown: 1409 | 1410 | 1411 | 1412 | 337 1413 | 1414 | 1415 | 1416 | addFontTrait: 1417 | 1418 | 1419 | 1420 | 386 1421 | 1422 | 1423 | 1424 | addFontTrait: 1425 | 1426 | 1427 | 1428 | 387 1429 | 1430 | 1431 | 1432 | modifyFont: 1433 | 1434 | 1435 | 1436 | 388 1437 | 1438 | 1439 | 1440 | orderFrontFontPanel: 1441 | 1442 | 1443 | 1444 | 389 1445 | 1446 | 1447 | 1448 | modifyFont: 1449 | 1450 | 1451 | 1452 | 390 1453 | 1454 | 1455 | 1456 | raiseBaseline: 1457 | 1458 | 1459 | 1460 | 391 1461 | 1462 | 1463 | 1464 | lowerBaseline: 1465 | 1466 | 1467 | 1468 | 392 1469 | 1470 | 1471 | 1472 | copyFont: 1473 | 1474 | 1475 | 1476 | 393 1477 | 1478 | 1479 | 1480 | subscript: 1481 | 1482 | 1483 | 1484 | 394 1485 | 1486 | 1487 | 1488 | superscript: 1489 | 1490 | 1491 | 1492 | 395 1493 | 1494 | 1495 | 1496 | tightenKerning: 1497 | 1498 | 1499 | 1500 | 396 1501 | 1502 | 1503 | 1504 | underline: 1505 | 1506 | 1507 | 1508 | 397 1509 | 1510 | 1511 | 1512 | orderFrontColorPanel: 1513 | 1514 | 1515 | 1516 | 398 1517 | 1518 | 1519 | 1520 | useAllLigatures: 1521 | 1522 | 1523 | 1524 | 399 1525 | 1526 | 1527 | 1528 | loosenKerning: 1529 | 1530 | 1531 | 1532 | 400 1533 | 1534 | 1535 | 1536 | pasteFont: 1537 | 1538 | 1539 | 1540 | 401 1541 | 1542 | 1543 | 1544 | unscript: 1545 | 1546 | 1547 | 1548 | 402 1549 | 1550 | 1551 | 1552 | useStandardKerning: 1553 | 1554 | 1555 | 1556 | 403 1557 | 1558 | 1559 | 1560 | useStandardLigatures: 1561 | 1562 | 1563 | 1564 | 404 1565 | 1566 | 1567 | 1568 | turnOffLigatures: 1569 | 1570 | 1571 | 1572 | 405 1573 | 1574 | 1575 | 1576 | turnOffKerning: 1577 | 1578 | 1579 | 1580 | 406 1581 | 1582 | 1583 | 1584 | alignLeft: 1585 | 1586 | 1587 | 1588 | 407 1589 | 1590 | 1591 | 1592 | alignJustified: 1593 | 1594 | 1595 | 1596 | 408 1597 | 1598 | 1599 | 1600 | copyRuler: 1601 | 1602 | 1603 | 1604 | 409 1605 | 1606 | 1607 | 1608 | alignCenter: 1609 | 1610 | 1611 | 1612 | 410 1613 | 1614 | 1615 | 1616 | toggleRuler: 1617 | 1618 | 1619 | 1620 | 411 1621 | 1622 | 1623 | 1624 | alignRight: 1625 | 1626 | 1627 | 1628 | 412 1629 | 1630 | 1631 | 1632 | pasteRuler: 1633 | 1634 | 1635 | 1636 | 413 1637 | 1638 | 1639 | 1640 | 1641 | YES 1642 | 1643 | 0 1644 | 1645 | YES 1646 | 1647 | 1648 | 1649 | 1650 | 1651 | -2 1652 | 1653 | 1654 | RmlsZSdzIE93bmVyA 1655 | 1656 | 1657 | -1 1658 | 1659 | 1660 | First Responder 1661 | 1662 | 1663 | 29 1664 | 1665 | 1666 | YES 1667 | 1668 | 1669 | 1670 | 1671 | 1672 | 1673 | 1674 | 1675 | 1676 | MainMenu 1677 | 1678 | 1679 | 56 1680 | 1681 | 1682 | YES 1683 | 1684 | 1685 | 1686 | 1687 | 1688 | 57 1689 | 1690 | 1691 | YES 1692 | 1693 | 1694 | 1695 | 1696 | 1697 | 1698 | 1699 | 1700 | 1701 | 1702 | 1703 | 1704 | 1705 | 1706 | 1707 | 58 1708 | 1709 | 1710 | 1711 | 1712 | 129 1713 | 1714 | 1715 | 1716 | 1717 | 131 1718 | 1719 | 1720 | YES 1721 | 1722 | 1723 | 1724 | 1725 | 1726 | 130 1727 | 1728 | 1729 | 1730 | 1731 | 134 1732 | 1733 | 1734 | 1735 | 1736 | 136 1737 | 1738 | 1739 | 1740 | 1741 | 143 1742 | 1743 | 1744 | 1745 | 1746 | 144 1747 | 1748 | 1749 | 1750 | 1751 | 145 1752 | 1753 | 1754 | 1755 | 1756 | 149 1757 | 1758 | 1759 | 1760 | 1761 | 150 1762 | 1763 | 1764 | 1765 | 1766 | 202 1767 | 1768 | 1769 | 1770 | 1771 | 83 1772 | 1773 | 1774 | YES 1775 | 1776 | 1777 | 1778 | 1779 | 1780 | 81 1781 | 1782 | 1783 | YES 1784 | 1785 | 1786 | 1787 | 1788 | 1789 | 1790 | 1791 | 1792 | 1793 | 1794 | 1795 | 1796 | 1797 | 1798 | 1799 | 72 1800 | 1801 | 1802 | 1803 | 1804 | 73 1805 | 1806 | 1807 | 1808 | 1809 | 74 1810 | 1811 | 1812 | 1813 | 1814 | 75 1815 | 1816 | 1817 | 1818 | 1819 | 77 1820 | 1821 | 1822 | 1823 | 1824 | 78 1825 | 1826 | 1827 | 1828 | 1829 | 79 1830 | 1831 | 1832 | 1833 | 1834 | 80 1835 | 1836 | 1837 | 1838 | 1839 | 82 1840 | 1841 | 1842 | 1843 | 1844 | 112 1845 | 1846 | 1847 | 1848 | 1849 | 124 1850 | 1851 | 1852 | YES 1853 | 1854 | 1855 | 1856 | 1857 | 1858 | 125 1859 | 1860 | 1861 | YES 1862 | 1863 | 1864 | 1865 | 1866 | 1867 | 126 1868 | 1869 | 1870 | 1871 | 1872 | 103 1873 | 1874 | 1875 | YES 1876 | 1877 | 1878 | 1879 | 1880 | 1881 | 106 1882 | 1883 | 1884 | YES 1885 | 1886 | 1887 | 1888 | 1889 | 1890 | 111 1891 | 1892 | 1893 | 1894 | 1895 | 163 1896 | 1897 | 1898 | YES 1899 | 1900 | 1901 | 1902 | 1903 | 1904 | 169 1905 | 1906 | 1907 | YES 1908 | 1909 | 1910 | 1911 | 1912 | 1913 | 1914 | 1915 | 1916 | 1917 | 1918 | 1919 | 1920 | 1921 | 1922 | 1923 | 1924 | 1925 | 156 1926 | 1927 | 1928 | 1929 | 1930 | 157 1931 | 1932 | 1933 | 1934 | 1935 | 158 1936 | 1937 | 1938 | 1939 | 1940 | 160 1941 | 1942 | 1943 | 1944 | 1945 | 164 1946 | 1947 | 1948 | 1949 | 1950 | 168 1951 | 1952 | 1953 | YES 1954 | 1955 | 1956 | 1957 | 1958 | 1959 | 159 1960 | 1961 | 1962 | YES 1963 | 1964 | 1965 | 1966 | 1967 | 1968 | 1969 | 1970 | 1971 | 1972 | 154 1973 | 1974 | 1975 | 1976 | 1977 | 155 1978 | 1979 | 1980 | 1981 | 1982 | 161 1983 | 1984 | 1985 | 1986 | 1987 | 162 1988 | 1989 | 1990 | 1991 | 1992 | 167 1993 | 1994 | 1995 | 1996 | 1997 | 171 1998 | 1999 | 2000 | 2001 | 2002 | 172 2003 | 2004 | 2005 | 2006 | 2007 | 173 2008 | 2009 | 2010 | 2011 | 2012 | 174 2013 | 2014 | 2015 | 2016 | 2017 | 184 2018 | 2019 | 2020 | YES 2021 | 2022 | 2023 | 2024 | 2025 | 2026 | 185 2027 | 2028 | 2029 | YES 2030 | 2031 | 2032 | 2033 | 2034 | 2035 | 2036 | 2037 | 2038 | 187 2039 | 2040 | 2041 | 2042 | 2043 | 189 2044 | 2045 | 2046 | 2047 | 2048 | 191 2049 | 2050 | 2051 | 2052 | 2053 | 228 2054 | 2055 | 2056 | 2057 | 2058 | 212 2059 | 2060 | 2061 | YES 2062 | 2063 | 2064 | 2065 | 2066 | 2067 | 213 2068 | 2069 | 2070 | YES 2071 | 2072 | 2073 | 2074 | 2075 | 2076 | 2077 | 2078 | 214 2079 | 2080 | 2081 | 2082 | 2083 | 215 2084 | 2085 | 2086 | 2087 | 2088 | 216 2089 | 2090 | 2091 | 2092 | 2093 | 220 2094 | 2095 | 2096 | YES 2097 | 2098 | 2099 | 2100 | 2101 | 2102 | 221 2103 | 2104 | 2105 | YES 2106 | 2107 | 2108 | 2109 | 2110 | 2111 | 2112 | 222 2113 | 2114 | 2115 | 2116 | 2117 | 224 2118 | 2119 | 2120 | 2121 | 2122 | 239 2123 | 2124 | 2125 | YES 2126 | 2127 | 2128 | 2129 | 2130 | 2131 | 240 2132 | 2133 | 2134 | YES 2135 | 2136 | 2137 | 2138 | 2139 | 2140 | 2141 | 2142 | 2143 | 241 2144 | 2145 | 2146 | 2147 | 2148 | 242 2149 | 2150 | 2151 | 2152 | 2153 | 243 2154 | 2155 | 2156 | 2157 | 2158 | 244 2159 | 2160 | 2161 | 2162 | 2163 | 330 2164 | 2165 | 2166 | YES 2167 | 2168 | 2169 | 2170 | 2171 | 2172 | 331 2173 | 2174 | 2175 | YES 2176 | 2177 | 2178 | 2179 | 2180 | 2181 | 2182 | 334 2183 | 2184 | 2185 | 2186 | 2187 | 335 2188 | 2189 | 2190 | 2191 | 2192 | -3 2193 | 2194 | 2195 | Application 2196 | 2197 | 2198 | 340 2199 | 2200 | 2201 | YES 2202 | 2203 | 2204 | 2205 | 2206 | 2207 | 341 2208 | 2209 | 2210 | YES 2211 | 2212 | 2213 | 2214 | 2215 | 2216 | 2217 | 342 2218 | 2219 | 2220 | YES 2221 | 2222 | 2223 | 2224 | 2225 | 2226 | 343 2227 | 2228 | 2229 | YES 2230 | 2231 | 2232 | 2233 | 2234 | 2235 | 344 2236 | 2237 | 2238 | YES 2239 | 2240 | 2241 | 2242 | 2243 | 2244 | 2245 | 2246 | 2247 | 2248 | 2249 | 2250 | 2251 | 345 2252 | 2253 | 2254 | 2255 | 2256 | 346 2257 | 2258 | 2259 | 2260 | 2261 | 347 2262 | 2263 | 2264 | 2265 | 2266 | 348 2267 | 2268 | 2269 | 2270 | 2271 | 349 2272 | 2273 | 2274 | 2275 | 2276 | 350 2277 | 2278 | 2279 | 2280 | 2281 | 351 2282 | 2283 | 2284 | 2285 | 2286 | 352 2287 | 2288 | 2289 | 2290 | 2291 | 353 2292 | 2293 | 2294 | YES 2295 | 2296 | 2297 | 2298 | 2299 | 2300 | 2301 | 2302 | 2303 | 2304 | 2305 | 2306 | 2307 | 2308 | 2309 | 2310 | 2311 | 2312 | 2313 | 2314 | 2315 | 354 2316 | 2317 | 2318 | 2319 | 2320 | 355 2321 | 2322 | 2323 | 2324 | 2325 | 356 2326 | 2327 | 2328 | 2329 | 2330 | 357 2331 | 2332 | 2333 | 2334 | 2335 | 358 2336 | 2337 | 2338 | 2339 | 2340 | 359 2341 | 2342 | 2343 | 2344 | 2345 | 360 2346 | 2347 | 2348 | 2349 | 2350 | 361 2351 | 2352 | 2353 | 2354 | 2355 | 362 2356 | 2357 | 2358 | YES 2359 | 2360 | 2361 | 2362 | 2363 | 2364 | 363 2365 | 2366 | 2367 | YES 2368 | 2369 | 2370 | 2371 | 2372 | 2373 | 364 2374 | 2375 | 2376 | YES 2377 | 2378 | 2379 | 2380 | 2381 | 2382 | 365 2383 | 2384 | 2385 | 2386 | 2387 | 366 2388 | 2389 | 2390 | 2391 | 2392 | 367 2393 | 2394 | 2395 | 2396 | 2397 | 368 2398 | 2399 | 2400 | 2401 | 2402 | 369 2403 | 2404 | 2405 | 2406 | 2407 | 370 2408 | 2409 | 2410 | YES 2411 | 2412 | 2413 | 2414 | 2415 | 2416 | 2417 | 2418 | 2419 | 2420 | 371 2421 | 2422 | 2423 | 2424 | 2425 | 372 2426 | 2427 | 2428 | 2429 | 2430 | 373 2431 | 2432 | 2433 | 2434 | 2435 | 374 2436 | 2437 | 2438 | 2439 | 2440 | 375 2441 | 2442 | 2443 | 2444 | 2445 | 376 2446 | 2447 | 2448 | YES 2449 | 2450 | 2451 | 2452 | 2453 | 2454 | 2455 | 2456 | 377 2457 | 2458 | 2459 | 2460 | 2461 | 378 2462 | 2463 | 2464 | 2465 | 2466 | 379 2467 | 2468 | 2469 | 2470 | 2471 | 380 2472 | 2473 | 2474 | YES 2475 | 2476 | 2477 | 2478 | 2479 | 2480 | 2481 | 2482 | 2483 | 381 2484 | 2485 | 2486 | 2487 | 2488 | 382 2489 | 2490 | 2491 | 2492 | 2493 | 383 2494 | 2495 | 2496 | 2497 | 2498 | 384 2499 | 2500 | 2501 | 2502 | 2503 | 385 2504 | 2505 | 2506 | 2507 | 2508 | 2509 | 2510 | YES 2511 | 2512 | YES 2513 | -1.IBPluginDependency 2514 | -2.IBPluginDependency 2515 | 103.IBPluginDependency 2516 | 103.ImportedFromIB2 2517 | 106.IBPluginDependency 2518 | 106.ImportedFromIB2 2519 | 111.IBPluginDependency 2520 | 111.ImportedFromIB2 2521 | 112.IBPluginDependency 2522 | 112.ImportedFromIB2 2523 | 124.IBPluginDependency 2524 | 124.ImportedFromIB2 2525 | 125.IBPluginDependency 2526 | 125.ImportedFromIB2 2527 | 126.IBPluginDependency 2528 | 126.ImportedFromIB2 2529 | 129.IBPluginDependency 2530 | 129.ImportedFromIB2 2531 | 130.IBPluginDependency 2532 | 130.ImportedFromIB2 2533 | 131.IBPluginDependency 2534 | 131.ImportedFromIB2 2535 | 134.IBPluginDependency 2536 | 134.ImportedFromIB2 2537 | 136.IBPluginDependency 2538 | 136.ImportedFromIB2 2539 | 143.IBPluginDependency 2540 | 143.ImportedFromIB2 2541 | 144.IBPluginDependency 2542 | 144.ImportedFromIB2 2543 | 145.IBPluginDependency 2544 | 145.ImportedFromIB2 2545 | 149.IBPluginDependency 2546 | 149.ImportedFromIB2 2547 | 150.IBPluginDependency 2548 | 150.ImportedFromIB2 2549 | 154.IBPluginDependency 2550 | 154.ImportedFromIB2 2551 | 155.IBPluginDependency 2552 | 155.ImportedFromIB2 2553 | 156.IBPluginDependency 2554 | 156.ImportedFromIB2 2555 | 157.IBPluginDependency 2556 | 157.ImportedFromIB2 2557 | 158.IBPluginDependency 2558 | 158.ImportedFromIB2 2559 | 159.IBPluginDependency 2560 | 159.ImportedFromIB2 2561 | 160.IBPluginDependency 2562 | 160.ImportedFromIB2 2563 | 161.IBPluginDependency 2564 | 161.ImportedFromIB2 2565 | 162.IBPluginDependency 2566 | 162.ImportedFromIB2 2567 | 163.IBPluginDependency 2568 | 163.ImportedFromIB2 2569 | 164.IBPluginDependency 2570 | 164.ImportedFromIB2 2571 | 167.IBPluginDependency 2572 | 167.ImportedFromIB2 2573 | 168.IBPluginDependency 2574 | 168.ImportedFromIB2 2575 | 169.IBPluginDependency 2576 | 169.ImportedFromIB2 2577 | 171.IBPluginDependency 2578 | 171.ImportedFromIB2 2579 | 172.IBPluginDependency 2580 | 172.ImportedFromIB2 2581 | 173.IBPluginDependency 2582 | 173.ImportedFromIB2 2583 | 174.IBPluginDependency 2584 | 174.ImportedFromIB2 2585 | 184.IBPluginDependency 2586 | 184.ImportedFromIB2 2587 | 185.IBPluginDependency 2588 | 185.ImportedFromIB2 2589 | 187.IBPluginDependency 2590 | 187.ImportedFromIB2 2591 | 189.IBPluginDependency 2592 | 189.ImportedFromIB2 2593 | 191.IBPluginDependency 2594 | 191.ImportedFromIB2 2595 | 202.IBPluginDependency 2596 | 202.ImportedFromIB2 2597 | 212.IBPluginDependency 2598 | 212.ImportedFromIB2 2599 | 213.IBPluginDependency 2600 | 213.ImportedFromIB2 2601 | 214.IBPluginDependency 2602 | 214.ImportedFromIB2 2603 | 215.IBPluginDependency 2604 | 215.ImportedFromIB2 2605 | 216.IBPluginDependency 2606 | 216.ImportedFromIB2 2607 | 220.IBPluginDependency 2608 | 220.ImportedFromIB2 2609 | 221.IBPluginDependency 2610 | 221.ImportedFromIB2 2611 | 222.IBPluginDependency 2612 | 222.ImportedFromIB2 2613 | 224.IBPluginDependency 2614 | 224.ImportedFromIB2 2615 | 228.IBPluginDependency 2616 | 228.ImportedFromIB2 2617 | 239.IBPluginDependency 2618 | 239.ImportedFromIB2 2619 | 240.IBPluginDependency 2620 | 240.ImportedFromIB2 2621 | 241.IBPluginDependency 2622 | 241.ImportedFromIB2 2623 | 242.IBPluginDependency 2624 | 242.ImportedFromIB2 2625 | 243.IBPluginDependency 2626 | 243.ImportedFromIB2 2627 | 244.IBPluginDependency 2628 | 244.ImportedFromIB2 2629 | 29.IBEditorWindowLastContentRect 2630 | 29.IBPluginDependency 2631 | 29.ImportedFromIB2 2632 | 330.IBPluginDependency 2633 | 330.ImportedFromIB2 2634 | 331.IBPluginDependency 2635 | 331.ImportedFromIB2 2636 | 334.IBPluginDependency 2637 | 334.ImportedFromIB2 2638 | 335.IBPluginDependency 2639 | 335.ImportedFromIB2 2640 | 340.IBPluginDependency 2641 | 341.IBPluginDependency 2642 | 342.IBPluginDependency 2643 | 343.IBPluginDependency 2644 | 344.IBPluginDependency 2645 | 345.IBPluginDependency 2646 | 346.IBPluginDependency 2647 | 347.IBPluginDependency 2648 | 348.IBPluginDependency 2649 | 349.IBPluginDependency 2650 | 350.IBPluginDependency 2651 | 351.IBPluginDependency 2652 | 352.IBPluginDependency 2653 | 353.IBPluginDependency 2654 | 354.IBPluginDependency 2655 | 355.IBPluginDependency 2656 | 356.IBPluginDependency 2657 | 357.IBPluginDependency 2658 | 358.IBPluginDependency 2659 | 359.IBPluginDependency 2660 | 360.IBPluginDependency 2661 | 361.IBPluginDependency 2662 | 362.IBPluginDependency 2663 | 363.IBPluginDependency 2664 | 364.IBPluginDependency 2665 | 365.IBPluginDependency 2666 | 366.IBPluginDependency 2667 | 367.IBPluginDependency 2668 | 368.IBPluginDependency 2669 | 369.IBPluginDependency 2670 | 370.IBPluginDependency 2671 | 371.IBPluginDependency 2672 | 372.IBPluginDependency 2673 | 373.IBPluginDependency 2674 | 374.IBPluginDependency 2675 | 375.IBPluginDependency 2676 | 376.IBPluginDependency 2677 | 377.IBPluginDependency 2678 | 378.IBPluginDependency 2679 | 379.IBPluginDependency 2680 | 380.IBPluginDependency 2681 | 381.IBPluginDependency 2682 | 382.IBPluginDependency 2683 | 383.IBPluginDependency 2684 | 384.IBPluginDependency 2685 | 56.IBPluginDependency 2686 | 56.ImportedFromIB2 2687 | 57.IBPluginDependency 2688 | 57.ImportedFromIB2 2689 | 58.IBPluginDependency 2690 | 58.ImportedFromIB2 2691 | 72.IBPluginDependency 2692 | 72.ImportedFromIB2 2693 | 73.IBPluginDependency 2694 | 73.ImportedFromIB2 2695 | 74.IBPluginDependency 2696 | 74.ImportedFromIB2 2697 | 75.IBPluginDependency 2698 | 75.ImportedFromIB2 2699 | 77.IBPluginDependency 2700 | 77.ImportedFromIB2 2701 | 78.IBPluginDependency 2702 | 78.ImportedFromIB2 2703 | 79.IBPluginDependency 2704 | 79.ImportedFromIB2 2705 | 80.IBPluginDependency 2706 | 80.ImportedFromIB2 2707 | 81.IBPluginDependency 2708 | 81.ImportedFromIB2 2709 | 82.IBPluginDependency 2710 | 82.ImportedFromIB2 2711 | 83.IBPluginDependency 2712 | 83.ImportedFromIB2 2713 | 2714 | 2715 | YES 2716 | com.apple.InterfaceBuilder.CocoaPlugin 2717 | com.apple.InterfaceBuilder.CocoaPlugin 2718 | com.apple.InterfaceBuilder.CocoaPlugin 2719 | 2720 | com.apple.InterfaceBuilder.CocoaPlugin 2721 | 2722 | com.apple.InterfaceBuilder.CocoaPlugin 2723 | 2724 | com.apple.InterfaceBuilder.CocoaPlugin 2725 | 2726 | com.apple.InterfaceBuilder.CocoaPlugin 2727 | 2728 | com.apple.InterfaceBuilder.CocoaPlugin 2729 | 2730 | com.apple.InterfaceBuilder.CocoaPlugin 2731 | 2732 | com.apple.InterfaceBuilder.CocoaPlugin 2733 | 2734 | com.apple.InterfaceBuilder.CocoaPlugin 2735 | 2736 | com.apple.InterfaceBuilder.CocoaPlugin 2737 | 2738 | com.apple.InterfaceBuilder.CocoaPlugin 2739 | 2740 | com.apple.InterfaceBuilder.CocoaPlugin 2741 | 2742 | com.apple.InterfaceBuilder.CocoaPlugin 2743 | 2744 | com.apple.InterfaceBuilder.CocoaPlugin 2745 | 2746 | com.apple.InterfaceBuilder.CocoaPlugin 2747 | 2748 | com.apple.InterfaceBuilder.CocoaPlugin 2749 | 2750 | com.apple.InterfaceBuilder.CocoaPlugin 2751 | 2752 | com.apple.InterfaceBuilder.CocoaPlugin 2753 | 2754 | com.apple.InterfaceBuilder.CocoaPlugin 2755 | 2756 | com.apple.InterfaceBuilder.CocoaPlugin 2757 | 2758 | com.apple.InterfaceBuilder.CocoaPlugin 2759 | 2760 | com.apple.InterfaceBuilder.CocoaPlugin 2761 | 2762 | com.apple.InterfaceBuilder.CocoaPlugin 2763 | 2764 | com.apple.InterfaceBuilder.CocoaPlugin 2765 | 2766 | com.apple.InterfaceBuilder.CocoaPlugin 2767 | 2768 | com.apple.InterfaceBuilder.CocoaPlugin 2769 | 2770 | com.apple.InterfaceBuilder.CocoaPlugin 2771 | 2772 | com.apple.InterfaceBuilder.CocoaPlugin 2773 | 2774 | com.apple.InterfaceBuilder.CocoaPlugin 2775 | 2776 | com.apple.InterfaceBuilder.CocoaPlugin 2777 | 2778 | com.apple.InterfaceBuilder.CocoaPlugin 2779 | 2780 | com.apple.InterfaceBuilder.CocoaPlugin 2781 | 2782 | com.apple.InterfaceBuilder.CocoaPlugin 2783 | 2784 | com.apple.InterfaceBuilder.CocoaPlugin 2785 | 2786 | com.apple.InterfaceBuilder.CocoaPlugin 2787 | 2788 | com.apple.InterfaceBuilder.CocoaPlugin 2789 | 2790 | com.apple.InterfaceBuilder.CocoaPlugin 2791 | 2792 | com.apple.InterfaceBuilder.CocoaPlugin 2793 | 2794 | com.apple.InterfaceBuilder.CocoaPlugin 2795 | 2796 | com.apple.InterfaceBuilder.CocoaPlugin 2797 | 2798 | com.apple.InterfaceBuilder.CocoaPlugin 2799 | 2800 | com.apple.InterfaceBuilder.CocoaPlugin 2801 | 2802 | com.apple.InterfaceBuilder.CocoaPlugin 2803 | 2804 | com.apple.InterfaceBuilder.CocoaPlugin 2805 | 2806 | com.apple.InterfaceBuilder.CocoaPlugin 2807 | 2808 | com.apple.InterfaceBuilder.CocoaPlugin 2809 | 2810 | com.apple.InterfaceBuilder.CocoaPlugin 2811 | 2812 | com.apple.InterfaceBuilder.CocoaPlugin 2813 | 2814 | com.apple.InterfaceBuilder.CocoaPlugin 2815 | 2816 | com.apple.InterfaceBuilder.CocoaPlugin 2817 | 2818 | com.apple.InterfaceBuilder.CocoaPlugin 2819 | 2820 | com.apple.InterfaceBuilder.CocoaPlugin 2821 | 2822 | com.apple.InterfaceBuilder.CocoaPlugin 2823 | 2824 | com.apple.InterfaceBuilder.CocoaPlugin 2825 | 2826 | com.apple.InterfaceBuilder.CocoaPlugin 2827 | 2828 | com.apple.InterfaceBuilder.CocoaPlugin 2829 | 2830 | com.apple.InterfaceBuilder.CocoaPlugin 2831 | 2832 | {{448, 779}, {502, 20}} 2833 | com.apple.InterfaceBuilder.CocoaPlugin 2834 | 2835 | com.apple.InterfaceBuilder.CocoaPlugin 2836 | 2837 | com.apple.InterfaceBuilder.CocoaPlugin 2838 | 2839 | com.apple.InterfaceBuilder.CocoaPlugin 2840 | 2841 | com.apple.InterfaceBuilder.CocoaPlugin 2842 | 2843 | com.apple.InterfaceBuilder.CocoaPlugin 2844 | com.apple.InterfaceBuilder.CocoaPlugin 2845 | com.apple.InterfaceBuilder.CocoaPlugin 2846 | com.apple.InterfaceBuilder.CocoaPlugin 2847 | com.apple.InterfaceBuilder.CocoaPlugin 2848 | com.apple.InterfaceBuilder.CocoaPlugin 2849 | com.apple.InterfaceBuilder.CocoaPlugin 2850 | com.apple.InterfaceBuilder.CocoaPlugin 2851 | com.apple.InterfaceBuilder.CocoaPlugin 2852 | com.apple.InterfaceBuilder.CocoaPlugin 2853 | com.apple.InterfaceBuilder.CocoaPlugin 2854 | com.apple.InterfaceBuilder.CocoaPlugin 2855 | com.apple.InterfaceBuilder.CocoaPlugin 2856 | com.apple.InterfaceBuilder.CocoaPlugin 2857 | com.apple.InterfaceBuilder.CocoaPlugin 2858 | com.apple.InterfaceBuilder.CocoaPlugin 2859 | com.apple.InterfaceBuilder.CocoaPlugin 2860 | com.apple.InterfaceBuilder.CocoaPlugin 2861 | com.apple.InterfaceBuilder.CocoaPlugin 2862 | com.apple.InterfaceBuilder.CocoaPlugin 2863 | com.apple.InterfaceBuilder.CocoaPlugin 2864 | com.apple.InterfaceBuilder.CocoaPlugin 2865 | com.apple.InterfaceBuilder.CocoaPlugin 2866 | com.apple.InterfaceBuilder.CocoaPlugin 2867 | com.apple.InterfaceBuilder.CocoaPlugin 2868 | com.apple.InterfaceBuilder.CocoaPlugin 2869 | com.apple.InterfaceBuilder.CocoaPlugin 2870 | com.apple.InterfaceBuilder.CocoaPlugin 2871 | com.apple.InterfaceBuilder.CocoaPlugin 2872 | com.apple.InterfaceBuilder.CocoaPlugin 2873 | com.apple.InterfaceBuilder.CocoaPlugin 2874 | com.apple.InterfaceBuilder.CocoaPlugin 2875 | com.apple.InterfaceBuilder.CocoaPlugin 2876 | com.apple.InterfaceBuilder.CocoaPlugin 2877 | com.apple.InterfaceBuilder.CocoaPlugin 2878 | com.apple.InterfaceBuilder.CocoaPlugin 2879 | com.apple.InterfaceBuilder.CocoaPlugin 2880 | com.apple.InterfaceBuilder.CocoaPlugin 2881 | com.apple.InterfaceBuilder.CocoaPlugin 2882 | com.apple.InterfaceBuilder.CocoaPlugin 2883 | com.apple.InterfaceBuilder.CocoaPlugin 2884 | com.apple.InterfaceBuilder.CocoaPlugin 2885 | com.apple.InterfaceBuilder.CocoaPlugin 2886 | com.apple.InterfaceBuilder.CocoaPlugin 2887 | com.apple.InterfaceBuilder.CocoaPlugin 2888 | com.apple.InterfaceBuilder.CocoaPlugin 2889 | 2890 | com.apple.InterfaceBuilder.CocoaPlugin 2891 | 2892 | com.apple.InterfaceBuilder.CocoaPlugin 2893 | 2894 | com.apple.InterfaceBuilder.CocoaPlugin 2895 | 2896 | com.apple.InterfaceBuilder.CocoaPlugin 2897 | 2898 | com.apple.InterfaceBuilder.CocoaPlugin 2899 | 2900 | com.apple.InterfaceBuilder.CocoaPlugin 2901 | 2902 | com.apple.InterfaceBuilder.CocoaPlugin 2903 | 2904 | com.apple.InterfaceBuilder.CocoaPlugin 2905 | 2906 | com.apple.InterfaceBuilder.CocoaPlugin 2907 | 2908 | com.apple.InterfaceBuilder.CocoaPlugin 2909 | 2910 | com.apple.InterfaceBuilder.CocoaPlugin 2911 | 2912 | com.apple.InterfaceBuilder.CocoaPlugin 2913 | 2914 | com.apple.InterfaceBuilder.CocoaPlugin 2915 | 2916 | 2917 | 2918 | 2919 | YES 2920 | 2921 | YES 2922 | 2923 | 2924 | YES 2925 | 2926 | 2927 | 2928 | 2929 | YES 2930 | 2931 | YES 2932 | 2933 | 2934 | YES 2935 | 2936 | 2937 | 2938 | 413 2939 | 2940 | 2941 | 2942 | YES 2943 | 2944 | FirstResponder 2945 | NSObject 2946 | 2947 | IBUserSource 2948 | 2949 | 2950 | 2951 | 2952 | 2953 | 0 2954 | ../CocoaDocApp.xcodeproj 2955 | 3 2956 | 2957 | 2958 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Core Data Document-based Application.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Kind 6 | Xcode.Xcode3.ProjectTemplateUnitKind 7 | Identifier 8 | com.googlecode.gneagle.cocoaPythonCoreDataDocumentBasedApplication 9 | Concrete 10 | 11 | Description 12 | This project builds a Core Data Document-based application written in a mix of Python and Objective-C. 13 | SortOrder 14 | 1 15 | Ancestors 16 | 17 | com.github.gregneagle.cocoaPythonApplicationBase 18 | 19 | Definitions 20 | 21 | Info.plist:DocumentTypes 22 | <key>CFBundleDocumentTypes</key> 23 | <array> 24 | <dict> 25 | <key>CFBundleTypeExtensions</key> 26 | <array> 27 | <string>binary</string> 28 | </array> 29 | <key>CFBundleTypeMIMETypes</key> 30 | <array> 31 | <string>application/octet-stream</string> 32 | </array> 33 | <key>CFBundleTypeName</key> 34 | <string>Binary</string> 35 | <key>CFBundleTypeRole</key> 36 | <string>Editor</string> 37 | <key>LSTypeIsPackage</key> 38 | <false/> 39 | <key>NSDocumentClass</key> 40 | <string>Document</string> 41 | <key>NSPersistentStoreTypeKey</key> 42 | <string>Binary</string> 43 | </dict> 44 | <dict> 45 | <key>CFBundleTypeExtensions</key> 46 | <array> 47 | <string>sqlite</string> 48 | </array> 49 | <key>CFBundleTypeMIMETypes</key> 50 | <array> 51 | <string>application/octet-stream</string> 52 | </array> 53 | <key>CFBundleTypeName</key> 54 | <string>SQLite</string> 55 | <key>CFBundleTypeRole</key> 56 | <string>Editor</string> 57 | <key>LSTypeIsPackage</key> 58 | <false/> 59 | <key>NSDocumentClass</key> 60 | <string>Document</string> 61 | <key>NSPersistentStoreTypeKey</key> 62 | <string>SQLite</string> 63 | </dict> 64 | <dict> 65 | <key>CFBundleTypeExtensions</key> 66 | <array> 67 | <string>xml</string> 68 | </array> 69 | <key>CFBundleTypeIconFile</key> 70 | <string></string> 71 | <key>CFBundleTypeMIMETypes</key> 72 | <array> 73 | <string>text/xml</string> 74 | </array> 75 | <key>CFBundleTypeName</key> 76 | <string>XML</string> 77 | <key>CFBundleTypeOSTypes</key> 78 | <array> 79 | <string>????</string> 80 | </array> 81 | <key>CFBundleTypeRole</key> 82 | <string>Editor</string> 83 | <key>LSTypeIsPackage</key> 84 | <false/> 85 | <key>NSDocumentClass</key> 86 | <string>Document</string> 87 | <key>NSPersistentStoreTypeKey</key> 88 | <string>XML</string> 89 | </dict> 90 | </array> 91 | 92 | ___VARIABLE_classPrefix___Document.xcdatamodeld 93 | 94 | Path 95 | Document.xcdatamodeld 96 | 97 | main.py 98 | 99 | Path 100 | main.py 101 | 102 | Document.py 103 | 104 | Path 105 | CocoaAppDocument.py 106 | 107 | en.lproj/MainMenu.xib 108 | 109 | Path 110 | MainMenuApp.xib 111 | 112 | en.lproj/Document.xib 113 | 114 | Path 115 | CocoaAppDocument.xib 116 | 117 | 118 | Nodes 119 | 120 | Info.plist:DocumentTypes 121 | Document.xcdatamodeld 122 | main.py 123 | Document.py 124 | en.lproj/MainMenu.xib 125 | en.lproj/Document.xib 126 | 127 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Core Data Document-based Application.xctemplate/main.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # main.py 4 | # ___PROJECTNAME___ 5 | # 6 | # Created by ___FULLUSERNAME___ on ___DATE___. 7 | # Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | # 9 | 10 | # import modules required by application 11 | import objc 12 | import Foundation 13 | import AppKit 14 | import CoreData 15 | 16 | from PyObjCTools import AppHelper 17 | 18 | # import modules containing classes required to start application and load MainMenu.nib 19 | import Document 20 | 21 | # pass control to AppKit 22 | AppHelper.runEventLoop() 23 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Document-based Application.xctemplate/CocoaAppDocument.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # Document.py 4 | # ___PROJECTNAME___ 5 | # 6 | # Created by ___FULLUSERNAME___ on ___DATE___. 7 | # Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | # 9 | 10 | from Foundation import * 11 | from AppKit import * 12 | 13 | class Document(NSDocument): 14 | def init(self): 15 | self = super(Document, self).init() 16 | # initialization code 17 | return self 18 | 19 | def windowNibName(self): 20 | return u"Document" 21 | 22 | def windowControllerDidLoadNib_(self, aController): 23 | super(Document, self).windowControllerDidLoadNib_(aController) 24 | 25 | def dataOfType_error_(self, typeName, outError): 26 | return None, NSError.errorWithDomain_code_userInfo_(NSOSStatusErrorDomain, -4, None) # -4 is unimpErr from CarbonCore 27 | 28 | def readFromData_ofType_error_(self, data, typeName, outError): 29 | return NO, NSError.errorWithDomain_code_userInfo_(NSOSStatusErrorDomain, -4, None) # -4 is unimpErr from CarbonCore 30 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Document-based Application.xctemplate/CocoaAppDocument.xib: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1050 5 | 9F33 6 | 672 7 | 949.34 8 | 352.00 9 | 10 | YES 11 | 12 | 13 | 14 | YES 15 | com.apple.InterfaceBuilder.CocoaPlugin 16 | 17 | 18 | YES 19 | 20 | Document 21 | 22 | 23 | FirstResponder 24 | 25 | 26 | 15 27 | 2 28 | {{201, 387}, {507, 413}} 29 | 1886912512 30 | Window 31 | NSWindow 32 | View 33 | {3.40282e+38, 3.40282e+38} 34 | {94, 86} 35 | 36 | 37 | 256 38 | 39 | YES 40 | 41 | 42 | 256 43 | {{119, 195}, {269, 22}} 44 | 45 | YES 46 | 47 | 67239424 48 | 138412032 49 | Your document contents here 50 | 51 | LucidaGrande 52 | 1.800000e+01 53 | 16 54 | 55 | 56 | 57 | 6 58 | System 59 | controlColor 60 | 61 | 3 62 | MC42NjY2NjY2OQA 63 | 64 | 65 | 66 | 6 67 | System 68 | controlTextColor 69 | 70 | 3 71 | MAA 72 | 73 | 74 | 75 | 76 | 77 | {507, 413} 78 | 79 | 80 | {{0, 0}, {1440, 878}} 81 | {94, 108} 82 | {3.40282e+38, 3.40282e+38} 83 | 84 | 85 | NSApplication 86 | 87 | 88 | 89 | 90 | YES 91 | 92 | 93 | delegate 94 | 95 | 96 | 97 | 17 98 | 99 | 100 | 101 | window 102 | 103 | 104 | 105 | 18 106 | 107 | 108 | 109 | 110 | YES 111 | 112 | 0 113 | 114 | YES 115 | 116 | 117 | 118 | 119 | 120 | -2 121 | 122 | 123 | RmlsZSdzIE93bmVyA 124 | 125 | 126 | -1 127 | 128 | 129 | First Responder 130 | 131 | 132 | 5 133 | 134 | 135 | YES 136 | 137 | 138 | 139 | Window 140 | 141 | 142 | 6 143 | 144 | 145 | YES 146 | 147 | 148 | 149 | 150 | 151 | 20 152 | 153 | 154 | YES 155 | 156 | 157 | 158 | 159 | 160 | 100020 161 | 162 | 163 | 164 | 165 | -3 166 | 167 | 168 | Application 169 | 170 | 171 | 172 | 173 | YES 174 | 175 | YES 176 | -1.IBPluginDependency 177 | -2.IBPluginDependency 178 | 20.IBPluginDependency 179 | 20.ImportedFromIB2 180 | 5.IBEditorWindowLastContentRect 181 | 5.IBPluginDependency 182 | 5.IBWindowTemplateEditedContentRect 183 | 5.ImportedFromIB2 184 | 5.editorWindowContentRectSynchronizationRect 185 | 5.windowTemplate.hasMinSize 186 | 5.windowTemplate.minSize 187 | 6.IBPluginDependency 188 | 6.ImportedFromIB2 189 | 190 | 191 | YES 192 | com.apple.InterfaceBuilder.CocoaPlugin 193 | com.apple.InterfaceBuilder.CocoaPlugin 194 | com.apple.InterfaceBuilder.CocoaPlugin 195 | 196 | {{54, 421}, {507, 413}} 197 | com.apple.InterfaceBuilder.CocoaPlugin 198 | {{54, 421}, {507, 413}} 199 | 200 | {{201, 387}, {507, 413}} 201 | 202 | {94, 86} 203 | com.apple.InterfaceBuilder.CocoaPlugin 204 | 205 | 206 | 207 | 208 | YES 209 | 210 | YES 211 | 212 | 213 | YES 214 | 215 | 216 | 217 | 218 | YES 219 | 220 | YES 221 | 222 | 223 | YES 224 | 225 | 226 | 227 | 100020 228 | 229 | 230 | 231 | YES 232 | 233 | Document 234 | NSDocument 235 | 236 | IBProjectSource 237 | Document.py 238 | 239 | 240 | 241 | 242 | 0 243 | ../CocoaDocApp.xcodeproj 244 | 3 245 | 246 | 247 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Document-based Application.xctemplate/TemplateInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Kind 6 | Xcode.Xcode3.ProjectTemplateUnitKind 7 | Identifier 8 | com.googlecode.gneagle.cocoaPythonDocumentBasedApplication 9 | Concrete 10 | 11 | Description 12 | This project builds a Cocoa-based application written in a mix of Python and Objective-C. 13 | SortOrder 14 | 1 15 | Ancestors 16 | 17 | com.github.gregneagle.cocoaPythonApplicationBase 18 | 19 | Definitions 20 | 21 | main.py 22 | 23 | Path 24 | main.py 25 | 26 | Document.py 27 | 28 | Path 29 | CocoaAppDocument.py 30 | 31 | en.lproj/MainMenu.xib 32 | 33 | Path 34 | MainMenuApp.xib 35 | 36 | en.lproj/Document.xib 37 | 38 | Path 39 | CocoaAppDocument.xib 40 | 41 | Info.plist:DocumentTypes 42 | <key>CFBundleDocumentTypes</key> 43 | <array> 44 | <dict> 45 | <key>CFBundleTypeExtensions</key> 46 | <array> 47 | <string>mydoc</string> 48 | </array> 49 | <key>CFBundleTypeIconFile</key> 50 | <string></string> 51 | <key>CFBundleTypeName</key> 52 | <string>DocumentType</string> 53 | <key>CFBundleTypeOSTypes</key> 54 | <array> 55 | <string>????</string> 56 | </array> 57 | <key>CFBundleTypeRole</key> 58 | <string>Editor</string> 59 | <key>NSDocumentClass</key> 60 | <string>Document</string> 61 | </dict> 62 | </array> 63 | 64 | 65 | Nodes 66 | 67 | main.py 68 | Document.py 69 | en.lproj/MainMenu.xib 70 | en.lproj/Document.xib 71 | Info.plist:DocumentTypes 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /Project Templates/Cocoa-Python/Cocoa-Python Document-based Application.xctemplate/main.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # 3 | # main.py 4 | # ___PROJECTNAME___ 5 | # 6 | # Created by ___FULLUSERNAME___ on ___DATE___. 7 | # Copyright (c) ___YEAR___ ___ORGANIZATIONNAME___. All rights reserved. 8 | # 9 | 10 | # import modules required by application 11 | import objc 12 | import Foundation 13 | import AppKit 14 | 15 | from PyObjCTools import AppHelper 16 | 17 | # import modules containing classes required to start application and load MainMenu.nib 18 | import Document 19 | 20 | # pass control to AppKit 21 | AppHelper.runEventLoop() 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | **Xcode 6 Cocoa-Python Templates** 2 | 3 | This is a set of File templates and Project templates for use with Xcode 6. These have been tested with Xcode 6.2 on Mavericks. 4 | 5 | Using the Xcode 3 templates here: http://svn.red-bean.com/pyobjc/trunk/pyobjc/pyobjc-xcode/ as a starting point, and also using the existing Xcode 4 templates as a reference, I ported the Xcode 3 templates to the Xcode 4 format. 6 | 7 | Xcode 5 brought some changes to using Python with Xcode, which you can read about here: https://developer.apple.com/library/mac/technotes/tn2328/_index.html 8 | 9 | This meant using the Xcode 4 Cocoa-Python templates with Xcode 5 required lots of manual tweaking before you could get a project to build. 10 | 11 | So the templates were updated for Xcode 5. 12 | 13 | But those templates had some issues with Xcode 6... 14 | 15 | So here we are. 16 | 17 | **How to use these** 18 | 19 | Either clone this repo or download the zip and expand it. Copy the File Templates and Project Templates folders to the following path in your home directory, creating any missing intermediate directories if needed: 20 | 21 | ~/Library/Developer/Xcode/Templates/ 22 | 23 | Launch Xcode 6. The File templates should be available from the template browser available when you choose File->New->File... -- they'll be listed under Mac OS X/Cocoa-Python. 24 | 25 | The Project templates should be available when creating a new project, also under Mac OS X/Cocoa-Python. 26 | 27 | When creating the project, you can choose to link to Python 2.6 or Python 2.7. Choose Python 2.6 if you want to build projects that will run under Snow Leopard; Python 2.7 was not available on OS X until Lion shipped. 28 | 29 | **Additional references** 30 | 31 | http://blog.boreal-kiss.net/2011/03/11/a-minimal-project-template-for-xcode-4/ 32 | 33 | http://red-glasses.com/index.php/tutorials/making-custom-templates-for-xcode-4-march-2011/ 34 | 35 | https://snipt.net/raw/b216c160f38e9b3c095222607739b21c/?nice 36 | 37 | https://github.com/NSBoilerplate/Xcode-Project-Templates/wiki/Creating-Xcode-4.x-Project-Templates 38 | 39 | http://www.learn-cocos2d.com/store/xcode4-template-documentation/ 40 | 41 | --------------------------------------------------------------------------------