================
Welcome to Enaml
================

Enaml is a programming language and framework for creating professional quality
user interfaces with minimal effort. Enaml combines a domain specific
declarative language with a constraints based layout system to allow users to
easily define rich UIs with complex and flexible layouts. Enaml applications
can be run on any platform which supports Python and Qt.

A few highlights of the framework:

* A declarative language which extends the grammar of Python
* A set of operators which automatically track runtime dependencies
* A layout system which uses symbolic constraint declarations
* A design which encourages model-view separation
* A well documented and easy to follow code base


.. toctree::
    :hidden:

    Getting Started <get_started/index>
    Developer Guides <dev_guides/index>
    Architecture Reference <arch_ref/index>
    FAQs <faqs/index>
    Examples <examples/index>
    API Reference <api_ref/index>
    Command Reference <cmd_ref/index>
    Developer Notes <developer_notes/index>


:doc:`get_started/index`
------------------------

The first stop for all those new to Enaml. This section includes
an introduction to Enaml, installation instructions, and all the
information needed to write your first Enaml application.

:doc:`dev_guides/index`
-----------------------

The stuff that wasn't covered in :doc:`get_started/index`. This
section provides in-depth documentation on a wide range of topics
you are likely to encounter when developing production applications
with Enaml. Look here for details on Enaml's scoping rules, aliases,
templates, best practices, and more.


:doc:`arch_ref/index`
---------------------

Hackers welcome! This section offers a collection of topics covering
the low level details of Enaml's architecture and implementation.
Look here if you want to understand how Enaml works internally, or
if you are interested in extending Enaml for your own custom needs.

:doc:`examples/index`
---------------------

"Just show me the code!" This section provides an easy-to-browse
alternative to running Enaml's examples from the command line. We've
even included screenshots!

:doc:`faqs/index`
-----------------

If you think you may not be the only one to have thought a thought,
you are probably right. Look here to see if your question has
already been asked, then take solace in the realization that you are
not alone.

:doc:`api_ref/index`
--------------------

"Use the source, Luke." When all else fails, consult the API docs to
find the answer you need. The API docs also include convenient links
to the most definitive Enaml documentation: the source.

:doc:`cmd_ref/index`
--------------------

Enaml includes a few console scripts to assist in development.

:doc:`developer_notes/index`
----------------------------

Notes regarding the development of Enaml such as coding conventions and C
extensions writing.
