Getting Started with ``dip-builder``
====================================

``dip-builder`` is a simple tool that supports the development life-cycle of a
dip application.  The current version implements the following functionality:

- allows the developer to provide meta-data for the application, including a
  description, the author, the application's home page etc.
- creates an initial application and allows the developer to specify the set of
  plugins to be included
- creates a deployable package for the application.  At the moment only
  :mod:`distutils` source packages are supported.

Using ``dip-builder`` is entirely optional, but it does enable the developer
to create a (very simple) deployable application with a few keystrokes and
mouse clicks.  The rest is just normal, incremental, application development.

Of course, ``dip-builder`` is itself implemented using dip.  This means that it
has a number of plugin-based components than can be re-used in your own
applications.

In the following sections we show screenshots of the different parts of
``dip-builder``.


Creating a ``dip-builder`` Project
----------------------------------

The following is a screenshot of the main ``dip-builder`` user interface when
ir has been started with no command line arguments.

.. image:: /images/dip_builder/new_project.png
    :align: center

Tool tips and What's This help are provided for all input fields.


Creating an Initial Application
-------------------------------

Invoking the ``Create application script...`` option of the ``Build`` menu
starts a wizard that captures all the additional information needed to create
the initial application.

The following is a screenshot of the page of the wizard that the user uses to
enter the names of the plugins to include in the application.  The values
shown are the defaults set by ``dip-builder``.

.. image:: /images/dip_builder/plugins_page.png
    :align: center

The application script that is generated (which is a single ``.py`` file) will
then normally be extended manually by the developer as additional functionality
is implemented.


Creating a Deployable Package
-----------------------------

Invoking the ``Create distutils distribution...`` option of the ``Build`` menu
starts a wizard that captures all the additional information needed create a
:mod:`distutils` source distribution.

The following is a screenshot of the first page of the wizard that the user
uses to enter all of the additional required information needed to create the
distribution.

.. image:: /images/dip_builder/distutils_page.png
    :align: center

The support for :mod:`distutils` is implemented by a plugin.  Support for other
packing solutions will be added to future versions of ``dip-builder`` by adding
appropriate plugins.
