Metadata-Version: 2.1
Name: enaml
Version: 0.15.1
Summary: Declarative DSL for building rich user interfaces in Python
Author-email: The Nucleic Development Team <sccolbert@gmail.com>
Maintainer-email: "Matthieu C. Dartiailh" <m.dartiailh@gmail.com>
License: ==========================
         The Enaml licensing terms
        ==========================
        Enaml is licensed under the terms of the Modified BSD License (also known as
        New or Revised BSD), as follows:        
        Copyright (c) 2013, Nucleic Development Team
        Copyright (c) 2013, Enthought, Inc.        
        All rights reserved.        
        Redistribution and use in source and binary forms, with or without
        modification, are permitted provided that the following conditions are met:        
        Redistributions of source code must retain the above copyright notice, this
        list of conditions and the following disclaimer.        
        Redistributions in binary form must reproduce the above copyright notice, this
        list of conditions and the following disclaimer in the documentation and/or
        other materials provided with the distribution.        
        Neither the name of the Nucleic Development Team nor the names of its
        contributors may be used to endorse or promote products derived from this
        software without specific prior written permission.        
        THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
        ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
        WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
        DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
        FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
        SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
        CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
        OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
        OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.        
        About Enaml
        -----------
        Chris Colbert began the Enaml project under the umbrella of Enthought, Inc.
        in August 2011. The project was forked into the Nucleic project in March
        2013. Chris is still the project lead.        
        The Nucleic Development Team is the set of all contributors to the Nucleic
        project and its subprojects.        
        The core team that coordinates development on GitHub can be found here:
        http://github.com/nucleic. The current team consists of:        
        * Chris Colbert
        * Matthieu Dartiailh        
        Previous contributors include:        
        * Ioannis Tziakos
        * Robert Kern
        * Corran Webster
        * David Wyde
        * Brett Patterson
        * Tim Diller
        * John Wiggins
        * Didrik Pinte
        * Deepankar Sharma
        * Kelsey Jordahl
        * Naveen Michaud-Agrawal
        * Steven Silvester
        * Mark Dickinson
        * Simon Jagoe
        * Chris Farrow
        * Puneeth Chaganti
        * Matthew Scott
        * Jack Minardi
        * Warren Weckesser
        * Christoph Gohlke        
        Our Copyright Policy
        --------------------
        Nucleic uses a shared copyright model. Each contributor maintains copyright
        over their contributions to Nucleic. But, it is important to note that these
        contributions are typically only changes to the repositories. Thus, the Nucleic
        source code, in its entirety is not the copyright of any single person or
        institution. Instead, it is the collective copyright of the entire Nucleic
        Development Team. If individual contributors want to maintain a record of what
        changes/contributions they have specific copyright on, they should indicate
        their copyright in the commit message of the change, when they commit the
        change to one of the Nucleic repositories.        
        With this in mind, the following banner should be used in any source code file
        to indicate the copyright and license terms:        
        #------------------------------------------------------------------------------
        # Copyright (c) 2013-2022, Nucleic Development Team.
        #
        # Distributed under the terms of the Modified BSD License.
        #
        # The full license is in the file LICENSE, distributed with this software.
        #------------------------------------------------------------------------------        
