pax_global_header00006660000000000000000000000064150707316350014521gustar00rootroot0000000000000052 comment=f99a51053f7874bb9dcf9e973ccf578172b6ecbb enaml-0.19.0/000077500000000000000000000000001507073163500127045ustar00rootroot00000000000000enaml-0.19.0/.coveragerc000066400000000000000000000010711507073163500150240ustar00rootroot00000000000000[run] branch = True include = */enaml/* omit = */enaml/library.zip/* */enaml/qt/docking/dock_images/* */tests/* # PySide6 cruft that should be ignored */enaml/shibokensupport/* */enaml/signature_bootstrap.py */enaml/pyscript [report] # Regexes for lines to exclude from consideration exclude_lines = # Have to re-enable the standard pragma pragma: no cover # Don't complain if tests don't hit defensive assertion code: raise NotImplementedError pass # Dont't complain about type checking if TYPE_CHECKING: enaml-0.19.0/.github/000077500000000000000000000000001507073163500142445ustar00rootroot00000000000000enaml-0.19.0/.github/FUNDING.yml000066400000000000000000000012151507073163500160600ustar00rootroot00000000000000# These are supported funding model platforms github: [MatthieuDartiailh] patreon: # Replace with a single Patreon username open_collective: # Replace with a single Open Collective username ko_fi: # Replace with a single Ko-fi username tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry liberapay: # Replace with a single Liberapay username issuehunt: # Replace with a single IssueHunt username otechie: # Replace with a single Otechie username custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] enaml-0.19.0/.github/dependabot.yml000066400000000000000000000002421507073163500170720ustar00rootroot00000000000000version: 2 updates: # Maintain dependencies for GitHub Actions - package-ecosystem: "github-actions" directory: "/" schedule: interval: "weekly"enaml-0.19.0/.github/workflows/000077500000000000000000000000001507073163500163015ustar00rootroot00000000000000enaml-0.19.0/.github/workflows/ci.yml000066400000000000000000000104711507073163500174220ustar00rootroot00000000000000name: Continuous Integration on: schedule: - cron: '0 0 * * 2' push: branches: - main pull_request: branches: - main paths: - .github/workflows/ci.yml - "enaml/**" - "examples/**" - "tests/**" - setup.py - pyproject.toml jobs: tests: name: Unit tests runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macos-latest] python-version: ['3.10', '3.11', '3.12', '3.13', '3.14-dev'] qt-version: [5, 6] qt-binding: [pyqt] exclude: - python-version: '3.10' os: macos-latest - python-version: '3.11' qt-version: 5 - python-version: '3.12' qt-version: 5 - python-version: '3.13' qt-version: 5 - python-version: '3.14-dev' qt-version: 5 fail-fast: false steps: - name: Checkout branch uses: actions/checkout@v5 - name: Install linux only test dependency if: matrix.os == 'ubuntu-latest' # Install all dependencies needed to run Qt on linux (taken from the qt website) # https://doc.qt.io/qt-6/linux.html # https://doc.qt.io/qt-6/linux-requirements.html run: | sudo apt-get update --fix-missing; cat ci/qt6_linux.txt | xargs sudo apt -y install sudo apt install -y xvfb herbstluftwm scrot - name: Get history and tags for SCM versioning to work run: | git fetch --prune --unshallow git fetch --depth=1 origin +refs/tags/*:refs/tags/* - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} cache: 'pip' cache-dependency-path: 'test_requirements.txt' - name: Install dependencies # Skip pegen deps because of https://github.com/we-like-parsers/pegen/issues/53 run: | python -m pip install --upgrade pip setuptools pip install setuptools-scm[toml] pip install numpy pip install git+https://github.com/nucleic/cppy@main pip install git+https://github.com/nucleic/atom@main pip install git+https://github.com/MatthieuDartiailh/bytecode@main pip install git+https://github.com/nucleic/kiwi@main - name: Install project (no-extras) if: matrix.python-version != '3.10' env: CPPFLAGS: --coverage # Use legacy command to install the library to be able to measure # coverage of C++ code. run: | pip install .[qt${{ matrix.qt-version }}-${{ matrix.qt-binding }}] pip uninstall enaml --yes python setup.py develop - name: Install project (with-extras pyqt) if: matrix.python-version == '3.10' && matrix.qt-binding == 'pyqt' env: CPPFLAGS: --coverage # Use legacy command to install the library to be able to measure # coverage of C++ code. run: | pip install .[qt${{ matrix.qt-version }}-${{ matrix.qt-binding }},ipython-qt,matplotlib-qt,scintilla-qt${{ matrix.qt-version }}-pyqt,webview-qt${{ matrix.qt-version }}-pyqt] pip uninstall enaml --yes python setup.py develop - name: Install test requirements run: | pip install -r test_requirements.txt - name: Run tests (Windows, Mac) if: matrix.os != 'ubuntu-latest' run: python -X dev -m pytest tests -v --cov --cov-report xml -rs - name: Run tests (Linux) if: matrix.os == 'ubuntu-latest' shell: bash -l {0} run: | pip uninstall python3-xlib --yes pip install python-xlib export DISPLAY=:99.0 /sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1920x1200x24 -ac +extension GLX +render -noreset sleep 3 herbstluftwm & sleep 1 python -X dev -m pytest tests -v --cov --cov-report xml -rs - name: Upload coverage to Codecov uses: codecov/codecov-action@v5 with: token: ${{ secrets.CODECOV_TOKEN }} flags: unittests name: codecov-umbrella fail_ci_if_error: true verbose: true enaml-0.19.0/.github/workflows/docs.yml000066400000000000000000000023301507073163500177520ustar00rootroot00000000000000name: Documentation building on: schedule: - cron: '0 0 * * 2' push: branches: - main pull_request: branches: - main paths: - .github/workflows/docs.yml - "enaml/**" - "examples/**" - "docs/**" - setup.py - pyproject.toml jobs: docs: name: Docs building runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - name: Get history and tags for SCM versioning to work run: | git fetch --prune --unshallow git fetch --depth=1 origin +refs/tags/*:refs/tags/* - name: Set up Python uses: actions/setup-python@v6 with: python-version: '3.11' cache: 'pip' cache-dependency-path: 'docs/requirements.txt' - name: Install dependencies run: | python -m pip install --upgrade pip pip install wheel pip install -r docs/requirements.txt - name: Install project run: | pip install . - name: Install graphviz uses: ts-graphviz/setup-graphviz@v2 - name: Build documentation run: | cd docs mkdir docs_output; sphinx-build source docs_output -W -b html; enaml-0.19.0/.github/workflows/release.yml000066400000000000000000000071671507073163500204570ustar00rootroot00000000000000name: Build and upload wheels on: workflow_dispatch: schedule: - cron: '0 0 * * 3' push: tags: - '*' jobs: build_sdist: name: Build sdist runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v5 - name: Get history and tags for SCM versioning to work run: | git fetch --prune --unshallow git fetch --depth=1 origin +refs/tags/*:refs/tags/* - name: Setup Python uses: actions/setup-python@v6 with: python-version: '3.x' - name: Build sdist run: | pip install --upgrade pip pip install wheel build python -m build . -s - name: Test sdist run: | pip install pytest pip install dist/*.tar.gz cd .. python -m pytest enaml/tests - name: Store artifacts uses: actions/upload-artifact@v4 with: name: cibw-sdist path: dist/* build_wheels: name: Build wheels on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: matrix: os: [windows-latest, ubuntu-latest, macos-latest] steps: - name: Checkout uses: actions/checkout@v5 - name: Get history and tags for SCM versioning to work run: | git fetch --prune --unshallow git fetch --depth=1 origin +refs/tags/*:refs/tags/* - name: Setup Python uses: actions/setup-python@v6 with: python-version: '3.13' - name: Install cibuildwheel run: | python -m pip install --upgrade pip python -m pip install wheel cibuildwheel - name: Build wheels env: CIBW_BUILD: "cp310-* cp311-* cp312-* cp313-* cp314-*" CIBW_ARCHS_MACOS: x86_64 universal2 arm64 CIBW_ARCHS_WINDOWS: auto64 CIBW_TEST_REQUIRES: pytest CIBW_TEST_COMMAND: python -m pytest {package}/tests -v run: | python -m cibuildwheel . --output-dir dist - name: Store artifacts uses: actions/upload-artifact@v4 with: name: cibw-wheels-${{ runner.os }} path: dist/*.whl publish: if: github.event_name == 'push' needs: [build_wheels, build_sdist] runs-on: ubuntu-latest environment: name: pypi url: https://pypi.org/p/enaml permissions: id-token: write steps: - name: Download all the dists uses: actions/download-artifact@v5.0.0 with: pattern: cibw-* path: dist merge-multiple: true - uses: pypa/gh-action-pypi-publish@release/v1 github-release: name: >- Sign the Python 🐍 distribution 📦 with Sigstore and create a GitHub Release runs-on: ubuntu-latest needs: - publish permissions: contents: write id-token: write steps: - name: Download all the dists uses: actions/download-artifact@v5.0.0 with: pattern: cibw-* path: dist merge-multiple: true - name: Sign the dists with Sigstore uses: sigstore/gh-action-sigstore-python@v3.0.1 with: inputs: >- ./dist/*.tar.gz ./dist/*.whl - name: Create GitHub Release env: GITHUB_TOKEN: ${{ github.token }} run: >- gh release create '${{ github.ref_name }}' --repo '${{ github.repository }}' --generate-notes - name: Upload artifact signatures to GitHub Release env: GITHUB_TOKEN: ${{ github.token }} run: >- gh release upload '${{ github.ref_name }}' dist/** --repo '${{ github.repository }}' enaml-0.19.0/.gitignore000066400000000000000000000004361507073163500146770ustar00rootroot00000000000000*.pyc *.un~ *.swp *.egg-info *.so *.pyd *.DS_Store *.enamlc *.pdb /build /dist /docs/build /enaml/version.py /tools/pygments/build /tools/pygments/dist /.mypy_cache /.spyproject /.pytest_cache /.vscode /.eggs /.cache .dmypy.json .gitignore~ *.orig lextab*.py parsetab*.py version.py enaml-0.19.0/.gitmodules000066400000000000000000000001611507073163500150570ustar00rootroot00000000000000[submodule "tools/sublimetext"] path = tools/sublimetext url = https://github.com/nucleic/sublime-enaml-syntax enaml-0.19.0/.readthedocs.yaml000066400000000000000000000012161507073163500161330ustar00rootroot00000000000000# .readthedocs.yml# .readthedocs.yaml # Read the Docs configuration file # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details # Required version: 2 # Set the version of Python and other tools you might need build: os: ubuntu-22.04 tools: python: "3.12" # Build documentation in the docs/source directory with Sphinx sphinx: configuration: docs/source/conf.py # Enable epub output formats: - epub # Optionally declare the Python requirements required to build your docs python: install: - requirements: docs/rtd_requirements.txt - requirements: docs/requirements.txt - method: pip path: . enaml-0.19.0/LICENSE000066400000000000000000000072561507073163500137230ustar00rootroot00000000000000========================== 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-2025, 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-2025, Nucleic Development Team. # # Distributed under the terms of the Modified BSD License. # # The full license is in the file LICENSE, distributed with this software. #------------------------------------------------------------------------------ enaml-0.19.0/MANIFEST.in000066400000000000000000000010111507073163500144330ustar00rootroot00000000000000include MANIFEST.in include *.txt include *.rst include *.md include Makefile include LICENSE recursive-include docs/source *.rst recursive-include docs/source *.png recursive-include docs/source *.py recursive-include docs/source *.enaml include docs/make.bat include docs/Makefile recursive-include examples *.* recursive-include licenses *.txt recursive-include tools *.* recursive-include tests *.py recursive-include enaml/src *.cpp recursive-include enaml/src *.h prune .git prune docs/build prune dist prune build enaml-0.19.0/README.rst000066400000000000000000000150531507073163500143770ustar00rootroot00000000000000Welcome to Enaml ================ .. image:: https://github.com/nucleic/enaml/workflows/Continuous%20Integration/badge.svg :target: https://github.com/nucleic/enaml/actions .. 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://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 `_). * A constraints-based layout engine (built on `Kiwi `_). * Integration with a data model tool (built on `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 prototype 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.10+). The Qt backend requires Qt (5.9+, see https://doc.qt.io/qt-5/supported-platforms.html). Both PyQt and PySide are supported but PySide is not tested in CI due to some lingering segmentation faults in the CI environment when the testsuite complete. 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 `_. Learn More ========== The `Getting Started `_ chapter is a good first step to learn more. It includes `installation instructions `_. 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. `_ .. 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. `_ The `Enaml documentation `_ includes all the details, including `useful examples `_. You can ask questions on the `Enaml Google Group `_ or with the `Enaml tag on StackOverflow `_. For version information, see the `release notes `_. Examples ======== The `Enaml documentation `_ includes many `fully-functioning code samples `_ of how to use Enaml. They range from `simple demonstrations of how a widget is used `_, to advanced explorations of the customisability of Enaml GUIs. Employee Tutorial ~~~~~~~~~~~~~~~~~ The `Employee Tutorial `_ 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 `_ 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 `_ 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 `_ for more examples. enaml-0.19.0/ci/000077500000000000000000000000001507073163500132775ustar00rootroot00000000000000enaml-0.19.0/ci/qt6_linux.txt000066400000000000000000000006761507073163500160020ustar00rootroot00000000000000build-essential libgl1-mesa-dev libfontconfig1-dev libfreetype-dev libx11-dev libx11-xcb-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-icccm4-dev libxcb-image0-dev libxcb-keysyms1-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-shape0-dev libxcb-shm0-dev libxcb-sync-dev libxcb-util-dev libxcb-xfixes0-dev libxcb-xinerama0-dev libxcb-xkb-dev libxcb1-dev libxext-dev libxfixes-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev libxrender-devenaml-0.19.0/codecov.yml000066400000000000000000000005421507073163500150520ustar00rootroot00000000000000codecov: notify: require_ci_to_pass: yes coverage: precision: 2 round: down range: "70...100" status: project: yes patch: yes changes: no parsers: gcov: branch_detection: conditional: no loop: yes method: no macro: no comment: layout: "header, diff" behavior: default require_changes: no enaml-0.19.0/development.rst000066400000000000000000000002721507073163500157610ustar00rootroot00000000000000Regenerating the Enaml parser ============================= To regenerate the parser: python -m enaml.core.parser.generate_enaml_parser black enaml/core/parser/enaml_parser.py enaml-0.19.0/docs/000077500000000000000000000000001507073163500136345ustar00rootroot00000000000000enaml-0.19.0/docs/Makefile000066400000000000000000000110611507073163500152730ustar00rootroot00000000000000# Makefile for Sphinx documentation # # You can set these variables from the command line. SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = build # Internal variables. PAPEROPT_a4 = -D latex_paper_size=a4 PAPEROPT_letter = -D latex_paper_size=letter ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source .PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest help: @echo "Please use \`make ' where is one of" @echo " html to make standalone HTML files" @echo " dirhtml to make HTML files named index.html in directories" @echo " singlehtml to make a single large HTML file" @echo " pickle to make pickle files" @echo " json to make JSON files" @echo " htmlhelp to make HTML files and a HTML help project" @echo " qthelp to make HTML files and a qthelp project" @echo " devhelp to make HTML files and a Devhelp project" @echo " epub to make an epub" @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" @echo " latexpdf to make LaTeX files and run them through pdflatex" @echo " text to make text files" @echo " man to make manual pages" @echo " changes to make an overview of all changed/added/deprecated items" @echo " linkcheck to check all external links for integrity" @echo " doctest to run all doctests embedded in the documentation (if enabled)" clean: -rm -rf $(BUILDDIR)/* examples: python source/examples/example_doc_generator.py @echo html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." dirhtml: $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." singlehtml: $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml @echo @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." pickle: $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle @echo @echo "Build finished; now you can process the pickle files." json: $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json @echo @echo "Build finished; now you can process the JSON files." htmlhelp: $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp @echo @echo "Build finished; now you can run HTML Help Workshop with the" \ ".hhp project file in $(BUILDDIR)/htmlhelp." qthelp: $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp @echo @echo "Build finished; now you can run "qcollectiongenerator" with the" \ ".qhcp project file in $(BUILDDIR)/qthelp, like this:" @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/enaml.qhcp" @echo "To view the help file:" @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/enaml.qhc" devhelp: $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp @echo @echo "Build finished." @echo "To view the help file:" @echo "# mkdir -p $$HOME/.local/share/devhelp/enaml" @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/enaml" @echo "# devhelp" epub: $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub @echo @echo "Build finished. The epub file is in $(BUILDDIR)/epub." latex: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." @echo "Run \`make' in that directory to run these through (pdf)latex" \ "(use \`make latexpdf' here to do that automatically)." latexpdf: $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex @echo "Running LaTeX files through pdflatex..." make -C $(BUILDDIR)/latex all-pdf @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." text: $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text @echo @echo "Build finished. The text files are in $(BUILDDIR)/text." man: $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man @echo @echo "Build finished. The manual pages are in $(BUILDDIR)/man." changes: $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes @echo @echo "The overview file is in $(BUILDDIR)/changes." linkcheck: $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck @echo @echo "Link check complete; look for any errors in the above output " \ "or in $(BUILDDIR)/linkcheck/output.txt." doctest: $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest @echo "Testing of doctests in the sources finished, look at the " \ "results in $(BUILDDIR)/doctest/output.txt." enaml-0.19.0/docs/README.rst000066400000000000000000000011251507073163500153220ustar00rootroot00000000000000Building the docs ================= Building the docs involve the following steps: - install enaml and its required dependencies: ply, qtpy, atom, kwisolver - install sphinx and sphinx_rtd_theme - install the enaml lexer for pygments: pip install pygments-enaml - cd into the docs folder and run `make html` Rebuilding the example pages and screenshot involve the following steps: - install enaml and its required dependencies: ply, qtpy, atom, kiwisolver - install in addition: pyqt, numpy, matplotlib, ipython, qtconsole, vtk, qscintilla - cd into the docs folder and run `make examples` enaml-0.19.0/docs/make.bat000066400000000000000000000107571507073163500152530ustar00rootroot00000000000000@ECHO OFF REM Command file for Sphinx documentation if "%SPHINXBUILD%" == "" ( set SPHINXBUILD=sphinx-build ) set BUILDDIR=build set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source if NOT "%PAPER%" == "" ( set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% ) if "%1" == "" goto help if "%1" == "help" ( :help echo.Please use `make ^` where ^ is one of echo. html to make standalone HTML files echo. dirhtml to make HTML files named index.html in directories echo. singlehtml to make a single large HTML file echo. pickle to make pickle files echo. json to make JSON files echo. htmlhelp to make HTML files and a HTML help project echo. qthelp to make HTML files and a qthelp project echo. devhelp to make HTML files and a Devhelp project echo. epub to make an epub echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter echo. text to make text files echo. man to make manual pages echo. changes to make an overview over all changed/added/deprecated items echo. linkcheck to check all external links for integrity echo. doctest to run all doctests embedded in the documentation if enabled goto end ) if "%1" == "clean" ( for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i del /q /s %BUILDDIR%\* goto end ) if "%1" == "examples" ( python source\examples\example_doc_generator.py ) if "%1" == "html" ( %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/html. goto end ) if "%1" == "dirhtml" ( %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. goto end ) if "%1" == "singlehtml" ( %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml if errorlevel 1 exit /b 1 echo. echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. goto end ) if "%1" == "pickle" ( %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the pickle files. goto end ) if "%1" == "json" ( %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can process the JSON files. goto end ) if "%1" == "htmlhelp" ( %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run HTML Help Workshop with the ^ .hhp project file in %BUILDDIR%/htmlhelp. goto end ) if "%1" == "qthelp" ( %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp if errorlevel 1 exit /b 1 echo. echo.Build finished; now you can run "qcollectiongenerator" with the ^ .qhcp project file in %BUILDDIR%/qthelp, like this: echo.^> qcollectiongenerator %BUILDDIR%\qthelp\enaml.qhcp echo.To view the help file: echo.^> assistant -collectionFile %BUILDDIR%\qthelp\enaml.ghc goto end ) if "%1" == "devhelp" ( %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp if errorlevel 1 exit /b 1 echo. echo.Build finished. goto end ) if "%1" == "epub" ( %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub if errorlevel 1 exit /b 1 echo. echo.Build finished. The epub file is in %BUILDDIR%/epub. goto end ) if "%1" == "latex" ( %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex if errorlevel 1 exit /b 1 echo. echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. goto end ) if "%1" == "text" ( %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text if errorlevel 1 exit /b 1 echo. echo.Build finished. The text files are in %BUILDDIR%/text. goto end ) if "%1" == "man" ( %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man if errorlevel 1 exit /b 1 echo. echo.Build finished. The manual pages are in %BUILDDIR%/man. goto end ) if "%1" == "changes" ( %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes if errorlevel 1 exit /b 1 echo. echo.The overview file is in %BUILDDIR%/changes. goto end ) if "%1" == "linkcheck" ( %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck if errorlevel 1 exit /b 1 echo. echo.Link check complete; look for any errors in the above output ^ or in %BUILDDIR%/linkcheck/output.txt. goto end ) if "%1" == "doctest" ( %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest if errorlevel 1 exit /b 1 echo. echo.Testing of doctests in the sources finished, look at the ^ results in %BUILDDIR%/doctest/output.txt. goto end ) :end enaml-0.19.0/docs/requirements.txt000066400000000000000000000002531507073163500171200ustar00rootroot00000000000000sphinx sphinx-rtd-theme packaging git+https://github.com/nucleic/cppy@main git+https://github.com/nucleic/atom@main git+https://github.com/nucleic/kiwi@main tools/pygmentsenaml-0.19.0/docs/rtd_requirements.txt000066400000000000000000000000061507073163500177650ustar00rootroot00000000000000wheel enaml-0.19.0/docs/source/000077500000000000000000000000001507073163500151345ustar00rootroot00000000000000enaml-0.19.0/docs/source/_sphinxext/000077500000000000000000000000001507073163500173255ustar00rootroot00000000000000enaml-0.19.0/docs/source/_sphinxext/__init__.py000066400000000000000000000000001507073163500214240ustar00rootroot00000000000000enaml-0.19.0/docs/source/_sphinxext/enamldoc.py000066400000000000000000000153521507073163500214670ustar00rootroot00000000000000#------------------------------------------------------------------------------ # Copyright (c) 2013-2025, Nucleic Development Team. # # Distributed under the terms of the Modified BSD License. # # The full license is in the file LICENSE, distributed with this software. #------------------------------------------------------------------------------ import re from atom.api import Member #------------------------------------------------------------------------------ # AST Nodes #------------------------------------------------------------------------------ class Docstring(object): def __init__(self, body): self.body = body def render(self): lines = [] for item in self.body: lines.extend(item.render()) return lines class NormalLine(object): def __init__(self, text): self.text = text def render(self): return [self.text] class Parameters(object): def __init__(self, body): self.body = body def render(self): lines = [] for item in self.body: lines.extend(item.render()) return lines class ParameterSpec(object): def __init__(self, pname, ptype, description): self.pname = pname self.ptype = ptype self.description = description def render(self): lines = [] lines.append(':param %s: %s' % (self.pname, self.description)) if self.ptype: lines.append(':type %s: %s' % (self.pname, self.ptype)) return lines class Returns(object): def __init__(self, body): self.body = body def render(self): lines = [] for item in self.body: lines.extend(item.render()) return lines class ReturnSpec(object): def __init__(self, rtype, description): self.rtype = rtype self.description = description def render(self): lines = [] lines.append(':rtype: %s' % self.rtype) lines.append(':returns: %s' % self.description) return lines #------------------------------------------------------------------------------ # Lexer #------------------------------------------------------------------------------ dashed_line = 'dashed_line' empty_line = 'empty_line' indented_line = 'indented_line' normal_line = 'normal_line' parameters_header = 'parameters_header' parameter_spec = 'parameter_spec' returns_header = 'returns_header' star_args = 'star_args' star_star_kwargs = 'star_star_kwargs' line_regexes = ( (parameters_header, re.compile(r'^Parameters$')), (returns_header, re.compile(r'^Returns$')), (star_args, re.compile(r'^\*([a-zA-Z_][a-zA-Z0-9_]*)$')), (star_star_kwargs, re.compile(r'^\*\*([a-zA-Z_][a-zA-Z0-9_]*)$')), (parameter_spec, re.compile(r'^([a-zA-Z_][a-zA-Z0-9_]*)\s*:\s*(.*)$')), (dashed_line, re.compile(r'^-+$')), (indented_line, re.compile(r'^(\s+)[^\s].*$')), (normal_line, re.compile(r'^[^\s].*$')), (empty_line, re.compile(r'^\s*$')), ) def lex_line(line): for token, rgx in line_regexes: match = rgx.match(line) if match is not None: return (token, line, match) raise ValueError('line "%s" failed to lex' % line) #------------------------------------------------------------------------------ # Parser #------------------------------------------------------------------------------ def peek(stack): if len(stack) == 0: return '' return stack[-1][0] def consume_blank_lines(stack): while peek(stack) == empty_line: stack.pop() def extract_description(stack): parts = [] while peek(stack) == indented_line: token, line, match = stack.pop() parts.append(line.strip()) return ' '.join(parts) def p_normal(line, match, stack): return NormalLine(line) def p_parameters(line, match, stack): if peek(stack) != dashed_line: return p_normal(line, match, stack) stack.pop() body = [] consume_blank_lines(stack) while True: p = peek(stack) if p == parameter_spec: token, line, match = stack.pop() consume_blank_lines(stack) descr = extract_description(stack) pname = match.group(1) ptype = match.group(2) spec = ParameterSpec(pname, ptype, descr) body.append(spec) consume_blank_lines(stack) elif p == star_args or p == star_star_kwargs: token, line, match = stack.pop() consume_blank_lines(stack) descr = extract_description(stack) pname = match.group(1) spec = ParameterSpec(pname, '', descr) body.append(spec) consume_blank_lines(stack) else: break return Parameters(body) def p_returns(line, match, stack): if peek(stack) != dashed_line: return p_normal(line, match, stack) stack.pop() body = [] consume_blank_lines(stack) if peek(stack) == parameter_spec: token, line, match = stack.pop() consume_blank_lines(stack) descr = extract_description(stack) rtype = match.group(2) spec = ReturnSpec(rtype, descr) body.append(spec) consume_blank_lines(stack) return Returns(body) DISPATCH_TABLE = { dashed_line: p_normal, empty_line: p_normal, indented_line: p_normal, normal_line: p_normal, parameters_header: p_parameters, parameter_spec: p_normal, returns_header: p_returns, star_args: p_normal, star_star_kwargs: p_normal, } def parse(classified): body = [] stack = classified[::-1] while stack: token, line, match = stack.pop() item = DISPATCH_TABLE[token](line, match, stack) body.append(item) return Docstring(body) #------------------------------------------------------------------------------ # Docstring Processors #------------------------------------------------------------------------------ def process_function(app, name, obj, options, lines): classified = map(lex_line, lines) return parse(classified).render() def process_attribute(app, name, obj, options, lines): # if isinstance(obj, Member): # # indent = ' ' # # name = type(obj).__name__ # # new = [indent + name, u''] # # for line in lines: # # new.append(indent + line) # # lines = new # pass return lines HANDLERS = { 'function': process_function, 'method': process_function, 'attribute': process_attribute, } def process_docstring(app, what, name, obj, options, lines): handler = HANDLERS.get(what) if handler is not None: modified_lines = handler(app, name, obj, options, lines[:]) lines[:] = modified_lines def setup(app): app.connect('autodoc-process-docstring', process_docstring) enaml-0.19.0/docs/source/_static/000077500000000000000000000000001507073163500165625ustar00rootroot00000000000000enaml-0.19.0/docs/source/_static/enamldoc.css000066400000000000000000000036241507073163500210630ustar00rootroot00000000000000blockquote { border-left: 2px solid #EEEEEE; } .ffms, #style-field-type-table td:nth-of-type(2) { font-family: monospace; } .table th.field-name { white-space: nowrap; background-color: #F0F0F0; border: 2px solid black; } .table td.field-body > blockquote { border: none; } .table td.field-body > blockquote p { font-size: 14px; } .table td.field-body { padding-left: 20px; } .alert-info { background-color: #FDFA92; border-color: #FDFA92; color: #333333; } .h-imgs img { float: left; padding: 10px; } .padded-img img { padding: 10px; } .code-and-img { padding: 0; } .code-and-img > div { float: left; width: 30em; } .code-and-img pre { overflow-x: hidden; } .highlighttable { width: 100%; } .highlighttable .code { width: 100%; } .enamldoc-sidenav form, .enamldoc-sidenav #sourcelink { padding: 5px 20px; } .enamldoc-sidenav { position: relative; display: inline-block; margin-top: 30px; margin-bottom: 30px; padding-top: 10px; padding-bottom: 10px; text-shadow: 0 1px 0 #FFFFFF; background-color: #F5F5F5; border: 1px solid #CCCCCC; } .enamldoc-sidenav .nav > li > a { display: block; color: #716B7A; padding: 5px 20px; } .enamldoc-sidenav .nav > li > a:hover, .enamldoc-sidenav .nav > li > a:focus { text-decoration: none; background-color: #E5E5E5; } .enamldoc-sidenav .nav .nav > li > a { padding-top: 3px; padding-bottom: 3px; padding-left: 30px; font-size: 90%; } .enamldoc-sidenav .nav .nav .nav > li > a { padding-top: 3px; padding-bottom: 3px; padding-left: 40px; font-size: 90%; } .enamldoc-sidenav .nav .nav .nav .nav > li > a { padding-top: 3px; padding-bottom: 3px; padding-left: 50px; font-size: 90%; } @media screen and (min-width: 992px) { .enamldoc-sidenav { width: 213px; } } @media screen and (min-width: 1200px) { .enamldoc-sidenav { width: 263px; } } enaml-0.19.0/docs/source/_static/enamldoc.js000066400000000000000000000055011507073163500207030ustar00rootroot00000000000000(function ($) { function updateSideBarPosition() { // If the window width is such that the sidebar will be positioned // above the rest of the page content, reset to relative positioning. var width = this.$window.width(); if( width < 992 ) { this.css({ position: "relative", top: 0 }); return; } // Collect the various heights needed for computing position. var offset = this.topOffset; var height = this.outerHeight(true); var winHeight = this.$window.height(); var parent = this.parent(); var grandParent = parent.parent(); var effectiveHeight = Math.max(parent.height(), height); var delta = grandParent.height() - effectiveHeight; // If the sidebar fits completely on the window, it is fixed in // place if less than the effective height, or placed relative // top if it is the taller element. if( height + offset < winHeight ) { if( delta > 0 ) { this.css({ position: "fixed", top: offset }); } else { this.css({ position: "relative", top: 0 }); } return; } // At this point, the sidebar is taller than the viewport. If it is // not the tallest item in the row, scroll it at a rate relative to // the scroll percentage of the document. This will cause the sidebar // and the taller content to reach the bottom of the scroll at the // same time. if( delta > 0 ) { var docHeight = $(document).height(); var scrollTop = this.$window.scrollTop(); var perc = 1.0 * scrollTop / (docHeight - winHeight); this.css({ position: "relative", top: delta * perc }); return; } // At this point, the sidebar is the tallest item in the row. this.css({ position: "relative", top: 0 }); } $(window).load(function () { var sideBar = $("#enamldoc-sidebar"); var $window = $(window); sideBar.$window = $window; sideBar.topOffset = $("#navbar").height(); var updater = $.proxy(updateSideBarPosition, sideBar); $window.on("click", updater); $window.on("scroll", updater); $window.on("resize", updater); updater(); }); $(document).ready(function () { $(".enamldoc-sidenav ul").addClass("nav nav-list"); $(".enamldoc-sidenav > ul > li > a").addClass("nav-header"); }); }(window.$jqTheme || window.jQuery)); enaml-0.19.0/docs/source/_templates/000077500000000000000000000000001507073163500172715ustar00rootroot00000000000000enaml-0.19.0/docs/source/_templates/layout.html000066400000000000000000000020311507073163500214700ustar00rootroot00000000000000{% extends '!layout.html' %} {# Add github banner (from: https://github.com/blog/273-github-ribbons). #} {% block header %} {{ super() }} {% if pagename == "index" %} Fork me on GitHub {% endif %} {% endblock %} {% block extrahead %} {{ super() }} {% endblock %} {%- block sidebar1 %} {%- if sidebars %}
{% endif %} {% endblock %} enaml-0.19.0/docs/source/_templates/navbar.html000066400000000000000000000002161507073163500214270ustar00rootroot00000000000000{% extends '!navbar.html' %} {% block navbarextra %}
  • Index
  • {% endblock %} enaml-0.19.0/docs/source/_templates/realglobaltoc.html000066400000000000000000000000201507073163500227610ustar00rootroot00000000000000{{ toctree() }} enaml-0.19.0/docs/source/api_ref/000077500000000000000000000000001507073163500165415ustar00rootroot00000000000000enaml-0.19.0/docs/source/api_ref/applib/000077500000000000000000000000001507073163500200105ustar00rootroot00000000000000enaml-0.19.0/docs/source/api_ref/applib/index.rst000066400000000000000000000004261507073163500216530ustar00rootroot00000000000000.. module:: enaml.applib ============ enaml.applib ============ .. toctree:: :hidden: live_editor_model live_editor_view .. rubric:: Modules .. autosummary:: :nosignatures: live_editor_model live_editor_view enaml-0.19.0/docs/source/api_ref/applib/live_editor_model.rst000066400000000000000000000003711507073163500242300ustar00rootroot00000000000000.. module:: enaml.applib.live_editor_model ============================== enaml.applib.live_editor_model ============================== .. rubric:: Classes .. autosummary:: :nosignatures: LiveEditorModel .. autoclass:: LiveEditorModel enaml-0.19.0/docs/source/api_ref/applib/live_editor_view.rst000066400000000000000000000006611507073163500241040ustar00rootroot00000000000000.. module:: enaml.applib.live_editor_view ============================= enaml.applib.live_editor_view ============================= .. rubric:: Classes .. autosummary:: :nosignatures: EditorPanel ModelEditorPanel TracebackPanel ViewEditorPanel ViewPanel .. autoclass:: EditorPanel .. autoclass:: ModelEditorPanel .. autoclass:: TracebackPanel .. autoclass:: ViewEditorPanel .. autoclass:: ViewPanel enaml-0.19.0/docs/source/api_ref/application.rst000066400000000000000000000010311507073163500215710ustar00rootroot00000000000000.. module:: enaml.application ================= enaml.application ================= .. rubric:: Functions .. autosummary:: :nosignatures: deferred_call is_main_thread schedule timed_call .. rubric:: Classes .. autosummary:: :nosignatures: Application ProxyResolver ScheduledTask .. autofunction:: deferred_call .. autofunction:: is_main_thread .. autofunction:: schedule .. autofunction:: timed_call .. autoclass:: Application .. autoclass:: ProxyResolver .. autoclass:: ScheduledTask enaml-0.19.0/docs/source/api_ref/colors.rst000066400000000000000000000004321507073163500205730ustar00rootroot00000000000000.. module:: enaml.colors ============ enaml.colors ============ .. rubric:: Functions .. autosummary:: :nosignatures: parse_color .. rubric:: Classes .. autosummary:: :nosignatures: Color ColorMember .. autofunction:: parse_color .. autoclass:: Color enaml-0.19.0/docs/source/api_ref/core/000077500000000000000000000000001507073163500174715ustar00rootroot00000000000000enaml-0.19.0/docs/source/api_ref/core/conditional.rst000066400000000000000000000003211507073163500225220ustar00rootroot00000000000000.. module:: enaml.core.conditional ====================== enaml.core.conditional ====================== .. rubric:: Classes .. autosummary:: :nosignatures: Conditional .. autoclass:: Conditional enaml-0.19.0/docs/source/api_ref/core/declarative.rst000066400000000000000000000004541507073163500225110ustar00rootroot00000000000000.. module:: enaml.core.declarative ====================== enaml.core.declarative ====================== .. rubric:: Functions .. autosummary:: :nosignatures: d_ .. rubric:: Classes .. autosummary:: :nosignatures: Declarative .. autofunction:: d_ .. autoclass:: Declarative enaml-0.19.0/docs/source/api_ref/core/include.rst000066400000000000000000000002711507073163500216460ustar00rootroot00000000000000.. module:: enaml.core.include ================== enaml.core.include ================== .. rubric:: Classes .. autosummary:: :nosignatures: Include .. autoclass:: Include enaml-0.19.0/docs/source/api_ref/core/index.rst000066400000000000000000000005571507073163500213410ustar00rootroot00000000000000.. module:: enaml.core ========== enaml.core ========== .. toctree:: :hidden: conditional declarative include looper object pattern .. rubric:: Modules .. autosummary:: :nosignatures: conditional declarative include looper object pattern enaml-0.19.0/docs/source/api_ref/core/looper.rst000066400000000000000000000002631507073163500215240ustar00rootroot00000000000000.. module:: enaml.core.looper ================= enaml.core.looper ================= .. rubric:: Classes .. autosummary:: :nosignatures: Looper .. autoclass:: Looper enaml-0.19.0/docs/source/api_ref/core/object.rst000066400000000000000000000004441507073163500214730ustar00rootroot00000000000000.. module:: enaml.core.object ================= enaml.core.object ================= .. rubric:: Functions .. autosummary:: :nosignatures: flag_property .. rubric:: Classes .. autosummary:: :nosignatures: Object .. autofunction:: flag_property .. autoclass:: Object enaml-0.19.0/docs/source/api_ref/core/pattern.rst000066400000000000000000000002711507073163500217000ustar00rootroot00000000000000.. module:: enaml.core.pattern ================== enaml.core.pattern ================== .. rubric:: Classes .. autosummary:: :nosignatures: Pattern .. autoclass:: Pattern enaml-0.19.0/docs/source/api_ref/fonts.rst000066400000000000000000000004211507073163500204210ustar00rootroot00000000000000.. module:: enaml.fonts =========== enaml.fonts =========== .. rubric:: Functions .. autosummary:: :nosignatures: parse_font .. rubric:: Classes .. autosummary:: :nosignatures: Font FontMember .. autofunction:: parse_font .. autoclass:: Font enaml-0.19.0/docs/source/api_ref/icon.rst000066400000000000000000000002731507073163500202250ustar00rootroot00000000000000.. module:: enaml.icon ========== enaml.icon ========== .. rubric:: Classes .. autosummary:: :nosignatures: Icon IconImage .. autoclass:: Icon .. autoclass:: IconImage enaml-0.19.0/docs/source/api_ref/image.rst000066400000000000000000000002311507073163500203510ustar00rootroot00000000000000.. module:: enaml.image =========== enaml.image =========== .. rubric:: Classes .. autosummary:: :nosignatures: Image .. autoclass:: Image enaml-0.19.0/docs/source/api_ref/index.rst000066400000000000000000000013561507073163500204070ustar00rootroot00000000000000.. module:: enaml ============= API Reference ============= .. toctree:: :hidden: applib application colors core fonts icon image layout nodevisitor scintilla stdlib styling validator version widgets .. rubric:: Modules .. autosummary:: :nosignatures: application colors fonts icon image nodevisitor styling validator version .. rubric:: Packages .. autosummary:: :nosignatures: applib core layout scintilla stdlib widgets enaml-0.19.0/docs/source/api_ref/layout/000077500000000000000000000000001507073163500200565ustar00rootroot00000000000000enaml-0.19.0/docs/source/api_ref/layout/dock_layout.rst000066400000000000000000000021471507073163500231310ustar00rootroot00000000000000.. module:: enaml.layout.dock_layout ======================== enaml.layout.dock_layout ======================== .. rubric:: Classes .. autosummary:: :nosignatures: AreaLayout DockBarLayout DockLayout DockLayoutOp DockLayoutValidator DockLayoutWarning ExtendItem FloatArea FloatItem HSplitLayout InsertItem InsertBorderItem InsertDockBarItem InsertTab ItemLayout LayoutNode RemoveItem RetractItem SplitLayout TabLayout VSplitLayout .. autoclass:: AreaLayout .. autoclass:: DockBarLayout .. autoclass:: DockLayout .. autoclass:: DockLayoutOp .. autoclass:: DockLayoutValidator .. autoclass:: DockLayoutWarning .. autoclass:: ExtendItem .. autoclass:: FloatArea .. autoclass:: FloatItem .. autoclass:: HSplitLayout .. autoclass:: InsertItem .. autoclass:: InsertBorderItem .. autoclass:: InsertDockBarItem .. autoclass:: InsertTab .. autoclass:: ItemLayout .. autoclass:: LayoutNode .. autoclass:: RemoveItem .. autoclass:: RetractItem .. autoclass:: SplitLayout .. autoclass:: TabLayout .. autoclass:: VSplitLayout enaml-0.19.0/docs/source/api_ref/layout/index.rst000066400000000000000000000003761507073163500217250ustar00rootroot00000000000000.. module:: enaml.layout ============ enaml.layout ============ .. toctree:: :hidden: dock_layout layout_helpers .. rubric:: Modules .. autosummary:: :nosignatures: dock_layout layout_helpers enaml-0.19.0/docs/source/api_ref/layout/layout_helpers.rst000066400000000000000000000007631507073163500236550ustar00rootroot00000000000000.. module:: enaml.layout.layout_helpers =========================== enaml.layout.layout_helpers =========================== . rubric:: Functions .. autosummary:: :nosignatures: horizontal vertical hbox vbox align factory grid expand_constraints .. autofunction:: horizontal .. autofunction:: vertical .. autofunction:: hbox .. autofunction:: vbox .. autofunction:: align .. autofunction:: factory .. autofunction:: grid .. autofunction:: expand_constraints enaml-0.19.0/docs/source/api_ref/nodevisitor.rst000066400000000000000000000002751507073163500216440ustar00rootroot00000000000000.. module:: enaml.nodevisitor ================= enaml.nodevisitor ================= .. rubric:: Classes .. autosummary:: :nosignatures: NodeVisitor .. autoclass:: NodeVisitor enaml-0.19.0/docs/source/api_ref/scintilla/000077500000000000000000000000001507073163500205235ustar00rootroot00000000000000enaml-0.19.0/docs/source/api_ref/scintilla/index.rst000066400000000000000000000003151507073163500223630ustar00rootroot00000000000000.. module:: enaml.scintilla =============== enaml.scintilla =============== .. toctree:: :hidden: scintilla .. rubric:: Modules .. autosummary:: :nosignatures: scintilla enaml-0.19.0/docs/source/api_ref/scintilla/scintilla.rst000066400000000000000000000004211507073163500232340ustar00rootroot00000000000000.. module:: enaml.scintilla.scintilla ========================= enaml.scintilla.scintilla ========================= .. rubric:: Classes .. autosummary:: :nosignatures: Scintilla ScintillaDocument .. autoclass:: Scintilla .. autoclass:: ScintillaDocument enaml-0.19.0/docs/source/api_ref/stdlib/000077500000000000000000000000001507073163500200225ustar00rootroot00000000000000enaml-0.19.0/docs/source/api_ref/stdlib/dialog_buttons.rst000066400000000000000000000004331507073163500235710ustar00rootroot00000000000000.. module:: enaml.stdlib.dialog_buttons =========================== enaml.stdlib.dialog_buttons =========================== .. rubric:: Classes .. autosummary:: :nosignatures: DialogButton DialogButtonBox .. autoclass:: DialogButton .. autoclass:: DialogButtonBox enaml-0.19.0/docs/source/api_ref/stdlib/dock_area_styles.rst000066400000000000000000000021121507073163500240630ustar00rootroot00000000000000.. module:: enaml.stdlib.dock_area_styles ============================= enaml.stdlib.dock_area_styles ============================= .. rubric:: Functions .. autosummary:: :nosignatures: available_styles register_styles get_registered_styles .. rubric:: Classes .. autosummary:: :nosignatures: BasicStyle AreaStyle RubberBandStyle WindowStyle WindowButtonStyle ContainerStyle TabBarTabStyle TabBarCloseButtonStyle DockBarButtonStyle ItemStyle TitleBarStyle TitleBarLabelStyle TitleBarButtonStyle .. autofunction:: available_styles .. autofunction:: register_styles .. autofunction:: get_registered_styles .. autoclass:: BasicStyle .. autoclass:: AreaStyle .. autoclass:: RubberBandStyle .. autoclass:: WindowStyle .. autoclass:: WindowButtonStyle .. autoclass:: ContainerStyle .. autoclass:: TabBarTabStyle .. autoclass:: TabBarCloseButtonStyle .. autoclass:: DockBarButtonStyle .. autoclass:: ItemStyle .. autoclass:: TitleBarStyle .. autoclass:: TitleBarLabelStyle .. autoclass:: TitleBarButtonStyle enaml-0.19.0/docs/source/api_ref/stdlib/fields.rst000066400000000000000000000004231507073163500220210ustar00rootroot00000000000000.. module:: enaml.stdlib.fields =================== enaml.stdlib.fields =================== .. rubric:: Classes .. autosummary:: :nosignatures: FloatField IntField RegexField .. autoclass:: FloatField .. autoclass:: IntField .. autoclass:: RegexField enaml-0.19.0/docs/source/api_ref/stdlib/index.rst000066400000000000000000000007631507073163500216710ustar00rootroot00000000000000.. module:: enaml.stdlib ============ enaml.stdlib ============ .. toctree:: :hidden: dialog_buttons dock_area_styles fields mapped_view message_box slider_transform task_dialog .. rubric:: Modules .. autosummary:: :nosignatures: dialog_buttons dock_area_styles fields mapped_view message_box slider_transform task_dialog enaml-0.19.0/docs/source/api_ref/stdlib/mapped_view.rst000066400000000000000000000003271507073163500230560ustar00rootroot00000000000000.. module:: enaml.stdlib.mapped_view ======================== enaml.stdlib.mapped_view ======================== .. rubric:: Classes .. autosummary:: :nosignatures: MappedView .. autoclass:: MappedView enaml-0.19.0/docs/source/api_ref/stdlib/message_box.rst000066400000000000000000000007401507073163500230510ustar00rootroot00000000000000.. module:: enaml.stdlib.message_box ======================== enaml.stdlib.message_box ======================== .. rubric:: Functions .. autosummary:: :nosignatures: about critical information question warning .. rubric:: Classes .. autosummary:: :nosignatures: MessageBox .. autofunction:: about .. autofunction:: critical .. autofunction:: information .. autofunction:: question .. autofunction:: warning .. autoclass:: MessageBox enaml-0.19.0/docs/source/api_ref/stdlib/slider_transform.rst000066400000000000000000000004471507073163500241360ustar00rootroot00000000000000.. module:: enaml.stdlib.slider_transform ============================= enaml.stdlib.slider_transform ============================= .. rubric:: Classes .. autosummary:: :nosignatures: SliderTransform FloatTransform .. autoclass:: SliderTransform .. autoclass:: FloatTransform enaml-0.19.0/docs/source/api_ref/stdlib/task_dialog.rst000066400000000000000000000011621507073163500230350ustar00rootroot00000000000000.. module:: enaml.stdlib.task_dialog ============================= enaml.stdlib.slider_transform ============================= .. rubric:: Classes .. autosummary:: :nosignatures: TaskDialogIconArea TaskDialogInstructionArea TaskDialogContentArea TaskDialogCommandArea TaskDialogDetailsArea TaskDialogFootnoteArea TaskDialogBody .. autoclass:: TaskDialogIconArea .. autoclass:: TaskDialogInstructionArea .. autoclass:: TaskDialogContentArea .. autoclass:: TaskDialogCommandArea .. autoclass:: TaskDialogDetailsArea .. autoclass:: TaskDialogFootnoteArea .. autoclass:: TaskDialogBody enaml-0.19.0/docs/source/api_ref/styling.rst000066400000000000000000000004751507073163500207720ustar00rootroot00000000000000.. module:: enaml.styling ============= enaml.styling ============= .. rubric:: Classes .. autosummary:: :nosignatures: Setter Stylable Style StyleCache StyleSheet .. autoclass:: Setter .. autoclass:: Stylable .. autoclass:: Style .. autoclass:: StyleCache .. autoclass:: StyleSheet enaml-0.19.0/docs/source/api_ref/validator.rst000066400000000000000000000005031507073163500212560ustar00rootroot00000000000000.. module:: enaml.validator =============== enaml.validator =============== .. rubric:: Classes .. autosummary:: :nosignatures: FloatValidator IntValidator RegexValidator Validator .. autoclass:: FloatValidator .. autoclass:: IntValidator .. autoclass:: RegexValidator .. autoclass:: Validator enaml-0.19.0/docs/source/api_ref/version.rst000066400000000000000000000002511507073163500207560ustar00rootroot00000000000000.. module:: enaml.version ============= enaml.version ============= .. rubric:: Data .. autosummary:: :nosignatures: __version__ .. autodata:: __version__ enaml-0.19.0/docs/source/api_ref/widgets/000077500000000000000000000000001507073163500202075ustar00rootroot00000000000000enaml-0.19.0/docs/source/api_ref/widgets/abstract_button.rst000066400000000000000000000003631507073163500241410ustar00rootroot00000000000000.. module:: enaml.widgets.abstract_button ============================= enaml.widgets.abstract_button ============================= .. rubric:: Classes .. autosummary:: :nosignatures: AbstractButton .. autoclass:: AbstractButton enaml-0.19.0/docs/source/api_ref/widgets/action.rst000066400000000000000000000002771507073163500222240ustar00rootroot00000000000000.. module:: enaml.widgets.action ==================== enaml.widgets.action ==================== .. rubric:: Classes .. autosummary:: :nosignatures: Action .. autoclass:: Action enaml-0.19.0/docs/source/api_ref/widgets/action_group.rst000066400000000000000000000003411507073163500234300ustar00rootroot00000000000000.. module:: enaml.widgets.action_group ========================== enaml.widgets.action_group ========================== .. rubric:: Classes .. autosummary:: :nosignatures: ActionGroup .. autoclass:: ActionGroup enaml-0.19.0/docs/source/api_ref/widgets/bounded_date.rst000066400000000000000000000003411507073163500233540ustar00rootroot00000000000000.. module:: enaml.widgets.bounded_date ========================== enaml.widgets.bounded_date ========================== .. rubric:: Classes .. autosummary:: :nosignatures: BoundedDate .. autoclass:: BoundedDate enaml-0.19.0/docs/source/api_ref/widgets/bounded_datetime.rst000066400000000000000000000003711507073163500242360ustar00rootroot00000000000000.. module:: enaml.widgets.bounded_datetime ============================== enaml.widgets.bounded_datetime ============================== .. rubric:: Classes .. autosummary:: :nosignatures: BoundedDatetime .. autoclass:: BoundedDatetime enaml-0.19.0/docs/source/api_ref/widgets/bounded_time.rst000066400000000000000000000003411507073163500233750ustar00rootroot00000000000000.. module:: enaml.widgets.bounded_time ========================== enaml.widgets.bounded_time ========================== .. rubric:: Classes .. autosummary:: :nosignatures: BoundedTime .. autoclass:: BoundedTime enaml-0.19.0/docs/source/api_ref/widgets/button_group.rst000066400000000000000000000003411507073163500234660ustar00rootroot00000000000000.. module:: enaml.widgets.button_group ========================== enaml.widgets.button_group ========================== .. rubric:: Classes .. autosummary:: :nosignatures: ButtonGroup .. autoclass:: ButtonGroup enaml-0.19.0/docs/source/api_ref/widgets/calendar.rst000066400000000000000000000003131507073163500225070ustar00rootroot00000000000000.. module:: enaml.widgets.calendar ====================== enaml.widgets.calendar ====================== .. rubric:: Classes .. autosummary:: :nosignatures: Calendar .. autoclass:: Calendar enaml-0.19.0/docs/source/api_ref/widgets/check_box.rst000066400000000000000000000003171507073163500226670ustar00rootroot00000000000000.. module:: enaml.widgets.check_box ======================= enaml.widgets.check_box ======================= .. rubric:: Classes .. autosummary:: :nosignatures: CheckBox .. autoclass:: CheckBox enaml-0.19.0/docs/source/api_ref/widgets/color_dialog.rst000066400000000000000000000003411507073163500233740ustar00rootroot00000000000000.. module:: enaml.widgets.color_dialog ========================== enaml.widgets.color_dialog ========================== .. rubric:: Classes .. autosummary:: :nosignatures: ColorDialog .. autoclass:: ColorDialog enaml-0.19.0/docs/source/api_ref/widgets/combo_box.rst000066400000000000000000000003171507073163500227110ustar00rootroot00000000000000.. module:: enaml.widgets.combo_box ======================= enaml.widgets.combo_box ======================= .. rubric:: Classes .. autosummary:: :nosignatures: ComboBox .. autoclass:: ComboBox enaml-0.19.0/docs/source/api_ref/widgets/constraints_widget.rst000066400000000000000000000004051507073163500246520ustar00rootroot00000000000000.. module:: enaml.widgets.constraints_widget ================================ enaml.widgets.constraints_widget ================================ .. rubric:: Classes .. autosummary:: :nosignatures: ConstraintsWidget .. autoclass:: ConstraintsWidget enaml-0.19.0/docs/source/api_ref/widgets/container.rst000066400000000000000000000003211507073163500227170ustar00rootroot00000000000000.. module:: enaml.widgets.container ======================= enaml.widgets.container ======================= .. rubric:: Classes .. autosummary:: :nosignatures: Container .. autoclass:: Container enaml-0.19.0/docs/source/api_ref/widgets/control.rst000066400000000000000000000003051507073163500224170ustar00rootroot00000000000000.. module:: enaml.widgets.control ===================== enaml.widgets.control ===================== .. rubric:: Classes .. autosummary:: :nosignatures: Control .. autoclass:: Control enaml-0.19.0/docs/source/api_ref/widgets/date_selector.rst000066400000000000000000000003471507073163500235620ustar00rootroot00000000000000.. module:: enaml.widgets.date_selector =========================== enaml.widgets.date_selector =========================== .. rubric:: Classes .. autosummary:: :nosignatures: DateSelector .. autoclass:: DateSelector enaml-0.19.0/docs/source/api_ref/widgets/datetime_selector.rst000066400000000000000000000003771507073163500244440ustar00rootroot00000000000000.. module:: enaml.widgets.datetime_selector =============================== enaml.widgets.datetime_selector =============================== .. rubric:: Classes .. autosummary:: :nosignatures: DatetimeSelector .. autoclass:: DatetimeSelector enaml-0.19.0/docs/source/api_ref/widgets/dialog.rst000066400000000000000000000002771507073163500222060ustar00rootroot00000000000000.. module:: enaml.widgets.dialog ==================== enaml.widgets.dialog ==================== .. rubric:: Classes .. autosummary:: :nosignatures: Dialog .. autoclass:: Dialog enaml-0.19.0/docs/source/api_ref/widgets/dock_area.rst000066400000000000000000000003171507073163500226520ustar00rootroot00000000000000.. module:: enaml.widgets.dock_area ======================= enaml.widgets.dock_area ======================= .. rubric:: Classes .. autosummary:: :nosignatures: DockArea .. autoclass:: DockArea enaml-0.19.0/docs/source/api_ref/widgets/dock_events.rst000066400000000000000000000004111507073163500232410ustar00rootroot00000000000000.. module:: enaml.widgets.dock_events ========================= enaml.widgets.dock_events ========================= .. rubric:: Classes .. autosummary:: :nosignatures: DockEvent DockItemEvent .. autoclass:: DockEvent .. autoclass:: DockItemEvent enaml-0.19.0/docs/source/api_ref/widgets/dock_item.rst000066400000000000000000000003171507073163500227000ustar00rootroot00000000000000.. module:: enaml.widgets.dock_item ======================= enaml.widgets.dock_item ======================= .. rubric:: Classes .. autosummary:: :nosignatures: DockItem .. autoclass:: DockItem enaml-0.19.0/docs/source/api_ref/widgets/dock_pane.rst000066400000000000000000000003171507073163500226650ustar00rootroot00000000000000.. module:: enaml.widgets.dock_pane ======================= enaml.widgets.dock_pane ======================= .. rubric:: Classes .. autosummary:: :nosignatures: DockPane .. autoclass:: DockPane enaml-0.19.0/docs/source/api_ref/widgets/dual_slider.rst000066400000000000000000000003331507073163500232270ustar00rootroot00000000000000.. module:: enaml.widgets.dual_slider ========================= enaml.widgets.dual_slider ========================= .. rubric:: Classes .. autosummary:: :nosignatures: DualSlider .. autoclass:: DualSlider enaml-0.19.0/docs/source/api_ref/widgets/field.rst000066400000000000000000000002711507073163500220240ustar00rootroot00000000000000.. module:: enaml.widgets.field =================== enaml.widgets.field =================== .. rubric:: Classes .. autosummary:: :nosignatures: Field .. autoclass:: Field enaml-0.19.0/docs/source/api_ref/widgets/file_dialog.rst000066400000000000000000000003331507073163500231760ustar00rootroot00000000000000.. module:: enaml.widgets.file_dialog ========================= enaml.widgets.file_dialog ========================= .. rubric:: Classes .. autosummary:: :nosignatures: FileDialog .. autoclass:: FileDialog enaml-0.19.0/docs/source/api_ref/widgets/file_dialog_ex.rst000066400000000000000000000003531507073163500236740ustar00rootroot00000000000000.. module:: enaml.widgets.file_dialog_ex ============================ enaml.widgets.file_dialog_ex ============================ .. rubric:: Classes .. autosummary:: :nosignatures: FileDialogEx .. autoclass:: FileDialogEx enaml-0.19.0/docs/source/api_ref/widgets/flow_area.rst000066400000000000000000000003171507073163500227010ustar00rootroot00000000000000.. module:: enaml.widgets.flow_area ======================= enaml.widgets.flow_area ======================= .. rubric:: Classes .. autosummary:: :nosignatures: FlowArea .. autoclass:: FlowArea enaml-0.19.0/docs/source/api_ref/widgets/flow_item.rst000066400000000000000000000003171507073163500227270ustar00rootroot00000000000000.. module:: enaml.widgets.flow_item ======================= enaml.widgets.flow_item ======================= .. rubric:: Classes .. autosummary:: :nosignatures: FlowItem .. autoclass:: FlowItem enaml-0.19.0/docs/source/api_ref/widgets/form.rst000066400000000000000000000002631507073163500217050ustar00rootroot00000000000000.. module:: enaml.widgets.form ================== enaml.widgets.form ================== .. rubric:: Classes .. autosummary:: :nosignatures: Form .. autoclass:: Form enaml-0.19.0/docs/source/api_ref/widgets/frame.rst000066400000000000000000000003331507073163500220320ustar00rootroot00000000000000.. module:: enaml.widgets.frame =================== enaml.widgets.frame =================== .. rubric:: Classes .. autosummary:: :nosignatures: Border Frame .. autoclass:: Border .. autoclass:: Frame enaml-0.19.0/docs/source/api_ref/widgets/group_box.rst000066400000000000000000000003171507073163500227460ustar00rootroot00000000000000.. module:: enaml.widgets.group_box ======================= enaml.widgets.group_box ======================= .. rubric:: Classes .. autosummary:: :nosignatures: GroupBox .. autoclass:: GroupBox enaml-0.19.0/docs/source/api_ref/widgets/html.rst000066400000000000000000000002631507073163500217060ustar00rootroot00000000000000.. module:: enaml.widgets.html ================== enaml.widgets.html ================== .. rubric:: Classes .. autosummary:: :nosignatures: Html .. autoclass:: Html enaml-0.19.0/docs/source/api_ref/widgets/image_view.rst000066400000000000000000000003251507073163500230550ustar00rootroot00000000000000.. module:: enaml.widgets.image_view ======================== enaml.widgets.image_view ======================== .. rubric:: Classes .. autosummary:: :nosignatures: ImageView .. autoclass:: ImageView enaml-0.19.0/docs/source/api_ref/widgets/index.rst000066400000000000000000000056371507073163500220630ustar00rootroot00000000000000.. module:: enaml.widgets ============= enaml.widgets ============= .. toctree:: :hidden: abstract_button action action_group bounded_date bounded_datetime bounded_time button_group calendar check_box color_dialog combo_box constraints_widget container control datetime_selector date_selector dialog dock_area dock_events dock_item dock_pane dual_slider field file_dialog file_dialog_ex flow_area flow_item form
    frame group_box html image_view ipython_console label