Commits

Ronald Oussoren  committed 4347d99

These suffer from bitrot and nobody is interesting in fixing them.

  • Participants
  • Parent commits 8b55213
  • Branches pyobjc-ancient

Comments (0)

Files changed (55)

File ProjectBuilder Extras/Project Templates/00README.txt

-========================
-Python Project Templates
-========================
-
-:Author: Bill Bumgarner
-:Contact: bbum@codefab.com
-
-To use the project templates, simply copy (or link) them into the Project
-Templates directory used by Project Builder.  The project templates are also
-included in the PyObjC installer package.
-
-.. contents::
-
-Notes
------
-
-- PyObjC's Project Builder support is unmaintained and its use for new projects
-  is not recommended.
-
-- In all cases that involve loading frameworks or bundles, all of the classes
-  in that framework or bundle can be made available by using the
-  ``loadBundle()`` function in the ``objc`` module::
-
-    objc.loadBundle("MyFramework", globals(), bundle_path="/path/to/MyFramework.framework")
-
-  This has the effect of importing all of the classes in the bundle or
-  framework into the current python scope's globals.  For all intents and
-  purposes, it is similar to::
-
-    from Foundation import *
-
-- There is risk that the PyObjC modules compiled for one version of python
-  will not work with another.  Where this may be a problem is if the a
-  standalone application is packaged with the PyObjC modules compiled
-  against, say, the Fink or Framework builds of Python, but is then executed
-  using the Apple supplied python binary.
-
- - The *Project Templates* directory includes a **clean.py** script that
-   removes noise files from the project templates.   When working on project
-   templates, it is recommended that this script be invoked before creating a
-   test project from one of the templates.   For example, the presence of
-   user specific project builder settings will cause any projects created
-   from a template to be incorrect.
-    
-Cocoa-Python Templates
-----------------------
-
-The Cocoa-Python templates all create various different kinds of Cocoa
-application projects.   Some of the resulting projects are incompatible with
-Apple's build of Python[#].  Be sure and pick the correct project type for your
-needs.
-
-Cocoa-Python Application
-------------------------
-
-A project created from this template is designed to implement standalone,
-pure-Python, applications that are compatible with Apple's build of Python as
-well as all other builds of python that support PyObjC.
-
-When building the 'install' target, the resulting application wrapper will
-included the PyObjC module and can be launched on any stock OS X 10.2 system
-without requiring PyObjC to be preinstalled.
-
-Cocoa-Python-ObjC Application
------------------------------
-
-A project created from this template includes an embedded framework project
-into which all compiled code can be placed.  Upon launch, the application
-automatically dynamically loads the embedded framework containing the
-compiled code.
-
-Each Framework's Resources directory is automatically added to sys.path.
-
-.. Cocoa-Python Application (Embedded Interpreter)
-   -----------------------------------------------
-
-.. This project template uses an embedded Python interpreter.  As such,
-   Objective-C classes can be freely mixed into the project along with Python
-   classes.   However, because it uses an embedded interpreter, this project
-   must be built and run after some version of Python is installed that can
-   support an embedded interpreter.  Alternatively, an application based on this
-   template must include a build of Python within its app wrapper.
-
-.. This type of project is not compatible with Apple's build of Python.
-
-Cocoa-Python Document-based Application
----------------------------------------
-
-This template works like the `Cocoa-Python Application`_ template in that it
-is compatible with the Apple build of Python.   It creates an application
-that uses Cocoa's Multiple Document Architecture in the same fashion as the
-default Cocoa Document-based Application supplied with Project Builder.
-
-Cocoa-Python-ObjC Document-based Application
---------------------------------------------
-
-A project created from this template includes an embedded framework project
-into which all compiled code can be placed.  Upon launch, the application
-automatically dynamically loads the embedded framework containing the
-compiled code. It is based on the `Cocoa-Python Document-based Application`_
-template.  It creates an application that uses Cocoa's Multiple Document 
-Architecture in the same fashion as the default Cocoa Document-based 
-Application supplied with Project Builder.
-
-Each Framework's Resources directory is automatically added to sys.path.
-
-.. Cocoa-Python Document-based Application (Embedded Interpreter)
-   --------------------------------------------------------------
-
-.. This template works like the `Cocoa-Python Application (Embedded
-   Interpreter)`_ template in that it is incompatible with the Apple build of
-   Python.   It creates an application that uses Cocoa's Multiple Document
-   Architecture in the same fashion as the default Cocoa Document-based
-   Application supplied with Project Builder.
-
-.. [#] Apple's build of python lacks a shared or static library to which an
-       application can be linked.  As such, it is impossible to embed the
-       Python interpreter into an application.  Because of this, it is
-       impossible to directly link compiled objective-c directly into an
-       application project.  Hence, the "Apple Python compatible" projects are
-       labeled as 100% pure Python.  Since bundles and frameworks can be
-       loaded into such applications, it is still possible to use compiled
-       classes.

File ProjectBuilder Extras/Project Templates/Cocoa-Python Application/00README.txt

-================================
-Cocoa-Python Application Project
-================================
-
-:Author: Bill Bumgarner
-:Contact: bbum@codefab.com
-
-.. contents::
-
-This project is analagous in construction to a regular 'Cocoa Application'
-Project.  The *only* difference is that the primary language of implementation
-is Python.   Once control is passed to the AppKit, a Cocoa-Python application
-should behave just like a pure-ObjC Cocoa or Cocoa-Java application.
-
-Application startup
--------------------
-
-The startup sequence is a bit different from a *regular* Cocoa or Coco-Java
-application in that control must be passed to the Python interpreter, the
-PyObjC bridge must be initialized, and the developer must load any classes
-defined in Python that are required to start the application.
-
-The startup sequence::
-
-1. Application is launched from Project Builder, the command line or by
-   double clicking.
-
-2. The `pyobjc_main` function in `bin-python-main.m` is invoked.
-
-   This function bootstraps into the command line python interpreter.   For a
-   Cocoa application to work correctly, the main executable must reside in
-   the app wrapper.   Furthermore, the executable sets up various bits of
-   environment prior to passing control to python to fine-tune the execution
-   of the application.
-
-   By adding the path to the app wrapper's Resources directory to the
-   **PYTHONPATH** environment variable, the pyobjc module can easily be included
-   in the app wrapper in an isolated fashion.  This makes it easy to
-   distribute a standalone application that uses PyObjC (and other third
-   party Python modules) without further cluttering the `Resources` directory.
-
-   By setting the **DYLD_FRAMEWORK_PATH** and **DYLD_LIBRARY_PATH**
-   environment variables, embedded frameworks within the app wrapper will
-   still link correctly even when dynamcially loaded into the python
-   interpreter.
-
-   a) check to see if **PYTHONPATH** environment variable is already set.
-
-      1) if not, define **PYTHONPATH** to contain the path to the `pyobjc`
-         directory within the app wrapper's Resources directory.
-      2) if so, prepend the path to the `pyobjc` directory
-   b) If the **DYLD_FRAMEWORK_PATH** environment variable is not defined, define
-         it and **DYLD_LIBRARY_PATH** to include both the shared and private
-         frameworks directories within the app wrapper.  If
-         **DYLD_FRAMEWORK_PATH**, nothing is defined or redefined[#]_.
-   c) Set the environment variable **PYOBJCFRAMEWORKS** to be a colon separated
-      list of all of the frameworks linked into the application.
-   d) Check the **PythonBinPath** user default to see if something other than
-         `/usr/bin/python` should be used as the command line entry point to
-         the python interpreter.
-   e) Identify the main python script file to execute.   It can be one of
-      `__main__.py`, `__realmain__.py` or `Main.py`.  Also searched are the
-         same names with `.pyc` or `.pyo` extensions.  Regardless of name, the
-         script file should be in the app wrapper's `Resources` directory.
-   f) Set up the command line for the python interpreter.   Preserve original
-      arguments.
-   g) If the SHOWPID environment variable is set, print a command line that
-      can be used to attach gdb to the application after it has been launched[#]_.
-   h) Pass control to the command line python intepreter using `execve()`.
-
-3. Execute the Main python file
-
-   At this point, control has been passed to the python interpreter (either
-   `/usr/bin/python` or some other interpreter executable as specified by the
-   **PythonBinPath** user default.
-
-   Care should be taken to ensure that your application behaves appropriately
-   if invoked with the "wrong" Python interpreter.
-
-   What follows is a description of the `__main__.py` file as it appears in
-   the *Cocoa-Python Application* project template.   Feel free to modify it
-   as needed.
-
-   a) Import the the three packages associated with PyObjC;  `objc`,
-      `Foundation`, and `AppKit`.
-
-   b) Import any classes that need to be defined before control is passed to
-      Cocoa.
-
-      In Python, there is no concept of 'linking' an application.  Any
-      classes defined in Python must be imported before they can be used.  As
-      such, any classes-- such as `MyAppDelegate` in the project template--
-      that are required by the application as it is launched must be
-      explicitly imported before control is passed to Cocoa::
-
-      import MyAppDelegate
-
-  c) Pass control to Cocoa by using the `NSApplicationMain()` function.
-
-     Note that this last step is the single step found in `main.m` in a
-     regular Cocoa application project.
-
-Classes & NIB files
--------------------
-
-
-     
-.. [#] Project Builder uses these variables to enable linking against
-   frameworks in the development environment without requiring that the
-   developer install frameworks first.
-
-.. [#] Because control is passed to the python interpreter using `execve()`,
-   gdb won't work directly with the application for anything other than
-   debugging the code up until the point `execve()` is called.   `Execve()`
-   replaces the existing process with the process-- the python interpreter--
-   that resides on the path passed as the first argument.  That includes
-   replacing all symbol tables which greatly confuses gdb.
-
-
-

File ProjectBuilder Extras/Project Templates/Cocoa-Python Application/CocoaApp.pbproj/TemplateInfo.plist

-{
-	FilesToMacroExpand = (
-		"English.lproj/InfoPlist.strings",
-		"bin-python-main.m",
-		"__main__.py",
-		"MyAppDelegate.py",
-	);
-
-	Description = "This project builds a Cocoa-based application written in Python.  The project is compatible with the Python that ships with OS X, but can be used with Fink, Framework, or manual builds of Python (if pyobjc has been installed correctly within the desired build).  Upon building the 'install' target, the resulting application should contain everything necessary to run the application on any 10.2 system without first requiring the installation of PyObjC.";
-}

File ProjectBuilder Extras/Project Templates/Cocoa-Python Application/CocoaApp.pbproj/project.pbxproj

-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 38;
-	objects = {
-		080E96DCFE201CFB7F000001 = {
-			fileRef = 29B97318FDCFA39411CA2CEA;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		080E96DDFE201D6D7F000001 = {
-			children = (
-				F60DD8BD0358A22201C8ED3C,
-			);
-			isa = PBXGroup;
-			name = Classes;
-			refType = 4;
-		};
-		089C165CFE840E0CC02AAC07 = {
-			children = (
-				089C165DFE840E0CC02AAC07,
-			);
-			isa = PBXVariantGroup;
-			name = InfoPlist.strings;
-			refType = 4;
-		};
-		089C165DFE840E0CC02AAC07 = {
-			fileEncoding = 10;
-			isa = PBXFileReference;
-			name = English;
-			path = English.lproj/InfoPlist.strings;
-			refType = 4;
-		};
-		089C165EFE840E0CC02AAC07 = {
-			fileRef = 089C165CFE840E0CC02AAC07;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-//080
-//081
-//082
-//083
-//084
-//100
-//101
-//102
-//103
-//104
-		1058C7A1FEA54F0111CA2CBB = {
-			isa = PBXFrameworkReference;
-			name = Cocoa.framework;
-			path = /System/Library/Frameworks/Cocoa.framework;
-			refType = 0;
-		};
-//100
-//101
-//102
-//103
-//104
-//170
-//171
-//172
-//173
-//174
-		17587328FF379C6511CA2CBB = {
-			isa = PBXApplicationReference;
-			path = "«PROJECTNAME».app";
-			refType = 3;
-		};
-//170
-//171
-//172
-//173
-//174
-//190
-//191
-//192
-//193
-//194
-		19C28FACFE9D520D11CA2CBB = {
-			children = (
-				17587328FF379C6511CA2CBB,
-			);
-			isa = PBXGroup;
-			name = Products;
-			refType = 4;
-		};
-//190
-//191
-//192
-//193
-//194
-//290
-//291
-//292
-//293
-//294
-		29B97313FDCFA39411CA2CEA = {
-			buildStyles = (
-				4A9504CCFFE6A4B311CA0CBA,
-				4A9504CDFFE6A4B311CA0CBA,
-			);
-			hasScannedForEncodings = 1;
-			isa = PBXProject;
-			mainGroup = 29B97314FDCFA39411CA2CEA;
-			projectDirPath = "";
-			targets = (
-				29B97326FDCFA39411CA2CEA,
-			);
-		};
-		29B97314FDCFA39411CA2CEA = {
-			children = (
-				080E96DDFE201D6D7F000001,
-				29B97315FDCFA39411CA2CEA,
-				29B97317FDCFA39411CA2CEA,
-				29B97323FDCFA39411CA2CEA,
-				19C28FACFE9D520D11CA2CBB,
-			);
-			isa = PBXGroup;
-			name = "«PROJECTNAMEASXML»";
-			path = "";
-			refType = 4;
-		};
-		29B97315FDCFA39411CA2CEA = {
-			children = (
-				F60DD8BC0358A22201C8ED3C,
-				29B97316FDCFA39411CA2CEA,
-			);
-			isa = PBXGroup;
-			name = "Other Sources";
-			path = "";
-			refType = 4;
-		};
-		29B97316FDCFA39411CA2CEA = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			path = "bin-python-main.m";
-			refType = 4;
-		};
-		29B97317FDCFA39411CA2CEA = {
-			children = (
-				29B97318FDCFA39411CA2CEA,
-				089C165CFE840E0CC02AAC07,
-			);
-			isa = PBXGroup;
-			name = Resources;
-			path = "";
-			refType = 4;
-		};
-		29B97318FDCFA39411CA2CEA = {
-			children = (
-				29B97319FDCFA39411CA2CEA,
-			);
-			isa = PBXVariantGroup;
-			name = MainMenu.nib;
-			path = "";
-			refType = 4;
-		};
-		29B97319FDCFA39411CA2CEA = {
-			isa = PBXFileReference;
-			name = English;
-			path = English.lproj/MainMenu.nib;
-			refType = 4;
-		};
-		29B97323FDCFA39411CA2CEA = {
-			children = (
-				77AD46F403ECA7E2004B557F,
-				29B97324FDCFA39411CA2CEA,
-				1058C7A1FEA54F0111CA2CBB,
-				29B97325FDCFA39411CA2CEA,
-			);
-			isa = PBXGroup;
-			name = "Frameworks & Modules";
-			path = "";
-			refType = 4;
-		};
-		29B97324FDCFA39411CA2CEA = {
-			isa = PBXFrameworkReference;
-			name = AppKit.framework;
-			path = /System/Library/Frameworks/AppKit.framework;
-			refType = 0;
-		};
-		29B97325FDCFA39411CA2CEA = {
-			isa = PBXFrameworkReference;
-			name = Foundation.framework;
-			path = /System/Library/Frameworks/Foundation.framework;
-			refType = 0;
-		};
-		29B97326FDCFA39411CA2CEA = {
-			buildPhases = (
-				29B97327FDCFA39411CA2CEA,
-				29B97328FDCFA39411CA2CEA,
-				29B9732BFDCFA39411CA2CEA,
-				29B9732DFDCFA39411CA2CEA,
-				F60DD8ED0358A61B01C8ED3C,
-			);
-			buildSettings = {
-				FRAMEWORK_SEARCH_PATHS = "";
-				HEADER_SEARCH_PATHS = "";
-				INSTALL_PATH = "$(HOME)/Applications";
-				LIBRARY_SEARCH_PATHS = "";
-				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "";
-				PRODUCT_NAME = "«PROJECTNAME»";
-				SECTORDER_FLAGS = "";
-				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
-				WRAPPER_EXTENSION = app;
-			};
-			dependencies = (
-			);
-			isa = PBXApplicationTarget;
-			name = "«PROJECTNAME»";
-			productInstallPath = "$(HOME)/Applications";
-			productName = "«PROJECTNAME»";
-			productReference = 17587328FF379C6511CA2CBB;
-			productSettingsXML = "<?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>CFBundleExecutable</key>
-	<string>«PROJECTNAMEASXML»</string>
-	<key>CFBundleIconFile</key>
-	<string></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>
-";
-		};
-		29B97327FDCFA39411CA2CEA = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXHeadersBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		29B97328FDCFA39411CA2CEA = {
-			buildActionMask = 2147483647;
-			files = (
-				080E96DCFE201CFB7F000001,
-				089C165EFE840E0CC02AAC07,
-				F60DD8BE0358A22201C8ED3C,
-				F60DD8BF0358A22201C8ED3C,
-			);
-			isa = PBXResourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		29B9732BFDCFA39411CA2CEA = {
-			buildActionMask = 2147483647;
-			files = (
-				29B9732CFDCFA39411CA2CEA,
-			);
-			isa = PBXSourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		29B9732CFDCFA39411CA2CEA = {
-			fileRef = 29B97316FDCFA39411CA2CEA;
-			isa = PBXBuildFile;
-			settings = {
-				ATTRIBUTES = (
-				);
-			};
-		};
-		29B9732DFDCFA39411CA2CEA = {
-			buildActionMask = 2147483647;
-			files = (
-				F60DD8CF0358A5C101C8ED3C,
-			);
-			isa = PBXFrameworksBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-//290
-//291
-//292
-//293
-//294
-//4A0
-//4A1
-//4A2
-//4A3
-//4A4
-		4A9504CCFFE6A4B311CA0CBA = {
-			buildRules = (
-			);
-			buildSettings = {
-				COPY_PHASE_STRIP = NO;
-				OPTIMIZATION_CFLAGS = "-O0";
-			};
-			isa = PBXBuildStyle;
-			name = Development;
-		};
-		4A9504CDFFE6A4B311CA0CBA = {
-			buildRules = (
-			);
-			buildSettings = {
-				COPY_PHASE_STRIP = YES;
-			};
-			isa = PBXBuildStyle;
-			name = Deployment;
-		};
-//4A0
-//4A1
-//4A2
-//4A3
-//4A4
-//770
-//771
-//772
-//773
-//774
-		77AD46F403ECA7E2004B557F = {
-			includeInIndex = 1;
-			isa = PBXFolderReference;
-			name = PyObjC;
-			path = "/usr/lib/python2.2/site-packages/PyObjC";
-			refType = 0;
-		};
-		77AD475703ECA800004B557F = {
-			fileRef = 77AD46F403ECA7E2004B557F;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-//770
-//771
-//772
-//773
-//774
-//F60
-//F61
-//F62
-//F63
-//F64
-		F60DD8BC0358A22201C8ED3C = {
-			fileEncoding = 30;
-			isa = PBXExecutableFileReference;
-			path = __main__.py;
-			refType = 2;
-		};
-		F60DD8BD0358A22201C8ED3C = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			path = MyAppDelegate.py;
-			refType = 2;
-		};
-		F60DD8BE0358A22201C8ED3C = {
-			fileRef = F60DD8BC0358A22201C8ED3C;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		F60DD8BF0358A22201C8ED3C = {
-			fileRef = F60DD8BD0358A22201C8ED3C;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		F60DD8CF0358A5C101C8ED3C = {
-			fileRef = 29B97325FDCFA39411CA2CEA;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		F60DD8ED0358A61B01C8ED3C = {
-			buildActionMask = 8;
-			dstPath = "";
-			dstSubfolderSpec = 7;
-			files = (
-				77AD475703ECA800004B557F,
-			);
-			isa = PBXCopyFilesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 1;
-		};
-	};
-	rootObject = 29B97313FDCFA39411CA2CEA;
-}

File ProjectBuilder Extras/Project Templates/Cocoa-Python Application/English.lproj/InfoPlist.strings

Binary file removed.

File ProjectBuilder Extras/Project Templates/Cocoa-Python Application/English.lproj/MainMenu.nib/classes.nib

-{
-    IBClasses = (
-        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, 
-        {
-            ACTIONS = {sayHelloAction = id; }; 
-            CLASS = MyAppDelegate; 
-            LANGUAGE = ObjC; 
-            OUTLETS = {messageTextField = NSTextField; }; 
-            SUPERCLASS = NSObject; 
-        }
-    ); 
-    IBVersion = 1; 
-}

File ProjectBuilder Extras/Project Templates/Cocoa-Python Application/English.lproj/MainMenu.nib/info.nib

-<?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>IBEditorPositions</key>
-	<dict>
-		<key>29</key>
-		<string>82 252 318 44 0 0 1152 746 </string>
-	</dict>
-	<key>IBFramework Version</key>
-	<string>286.0</string>
-	<key>IBOpenObjects</key>
-	<array>
-		<integer>29</integer>
-		<integer>21</integer>
-	</array>
-	<key>IBSystem Version</key>
-	<string>6D52</string>
-</dict>
-</plist>

File ProjectBuilder Extras/Project Templates/Cocoa-Python Application/English.lproj/MainMenu.nib/keyedobjects.nib

Binary file removed.

File ProjectBuilder Extras/Project Templates/Cocoa-Python Application/MyAppDelegate.py

-#
-#  MyAppDelegate.py
-#  �PROJECTNAME�
-#
-#  Created by �FULLUSERNAME� on �DATE�.
-#  Copyright (c) �YEAR� �ORGANIZATIONNAME�. All rights reserved.
-#
-
-# import needed classes/functions from Foundation
-from Foundation import NSObject, NSProcessInfo, NSFullUserName, NSLog
-
-# import Nib loading functionality from AppKit
-from AppKit import NSApplicationDelegate
-from PyObjCTools import NibClassBuilder
-
-# create ObjC classes as defined in MainMenu.nib
-NibClassBuilder.extractClasses("MainMenu")
-class MyAppDelegate(NibClassBuilder.AutoBaseClass, NSApplicationDelegate):
-    """
-    The application's delegate.
-
-    An instance of this class is instantiated in the MainMenu.nib file
-    to act as the Application's delegate and as the target of the
-    sayHello: action.
-
-    Note that by inheriting from AutoBaseClass, PyObjC will
-    automatically define MyAppDelegate based on the definition of
-    MyAppDelegate in MainMenu.nib.  The inheritance of this class will
-    be determined by the class definition in the NIB and all outlets
-    will automatically be defined.
-
-    Action methods are not automatically defined as this follows the
-    ObjC behavior;  the AppKit automatically prints a warning upon NIB
-    loading if a target/action connection could not be made.
-    """
-    def sayHelloAction_(self, sender):
-        """
-        An example of a standard target action method implementation.
-        """
-        userName = NSFullUserName()
-        hostName = NSProcessInfo.processInfo().hostName()
-        helloString = "Hello %s @ %s!" % (userName, hostName)
-
-        self.messageTextField.setStringValue_(helloString)
-        NSLog( "Saying: %s" % helloString )
-
-    def applicationDidFinishLaunching_(self, aNotification):
-        """
-        Invoked by NSApplication once the app is done launching and
-        immediately before the first pass through the main event
-        loop.
-        """
-        NSLog( "Application did finish launching." )
-        self.messageTextField.setStringValue_("Click the button.")

File ProjectBuilder Extras/Project Templates/Cocoa-Python Application/__main__.py

-#
-#  Main.py
-#  �PROJECTNAME�
-#
-#  Created by �FULLUSERNAME� on �DATE�.
-#  Copyright (c) �YEAR� �ORGANIZATIONNAME�. All rights reserved.
-#
-
-from PyObjCTools import AppHelper
-
-# import classes required to start application
-import MyAppDelegate
-
-# start the event loop
-AppHelper.runEventLoop()

File ProjectBuilder Extras/Project Templates/Cocoa-Python Application/bin-python-main.m

-//
-//  bin-python-main.m
-//  �PROJECTNAME�
-//
-//  Created by �FULLUSERNAME� on �DATE�.
-//  Copyright (c) �YEAR� �ORGANIZATIONNAME�. All rights reserved.
-//
-
-/*
- This main file uses execve() to transfer control of execution to the standard command line python interpreter.   As such, compiled classes in the project will not actually be linked into the runtime as execve() effectively overlays the existing process with the process being called -- in this case the python command line tool.
-
- To use compiled classes with this main, create a separate bundle target and load the bundle in the main python file.  The main python file should be in Resources and should be named "__main__.py", "__realmain__.py" or "Main.py".
-
- This style of execution works with the Apple provided version of Python.
- */
-
-#import <Foundation/Foundation.h>
-#import <Cocoa/Cocoa.h> // for indexing in PB, not otherwise used.
-#import <sys/param.h>
-#import <unistd.h>
-
-int pyobjc_main(int argc, char * const *argv, char * const *envp)
-{
-    // The autorelease pool is not released on purpose.   The call to execve() 
-    // destroys the calling process entirely and, as such, memory management 
-    // in the traditional sense is not necessary (and not doing so avoids 
-    // potential bugs associated with releasing the pool prior to the call to 
-    // execve).
-    const char** childArgv;
-    NSEnumerator* bundleEnumerator;
-    NSBundle* aBundle;
-    NSBundle* mainBundle;
-    NSMutableArray* bundlePaths;
-    int i;
-    int envc;
-    char** childEnvp;
-    char*  PYTHONPATH = NULL;
-    const char *pythonPathInWrapper;
-    NSString *pythonBinPath;
-    const char *pythonBinPathPtr; 
-    NSArray *possibleMains;
-    NSEnumerator * possibleMainsEnumerator;
-    NSString *mainPyPath;
-    NSString *nextFileName;
-    const char * mainPyPathPtr;
-
-    [[NSAutoreleasePool alloc] init];
-
-    childArgv = alloca(sizeof(char *) * (argc + 5));
-    bundleEnumerator = [[NSBundle allFrameworks] reverseObjectEnumerator];
-    mainBundle = [NSBundle mainBundle];
-    bundlePaths = [NSMutableArray array];
-
-    // set up paths to be prepended to the PYTHONPATH
-    pythonPathInWrapper = [[NSString stringWithFormat: @"%@:%@",
-        [[NSBundle mainBundle] resourcePath],
-        [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: @"PyObjC"]] UTF8String];
-
-    // count entries in environment and find the PYTHONPATH setting, if present
-    for (envc = 0; envp[envc] != NULL; envc++) {
-        if (strncmp(envp[envc], "PYTHONPATH=", sizeof("PYTHONPATH=")-1) == 0) {
-            PYTHONPATH=envp[envc] + sizeof("PYTHONPATH=") - 1;
-            /* No break, we also want to know how large envp is */
-        }
-    }
-
-    // copy the environment into a new array that will eventually also contain the PYTHONPATH
-    childEnvp = alloca(sizeof(char*) * (envc + 10)); // enough for both PYTHONPATH and the DYLD stuff
-    for (envc = 0; envp[envc] != NULL; envc ++) {
-        if (strncmp(envp[envc], "PYTHONPATH=", sizeof("PYTHONPATH=")-1) == 0) {
-            // already exisxts, prepend app wrapper paths
-            NSString *envValue = [NSString stringWithFormat: @"PYTHONPATH=%s:%s", pythonPathInWrapper, PYTHONPATH];
-            childEnvp[envc] = (char *)[envValue UTF8String];
-        } else {
-            childEnvp[envc] = envp[envc];
-        }
-    }
-    if (PYTHONPATH) {
-        // already set in for() loop above
-        childEnvp[envc] = NULL;
-    } else {
-        // wasn't set -- add PYTHONPATH to child
-        NSString *envValue = [NSString stringWithFormat: @"PYTHONPATH=%s", pythonPathInWrapper];
-        childEnvp[envc] = (char *)[envValue UTF8String];
-        envc++;
-        childEnvp[envc] = NULL;
-    }
-
-    // if this is set, it is most likely because of PBX or because the developer is doing something....
-    if ( !getenv("DYLD_FRAMEWORK_PATH") ) {
-        // if not, put the DYLD environment into a state where we can actually load frameworks from within the app
-        // wrapper where the frameworks may have inter-dependencies.
-        NSArray *paths = [NSArray arrayWithObjects: [mainBundle sharedFrameworksPath], [mainBundle privateFrameworksPath], nil];
-        NSString *joinedPaths = [paths componentsJoinedByString: @":"];
-        const char *dyldFrameworkPath = [[NSString stringWithFormat: @"DYLD_FRAMEWORK_PATH=%@", joinedPaths] UTF8String];
-        const char *dyldLibraryPath = [[NSString stringWithFormat: @"DYLD_LIBRARY_PATH=%@", joinedPaths] UTF8String];
-
-        childEnvp[envc++] = (char *)dyldFrameworkPath;
-        childEnvp[envc++] = (char *)dyldLibraryPath;
-
-        // useful for debugging-- set this as a default.
-        if ([[NSUserDefaults standardUserDefaults] boolForKey: @"DYLD_PRINT_LIBRARIES"])
-            childEnvp[envc++] = (char *)"DYLD_PRINT_LIBRARIES=1";
-        childEnvp[envc++] = NULL;
-    }
-
-    // grab a list of all frameworks that were linked into this executable
-    while ( aBundle = [bundleEnumerator nextObject] ) {
-        if ( [[[aBundle bundlePath] pathExtension] isEqualToString: @"framework"] )
-            [bundlePaths addObject: [aBundle bundlePath]];
-    }
-
-    // set an environment variable to contain the linked frameworks
-    childEnvp[envc++] = (char*)[[NSString stringWithFormat: @"PYOBJCFRAMEWORKS=%@", [bundlePaths componentsJoinedByString: @":"]] UTF8String];
-    childEnvp[envc++] = NULL;
-
-    // figure out which python interpreter to use
-    pythonBinPath = [[NSUserDefaults standardUserDefaults] stringForKey: @"PythonBinPath"];
-    pythonBinPath = pythonBinPath ? pythonBinPath : @"/usr/bin/python";
-
-    pythonBinPathPtr = [pythonBinPath UTF8String];
-
-    // find main python file.  __main__.py seems to be a standard.
-    possibleMains = [NSArray arrayWithObjects:
-        @"__main__.py",
-        @"__main__.pyc",
-        @"__main__.pyo",
-        @"__realmain__.py",
-        @"__realmain__.pyc",
-        @"__realmain__.pyo",
-        @"Main.py",
-        @"Main.pyc",
-        @"Main.pyo",
-        nil];
-    possibleMainsEnumerator = [possibleMains objectEnumerator];
-
-    while (nextFileName = [possibleMainsEnumerator nextObject]) {
-        mainPyPath = [mainBundle pathForResource: nextFileName ofType: nil];
-        if ( mainPyPath )
-            break;
-    }
-
-    if ( !mainPyPath )
-        [NSException raise: NSInternalInconsistencyException
-                    format: @"%s:%d pyobjc_main() Failed to find one of %@ in app wrapper.  Exiting.", __FILE__, __LINE__, possibleMains];
-    mainPyPathPtr = [mainPyPath UTF8String];
-
-    // construct argv for the child
-
-    // the path to the executable in the app wrapper -- must be in the app wrapper or CFBundle does not initialize correctly
-    childArgv[0] = argv[0];
-
-    // path to the python file that acts as the main entry point
-    childArgv[1] = mainPyPathPtr;
-
-    // Pass original arguments (such as -NSOpen) verbatum
-    //
-    // Move each argument right one slot
-    for (i = 1; i<argc; i++)
-        childArgv[i+1] = argv[i];
-    i++; // compensate for i+1 in for() loop
-
-    // terminate the arg list
-    childArgv[i++] = NULL;
-
-    // print a nice debugging helper message, if desired
-    if ([[[NSProcessInfo processInfo] environment] objectForKey: @"SHOWPID"])
-        NSLog(@"Process ID is: %d (\n\tgdb %s %d\n to debug)", getpid(), pythonBinPathPtr, getpid());
-
-    // pass control to the python interpreter
-    if (execve(pythonBinPathPtr, (char **)childArgv, childEnvp) == -1)
-        perror("execve");
-    return 1;
-}
-
-int main(int argc, char * const *argv, char * const *envp)
-{
-    return pyobjc_main(argc, argv, envp);
-}

File ProjectBuilder Extras/Project Templates/Cocoa-Python Document-based Application/00README.txt

-================================
-Cocoa-Python Application Project
-================================
-
-:Author: Bill Bumgarner
-:Contact: bbum@codefab.com
-
-.. contents::
-
-This project is analagous in construction to a regular 'Cocoa Application'
-Project.  The *only* difference is that the primary language of implementation
-is Python.   Once control is passed to the AppKit, a Cocoa-Python application
-should behave just like a pure-ObjC Cocoa or Cocoa-Java application.
-
-Application startup
--------------------
-
-The startup sequence is a bit different from a *regular* Cocoa or Coco-Java
-application in that control must be passed to the Python interpreter, the
-PyObjC bridge must be initialized, and the developer must load any classes
-defined in Python that are required to start the application.
-
-The startup sequence::
-
-1. Application is launched from Project Builder, the command line or by
-   double clicking.
-
-2. The `pyobjc_main` function in `bin-python-main.m` is invoked.
-
-   This function bootstraps into the command line python interpreter.   For a
-   Cocoa application to work correctly, the main executable must reside in
-   the app wrapper.   Furthermore, the executable sets up various bits of
-   environment prior to passing control to python to fine-tune the execution
-   of the application.
-
-   By adding the path to the app wrapper's Resources directory to the
-   **PYTHONPATH** environment variable, the pyobjc module can easily be included
-   in the app wrapper in an isolated fashion.  This makes it easy to
-   distribute a standalone application that uses PyObjC (and other third
-   party Python modules) without further cluttering the `Resources` directory.
-
-   By setting the **DYLD_FRAMEWORK_PATH** and **DYLD_LIBRARY_PATH**
-   environment variables, embedded frameworks within the app wrapper will
-   still link correctly even when dynamcially loaded into the python
-   interpreter.
-
-   a) check to see if **PYTHONPATH** environment variable is already set.
-
-      1) if not, define **PYTHONPATH** to contain the path to the `pyobjc`
-         directory within the app wrapper's Resources directory.
-      2) if so, prepend the path to the `pyobjc` directory
-   b) If the **DYLD_FRAMEWORK_PATH** environment variable is not defined, define
-         it and **DYLD_LIBRARY_PATH** to include both the shared and private
-         frameworks directories within the app wrapper.  If
-         **DYLD_FRAMEWORK_PATH**, nothing is defined or redefined[#]_.
-   c) Set the environment variable **PYOBJCFRAMEWORKS** to be a colon separated
-      list of all of the frameworks linked into the application.
-   d) Check the **PythonBinPath** user default to see if something other than
-         `/usr/bin/python` should be used as the command line entry point to
-         the python interpreter.
-   e) Identify the main python script file to execute.   It can be one of
-      `__main__.py`, `__realmain__.py` or `Main.py`.  Also searched are the
-         same names with `.pyc` or `.pyo` extensions.  Regardless of name, the
-         script file should be in the app wrapper's `Resources` directory.
-   f) Set up the command line for the python interpreter.   Preserve original
-      arguments.
-   g) If the SHOWPID environment variable is set, print a command line that
-      can be used to attach gdb to the application after it has been launched[#]_.
-   h) Pass control to the command line python intepreter using `execve()`.
-
-3. Execute the Main python file
-
-   At this point, control has been passed to the python interpreter (either
-   `/usr/bin/python` or some other interpreter executable as specified by the
-   **PythonBinPath** user default.
-
-   Care should be taken to ensure that your application behaves appropriately
-   if invoked with the "wrong" Python interpreter.
-
-   What follows is a description of the `__main__.py` file as it appears in
-   the *Cocoa-Python Application* project template.   Feel free to modify it
-   as needed.
-
-   a) Import the the three packages associated with PyObjC;  `objc`,
-      `Foundation`, and `AppKit`.
-
-   b) Import any classes that need to be defined before control is passed to
-      Cocoa.
-
-      In Python, there is no concept of 'linking' an application.  Any
-      classes defined in Python must be imported before they can be used.  As
-      such, any classes-- such as `MyAppDelegate` in the project template--
-      that are required by the application as it is launched must be
-      explicitly imported before control is passed to Cocoa::
-
-      import MyAppDelegate
-
-  c) Pass control to Cocoa by using the `NSApplicationMain()` function.
-
-     Note that this last step is the single step found in `main.m` in a
-     regular Cocoa application project.
-
-Classes & NIB files
--------------------
-
-
-     
-.. [#] Project Builder uses these variables to enable linking against
-   frameworks in the development environment without requiring that the
-   developer install frameworks first.
-
-.. [#] Because control is passed to the python interpreter using `execve()`,
-   gdb won't work directly with the application for anything other than
-   debugging the code up until the point `execve()` is called.   `Execve()`
-   replaces the existing process with the process-- the python interpreter--
-   that resides on the path passed as the first argument.  That includes
-   replacing all symbol tables which greatly confuses gdb.
-
-
-

File ProjectBuilder Extras/Project Templates/Cocoa-Python Document-based Application/CocoaDocApp.pbproj/TemplateInfo.plist

-{
-	FilesToMacroExpand = (
-		"English.lproj/InfoPlist.strings",
-		"bin-python-main.m",
-		"__main__.py",
-		"MyAppDelegate.py",
-		"MyDocument.py",
-		"Credits.rtf"
-	);
-
-	Description = "This project builds a Cocoa-based application written in Python that uses the NSDocument multiple-document handling architecture.  See the README in Cocoa-Python Application for details on the integration with the PyObjC bridge and compatibility with Apple's version of Python.";
-}

File ProjectBuilder Extras/Project Templates/Cocoa-Python Document-based Application/CocoaDocApp.pbproj/project.pbxproj

-// !$*UTF8*$!
-{
-	archiveVersion = 1;
-	classes = {
-	};
-	objectVersion = 38;
-	objects = {
-		080E96DCFE201CFB7F000001 = {
-			fileRef = 29B97318FDCFA39411CA2CEA;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		080E96DDFE201D6D7F000001 = {
-			children = (
-				F60DD8BD0358A22201C8ED3C,
-				77B645D703D453C7004531D0,
-			);
-			isa = PBXGroup;
-			name = Classes;
-			refType = 4;
-		};
-		089C165CFE840E0CC02AAC07 = {
-			children = (
-				089C165DFE840E0CC02AAC07,
-			);
-			isa = PBXVariantGroup;
-			name = InfoPlist.strings;
-			refType = 4;
-		};
-		089C165DFE840E0CC02AAC07 = {
-			fileEncoding = 10;
-			isa = PBXFileReference;
-			name = English;
-			path = English.lproj/InfoPlist.strings;
-			refType = 4;
-		};
-		089C165EFE840E0CC02AAC07 = {
-			fileRef = 089C165CFE840E0CC02AAC07;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-//080
-//081
-//082
-//083
-//084
-//100
-//101
-//102
-//103
-//104
-		1058C7A1FEA54F0111CA2CBB = {
-			isa = PBXFrameworkReference;
-			name = Cocoa.framework;
-			path = /System/Library/Frameworks/Cocoa.framework;
-			refType = 0;
-		};
-//100
-//101
-//102
-//103
-//104
-//170
-//171
-//172
-//173
-//174
-		17587328FF379C6511CA2CBB = {
-			isa = PBXApplicationReference;
-			path = "«PROJECTNAME».app";
-			refType = 3;
-		};
-//170
-//171
-//172
-//173
-//174
-//190
-//191
-//192
-//193
-//194
-		19C28FACFE9D520D11CA2CBB = {
-			children = (
-				17587328FF379C6511CA2CBB,
-			);
-			isa = PBXGroup;
-			name = Products;
-			refType = 4;
-		};
-//190
-//191
-//192
-//193
-//194
-//290
-//291
-//292
-//293
-//294
-		29B97313FDCFA39411CA2CEA = {
-			buildStyles = (
-				4A9504CCFFE6A4B311CA0CBA,
-				4A9504CDFFE6A4B311CA0CBA,
-			);
-			hasScannedForEncodings = 1;
-			isa = PBXProject;
-			mainGroup = 29B97314FDCFA39411CA2CEA;
-			projectDirPath = "";
-			targets = (
-				29B97326FDCFA39411CA2CEA,
-			);
-		};
-		29B97314FDCFA39411CA2CEA = {
-			children = (
-				080E96DDFE201D6D7F000001,
-				29B97315FDCFA39411CA2CEA,
-				29B97317FDCFA39411CA2CEA,
-				29B97323FDCFA39411CA2CEA,
-				19C28FACFE9D520D11CA2CBB,
-			);
-			isa = PBXGroup;
-			name = "«PROJECTNAMEASXML»";
-			path = "";
-			refType = 4;
-		};
-		29B97315FDCFA39411CA2CEA = {
-			children = (
-				F60DD8BC0358A22201C8ED3C,
-				29B97316FDCFA39411CA2CEA,
-			);
-			isa = PBXGroup;
-			name = "Other Sources";
-			path = "";
-			refType = 4;
-		};
-		29B97316FDCFA39411CA2CEA = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			path = "bin-python-main.m";
-			refType = 4;
-		};
-		29B97317FDCFA39411CA2CEA = {
-			children = (
-				77B645D903D455A5004531D0,
-				29B97318FDCFA39411CA2CEA,
-				77B645DB03D455A5004531D0,
-				089C165CFE840E0CC02AAC07,
-			);
-			isa = PBXGroup;
-			name = Resources;
-			path = "";
-			refType = 4;
-		};
-		29B97318FDCFA39411CA2CEA = {
-			children = (
-				29B97319FDCFA39411CA2CEA,
-			);
-			isa = PBXVariantGroup;
-			name = MainMenu.nib;
-			path = "";
-			refType = 4;
-		};
-		29B97319FDCFA39411CA2CEA = {
-			isa = PBXFileReference;
-			name = English;
-			path = English.lproj/MainMenu.nib;
-			refType = 4;
-		};
-		29B97323FDCFA39411CA2CEA = {
-			children = (
-				77AD459403ECA7A6004B557F,
-				29B97324FDCFA39411CA2CEA,
-				1058C7A1FEA54F0111CA2CBB,
-				29B97325FDCFA39411CA2CEA,
-			);
-			isa = PBXGroup;
-			name = "Frameworks & Modules";
-			path = "";
-			refType = 4;
-		};
-		29B97324FDCFA39411CA2CEA = {
-			isa = PBXFrameworkReference;
-			name = AppKit.framework;
-			path = /System/Library/Frameworks/AppKit.framework;
-			refType = 0;
-		};
-		29B97325FDCFA39411CA2CEA = {
-			isa = PBXFrameworkReference;
-			name = Foundation.framework;
-			path = /System/Library/Frameworks/Foundation.framework;
-			refType = 0;
-		};
-		29B97326FDCFA39411CA2CEA = {
-			buildPhases = (
-				29B97327FDCFA39411CA2CEA,
-				29B97328FDCFA39411CA2CEA,
-				29B9732BFDCFA39411CA2CEA,
-				29B9732DFDCFA39411CA2CEA,
-				F60DD8ED0358A61B01C8ED3C,
-			);
-			buildSettings = {
-				FRAMEWORK_SEARCH_PATHS = "";
-				HEADER_SEARCH_PATHS = "";
-				INSTALL_PATH = "$(HOME)/Applications";
-				LIBRARY_SEARCH_PATHS = "";
-				OTHER_CFLAGS = "";
-				OTHER_LDFLAGS = "";
-				PRODUCT_NAME = "«PROJECTNAME»";
-				SECTORDER_FLAGS = "";
-				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
-				WRAPPER_EXTENSION = app;
-			};
-			dependencies = (
-			);
-			isa = PBXApplicationTarget;
-			name = "«PROJECTNAME»";
-			productInstallPath = "$(HOME)/Applications";
-			productName = "«PROJECTNAME»";
-			productReference = 17587328FF379C6511CA2CBB;
-			productSettingsXML = "<?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>«PROJECTNAMEASXML»</string>
-	<key>CFBundleIconFile</key>
-	<string></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>
-";
-		};
-		29B97327FDCFA39411CA2CEA = {
-			buildActionMask = 2147483647;
-			files = (
-			);
-			isa = PBXHeadersBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		29B97328FDCFA39411CA2CEA = {
-			buildActionMask = 2147483647;
-			files = (
-				080E96DCFE201CFB7F000001,
-				77B645DE03D455A5004531D0,
-				089C165EFE840E0CC02AAC07,
-				77B645DD03D455A5004531D0,
-				F60DD8BE0358A22201C8ED3C,
-				F60DD8BF0358A22201C8ED3C,
-				77B645D803D453C7004531D0,
-			);
-			isa = PBXResourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		29B9732BFDCFA39411CA2CEA = {
-			buildActionMask = 2147483647;
-			files = (
-				29B9732CFDCFA39411CA2CEA,
-			);
-			isa = PBXSourcesBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-		29B9732CFDCFA39411CA2CEA = {
-			fileRef = 29B97316FDCFA39411CA2CEA;
-			isa = PBXBuildFile;
-			settings = {
-				ATTRIBUTES = (
-				);
-			};
-		};
-		29B9732DFDCFA39411CA2CEA = {
-			buildActionMask = 2147483647;
-			files = (
-				F60DD8CF0358A5C101C8ED3C,
-				77B645DF03D45704004531D0,
-			);
-			isa = PBXFrameworksBuildPhase;
-			runOnlyForDeploymentPostprocessing = 0;
-		};
-//290
-//291
-//292
-//293
-//294
-//4A0
-//4A1
-//4A2
-//4A3
-//4A4
-		4A9504CCFFE6A4B311CA0CBA = {
-			buildRules = (
-			);
-			buildSettings = {
-				COPY_PHASE_STRIP = NO;
-				OPTIMIZATION_CFLAGS = "-O0";
-			};
-			isa = PBXBuildStyle;
-			name = Development;
-		};
-		4A9504CDFFE6A4B311CA0CBA = {
-			buildRules = (
-			);
-			buildSettings = {
-				COPY_PHASE_STRIP = YES;
-			};
-			isa = PBXBuildStyle;
-			name = Deployment;
-		};
-//4A0
-//4A1
-//4A2
-//4A3
-//4A4
-//770
-//771
-//772
-//773
-//774
-		7747BB0A03EEAEB40066FBB1 = {
-			fileRef = 77AD459403ECA7A6004B557F;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		77AD459403ECA7A6004B557F = {
-			includeInIndex = 1;
-			isa = PBXFolderReference;
-			name = PyObjC;
-			path = "/usr/lib/python2.2/site-packages/PyObjC";
-			refType = 0;
-		};
-		77B645D703D453C7004531D0 = {
-			fileEncoding = 4;
-			isa = PBXFileReference;
-			path = MyDocument.py;
-			refType = 4;
-		};
-		77B645D803D453C7004531D0 = {
-			fileRef = 77B645D703D453C7004531D0;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		77B645D903D455A5004531D0 = {
-			children = (
-				77B645DA03D455A5004531D0,
-			);
-			isa = PBXVariantGroup;
-			name = Credits.rtf;
-			path = "";
-			refType = 4;
-		};
-		77B645DA03D455A5004531D0 = {
-			isa = PBXFileReference;
-			name = English;
-			path = English.lproj/Credits.rtf;
-			refType = 4;
-		};
-		77B645DB03D455A5004531D0 = {
-			children = (
-				77B645DC03D455A5004531D0,
-			);
-			isa = PBXVariantGroup;
-			name = MyDocument.nib;
-			path = "";
-			refType = 4;
-		};
-		77B645DC03D455A5004531D0 = {
-			isa = PBXFileReference;
-			name = English;
-			path = English.lproj/MyDocument.nib;
-			refType = 4;
-		};
-		77B645DD03D455A5004531D0 = {
-			fileRef = 77B645D903D455A5004531D0;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		77B645DE03D455A5004531D0 = {
-			fileRef = 77B645DB03D455A5004531D0;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-		77B645DF03D45704004531D0 = {
-			fileRef = 1058C7A1FEA54F0111CA2CBB;
-			isa = PBXBuildFile;
-			settings = {
-			};
-		};
-//770
-//771
-//772
-//773
-//774
-//F60
-//F61
-//F62
-//F63
-//F64
-		F60DD8BC0358A22201C8ED3C = {
-			fileEncoding = 30;
-			isa = PBXExecutableFileReference;
-			path = __main__.py;
-			refType = 2;
-		};
-		F60DD8BD0358A22201C8ED3C = {
-			fileEncoding = 30;
-			isa = PBXFileReference;
-			path = MyAppDelegate.py;