Project-URL: homepage, https://github.com/nucleic/enaml
Project-URL: documentation, https://enaml.readthedocs.io/en/latest/
Project-URL: repository, https://github.com/nucleic/enaml
Project-URL: changelog, https://github.com/nucleic/enaml/blob/main/releasenotes.rst
Classifier: License :: OSI Approved :: BSD License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: Implementation :: CPython
Requires-Python: >=3.8
Description-Content-Type: text/x-rst
License-File: LICENSE
Requires-Dist: ply
Requires-Dist: atom (>=0.8.0)
Requires-Dist: kiwisolver (>=1.2.0)
Requires-Dist: bytecode (>=0.13.0)
Provides-Extra: ipython-qt
Requires-Dist: qtconsole ; extra == 'ipython-qt'
Provides-Extra: matplotlib-qt
Requires-Dist: matplotlib ; extra == 'matplotlib-qt'
Provides-Extra: qt5-pyqt
Requires-Dist: qtpy ; extra == 'qt5-pyqt'
Requires-Dist: PyQt5 ; extra == 'qt5-pyqt'
Provides-Extra: qt5-pyside
Requires-Dist: qtpy ; extra == 'qt5-pyside'
Requires-Dist: pyside2 ; extra == 'qt5-pyside'
Provides-Extra: qt6-pyqt
Requires-Dist: qtpy (>=2.1.0) ; extra == 'qt6-pyqt'
Requires-Dist: PyQt6 (>=6.2) ; extra == 'qt6-pyqt'
Provides-Extra: qt6-pyside
Requires-Dist: qtpy (>=2.1.0) ; extra == 'qt6-pyside'
Requires-Dist: pyside6 (>=6.2.3) ; extra == 'qt6-pyside'
Provides-Extra: scintilla-qt5-pyqt
Requires-Dist: QScintilla ; extra == 'scintilla-qt5-pyqt'
Provides-Extra: scintilla-qt6-pyqt
Requires-Dist: PyQt6-QScintilla ; extra == 'scintilla-qt6-pyqt'
Provides-Extra: vtk-qt
Requires-Dist: vtk ; extra == 'vtk-qt'
Provides-Extra: webview-qt5-pyqt
Requires-Dist: PyQtWebEngine ; extra == 'webview-qt5-pyqt'
Provides-Extra: webview-qt6-pyqt
Requires-Dist: PyQt6-WebEngine ; extra == 'webview-qt6-pyqt'

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

.. image:: https://travis-ci.org/nucleic/enaml.svg?branch=main
    :target: https://travis-ci.org/nucleic/enaml
    :alt: Build Status
.. image:: https://ci.appveyor.com/api/projects/status/p2bapt3y6n7xixcl?svg=true
    :target: https://ci.appveyor.com/project/nucleic/enaml
    :alt: Appveyor Build Status
.. image:: https://github.com/nucleic/enaml/workflows/Continuous%20Integration/badge.svg
    :target: https://github.com/nucleic/enaml/actions
.. image:: https://codecov.io/gh/nucleic/enaml/branch/main/graph/badge.svg
    :target: https://codecov.io/gh/nucleic/enaml
    :alt: Code Coverage Status
.. image:: https://github.com/nucleic/enaml/workflows/Documentation%20building/badge.svg
    :target: https://github.com/nucleic/enaml/actions
.. image:: https://readthedocs.org/projects/enaml/badge/?version=latest
    :target: http://enaml.readthedocs.io/en/latest/?badge=latest
    :alt: Documentation Status
.. image:: https://img.shields.io/pypi/v/enaml.svg
    :target: https://pypi.org/project/enaml/
    :alt: PyPI version

Enaml is a programming language and framework for creating professional-quality
user interfaces with minimal effort.

What you get
============
* A declarative programming language, with a Pythonic flavour.
* Dozens of widgets, ready to go out-of-the-box (built on `Qt <https://www.qt.io/>`_).
* A constraints-based layout engine (built on `Kiwi <https://github.com/nucleic/kiwi>`_).
* Integration with a data model tool (built on `Atom <https://github.com/nucleic/atom>`_).
* An (optional) editor to allow you to see what the results will look like, as you type your code.
* A well-documented and easy-to-follow code base, plus documentation with plenty of worked examples.
* Language definitions for a number of popular editors.

What it can do for you
======================
- Build native GUI applications for a range of platforms

  + Quick and simple or complex and specialised.
  + See the structure of your GUI at a glance.

- Let you rapidly protoype new GUIs interfaces.

  + Intelligently layout your GUI, using symbolic constraints.
  + It automatically adapts for different platforms, different window sizes.
  + Tell the layout engine what your priorities are for layout, without having to count pixels.

- Encourages easy-to-maintain code:

  + The GUI can detect updates in the model, and refresh its widgets automatically, without low-level code.
  + Clean separation between your model and view, while keeping your controller code simple.

    * You can incorporate Python code directly in the view layer.
    * As your GUI design evolves, the constraints engine can adapt the layout.
    * Object-Oriented design allows you to reuse parts of your GUI in other parts of your projects.

