Re: [Pyobjc-dev] Using bundlebuilder on PB projects
Brought to you by:
ronaldoussoren
From: Dinu G. <gh...@da...> - 2003-09-06 15:29:29
|
Just van Rossum: > Multi-doc app: make sure you either create an Info.plist file or > manually create a plist object in your buildapp.py script. I've tried that, but I still don't get it. It's not clear what kind of entries I need for what kind of file (file types?)? You example has too much of a font context for me... Also, I'm uncertain if I really need a new Main.py or if the template's __main__.py will do and what the Main.py file should contain compared to __main__.py? Let's make a laboratory experiment. If it works out ok, I'll become a very happy user of bundlebuilder! let's use the PB template for a "Cocoa Python Document-based Application" and save it using a name like CocoaPyDocApp. "pbxbuild build" turns that into an application just as I'd expect it. Before running it I have this list of files: dinu% tree2.py -f CocoaPyDocApp/ | / | | 00README.txt | | __main__.py | | bin-python-main.m | | CocoaPyDocApp.pbproj/ | | | dinu.pbxuser | | | project.pbxproj | | English.lproj/ | | | Credits.rtf | | | InfoPlist.strings | | | MainMenu.nib/ | | | | classes.nib | | | | info.nib | | | | keyedobjects.nib | | | MyDocument.nib/ | | | | classes.nib | | | | info.nib | | | | objects.nib | | MyAppDelegate.py | | MyDocument.py After running "pbxbuild build" I get this list (only the output app wrapper is listed): dinu% tree2.py -f CocoaPyDocApp/ | / | | build/ | | | CocoaPyDocApp.app/ | | | | Contents/ | | | | | Info.plist | | | | | MacOS/ | | | | | | CocoaPyDocApp | | | | | pbdevelopment.plist | | | | | PkgInfo | | | | | Resources/ | | | | | | __main__.py | | | | | | English.lproj/ | | | | | | | Credits.rtf | | | | | | | InfoPlist.strings | | | | | | | MainMenu.nib/ | | | | | | | | classes.nib | | | | | | | | info.nib | | | | | | | | keyedobjects.nib | | | | | | | MyDocument.nib/ | | | | | | | | classes.nib | | | | | | | | info.nib | | | | | | | | objects.nib | | | | | | MyAppDelegate.py | | | | | | MyDocument.py I can safely remove the pbdevelopment.plist and the app still launches ok. So I guess all your plist magic deals with generating the Info.plist, right? Ok, let's keep going. Remove the build folder after copying the following file to some safe place: build/CocoaPyDocApp.app/Contents/Info.plist . Write a simpple buildapp.py like this in the project root folder: #! /usr/bin/env python from bundlebuilder import buildapp buildapp( name = "CocoaPyDocApp", mainprogram = "__main__.py", resources = ["English.lproj", "MyAppDelegate.py", "MyDocument.py"], nibname = "MainMenu", ) Now rebuild the application using "buildapp.py build". This is what we get (only app wrapper listed): [localhost:~/Developer/Cocoa/CocoaPyDocApp] dinu% tree2.py -f . ./ | build/ | | CocoaPyDocApp.app/ | | | Contents/ | | | | Info.plist | | | | MacOS/ | | | | | CocoaPyDocApp | | | | | python | | | | PkgInfo | | | | Resources/ | | | | | __main__.py | | | | | English.lproj/ | | | | | | Credits.rtf | | | | | | InfoPlist.strings | | | | | | MainMenu.nib/ | | | | | | | classes.nib | | | | | | | info.nib | | | | | | | keyedobjects.nib | | | | | | MyDocument.nib/ | | | | | | | classes.nib | | | | | | | info.nib | | | | | | | objects.nib | | | | | MyAppDelegate.py | | | | | MyDocument.py As expected this application doesn't work as it should. It starts up, but doesn't show any window! But... drumrolls...! If you replace its top Info.plist with the one previously saved the app runs just fine!! The big question then is how to generate this Info.plist below using bundlebuilder tool?? (At least it seems like I could simply keep the __main__.py file.) Also, the same copy-trick works when using the longer version: "buildapp.py --standalone --strip build". Your-turn-again,-Sherlock'ly, Dinu <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundleDocumentTypes</key> <array> <dict> <key>CFBundleTypeExtensions</key> <array> <string>????</string> </array> <key>CFBundleTypeName</key> <string>DocumentType</string> <key>CFBundleTypeOSTypes</key> <array> <string>????</string> </array> <key>CFBundleTypeRole</key> <string>Editor</string> <key>NSDocumentClass</key> <string>MyDocument</string> </dict> </array> <key>CFBundleExecutable</key> <string>CocoaPyDocApp</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>0.1</string> <key>NSMainNibFile</key> <string>MainMenu</string> <key>NSPrincipalClass</key> <string>NSApplication</string> </dict> </plist> |