From 19bc466215287c63e59e3de8739d386bb1547c18 Mon Sep 17 00:00:00 2001 From: zonble Date: Sun, 2 Oct 2011 18:59:46 +0800 Subject: [PATCH] Creates a installer using python. --- pyInstaller/English.lproj/InfoPlist.strings | Bin 0 -> 230 bytes pyInstaller/English.lproj/MainMenu.xib | 2852 +++++++++++++++++ pyInstaller/Info.plist | 30 + .../Installer.xcodeproj/project.pbxproj | 382 +++ pyInstaller/InstallerAppDelegate.py | 72 + pyInstaller/Installer_Prefix.pch | 3 + pyInstaller/main.m | 43 + pyInstaller/main.py | 11 + 8 files changed, 3393 insertions(+) create mode 100755 pyInstaller/English.lproj/InfoPlist.strings create mode 100755 pyInstaller/English.lproj/MainMenu.xib create mode 100755 pyInstaller/Info.plist create mode 100755 pyInstaller/Installer.xcodeproj/project.pbxproj create mode 100755 pyInstaller/InstallerAppDelegate.py create mode 100755 pyInstaller/Installer_Prefix.pch create mode 100755 pyInstaller/main.m create mode 100755 pyInstaller/main.py diff --git a/pyInstaller/English.lproj/InfoPlist.strings b/pyInstaller/English.lproj/InfoPlist.strings new file mode 100755 index 0000000000000000000000000000000000000000..fe463ab07520554c11ad1841d9b3a92d7807db25 GIT binary patch literal 230 zcmYL@%?`mp6otRFrlf*bqX(#&+~aMYYWg65hy5;&e80bLY&xbM80y`$>o~ ztZ7KGRGfK{ld1QRI=ng!wbV!pol8}P?tR+e_uSOI$o&kin1r5U!=43quHx40^lrtq z95t0Q7opXJ6aPdR7!z?KMhqA#3~%Ks#EdNmRo&mIel|=+sign;ZbK)sSGur$CTGN$ E9}?{+;Q#;t literal 0 HcmV?d00001 diff --git a/pyInstaller/English.lproj/MainMenu.xib b/pyInstaller/English.lproj/MainMenu.xib new file mode 100755 index 00000000..9de354a5 --- /dev/null +++ b/pyInstaller/English.lproj/MainMenu.xib @@ -0,0 +1,2852 @@ + + + + 1050 + 11B26 + 851 + 1138 + 566.00 + + YES + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.QTKitIBPlugin + + + YES + 851 + 2246 + + + + YES + + + + + + YES + com.apple.QTKitIBPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + AMainMenu + + YES + + + Installer + + 1048576 + 2147483647 + + NSImage + NSMenuCheckmark + + + NSImage + NSMenuMixedState + + submenuAction: + + Installer + + YES + + + About Installer + + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Services + + 1048576 + 2147483647 + + + submenuAction: + + Services + + YES + + _NSServicesMenu + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Hide Installer + h + 1048576 + 2147483647 + + + + + + Hide Others + h + 1572864 + 2147483647 + + + + + + Show All + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Quit Installer + q + 1048576 + 2147483647 + + + + + _NSAppleMenu + + + + + File + + 1048576 + 2147483647 + + + submenuAction: + + File + + YES + + + Close + w + 1048576 + 2147483647 + + + + + + + + + Edit + + 1048576 + 2147483647 + + + submenuAction: + + Edit + + YES + + + Undo + z + 1048576 + 2147483647 + + + + + + Redo + Z + 1179648 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Cut + x + 1048576 + 2147483647 + + + + + + Copy + c + 1048576 + 2147483647 + + + + + + Paste + v + 1048576 + 2147483647 + + + + + + Delete + + 1048576 + 2147483647 + + + + + + Select All + a + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Find + + 1048576 + 2147483647 + + + submenuAction: + + Find + + YES + + + Find… + f + 1048576 + 2147483647 + + + 1 + + + + Find Next + g + 1048576 + 2147483647 + + + 2 + + + + Find Previous + G + 1179648 + 2147483647 + + + 3 + + + + Use Selection for Find + e + 1048576 + 2147483647 + + + 7 + + + + Jump to Selection + j + 1048576 + 2147483647 + + + + + + + + + Spelling and Grammar + + 1048576 + 2147483647 + + + submenuAction: + + Spelling and Grammar + + YES + + + Show Spelling… + : + 1048576 + 2147483647 + + + + + + Check Spelling + ; + 1048576 + 2147483647 + + + + + + Check Spelling While Typing + + 1048576 + 2147483647 + + + + + + Check Grammar With Spelling + + 1048576 + 2147483647 + + + + + + + + + Substitutions + + 1048576 + 2147483647 + + + submenuAction: + + Substitutions + + YES + + + Smart Copy/Paste + f + 1048576 + 2147483647 + + + 1 + + + + Smart Quotes + g + 1048576 + 2147483647 + + + 2 + + + + Smart Links + G + 1179648 + 2147483647 + + + 3 + + + + + + + Speech + + 1048576 + 2147483647 + + + submenuAction: + + Speech + + YES + + + Start Speaking + + 1048576 + 2147483647 + + + + + + Stop Speaking + + 1048576 + 2147483647 + + + + + + + + + + + + Window + + 1048576 + 2147483647 + + + submenuAction: + + Window + + YES + + + Minimize + m + 1048576 + 2147483647 + + + + + + Zoom + + 1048576 + 2147483647 + + + + + + YES + YES + + + 1048576 + 2147483647 + + + + + + Bring All to Front + + 1048576 + 2147483647 + + + + + _NSWindowsMenu + + + + + Help + + 1048576 + 2147483647 + + + submenuAction: + + Help + + YES + + + Installer Help + ? + 1048576 + 2147483647 + + + + + + + + _NSMainMenu + + + 3 + 2 + {{335, 516}, {494, 234}} + 872415232 + OpenVanilla McBopomofo + NSWindow + + + {1.7976931348623157e+308, 1.7976931348623157e+308} + + + 256 + {494, 234} + + + {{0, 0}, {1440, 878}} + {1.7976931348623157e+308, 1.7976931348623157e+308} + YES + + + InstallerAppDelegate + + + NSFontManager + + + + 290 + + YES + + YES + Apple URL pasteboard type + CorePasteboardFlavorType 0x6D6F6F76 + NSFilenamesPboardType + QTMoviePasteboardType + + + {{-1, 0}, {495, 31}} + _NS:46 + + 3 + MAA + + + + + + + + + 268 + + YES + + + 268 + {{17, 27}, {196, 17}} + + _NS:4068 + YES + + 68288064 + 272630784 + Do you agree with the license? + + LucidaGrande + 13 + 1040 + + _NS:4068 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + + + + + + 268 + {{226, 17}, {96, 32}} + + _NS:610 + YES + + 67239424 + 134217728 + Cancel + + _NS:610 + + -2038284033 + 129 + + Gw + 200 + 25 + + + + + 268 + {{322, 17}, {96, 32}} + + _NS:610 + YES + + 67239424 + 134217728 + Agree + + _NS:610 + + -2038284033 + 129 + + + 200 + 25 + + + + + 256 + + YES + + + 2304 + + YES + + + 2322 + {375, 66} + + _NS:1498 + + + + + + + + + + YES + + + 134 + + + + 375 + 1 + + + 100667277 + 0 + + + 3 + MQA + + + YES + + YES + NSBackgroundColor + NSColor + + + YES + + 6 + System + selectedTextBackgroundColor + + + + 6 + System + selectedTextColor + + + + + + + YES + + YES + NSColor + NSCursor + NSUnderline + + + YES + + 1 + MCAwIDEAA + + + {8, -8} + 13 + + + + + + + 0 + + 6 + {463, 10000000} + {223, 66} + + + + {{1, 1}, {375, 167}} + + + _NS:1496 + + + + {4, -5} + 1 + + 4 + + + + 256 + {{376, 1}, {15, 167}} + + _NS:1512 + + _doScroller: + 1 + 0.85256409645080566 + + + + -2147483392 + {{-100, -100}, {87, 18}} + + _NS:1514 + 1 + + _doScroller: + 1 + 0.94565218687057495 + + + {{20, 60}, {392, 169}} + + + _NS:1494 + 133138 + + + + + + {432, 248} + + _NS:1109 + NSView + + + + + YES + + + performMiniaturize: + + + + 37 + + + + arrangeInFront: + + + + 39 + + + + orderFrontStandardAboutPanel: + + + + 142 + + + + performClose: + + + + 193 + + + + toggleContinuousSpellChecking: + + + + 222 + + + + undo: + + + + 223 + + + + copy: + + + + 224 + + + + checkSpelling: + + + + 225 + + + + paste: + + + + 226 + + + + stopSpeaking: + + + + 227 + + + + cut: + + + + 228 + + + + showGuessPanel: + + + + 230 + + + + redo: + + + + 231 + + + + selectAll: + + + + 232 + + + + startSpeaking: + + + + 233 + + + + delete: + + + + 235 + + + + performZoom: + + + + 240 + + + + performFindPanelAction: + + + + 241 + + + + centerSelectionInVisibleArea: + + + + 245 + + + + toggleGrammarChecking: + + + + 347 + + + + toggleSmartInsertDelete: + + + + 355 + + + + toggleAutomaticQuoteSubstitution: + + + + 356 + + + + toggleAutomaticLinkDetection: + + + + 357 + + + + showHelp: + + + + 360 + + + + hide: + + + + 367 + + + + hideOtherApplications: + + + + 368 + + + + terminate: + + + + 369 + + + + unhideAllApplications: + + + + 370 + + + + delegate + + + + 374 + + + + window + + + + 504 + + + + delegate + + + + 505 + + + + agreeButton + + + + 517 + + + + cancelButton + + + + 518 + + + + licenseTextView + + + + 519 + + + + licenseView + + + + 520 + + + + agreeLicenseAction: + + + + 521 + + + + disagreeLicenseAction: + + + + 522 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 29 + + + YES + + + + + + + + MainMenu + + + 19 + + + YES + + + + + + 56 + + + YES + + + + + + 103 + + + YES + + + + 1 + + + 217 + + + YES + + + + + + 83 + + + YES + + + + + + 81 + + + YES + + + + + + 73 + + + 1 + + + 205 + + + YES + + + + + + + + + + + + + + + + + + 202 + + + + + 198 + + + + + 207 + + + + + 214 + + + + + 199 + + + + + 203 + + + + + 197 + + + + + 206 + + + + + 215 + + + + + 218 + + + YES + + + + + + 216 + + + YES + + + + + + 200 + + + YES + + + + + + + + + 219 + + + + + 201 + + + + + 204 + + + + + 220 + + + YES + + + + + + + + + + 213 + + + + + 210 + + + + + 221 + + + + + 208 + + + + + 209 + + + + + 106 + + + YES + + + + 2 + + + 111 + + + + + 57 + + + YES + + + + + + + + + + + + + + 58 + + + + + 134 + + + + + 150 + + + + + 136 + + + 1111 + + + 144 + + + + + 143 + + + + + 131 + + + YES + + + + + + 149 + + + + + 145 + + + + + 130 + + + + + 24 + + + YES + + + + + + + + + 92 + + + + + 5 + + + + + 239 + + + + + 23 + + + + + 211 + + + YES + + + + + + 212 + + + YES + + + + + + + 195 + + + + + 196 + + + + + 346 + + + + + 348 + + + YES + + + + + + 349 + + + YES + + + + + + + + 350 + + + + + 351 + + + + + 354 + + + + + 371 + + + YES + + + + + + 372 + + + YES + + + + + 373 + + + AppDelegate + + + 420 + + + + + 483 + + + + + 506 + + + YES + + + + + + + + + 507 + + + YES + + + + + + + + 508 + + + + + 509 + + + + + 510 + + + + + 511 + + + YES + + + + + + 512 + + + + + 513 + + + YES + + + + + + 514 + + + + + 515 + + + YES + + + + + + 516 + + + + + + + YES + + YES + -1.IBPluginDependency + -2.IBPluginDependency + -3.IBPluginDependency + 103.IBPluginDependency + 106.IBEditorWindowLastContentRect + 106.IBPluginDependency + 111.IBPluginDependency + 130.IBPluginDependency + 131.IBPluginDependency + 134.IBPluginDependency + 136.IBPluginDependency + 143.IBPluginDependency + 144.IBPluginDependency + 145.IBPluginDependency + 149.IBPluginDependency + 150.IBPluginDependency + 19.IBPluginDependency + 195.IBPluginDependency + 196.IBPluginDependency + 197.IBPluginDependency + 198.IBPluginDependency + 199.IBPluginDependency + 200.IBPluginDependency + 201.IBPluginDependency + 202.IBPluginDependency + 203.IBPluginDependency + 204.IBPluginDependency + 205.IBPluginDependency + 206.IBPluginDependency + 207.IBPluginDependency + 208.IBPluginDependency + 209.IBPluginDependency + 210.IBPluginDependency + 211.IBPluginDependency + 212.IBPluginDependency + 213.IBPluginDependency + 214.IBPluginDependency + 215.IBPluginDependency + 216.IBPluginDependency + 217.IBPluginDependency + 218.IBPluginDependency + 219.IBPluginDependency + 220.IBPluginDependency + 221.IBPluginDependency + 23.IBPluginDependency + 239.IBPluginDependency + 24.IBPluginDependency + 29.IBEditorWindowLastContentRect + 29.IBPluginDependency + 346.IBPluginDependency + 348.IBPluginDependency + 349.IBPluginDependency + 350.IBPluginDependency + 351.IBPluginDependency + 354.IBPluginDependency + 371.IBEditorWindowLastContentRect + 371.IBPluginDependency + 371.IBWindowTemplateEditedContentRect + 371.NSWindowTemplate.visibleAtLaunch + 371.windowTemplate.hasMaxSize + 371.windowTemplate.hasMinSize + 371.windowTemplate.maxSize + 371.windowTemplate.minSize + 372.IBPluginDependency + 373.IBPluginDependency + 420.IBPluginDependency + 483.IBPluginDependency + 5.IBPluginDependency + 506.IBEditorWindowLastContentRect + 506.IBPluginDependency + 507.IBPluginDependency + 507.IBViewBoundsToFrameTransform + 508.IBPluginDependency + 509.IBPluginDependency + 510.IBPluginDependency + 511.IBPluginDependency + 511.IBViewBoundsToFrameTransform + 512.IBPluginDependency + 513.IBPluginDependency + 513.IBViewBoundsToFrameTransform + 514.IBPluginDependency + 515.IBPluginDependency + 515.IBViewBoundsToFrameTransform + 516.IBPluginDependency + 56.IBPluginDependency + 57.IBEditorWindowLastContentRect + 57.IBPluginDependency + 58.IBPluginDependency + 73.IBPluginDependency + 81.IBEditorWindowLastContentRect + 81.IBPluginDependency + 83.IBPluginDependency + 92.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{247, 952}, {161, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{0, 975}, {308, 20}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{149, 746}, {494, 234}} + com.apple.InterfaceBuilder.CocoaPlugin + {{149, 746}, {494, 234}} + + + + {800, 800} + {500, 500} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.QTKitIBPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{132, 590}, {432, 248}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDLAAAw0gAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDoQAAwmAAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDo4AAwkwAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABBiAAAwkwAAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{12, 822}, {190, 153}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + {{90, 952}, {115, 23}} + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 522 + + + + YES + + InstallerAppDelegate + NSObject + + YES + + YES + agreeLicenseAction: + disagreeLicenseAction: + + + YES + id + id + + + + YES + + YES + agreeLicenseAction: + disagreeLicenseAction: + + + YES + + agreeLicenseAction: + id + + + disagreeLicenseAction: + id + + + + + YES + + YES + agreeButton + cancelButton + licenseTextView + licenseView + window + + + YES + id + id + id + id + id + + + + YES + + YES + agreeButton + cancelButton + licenseTextView + licenseView + window + + + YES + + agreeButton + id + + + cancelButton + id + + + licenseTextView + id + + + licenseView + id + + + window + id + + + + + IBProjectSource + InstallerAppDelegate.py + + + + + YES + + NSActionCell + NSCell + + IBFrameworkSource + AppKit.framework/Headers/NSActionCell.h + + + + NSApplication + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSApplication.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSApplicationScripting.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSColorPanel.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSHelpManager.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSPageLayout.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSUserInterfaceItemSearching.h + + + + NSApplication + + IBFrameworkSource + AppKit.framework/Headers/NSWindowRestoration.h + + + + NSBrowser + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSBrowser.h + + + + NSButton + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSButton.h + + + + NSButtonCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSButtonCell.h + + + + NSCell + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSCell.h + + + + NSControl + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSControl.h + + + + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSLayoutConstraint.h + + + + NSFontManager + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontManager.h + + + + NSFormatter + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFormatter.h + + + + NSMatrix + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSMatrix.h + + + + NSMenu + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenu.h + + + + NSMenuItem + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSMenuItem.h + + + + NSMovieView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSMovieView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSAccessibility.h + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDictionaryController.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSDragging.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSFontPanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSKeyValueBinding.h + + + + NSObject + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSNibLoading.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSPasteboard.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSSavePanel.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSTableView.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSToolbarItem.h + + + + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSView.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSError.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSFileManager.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyValueObserving.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSKeyedArchiver.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObject.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSObjectScripting.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSPortCoder.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSRunLoop.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptClassDescription.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptKeyValueCoding.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptObjectSpecifiers.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSScriptWhoseTests.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSThread.h + + + + NSObject + + IBFrameworkSource + Foundation.framework/Headers/NSURL.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTCaptureDecompressedAudioOutput.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTCaptureDecompressedVideoOutput.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTCaptureFileOutput.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTCaptureVideoPreviewOutput.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTCaptureView.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTMovie.h + + + + NSObject + + IBFrameworkSource + QTKit.framework/Headers/QTMovieView.h + + + + NSPopover + NSResponder + + performClose: + id + + + performClose: + + performClose: + id + + + + YES + + YES + contentViewController + delegate + + + YES + NSViewController + id + + + + YES + + YES + contentViewController + delegate + + + YES + + contentViewController + NSViewController + + + delegate + id + + + + + IBFrameworkSource + AppKit.framework/Headers/NSPopover.h + + + + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSInterfaceStyle.h + + + + NSResponder + NSObject + + IBFrameworkSource + AppKit.framework/Headers/NSResponder.h + + + + NSResponder + + + + NSScrollView + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSScrollView.h + + + + NSScroller + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSScroller.h + + + + NSTableView + NSControl + + + + NSText + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSText.h + + + + NSTextField + NSControl + + IBFrameworkSource + AppKit.framework/Headers/NSTextField.h + + + + NSTextFieldCell + NSActionCell + + IBFrameworkSource + AppKit.framework/Headers/NSTextFieldCell.h + + + + NSTextView + NSText + + IBFrameworkSource + AppKit.framework/Headers/NSTextView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSClipView.h + + + + NSView + + + + NSView + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSOpenGLView.h + + + + NSView + + IBFrameworkSource + AppKit.framework/Headers/NSRulerView.h + + + + NSView + NSResponder + + + + NSViewController + NSResponder + + view + NSView + + + view + + view + NSView + + + + IBFrameworkSource + AppKit.framework/Headers/NSViewController.h + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSDrawer.h + + + + NSWindow + + + + NSWindow + NSResponder + + IBFrameworkSource + AppKit.framework/Headers/NSWindow.h + + + + NSWindow + + + + NSWindow + + IBFrameworkSource + AppKit.framework/Headers/NSWindowScripting.h + + + + QTMovieView + NSView + + YES + + YES + add: + addScaled: + copy: + cut: + delete: + gotoBeginning: + gotoEnd: + gotoNextSelectionPoint: + gotoPosterFrame: + gotoPreviousSelectionPoint: + paste: + pause: + play: + replace: + selectAll: + selectNone: + stepBackward: + stepForward: + trim: + + + YES + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + + + + YES + + YES + add: + addScaled: + copy: + cut: + delete: + gotoBeginning: + gotoEnd: + gotoNextSelectionPoint: + gotoPosterFrame: + gotoPreviousSelectionPoint: + paste: + pause: + play: + replace: + selectAll: + selectNone: + stepBackward: + stepForward: + trim: + + + YES + + add: + id + + + addScaled: + id + + + copy: + id + + + cut: + id + + + delete: + id + + + gotoBeginning: + id + + + gotoEnd: + id + + + gotoNextSelectionPoint: + id + + + gotoPosterFrame: + id + + + gotoPreviousSelectionPoint: + id + + + paste: + id + + + pause: + id + + + play: + id + + + replace: + id + + + selectAll: + id + + + selectNone: + id + + + stepBackward: + id + + + stepForward: + id + + + trim: + id + + + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + ../Installer.xcodeproj + 3 + + YES + + YES + NSMenuCheckmark + NSMenuMixedState + + + YES + {9, 8} + {7, 2} + + + + diff --git a/pyInstaller/Info.plist b/pyInstaller/Info.plist new file mode 100755 index 00000000..ccf2e95b --- /dev/null +++ b/pyInstaller/Info.plist @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIconFile + + CFBundleIdentifier + tw.com.kkbox.${PRODUCT_NAME:identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + KKBX + CFBundleVersion + 1.0 + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/pyInstaller/Installer.xcodeproj/project.pbxproj b/pyInstaller/Installer.xcodeproj/project.pbxproj new file mode 100755 index 00000000..b3bf7ace --- /dev/null +++ b/pyInstaller/Installer.xcodeproj/project.pbxproj @@ -0,0 +1,382 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 44; + objects = { + +/* Begin PBXBuildFile section */ + 77631A270C06C501005415CB /* Python.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77631A260C06C501005415CB /* Python.framework */; }; + 77631A3F0C0748CF005415CB /* main.py in Resources */ = {isa = PBXBuildFile; fileRef = 77631A3E0C0748CF005415CB /* main.py */; }; + 7790198F0C07548A00326F66 /* InstallerAppDelegate.py in Resources */ = {isa = PBXBuildFile; fileRef = 7790198E0C07548A00326F66 /* InstallerAppDelegate.py */; }; + 77C8C1F90C07829500965286 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 77C8C1F70C07829500965286 /* MainMenu.xib */; }; + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */; }; + 8D11072D0486CEB800E47090 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; settings = {ATTRIBUTES = (); }; }; + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; }; + D48D001D143868DA0050BDFF /* McBopomofo.app in Copy Files to Resource Folder */ = {isa = PBXBuildFile; fileRef = D48D0016143868A90050BDFF /* McBopomofo.app */; }; + D4CA5DAD14040B3300B58ED3 /* QTKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4CA5DAC14040B3300B58ED3 /* QTKit.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + D48D0015143868A90050BDFF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D48D000F143868A90050BDFF /* Lettuce.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 6A8515B5137277DB0066B1BD /* McBopomofo.app */; + remoteInfo = Lettuce; + }; + D48D0017143868A90050BDFF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D48D000F143868A90050BDFF /* Lettuce.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 6ACF37C213A7BE68008798F2 /* IconMaker.app */; + remoteInfo = IconMaker; + }; + D48D001E143868E40050BDFF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = D48D000F143868A90050BDFF /* Lettuce.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 6A8515B4137277DB0066B1BD /* Lettuce */; + remoteInfo = Lettuce; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + D48D0025143868EC0050BDFF /* Copy Files to Resource Folder */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 7; + files = ( + D48D001D143868DA0050BDFF /* McBopomofo.app in Copy Files to Resource Folder */, + ); + name = "Copy Files to Resource Folder"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 089C165DFE840E0CC02AAC07 /* English */ = {isa = PBXFileReference; fileEncoding = 10; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = /System/Library/Frameworks/CoreData.framework; sourceTree = ""; }; + 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 29B97324FDCFA39411CA2CEA /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = /System/Library/Frameworks/AppKit.framework; sourceTree = ""; }; + 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; + 32CA4F630368D1EE00C91783 /* Installer_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Installer_Prefix.pch; sourceTree = ""; }; + 77631A260C06C501005415CB /* Python.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Python.framework; path = /System/Library/Frameworks/Python.framework; sourceTree = ""; }; + 77631A3E0C0748CF005415CB /* main.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = main.py; sourceTree = ""; }; + 7790198E0C07548A00326F66 /* InstallerAppDelegate.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.python; path = InstallerAppDelegate.py; sourceTree = ""; }; + 77C8C1F80C07829500965286 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; + 8D1107310486CEB800E47090 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8D1107320486CEB800E47090 /* Installer.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Installer.app; sourceTree = BUILT_PRODUCTS_DIR; }; + D48D000F143868A90050BDFF /* Lettuce.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = Lettuce.xcodeproj; path = ../Source/Lettuce.xcodeproj; sourceTree = SOURCE_ROOT; }; + D4CA5DAC14040B3300B58ED3 /* QTKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QTKit.framework; path = System/Library/Frameworks/QTKit.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D11072E0486CEB800E47090 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */, + 77631A270C06C501005415CB /* Python.framework in Frameworks */, + D4CA5DAD14040B3300B58ED3 /* QTKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 080E96DDFE201D6D7F000001 /* Classes */ = { + isa = PBXGroup; + children = ( + 7790198E0C07548A00326F66 /* InstallerAppDelegate.py */, + ); + name = Classes; + sourceTree = ""; + }; + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = { + isa = PBXGroup; + children = ( + D4CA5DAC14040B3300B58ED3 /* QTKit.framework */, + 77631A260C06C501005415CB /* Python.framework */, + 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, + ); + name = "Linked Frameworks"; + sourceTree = ""; + }; + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { + isa = PBXGroup; + children = ( + 29B97324FDCFA39411CA2CEA /* AppKit.framework */, + 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, + 29B97325FDCFA39411CA2CEA /* Foundation.framework */, + ); + name = "Other Frameworks"; + sourceTree = ""; + }; + 19C28FACFE9D520D11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 8D1107320486CEB800E47090 /* Installer.app */, + ); + name = Products; + sourceTree = ""; + }; + 29B97314FDCFA39411CA2CEA /* xcPROJECTNAMEASXMLxc */ = { + isa = PBXGroup; + children = ( + D48D000F143868A90050BDFF /* Lettuce.xcodeproj */, + 080E96DDFE201D6D7F000001 /* Classes */, + 29B97315FDCFA39411CA2CEA /* Other Sources */, + 29B97317FDCFA39411CA2CEA /* Resources */, + 29B97323FDCFA39411CA2CEA /* Frameworks */, + 19C28FACFE9D520D11CA2CBB /* Products */, + ); + name = xcPROJECTNAMEASXMLxc; + sourceTree = ""; + }; + 29B97315FDCFA39411CA2CEA /* Other Sources */ = { + isa = PBXGroup; + children = ( + 32CA4F630368D1EE00C91783 /* Installer_Prefix.pch */, + 29B97316FDCFA39411CA2CEA /* main.m */, + 77631A3E0C0748CF005415CB /* main.py */, + ); + name = "Other Sources"; + sourceTree = ""; + }; + 29B97317FDCFA39411CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 77C8C1F70C07829500965286 /* MainMenu.xib */, + 8D1107310486CEB800E47090 /* Info.plist */, + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */, + ); + name = Resources; + sourceTree = ""; + }; + 29B97323FDCFA39411CA2CEA /* Frameworks */ = { + isa = PBXGroup; + children = ( + 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */, + 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */, + ); + name = Frameworks; + sourceTree = ""; + }; + D48D0010143868A90050BDFF /* Products */ = { + isa = PBXGroup; + children = ( + D48D0016143868A90050BDFF /* McBopomofo.app */, + D48D0018143868A90050BDFF /* IconMaker.app */, + ); + name = Products; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D1107260486CEB800E47090 /* Installer */ = { + isa = PBXNativeTarget; + buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Installer" */; + buildPhases = ( + 8D1107290486CEB800E47090 /* Resources */, + 8D11072C0486CEB800E47090 /* Sources */, + 8D11072E0486CEB800E47090 /* Frameworks */, + D48D0025143868EC0050BDFF /* Copy Files to Resource Folder */, + ); + buildRules = ( + ); + dependencies = ( + D48D001F143868E40050BDFF /* PBXTargetDependency */, + ); + name = Installer; + productInstallPath = "$(HOME)/Applications"; + productName = xcPROJECTNAMExc; + productReference = 8D1107320486CEB800E47090 /* Installer.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 29B97313FDCFA39411CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Installer" */; + compatibilityVersion = "Xcode 3.0"; + developmentRegion = English; + hasScannedForEncodings = 1; + knownRegions = ( + English, + Japanese, + French, + German, + ); + mainGroup = 29B97314FDCFA39411CA2CEA /* xcPROJECTNAMEASXMLxc */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = D48D0010143868A90050BDFF /* Products */; + ProjectRef = D48D000F143868A90050BDFF /* Lettuce.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 8D1107260486CEB800E47090 /* Installer */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + D48D0016143868A90050BDFF /* McBopomofo.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = McBopomofo.app; + remoteRef = D48D0015143868A90050BDFF /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + D48D0018143868A90050BDFF /* IconMaker.app */ = { + isa = PBXReferenceProxy; + fileType = wrapper.application; + path = IconMaker.app; + remoteRef = D48D0017143868A90050BDFF /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D1107290486CEB800E47090 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072B0486CEB800E47090 /* InfoPlist.strings in Resources */, + 77631A3F0C0748CF005415CB /* main.py in Resources */, + 7790198F0C07548A00326F66 /* InstallerAppDelegate.py in Resources */, + 77C8C1F90C07829500965286 /* MainMenu.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D11072C0486CEB800E47090 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D11072D0486CEB800E47090 /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + D48D001F143868E40050BDFF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Lettuce; + targetProxy = D48D001E143868E40050BDFF /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 089C165CFE840E0CC02AAC07 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 089C165DFE840E0CC02AAC07 /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 77C8C1F70C07829500965286 /* MainMenu.xib */ = { + isa = PBXVariantGroup; + children = ( + 77C8C1F80C07829500965286 /* English */, + ); + name = MainMenu.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C01FCF4B08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + GCC_DYNAMIC_NO_PIC = NO; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_MODEL_TUNING = G5; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Installer_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = Installer; + WRAPPER_EXTENSION = app; + ZERO_LINK = YES; + }; + name = Debug; + }; + C01FCF4C08A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_MODEL_TUNING = G5; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = Installer_Prefix.pch; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(HOME)/Applications"; + PRODUCT_NAME = Installer; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + C01FCF4F08A954540054247B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "x86_64 i386 ppc"; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = macosx; + }; + name = Debug; + }; + C01FCF5008A954540054247B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = "$(ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1)"; + ARCHS_STANDARD_32_64_BIT_PRE_XCODE_3_1 = "x86_64 i386 ppc"; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + PREBINDING = NO; + SDKROOT = macosx; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "Installer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4B08A954540054247B /* Debug */, + C01FCF4C08A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C01FCF4E08A954540054247B /* Build configuration list for PBXProject "Installer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C01FCF4F08A954540054247B /* Debug */, + C01FCF5008A954540054247B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 29B97313FDCFA39411CA2CEA /* Project object */; +} diff --git a/pyInstaller/InstallerAppDelegate.py b/pyInstaller/InstallerAppDelegate.py new file mode 100755 index 00000000..5f1c150f --- /dev/null +++ b/pyInstaller/InstallerAppDelegate.py @@ -0,0 +1,72 @@ +from Foundation import * +from AppKit import * +import os, shutil, platform + +class InstallerAppDelegate(NSObject): + + window = objc.IBOutlet() + licenseView = objc.IBOutlet() + licenseTextView = objc.IBOutlet() + agreeButton = objc.IBOutlet() + cancelButton = objc.IBOutlet() + + def checkOSVerion(self): + mac_version = platform.mac_ver()[0].split(".") + if int(mac_version[1]) < 6: + NSRunAlertPanel("McBoPoMoFo requires on Mac OS X 10.6 or later verion.", "", "OK", None, None) + NSApp.terminate_(self) + + def showLicenseWindow(self): + self.licenseTextView.textStorage().mutableString().setString_("License") + windowFrame = self.window.frame() + windowFrame.size = self.licenseView.frame().size + windowFrame.size.height += 20.0 + self.window.setFrame_display_animate_(windowFrame, True, True) + self.window.contentView().addSubview_(self.licenseView) + self.window.center() + self.window.setDefaultButtonCell_(self.agreeButton.cell()) + self.window.makeKeyAndOrderFront_(None) + + @objc.IBAction + def agreeLicenseAction_(self, sender): + self.window.orderOut_(None) + from subprocess import call + call(["killall", "McBopomofo"]) + + inputMethodDir = os.path.expanduser("~/Library/Input Methods") + if os.path.exists(inputMethodDir) is False: + os.makedirs(inputMethodDir) + + packagePath = NSBundle.mainBundle().pathForResource_ofType_("McBopomofo", "app") + McBopomofoPath = os.path.join(inputMethodDir, "McBopomofo.app") + if os.path.exists(McBopomofoPath) is True: + try: + shutil.rmtree(McBopomofoPath) + except: + NSRunAlertPanel("Failed to remove existing application!", "", "OK", None, None) + try: + shutil.copytree(packagePath, McBopomofoPath) + except: + NSRunAlertPanel("Failed to copy application!", "", "OK", None, None) + NSApp.terminate_(self) + + print McBopomofoPath + try: + call([os.path.join(McBopomofoPath, "Contents/MacOS/McBopomofo"), "install"]) + except: + NSRunAlertPanel("Failed to install McBopomofo!", "", "OK", None, None) + NSApp.terminate_(self) + NSRunAlertPanel("Done!", "", "OK", None, None) + NSApp.terminate_(self) + + @objc.IBAction + def disagreeLicenseAction_(self, sender): + NSApp.terminate_(self) + + def applicationDidFinishLaunching_(self, sender): + self.checkOSVerion() + self.showLicenseWindow() + pass + + + diff --git a/pyInstaller/Installer_Prefix.pch b/pyInstaller/Installer_Prefix.pch new file mode 100755 index 00000000..aabef477 --- /dev/null +++ b/pyInstaller/Installer_Prefix.pch @@ -0,0 +1,3 @@ +#ifdef __OBJC__ + #import +#endif diff --git a/pyInstaller/main.m b/pyInstaller/main.m new file mode 100755 index 00000000..028ee668 --- /dev/null +++ b/pyInstaller/main.m @@ -0,0 +1,43 @@ +// AUTHOR: Weizhong Yang (wzyang@kkbox.com.tw) + +#import +#import + +int main(int argc, char *argv[]) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + + NSBundle *mainBundle = [NSBundle mainBundle]; + NSString *resourcePath = [mainBundle resourcePath]; + NSArray *pythonPathArray = [NSArray arrayWithObjects: resourcePath, [resourcePath stringByAppendingPathComponent:@"PyObjC"], nil]; + + setenv("PYTHONPATH", [[pythonPathArray componentsJoinedByString:@":"] UTF8String], 1); + + NSArray *possibleMainExtensions = [NSArray arrayWithObjects: @"py", @"pyc", @"pyo", nil]; + NSString *mainFilePath = nil; + + for (NSString *possibleMainExtension in possibleMainExtensions) { + mainFilePath = [mainBundle pathForResource: @"main" ofType: possibleMainExtension]; + if ( mainFilePath != nil ) break; + } + + if ( !mainFilePath ) { + [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__]; + } + + Py_SetProgramName("/usr/bin/python"); + Py_Initialize(); + PySys_SetArgv(argc, (char **)argv); + + const char *mainFilePathPtr = [mainFilePath UTF8String]; + FILE *mainFile = fopen(mainFilePathPtr, "r"); + int result = PyRun_SimpleFile(mainFile, (char *)[[mainFilePath lastPathComponent] UTF8String]); + + if ( result != 0 ) + [NSException raise: NSInternalInconsistencyException + format: @"%s:%d main() PyRun_SimpleFile failed with file '%@'. See console for errors.", __FILE__, __LINE__, mainFilePath]; + + [pool drain]; + + return result; +} diff --git a/pyInstaller/main.py b/pyInstaller/main.py new file mode 100755 index 00000000..bf89767a --- /dev/null +++ b/pyInstaller/main.py @@ -0,0 +1,11 @@ +import objc +import Foundation +import AppKit + +from PyObjCTools import AppHelper + +# import modules containing classes required to start application and load MainMenu.nib +import InstallerAppDelegate + +# pass control to AppKit +AppHelper.runEventLoop()