- Let you customise a GUI for your particular needs.

  + Integrates with your Python code.
  + Include style-sheets to change the appearance across all, or part, of your application quickly.
  + Extend the available widgets or build your own.

Supported Versions
==================
Enaml applications can be run on any platform which supports Python (3.6+).
The Qt backend requires Qt (5.9+, see https://doc.qt.io/qt-5/supported-platforms.html).

This includes Linux, Windows, MacOSX, Android and iOS. (Automated testing of Enaml runs on Linux, Windows and MacOSX.)

Enaml is licensed under the `Modified BSD License <https://github.com/nucleic/enaml/blob/main/LICENSE>`_.

Learn More
==========
The `Getting Started <http://enaml.readthedocs.io/en/latest/get_started/index.html>`_ chapter is a good first step to learn more. It includes `installation instructions <http://enaml.readthedocs.io/en/latest/get_started/installation.html>`_.

Watch some introductory talks about Enaml and what it can do:

.. image:: https://img.youtube.com/vi/ycFEwz_hAxk/2.jpg
  :target: https://youtu.be/ycFEwz_hAxk

`S. Chris Colbert (@sccolbert) presents at Enthought 2012. <https://www.youtube.com/watch?v=ycFEwz_hAxk>`_

.. image:: https://img.youtube.com/vi/G5ZYUGL7uTo/1.jpg
  :target: https://www.youtube.com/watch?v=G5ZYUGL7uTo

`Tom Stordy-Allison (@tstordyallison) presents at Pycon UK 2016. <https://www.youtube.com/watch?v=G5ZYUGL7uTo>`_

The `Enaml documentation <http://enaml.readthedocs.io/en/latest>`_ includes all the details, including `useful examples <http://enaml.readthedocs.io/en/latest/examples>`_.

You can ask questions on the `Enaml Google Group <http://groups.google.com/d/forum/enaml>`_
or with the `Enaml tag on StackOverflow <https://stackoverflow.com/questions/tagged/enaml>`_.

For version information, see the  `release notes <https://github.com/nucleic/enaml/blob/main/releasenotes.rst>`_.

Examples
========
The `Enaml documentation <http://enaml.readthedocs.io/en/latest>`_ includes many  `fully-functioning code samples <http://enaml.readthedocs.io/en/latest/examples/index.html>`_ of how to use Enaml. They range from `simple demonstrations of how a widget is used <http://enaml.readthedocs.io/en/latest/examples/ex_progress_bar.html>`_, to advanced explorations of the customisability of Enaml GUIs.

Employee Tutorial
~~~~~~~~~~~~~~~~~
The `Employee Tutorial <http://enaml.readthedocs.io/en/latest/examples/tut_employee.html>`_ shows how constraints and validators can be used to create easy-to-use and professional-looking applications:

.. image:: http://enaml.readthedocs.io/en/latest/_images/tut_employee_layout.png
    :target: http://enaml.readthedocs.io/en/latest/examples/tut_employee.html

Button Ring
~~~~~~~~~~~
The `Button Ring Example <https://enaml.readthedocs.io/en/latest/examples/ex_button_ring.html>`_ goes the other way. The result is neither professional-looking nor easy-to-use, but it shows the power and  flexibility of constraints-based layout - it might be silly, but this could not be achieved with typical layout systems.

.. image:: http://enaml.readthedocs.io/en/latest/_images/ex_button_ring.png
    :target: https://enaml.readthedocs.io/en/latest/examples/ex_button_ring.htm

Dock Item Alerts
~~~~~~~~~~~~~~~~
The `Dock Item Alerts Example <https://enaml.readthedocs.io/en/latest/examples/ex_dock_item_alerts.html>`_ shows some of the customisability of the appearances of an Enaml application. This application's appearance is based on Visual Studio 2010 style, with dockable items, but has some customisations based on the importance of the alerts being shown.

.. image:: http://enaml.readthedocs.io/en/latest/_images/ex_dock_item_alerts.png
    :target: https://enaml.readthedocs.io/en/latest/examples/ex_dock_item_alerts.html

Check out the `documentation <http://enaml.readthedocs.io/en/latest/examples/index.html>`_ for more examples.
