[PyObjC-svn] r2475 - in trunk/pyobjc/pyobjc-core/Doc: . 06tutorial 07tutorial_embed dev lib tutorials tutorials/step12-src tutorials/step3-MainMenu.nib
[email protected] Sun, 09 May 2010 08:48:45 -0500
| Newsgroups | gmane.comp.python.pyobjc.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: ronaldoussoren
Date: Sun May 9 08:48:45 2010
New Revision: 2475
Log:
Move the documentation to sphinx, thanks to Virgil Dupras for
the patch.
Added:
trunk/pyobjc/pyobjc-core/Doc/blocks.rst
- copied, changed from r2348, /trunk/pyobjc/pyobjc-core/Doc/24blocks.txt
trunk/pyobjc/pyobjc-core/Doc/dev/
trunk/pyobjc/pyobjc-core/Doc/dev/coding-style.rst
- copied, changed from r2348, /trunk/pyobjc/pyobjc-core/Doc/50coding-style.txt
trunk/pyobjc/pyobjc-core/Doc/dev/structure.rst
- copied, changed from r2348, /trunk/pyobjc/pyobjc-core/Doc/49structure.txt
trunk/pyobjc/pyobjc-core/Doc/dev/wrapping.rst
- copied, changed from r2348, /trunk/pyobjc/pyobjc-core/Doc/54wrapping.txt
trunk/pyobjc/pyobjc-core/Doc/fsref-fsspec.rst
- copied, changed from r2348, /trunk/pyobjc/pyobjc-core/Doc/22fsref-fsspec.txt
trunk/pyobjc/pyobjc-core/Doc/protocols.rst
- copied unchanged from r2348, /trunk/pyobjc/pyobjc-core/Doc/21protocols.txt
trunk/pyobjc/pyobjc-core/Doc/tutorials/
- copied from r2348, /trunk/pyobjc/pyobjc-core/Doc/06tutorial/
trunk/pyobjc/pyobjc-core/Doc/tutorials/embedded.rst
- copied, changed from r2348, /trunk/pyobjc/pyobjc-core/Doc/07tutorial_embed/index.txt
trunk/pyobjc/pyobjc-core/Doc/tutorials/embedded_src.zip (contents, props changed)
trunk/pyobjc/pyobjc-core/Doc/tutorials/firstapp.rst
- copied, changed from r2348, /trunk/pyobjc/pyobjc-core/Doc/06tutorial/index.txt
trunk/pyobjc/pyobjc-core/Doc/tutorials/firstapp_src.zip (contents, props changed)
trunk/pyobjc/pyobjc-core/Doc/xcode.rst
- copied unchanged from r2348, /trunk/pyobjc/pyobjc-core/Doc/23xcode.txt
Removed:
trunk/pyobjc/pyobjc-core/Doc/06tutorial/
trunk/pyobjc/pyobjc-core/Doc/07tutorial_embed/
trunk/pyobjc/pyobjc-core/Doc/21protocols.txt
trunk/pyobjc/pyobjc-core/Doc/22fsref-fsspec.txt
trunk/pyobjc/pyobjc-core/Doc/23xcode.txt
trunk/pyobjc/pyobjc-core/Doc/24blocks.txt
trunk/pyobjc/pyobjc-core/Doc/49structure.txt
trunk/pyobjc/pyobjc-core/Doc/50coding-style.txt
trunk/pyobjc/pyobjc-core/Doc/54wrapping.txt
trunk/pyobjc/pyobjc-core/Doc/tutorials/index.txt
trunk/pyobjc/pyobjc-core/Doc/tutorials/step12-src/
trunk/pyobjc/pyobjc-core/Doc/tutorials/step3-MainMenu.nib/
trunk/pyobjc/pyobjc-core/Doc/tutorials/step4-CurrencyConverter.py
trunk/pyobjc/pyobjc-core/Doc/tutorials/step5-setup.py
trunk/pyobjc/pyobjc-core/Doc/tutorials/step8-CurrencyConverter.py
Modified:
trunk/pyobjc/pyobjc-core/Doc/10PyObjCTools.txt
trunk/pyobjc/pyobjc-core/Doc/index.rst
trunk/pyobjc/pyobjc-core/Doc/intro.rst
trunk/pyobjc/pyobjc-core/Doc/lib/module-PyObjCTools.rst
Modified: trunk/pyobjc/pyobjc-core/Doc/10PyObjCTools.txt
==============================================================================
--- trunk/pyobjc/pyobjc-core/Doc/10PyObjCTools.txt (original)
+++ trunk/pyobjc/pyobjc-core/Doc/10PyObjCTools.txt Sun May 9 08:48:45 2010
@@ -1,244 +0,0 @@
-===============================
-PyObjCTools: The PyObjC Toolbox
-===============================
-
-Introduction
-------------
-
-The package ``PyObjCTools`` contains a number of (basically unrelated) modules
-with useful functionality. These have been placed inside a module to avoid
-cluttering the global namespace.
-
-The rest of this document provides documentation for these modules, but lets
-start with a short overview.
-
-* ``PyObjCTools.AppHelper``
-
-Utility functions for use with the ``AppKit`` module.
-
-* ``PyObjCTools.Conversion``
-
-Functions for converting between Cocoa and pure Python data structures.
-
-* ``PyObjCTools.KeyValueCoding``
-
-A Python API for working with `Key-Value Coding`__.
-
-.. __: http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/
-
-* ``PyObjCTools.NibClassBuilder``
-
-Module containing a magic super-class that can read information about the
-actual super-class and implemented actions and outlets from a NIB file.
-
-* ``PyObjCTools.MachSignals``
-
-Module to make it possible to integrate signal handling into the main
-runloop.
-
-* ``PyObjCTools.Debugging``
-
-Allows logging of NSException stack traces. This module should only be used
-during development.
-
-* ``PyObjCTools.Signals``
-
-Module that tries to print useful information when the program gets a fatal
-exception. This module should only be used during development.
-
-* ``PyObjCTools.XcodeSupport``
-
-Used by the PyObjC Xcode templates to derive py2app options from an Xcode
-project file.
-
-
-``PyObjCTools.AppHelper``
-.........................
-
-This module exports functions that are useful when working with the
-``AppKit`` framework (or more generally, run loops).
-
-* ``callAfter(func, *args, **kwargs) -> None``
-
- Call a function on the main thread. Returns immediately.
-
-* ``callLater(delay, func, *args, **kwargs) -> None``
-
- Call a function on the main thread after a delay. Returns immediately.
-
-* ``endSheetMethod(method) -> selector``
-
- Convert a method to a form that is suitable to use as the delegate callback
- for sheet methods.
-
-* ``stopEventLoop() -> None``
-
- Stops the event loop (if started by ``runConsoleEventLoop``) or sends the
- ``NSApplication`` a ``terminate:`` message.
-
-* ``runConsoleEventLoop(argv=None, installInterrupt=False, mode=NSDefaultRunLoopMode) -> None``
-
- Run a ``NSRunLoop`` in a stoppable way (with ``stopEventLoop``).
-
-* ``runEventLoop(argv=None, unexpectedErrorAlert=unexpectedErrorAlert, installInterrupt=None, pdb=None, main=NSApplicationMain) -> None``
-
- Run the event loop using ``NSApplicationMain`` and ask the user if we should
- continue if an exception is caught.
-
- This function doesn't return unless it throws an exception.
-
-
-``PyObjCTools.Conversion``
-.............................
-
-Functions for converting between Cocoa and pure Python data structures.
-
-* ``propertyListFromPythonCollection(pyCol, conversionHelper=None) -> ocCol``
-
- Convert a Python collection (dictionary, array, tuple, string) into an
- Objective-C collection.
-
- If conversionHelper is defined, it must be a callable. It will be called
- for any object encountered for which ``propertyListFromPythonCollection()``
- cannot automatically convert the object. The supplied helper function
- should convert the object and return the converted form. If the conversion
- helper cannot convert the type, it should raise an exception or return None.
-
-* ``pythonCollectionFromPropertyList(ocCol, conversionHelper=None) -> pyCol``
-
- Converts a Foundation based collection-- a property list-- into a Python
- collection. Like ``propertyListFromPythonCollection()``, ``conversionHelper``
- is an optional callable that will be invoked any time an encountered object
- cannot be converted.
-
-``PyObjCTools.KeyValueCoding``
-..............................
-
-A module for working with Key-Value Coding in Python. Key-Value Coding is
-explained `on the Apple website`__
-
-.. __: http://developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/
-
-This module provides a Python interface to some of that functionality. The
-interface is modeled on the ``getattr`` and ``setattr`` functions.
-
-* ``getKey(object, key) -> value``
-
- Get the attribute referenced by 'key'. The key is used
- to build the name of an attribute, or attribute accessor method.
-
- The following attributes and accesors are tried (in this order):
-
- - Accessor 'getKey'
- - Accesoor 'get_key'
- - Accessor or attribute 'key'
- - Accessor or attribute 'isKey'
- - Attribute '_key'
-
- If none of these exist, raise KeyError
-
-* ``getKeyPath(object, keypath) -> value``
-
- Like ``getKey`` but using a key path. The ``keypath`` is a sequence of keys
- separated by dots. It calls ``getKey`` to follow the path and returns the
- final value.
-
-* ``setKey(object, key, value) -> None``
-
- Set the value of ``key`` to ``value``.
-
- The following values are used for setting the value for a key named ``key``
- (first match wins):
-
- - Call ``object.set_key(value)``
-
- - Call ``object.setKey(value)``
-
- - Call ``object._set_key(value)``
-
- - Call ``object._setKey(value)``
-
- - Check if ``_key`` is an attribute and if so, set its value
-
- - Try to set the attribute ``key``.
-
- Raises ``KeyError`` if the key cannot be changed.
-
-* ``setKeyPath(object, keypath, value) -> None``
-
- The same as ``setKey``, but now using a key path. A key path is a sequence
- of keys separated by dots. The ``getKey`` function is used to traverse
- the path up to the last item, and then ``setKey`` is used to change the value.
-
-PyObjCTools.NibClassBuilder
-...........................
-
-Extracting class definitions from nibs
-++++++++++++++++++++++++++++++++++++++
-
-The module maintains a global set of class definitions, extracted from
-nibs. To add the classes from a nib to this set, use the ``extractClasses()``
-function. It can be called in two ways:
-
-- ``extractClasses(nibName, bundle=<current-bundle>)``
-
- This finds the nib by name from a bundle. If no bundle
- if given, the ``objc.currentBundle()`` is searched.
-
-- ``extractClasses(path=pathToNib)``
-
- This uses an explicit path to a nib.
-
-``extractClasses()`` can be called multiple times for the same bundle: the
-results are cached so no almost extra overhead is caused.
-
-Using the class definitions
-+++++++++++++++++++++++++++
-
-The module contains a "magic" base (super) class called ``AutoBaseClass``.
-Subclassing ``AutoBaseClass`` will invoke some magic that will look up the
-proper base class in the class definitions extracted from the nib(s).
-If you use multiple inheritance to use Cocoa's "informal protocols",
-you *must* list ``AutoBaseClass`` as the first base class. For example::
-
- class PyModel(AutoBaseClass, NSTableSource):
- ...
-
-
-The ``NibInfo`` class
-+++++++++++++++++++++
-
-The parsing of nibs and collecting the class definition is done by the
-``NibInfo`` class. You normally don't use it directly, but it's here if you
-have special needs.
-
-The command line tool
-+++++++++++++++++++++
-
-When run from the command line, this module invokes a simple command
-line program, which you feed paths to nibs. This will print a Python
-template for all classes defined in the nib(s). For more documentation,
-see the commandline_doc variable, or simply run the program without
-arguments. It also contains a simple test program.
-
-PyObjCTools.Signals
-...................
-
-This module provides two functions that can be useful while investigating
-random crashes of a PyObjC program. These crashes are often caused by
-Objective-C style weak references or incorrectly implemented protocols.
-
-- ``dumpStackOnFatalSignal()``
-
- This function will install signal handlers that print a stack trace and
- then re-raise the signal.
-
-- ``resetFatalSignals()``
-
- Restores the signal handlers to the state they had before the call to
- dumpStackOnFatalSignal.
-
-This module is not designed to provide fine grained control over signal
-handling. Nor is it intended to be terribly robust. It may give useful
-information when your program gets unexpected signals, but it might just
-as easily cause a crash when such a signal gets in.
Copied: trunk/pyobjc/pyobjc-core/Doc/blocks.rst (from r2348, /trunk/pyobjc/pyobjc-core/Doc/24blocks.txt)
==============================================================================
--- /trunk/pyobjc/pyobjc-core/Doc/24blocks.txt (original)
+++ trunk/pyobjc/pyobjc-core/Doc/blocks.rst Sun May 9 08:48:45 2010
@@ -6,7 +6,9 @@
------------
Objective-C has the concept of "blocks", which are basically anonymous inline
-functions. The syntax for them is like this::
+functions. The syntax for them is like this:
+
+.. sourcecode:: objective-c
^{ printf("x is %d\n", 42); }
@@ -69,9 +71,11 @@
If an argument or return value is a block the metadata should contain an "block_pointer"
attribute, with a value of "true". The element then has subelements describing the
-signature of block (excluding the implict block parameter).
+signature of block (excluding the implicit block parameter).
+
+As an example:
-As an example::
+.. sourcecode:: xml
<arg index="0" block_pointer="true">
<retval type="v" />
Copied: trunk/pyobjc/pyobjc-core/Doc/dev/coding-style.rst (from r2348, /trunk/pyobjc/pyobjc-core/Doc/50coding-style.txt)
==============================================================================
--- /trunk/pyobjc/pyobjc-core/Doc/50coding-style.txt (original)
+++ trunk/pyobjc/pyobjc-core/Doc/dev/coding-style.rst Sun May 9 08:48:45 2010
@@ -1,6 +1,6 @@
-====================================
-(Developers) Coding style for PyObjC
-====================================
+=======================
+Coding style for PyObjC
+=======================
:authors: Ronald Oussoren,
Bill Bumgarner
@@ -8,8 +8,6 @@
:URL: http://pyobjc.sourceforge.net/
:copyright: 2002 The PyObjC Project
-.. contents::
-
Introduction
------------
Copied: trunk/pyobjc/pyobjc-core/Doc/dev/structure.rst (from r2348, /trunk/pyobjc/pyobjc-core/Doc/49structure.txt)
==============================================================================
--- /trunk/pyobjc/pyobjc-core/Doc/49structure.txt (original)
+++ trunk/pyobjc/pyobjc-core/Doc/dev/structure.rst Sun May 9 08:48:45 2010
@@ -1,6 +1,6 @@
-============================================
-(Developers) Structure of the PyObjC package
-============================================
+===============================
+Structure of the PyObjC package
+===============================
Introduction
------------
Copied: trunk/pyobjc/pyobjc-core/Doc/dev/wrapping.rst (from r2348, /trunk/pyobjc/pyobjc-core/Doc/54wrapping.txt)
==============================================================================
--- /trunk/pyobjc/pyobjc-core/Doc/54wrapping.txt (original)
+++ trunk/pyobjc/pyobjc-core/Doc/dev/wrapping.rst Sun May 9 08:48:45 2010
@@ -1,6 +1,6 @@
-=====================================================
-(Developers) How to wrap an Objective-C class library
-=====================================================
+========================================
+How to wrap an Objective-C class library
+========================================
.. :author: Ronald Oussoren
Copied: trunk/pyobjc/pyobjc-core/Doc/fsref-fsspec.rst (from r2348, /trunk/pyobjc/pyobjc-core/Doc/22fsref-fsspec.txt)
==============================================================================
--- /trunk/pyobjc/pyobjc-core/Doc/22fsref-fsspec.txt (original)
+++ trunk/pyobjc/pyobjc-core/Doc/fsref-fsspec.rst Sun May 9 08:48:45 2010
@@ -4,63 +4,60 @@
PyObjC has its own wrappers for the types ``FSRef`` and ``FSSpec``, and also
supports the wrappers for these types in ``Carbon.File``.
-Type ``objc.FSRef``
--------------------
+.. class:: objc.FSRef
-This type represents an opaque ``FSRef`` structure.
+ This type represents an opaque ``FSRef`` structure.
-New instances are created using the ``from_pathname`` method:
+ New instances are created using the ``from_pathname`` method:
+ .. sourcecode:: pycon
+
+ >>> ref = objc.FSRef.from_pathname("/Libray")
+ >>> isinstance(ref, objc.FSRef)
+ True
+
+ Instances of ``objc.FSRef`` are opaque and don't provide access to
+ specific fields in the structure. The following methods and properties
+ are available to access an instance:
- .. sourcecode: pycon
+ .. attribute:: data
- >>> ref = objc.FSRef.from_pathname("/Libray")
- >>> isinstance(ref, objc.FSRef)
- True
+ A bytestring containing the value of the ``FSRef`` object.
-Instances of ``objc.FSRef`` are opaque and don't provide access to
-specific fields in the structure. The following methods and properties
-are available to access an instance:
+ .. method:: as_pathname
-* ``aref.data``
+ Returns the POSIX path for the ``FSRef`` object.
- A bytestring containing the value of the ``FSRef`` object.
+ .. method:: as_carbon
-* ``aref.as_pathname()``
+ Returns a ``Carbon.File.FSRef`` instance for the ``FSRef`` object.
- Returns the POSIX path for the ``FSRef`` object.
+ NOTE: This method is only available when ``Carbon`` support is
+ enabled in the Python build.
-* ``aref.as_carbon()``
+ NOTE: ``Carbon.File.FSRef`` instances can be used as the argument
+ of functions that have an ``FSRef`` structure as one of their
+ arguments.
- Returns a ``Carbon.File.FSRef`` instance for the ``FSRef`` object.
+.. class:: objc.FSSpec
- NOTE: This method is only available when ``Carbon`` support is
- enabled in the Python build.
+ This type represents an opaque ``FSSpec`` structure. It is not possible
+ to create ``FSSpec`` instances in Python code.
-NOTE: ``Carbon.File.FSRef`` instances can be used as the argument
-of functions that have an ``FSRef`` structure as one of their
-arguments.
+ Instances of ``objc.FSSpec`` are opaque and don't provide access to
+ specific fields in the structure. The following methods and properties
+ are available to access an instance:
-Type ``objc.FSSpec``
---------------------
+ .. attribute:: aref.data
-This type represents an opaque ``FSSpec`` structure. It is not possible
-to create ``FSSpec`` instances in Python code.
+ A bytestring containing the value of the ``FSRef`` object.
-Instances of ``objc.FSSpec`` are opaque and don't provide access to
-specific fields in the structure. The following methods and properties
-are available to access an instance:
+ .. method:: aref.as_carbon
-* ``aref.data``
+ Returns a ``Carbon.File.FSRef`` instance for the ``FSRef`` object.
- A bytestring containing the value of the ``FSRef`` object.
-
-* ``aref.as_carbon()``
-
- Returns a ``Carbon.File.FSRef`` instance for the ``FSRef`` object.
-
- NOTE: This method is only available when ``Carbon`` support is
- enabled in the Python build.
-
-NOTE: ``Carbon.File.FSSpec`` instances can be used as the argument
-of functions that have an ``FSSpec`` structure as one of their
-arguments.
+ NOTE: This method is only available when ``Carbon`` support is
+ enabled in the Python build.
+
+ NOTE: ``Carbon.File.FSSpec`` instances can be used as the argument
+ of functions that have an ``FSSpec`` structure as one of their
+ arguments.
Modified: trunk/pyobjc/pyobjc-core/Doc/index.rst
==============================================================================
--- trunk/pyobjc/pyobjc-core/Doc/index.rst (original)
+++ trunk/pyobjc/pyobjc-core/Doc/index.rst Sun May 9 08:48:45 2010
@@ -12,8 +12,14 @@
:maxdepth: 2
intro
+ tutorials/index
typemapping
+ protocols
+ fsref-fsspec
+ xcode
+ blocks
lib/index
+ dev/index
Indices and tables
==================
Modified: trunk/pyobjc/pyobjc-core/Doc/intro.rst
==============================================================================
--- trunk/pyobjc/pyobjc-core/Doc/intro.rst (original)
+++ trunk/pyobjc/pyobjc-core/Doc/intro.rst Sun May 9 08:48:45 2010
@@ -7,9 +7,6 @@
:URL: http://pyobjc.sourceforge.net/
:copyright: 2003-2005 The PyObjC Project
-
-.. contents::
-
Preface
-------
Modified: trunk/pyobjc/pyobjc-core/Doc/lib/module-PyObjCTools.rst
==============================================================================
--- trunk/pyobjc/pyobjc-core/Doc/lib/module-PyObjCTools.rst (original)
+++ trunk/pyobjc/pyobjc-core/Doc/lib/module-PyObjCTools.rst Sun May 9 08:48:45 2010
@@ -15,7 +15,8 @@
.. toctree::
module-PyObjCTools.KeyValueCoding.rst
-
-.. module-PyObjCTools.MachSignals.rst
+ module-PyObjCTools.AppHelper.rst
+ module-PyObjCTools.Conversion.rst
+ module-PyObjCTools.NibClassBuilder.rst
module-PyObjCTools.Signals.rst
module-PyObjCTools.TestSupport.rst
Copied: trunk/pyobjc/pyobjc-core/Doc/tutorials/embedded.rst (from r2348, /trunk/pyobjc/pyobjc-core/Doc/07tutorial_embed/index.txt)
==============================================================================
--- /trunk/pyobjc/pyobjc-core/Doc/07tutorial_embed/index.txt (original)
+++ trunk/pyobjc/pyobjc-core/Doc/tutorials/embedded.rst Sun May 9 08:48:45 2010
@@ -33,6 +33,8 @@
Follow these steps:
+.. note:: Before you start, download the :download:`reference source package <embedded_src.zip>` for this tutorial.
+
1. Make a copy of ``/Developer/Examples/AppKit/SimpleComboBox`` to work on.
Let's call this ``SimpleComboBoxPlus``:
@@ -58,14 +60,13 @@
``ITunesCommunication`` object.
7. We now need to write the code implementing the ``ITunesCommunication``
- class. As this tutorial is about using PyObjC in existing ObjC programs
- and not about PyObjC itself, we are going to skip writing the code and
- simply copy ``ITunesCommunication_1.py`` to ``ITunesCommunication.py``.
+ class. As this tutorial is about using PyObjC in existing ObjC programs
+ and not about PyObjC itself, we are going to skip writing the code and
+ simply copy ``ITunesCommunication_1.py`` to ``ITunesCommunication.py``.
8. Now we need to create the build script for our plugin, create a file named
``setup.py`` with the following contents:
-
.. sourcecode:: python
from distutils.core import setup
Copied: trunk/pyobjc/pyobjc-core/Doc/tutorials/firstapp.rst (from r2348, /trunk/pyobjc/pyobjc-core/Doc/06tutorial/index.txt)
==============================================================================
--- /trunk/pyobjc/pyobjc-core/Doc/06tutorial/index.txt (original)
+++ trunk/pyobjc/pyobjc-core/Doc/tutorials/firstapp.rst Sun May 9 08:48:45 2010
@@ -28,11 +28,13 @@
Getting Started
---------------
+.. note:: Before you start, download the :download:`reference source package <firstapp_src.zip>` for this tutorial.
+
1. Create a work directory ``src``. Check which Python you have installed
PyObjC for, by running ``python`` and checking that ``import Foundation``
works. If it does not work it could be that you have installed PyObjC for
``/usr/local/bin/python`` but Apple's ``/usr/bin/python`` comes first in
- your ``$PATH``. Make sure you use the right python whereever it says
+ your ``$PATH``. Make sure you use the right python wherever it says
``python`` in this tutorial.
2. Start Interface Builder, select *Cocoa Application*
@@ -45,12 +47,11 @@
ConverterController to the Interface", and stop at
"*Implementing the Classes of Currency Converter*", as we are going to do
this in Python, not Objective-C. Your nib file should now be the same as
- step3-MainMenu.nib_.
+ *step3-MainMenu.nib*.
.. _`Developing Cocoa Objective-C Applications: a Tutorial`: http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/index.html
.. _`chapter 3`: http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/index.html?http://developer.apple.com/documentation/Cocoa/Conceptual/ObjCTutorial/chapter03/chapter_3_section_1.html
-.. _step3-MainMenu.nib: step3-MainMenu.nib.zip
-
+
4. Create the skeleton Python script by running the ``nibclassbuilder`` script.
``nibclassbuilder`` will parse the NIB file and create a skeleton module for
you. Invoke it as follows (from the ``src`` directory):
@@ -66,10 +67,8 @@
$ nibclassbuilder MainMenu.nib > CurrencyConverter.py
- The result of this can be seen in step4-CurrencyConverter.py_.
+ The result of this can be seen in *step4-CurrencyConverter.py*.
-.. _step4-CurrencyConverter.py: step4-CurrencyConverter.py.html
-
Testing the user interface
--------------------------
@@ -87,10 +86,8 @@
data_files=['MainMenu.nib'],
)
- The result of this can be seen in step5-setup.py_.
+ The result of this can be seen in *step5-setup.py*.
-.. _step5-setup.py: step5-setup.py.html
-
6. Run the setup script to create a temporary application bundle for
development:
@@ -118,7 +115,7 @@
$ open dist/CurrencyConverter.app
- - run it directly from the Terminal, as::
+ - run it directly from the Terminal, as:
.. sourcecode:: sh
@@ -170,9 +167,7 @@
more detail on this.
The application should now be fully functional, try it. The results of what
- we have up to now can be seen in step8-CurrencyConverter.py_.
-
-.. _step8-CurrencyConverter.py: step8-CurrencyConverter.py.html
+ we have up to now can be seen in *step8-CurrencyConverter.py*.
Extending the functionality
---------------------------
@@ -247,9 +242,7 @@
you try and invert an exchange rate of ``0``.
12. Fix the final bug by testing for ``rate == 0.0`` in ``invertRate_()``.
- The result is in the step12-src_ directory.
-
-.. _step12-src: step12-src.zip
+ The result is in the *step12-src* directory.
Creating a redistributable application
--------------------------------------
------------------------------------------------------------------------------