Compare commits

..

No commits in common. "master" and "python-efl-1.19" have entirely different histories.

220 changed files with 2699 additions and 2360 deletions

5
.gitignore vendored
View File

@ -28,9 +28,4 @@ pip-log.txt
# Cython generated files
efl/*/*.c
efl/*/*.h
!efl/dbus_mainloop/e_dbus.*
efl/*/*.html
# Various editors trash
.idea/
.vscode/

View File

@ -1,10 +0,0 @@
[MESSAGES CONTROL]
#enable=
disable=consider-using-f-string, # for older python we still support
redundant-u-string-prefix, # for older python we still support
invalid-name, # seems too pedantic to me
missing-function-docstring,
missing-class-docstring,
missing-module-docstring,

117
CODING
View File

@ -1,28 +1,3 @@
TODO
====
* Automatically build and publish binary wheels on pypi
- for py: 36,37,38,39,310
- for linux x86 and rpi
- see https://packaging.python.org/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/
- see https://github.com/pypa/manylinux
- also include efl itsef in the wheels? PySide is doing this
* Drop python 2 compatibility
- Switch to cython3
- remove all the workarounds for py2 (see strings and enums)
* Improved editors support, at least on VSCode and PyCharm
* Try to implement better the elementary module, removing
the __init__ module hack (that create problems in the docs)
* Make the examples a first citizen!
- install them with python efl
- make them easily runnable
- show them in the docs
- show the code inside the examples themself?
- make the code editable on the fly?
Style
=====
@ -124,53 +99,65 @@ Release process instructions
============================
* use "api_coverage.py --python elementary" to see the missing bindings
* Version:
- change versions in efl/__init__.py (ex: 1.9.0)
- update EFL_MIN_VER in setup.py (if needed)
* Announce at enlightenment-release@lists.sourceforge.net and
enlightenment-devel@lists.sourceforge.net that you are planning for the release
* Change versions in efl/__init__.py (ex: 1.9.0)
* Update the ChangeLog file:
- setup.py build_doc -b changes ...and manually merge from the html file
setup.py build_doc -b changes ...and manually merge from the html file
* Git push and wait jenkins to generate the 2 tarballs
* Test the generated tarballs
* scp tarballs & md5sums to:
download.enlightenment.org:/srv/web/download.enlightenment.org/public_html/pre-releases/
* Announce at enlightenment-release@lists.sourceforge.net and
enlightenment-devel@lists.sourceforge.net that tarballs are ready for testing
* Generate the source (tar) and binary (wheel) distributions:
- make maintainer-clean (just to be sure nothing is cached)
- make dist
* Test the generated tarball and wheel:
- the targz must work by extracting and running: python setup.py install [--user]
- the targz must be installable using: pip install python-efl-1.9.0.tar.gz
- the wheel must be installable using: pip install python_efl-1.9.0-xxxx.whl
* Publish the 2 tar archive on e.org:
- scp tarballs & md5sums to:
download.enlightenment.org:/srv/web/download.enlightenment.org/rel/bindings/python/
- update download link on the wiki (www.enlightenment.org/download)
* Publish the .tar.gz archive on pypi:
- twine upload python-efl-1.9.0.tar.gz [--repository testpypy]
- TODO: also upload binary wheels for linux py36,37,38,39,310 (see manylinux on pypa)
* Documentation:
- make doc (check that inheritance graphs are there)
- scp the generated html documentation to:
download.enlightenment.org:/srv/web/docs.enlightenment.org/python-efl/1.9.0/
- update the 'current' link on the server (ssh)
... wait 24 hours, fix any issues found. In the mean time you can prepare the
release announcement for phame/ml.
* ssh to download.enlightenment.org and mv tarballs & md5sums to:
/srv/web/download.enlightenment.org/public_html/rel/bindings/python/
* Upload the .tar.gz archive to pypi:
- first upload the PKG-INFO file from the "edit" section on pypi
- then upload the tarball from the "files" section
* Create and push the tag for the release
- git tag -a v1.9.0 && git push origin v1.9.0
git tag -a v1.9.0 && git push origin v1.9.0
* Create and push the branch for stable backporting
git branch python-efl-1.9 && git push origin python-efl-1.9
* Announce the release to release@lists.enlightenment.org and
enlightenment-release@lists.sourceforge.net
* scp the generated html documentation to:
download.enlightenment.org:/srv/web/docs.enlightenment.org/public_html/python-efl/1.XX.0/
and update the 'current' link on the server (ssh)
* Update download link on the wiki (www.enlightenment.org/download)
* Publish the blog post on phame (Official Announcements)
* Announce the release to release@lists.enlightenment.org
* Change versions again in efl/__init__.py (ex: 1.9.99)
for more info:
--------------
* packaging.python.org
* phab.enlightenment.org/w/release_procedure/
* phab.enlightenment.org/w/hosting/ssh/
more info at:
phab.enlightenment.org/w/release_procedure/
Discussion
==========
* Internal utility functions used in the bindings must start with an
underscore and must have the shortest name as possible.
^
This needs further discussion/expansion.
When we define a function with cdef it is not exposed to Python API.
This should be explicit enough to not need the underscore prefix, which
at best looks ugly, and at worst just plain confusing.
A function name should summarize its functionality in one clear text,
short sentence. We have both too long and too short names. And I admit to
being guilty of adding many of both.
Let's build up a short review so we can see where we stand with this and
make necessary corrections.
/ kuuko
The underscore usage is a coding standard in all the EFL, we should try
to follow the efl style also here (where is possible and make sense)
/ davemds

100
ChangeLog
View File

@ -1,103 +1,3 @@
===================
2023-10-08 v1.26.1
===================
Maintenance release:
* rebuilt using Cython 0.29.34 to fix install on python 3.11
===================
2022-02-27 v1.26.0
===================
Changes:
* Switched to setuptools for the build system (can now install from pip again)
* Dropped py2.6 support, minimum is now 2.7
* Deprecated python2 support, with a big-fat-slow warning
* Improved documentation
Fixes:
* Fixed a memory allocation error in EvasSmart
===================
2020-09-24 v1.25.0
===================
Changes:
* Switched to Cython 0.29.21 for the tarball generation
===================
2020-04-30 v1.24.0
===================
Changes:
* Switched to Cython 0.29.16 for the tarball generation
* No more pypi packages uploaded, you must install from tarball
===================
2019-10-06 v1.23.0
===================
Changes:
* Switched to Cython 0.29.13 for the tarball generation
===================
2019-04-23 v1.22.0
===================
Changes:
* Switched to Cython 0.29.7 for the tarball generation
===================
2018-08-24 v1.21.0
===================
BREAKS:
* systray.pxi do not work anymore as the widget has been removed from efl.
The widget has been completly removed and the function elm_need_systray
now always return False that means systray is not available.
Apologies for the inconvenient.
Changes:
* Switched to Cython 0.28.4 for the tarball generation, should fix build
issues with python3.7
Additions:
* ecore.ECORE_EXE_ISOLATE_IO
* edje.part_text_prediction_hint_hash_del
* edje.part_text_prediction_hint_hash_set
* elm.Entry.prediction_hint_hash_del
* elm.Entry.prediction_hint_hash_set
* elm.Ctxpopup.item_insert_after
* elm.Ctxpopup.item_insert_before
===================
2017-05-06 v1.20.0
===================
Fixes:
* ecore.input and ecore.x can now coexsist
Changes:
* ecore.Poller is no more an Eo object in C (nothing should be changed in py)
* removed edje.Object custom __repr__ implementation
* Use Cython 23.5 to generate the C source in dist tarball (see T5589)
Additions:
* elm.Entry.prediction_hint
* elm.Genlist.multi_select_mode
* elm.Menu.open()
* elm.Spinner.callback_max_reached_add()
* elm.Spinner.callback_max_reached_del()
* edje.part_text_prediction_hint_set()
* evas.Map.coords_get()
===================
2017-04-18 v1.19.0

18
INSTALL
View File

@ -3,19 +3,22 @@
===============
* Python 2.6 or higher, 3.2 or higher (http://www.python.org/)
- Tested with Python 3.8
- Tested with Python 2.7 / 3.3 / 3.4
* Cython 0.21 or higher (http://cython.org/)
- Tested with Cython 0.29.16
- Tested with Cython 0.21.2
* EFL must be the same minor version of the bindings,
es. python-efl 1.24 need efl 1.24
* EFL core library
- eo, evas, ecore, edje, emotion and elementary
* pkg-config (http://www.freedesktop.org/wiki/Software/pkg-config)
- Windows executable (and GLib dependency) can be downloaded from
http://www.gtk.org/download/win32.php
* To build the DOCS you will also need:
- python-sphinx
- [optional] graphviz
* At least 4GB of free RAM to build
2. BUILDING PYTHON-EFL
@ -26,11 +29,6 @@
python setup.py build
IMPORTANT NOTE:
To build the bindings you will need at least 4GB of free ram!
Otherwise the build process will badly fail.
Distribution tarballs include pre-generated C source files, so
cython usage is disabled by default, while is enabled in development git
versions. You can always force the usage of cython using two environment

View File

@ -29,11 +29,6 @@ install:
$(PY) setup.py install
.PHONY: uninstall
uninstall:
$(PY) setup.py uninstall
.PHONY: doc
doc:
$(PY) setup.py build build_doc
@ -49,20 +44,12 @@ clean:
$(PY) setup.py clean --all
.PHONY: maintainer-clean
maintainer-clean:
.PHONY: maintaner-clean
maintaner-clean:
$(PY) setup.py clean --all clean_generated_files
rm -rf build/
rm -rf dist/
rm -rf python_efl.egg-info/
rm -f installed_files-*.txt
.PHONY: dist
dist:
$(PY) setup.py sdist --formats=gztar,xztar
$(PY) setup.py bdist_wheel
@cd dist/; for f in `ls *.tar.*` ; do \
echo Generating sha256 for: $$f ; \
sha256sum $$f > $$f.sha256; \
done
$(PY) setup.py sdist --formats=gztar,bztar

7
README Normal file
View File

@ -0,0 +1,7 @@
EFL is a collection of libraries for handling many common tasks a
developer man have such as data structures, communication, rendering,
widgets and more.
PYTHON-EFL are the python bindings for the whole EFL stack (eo, evas, ecore,
edje, emotion, ethumb and elementary)

View File

@ -1,92 +0,0 @@
# Python bindings for the EFL
EFL, or the *Enlightenment Foundation Libraries*, is a collection of libraries for handling many common tasks such as data structures, communication, rendering, widgets and more. Read more on the [efl web site](https://www.enlightenment.org/about-efl).
Python-EFL are the python bindings for the whole EFL stack (evas, ecore, edje, emotion, ethumb and elementary). You can use Python-EFL to build a portable GUI application in minutes.
The documentation for Python-EFL is available [here](https://docs.enlightenment.org/python-efl/current/).
## Install from pypi
The last stable release is always available on pypi, and pip is the raccomanded way to install Python-EFL:
```
pip install python-efl
```
The only requirement is to have the EFL already installed on your machine, see [here](https://www.enlightenment.org/docs/distros/start) for install instructions for various linux distro or for building EFL from sources.
NOTE: Currently only sources packages are available on pip, this means that the installation will be quite long as it need to compile all the modules, and that you need a C compiler for installation to work (we highly suggest to use clang as your C compiler). For the next release we have plans to also upload binary packages on pypi, so the installation will be blazing fast and will have zero dependencies!
## Install from released tarballs
All the stable releases of python-efl can always be found at:
https://download.enlightenment.org/rel/bindings/python/
To install download and unpack a tarball and run:
```
python setup.py build
python setup.py install --user
or
sudo python setup.py install (for sistem-wide installation)
```
NOTE: due to strange cython+gcc behaviour we highly suggest to build python-efl using clang. If you experience issues using gcc (like memory exhausted or strange compile errors) just use clang in this way:
```
CC=clang python setup.py build
```
## Source repository
If you would like to contribute to Python-EFL and make changes to the Python-EFL code you need to build from **git**. Development take place in the **master** branch, while we backport bugfixes in the release branches. You will find a branch for each released version, branches are named as **python-efl-X.X**.
To build from git you also need to have [Cython](https://cython.org/) installed.
### Main repository
https://git.enlightenment.org/bindings/python/python-efl.git/
### GitHub repository
https://github.com/DaveMDS/python-efl
The GitHub repo has been created to simplify the workflow for people that do
not have a git account in the E repo, and thus improving collaboration.
Feel free to make pull requests on GitHub.
## Documentation
Documentation for the last stable release can be found [here](https://docs.enlightenment.org/python-efl/current/).
Additionally you can generate the documentation yourself from the source code using the following command:
```
python setup.py build build_doc
```
The HTML generated documentation will be available in the folder: `build/sphinx/html/`
## Some of the projects using Python-EFL (in random order)
| **Project** | **Website** |
|-------------------------------------|------------------------------------------------------|
| **EpyMC** - Media Center | https://github.com/DaveMDS/epymc |
| **Espionage** - D-Bus inspector | https://phab.enlightenment.org/w/projects/espionage/ |
| **Epour** - BitTorrent Client | https://phab.enlightenment.org/w/projects/epour/ |
| **Eluminance** - Fast photo browser | https://github.com/DaveMDS/eluminance |
| **Egitu** - Git User Interface | https://github.com/DaveMDS/egitu |
| **Edone** - GettingThingsDone | https://github.com/DaveMDS/edone |
| **Epack** - Archive extractor | https://github.com/wfx/epack |
... and many more that cannot fit in this short list. If have some code and want it in this list just let us know.
## A short history of Python-EFL
Python-EFL was begun in 2007 by work of Gustavo Sverzut Barbieri and others while working for Nokia on the software project Canola Media Player. The language bindings were initially developed for the individual components of EFL, until merged together in 2013.
He was later joined by Ulisses Furquim Freire da Silva, who together formed the company ProFUSION embedded systems where the developement continued and a new software project called Editje was created, which uses the Python bindings for most of its functionality.
Python-EFL gained many more developers, also at this time an independent application project called EpyMC was created by Davide Andreoli.
In the beginning of the year 2011 the developement was practically halted. In 2012 Davide Andreoli picked up the developement and Kai Huuhko (@kuuko) joined him shortly after. Work at this time was focused on finishing the Python bindings for Elementary, the toolkit library.
In 2013 the individual components were merged together and a new documentation system was implemented, enabling easier access for the end-user developers.
Currently (as in 2022) the bindings are still actively maintained and improved by Davide Andreoli, in his effort to bring to python a powerfull and attractive UI toolkit.

37
TODO Normal file
View File

@ -0,0 +1,37 @@
BUGS
====
* EdjeEdit: PartState API does not work
* Elm.Map: overlays_show segfaults, scrollers in examples are jumpy
* Genlist: "filter,done" event is sometimes fired before filter callbacks are done (see the genlist_filter.py test)
Failing unit tests
------------------
* tests.edje.test_04_edit: testPartEffect (marked as known failure)
* tests.edje.test_04_edit: testGroupDel (skipped, segfault)
* tests.edje.test_04_edit: testExternal (skipped, TODO)
TODO
====
* update links and text on:
http://www.freedesktop.org/wiki/Software/DBusBindings
(requires fd.org shell account?)
* Review the internal functions and name them consistently
* edje: complete the unit tests
* Initial Evas GL support (for Elm)
* Add more documentation for callbacks, events, etc.
* Check for missing Eo type mappings
Elm
---
* Automate compilation of the example edje files.
* Add more examples
* Prefs (only supports simple types, not so great for us)
* GLView
* Unit tests
* Images missing in the documentation:
- datetime
- systray
- video
- web
- window ?

View File

@ -25,11 +25,6 @@ c_exclude_list = [
"elm_config_access", # Access disabled until 1.9
"elm_object_item_access", # Access disabled until 1.9
"elm_systray", # We currently have this in using Eo API
"elm_code_", # The code widget is still in beta
"elm_need_e_dbus", # has been deprecated long time ago
"elm_check_selected_get", # We already provide state_get
"elm_check_selected_set", # We already provide state_set
]
c_excludes = "|".join(c_exclude_list)
@ -171,8 +166,6 @@ def get_pyapis(pxd_path, header_name, prefix):
for f in files:
# if not f.endswith(".pxd"):
# continue
if f.endswith(".pyc"):
continue
open_args = (os.path.join(path, f),)
open_kwargs = dict(mode="r")
if sys.version_info[0] > 2:

153
doc/Makefile Normal file
View File

@ -0,0 +1,153 @@
# 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) .
# the i18n builder cannot share the environment and doctrees with the others
I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext
help:
@echo "Please use \`make <target>' where <target> 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 " texinfo to make Texinfo files"
@echo " info to make Texinfo files and run them through makeinfo"
@echo " gettext to make PO message catalogs"
@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)/*
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/PythonBindingsforEnlightenmentFoundationLibraries.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile $(BUILDDIR)/qthelp/PythonBindingsforEnlightenmentFoundationLibraries.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/PythonBindingsforEnlightenmentFoundationLibraries"
@echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/PythonBindingsforEnlightenmentFoundationLibraries"
@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."
texinfo:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo
@echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo."
@echo "Run \`make' in that directory to run these through makeinfo" \
"(use \`make info' here to do that automatically)."
info:
$(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo
@echo "Running Texinfo files through makeinfo..."
make -C $(BUILDDIR)/texinfo info
@echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo."
gettext:
$(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale
@echo
@echo "Build finished. The message catalogs are in $(BUILDDIR)/locale."
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."

View File

@ -1,47 +1,40 @@
# -*- coding: utf-8 -*-
#
# Configuration file for the Sphinx documentation builder.
# Python Bindings for EFL Elementary documentation build configuration file, created by
# sphinx-quickstart on Thu Jun 28 09:21:25 2012.
#
# This file only contains a selection of the most common options. For a full
# list see the documentation:
# https://www.sphinx-doc.org/en/master/usage/configuration.html
# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
# pylint: disable=invalid-name
import os
import sys
import platform
# -- Path setup --------------------------------------------------------------
import sys, os, platform
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here.
d = 'lib.%s-%s-%d.%d' % (
platform.system().lower(),
platform.machine(),
sys.version_info[0],
sys.version_info[1]
)
sys.path.insert(0, os.path.abspath('../build/' + d))
# sys.path.insert(0, os.path.abspath('../build/lib.linux-i686-3.2'))
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
d = "lib.%s-%s-%d.%d" % (
platform.system().lower(),
platform.machine(),
sys.version_info[0],
sys.version_info[1]
)
sys.path.insert(0, os.path.abspath("../build/"+d))
#sys.path.insert(0, os.path.abspath('../build/lib.linux-i686-3.2'))
# Delete any previously imported efl package
if 'efl' in sys.modules:
del sys.modules['efl']
if "efl" in sys.modules:
del sys.modules["efl"]
# -- Project information -----------------------------------------------------
project = 'Python EFL'
author = 'The Python-EFL community (see AUTHORS)'
copyright = '2008-2022, ' + author # pylint: disable=redefined-builtin
# -- General configuration ----------------------------------------------------
# -- General configuration -----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
needs_sphinx = '3.1'
needs_sphinx = '1.1'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
@ -53,36 +46,113 @@ extensions = [
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8-sig'
# The master toctree document.
# master_doc = 'index'
master_doc = 'index'
# General information about the project.
project = u'Python EFL'
copyright = u'2008-2015, Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
# version = 'X.Y'
# The full version, including alpha/beta/rc tags.
# release = 'X.Y.Z'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
exclude_patterns = ['_build']
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'monokai'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# Setting this True will show missing references as warnings.
#nitpicky = True
# nitpick_ignore = [
# ('py:obj', 'int'),
# ('py:obj', 'float'),
# ('py:obj', 'double'),
# ('py:obj', 'callable'),
# ('py:obj', 'function'),
# ('py:obj', 'str'),
# ('py:exc', 'RuntimeError'),
# ('py:exc', 'RuntimeWarning'),
# ('py:exc', 'ValueError'),
# ('py:exc', 'TypeError'),
# ('py:obj', 'Evas_Coord (int)'),
# ('py:obj', 'string'),
# ('py:obj', 'list'),
# ('py:class', 'object'),
# ('py:obj', 'unicode'),
# ('py:obj', 'bool'),
# ('py:obj', 'tuple of ints'),
# ('py:class', 'efl.eo.Eo'),
# ('py:attr', 'efl.eo.Eo.data'),
# ('py:obj', 'datetime.date'),
# ]
# -- Autodoc configuration -----------------------------------------------------
autodoc_default_options = {
'members': True, # show methods for classes
'show-inheritance': True, # show bases class
'member-order': 'alphabetical', # bysource, alphabetical, groupwise
'no-undoc-members': True, # dont show members without docstring
'no-inherited-members': True, # dont show members from parent classes
}
# both the class and the __init__ methods docstring are concatenated
autoclass_content = 'both'
autodoc_default_flags = [
'members',
'show-inheritance',
# 'inherited-members',
# 'undoc-members',
]
autoclass_content = "both"
autodoc_docstring_signature = True
# autodoc_member_order = "bysource"
def setup(app):
from sphinx.ext.autodoc import cut_lines
app.connect('autodoc-process-signature', autodoc_process_signature)
app.connect('autodoc-process-docstring', cut_lines(1, what=['class']))
def autodoc_process_signature(_app, what, _name, _obj, _options, signature, return_annotation):
def autodoc_process_signature(app, what, name, obj, options, signature, return_annotation):
"""Cleanup params: remove the 'self' param and all the cython types"""
if what not in ('function', 'method'):
return None
return
params = []
params = list()
for param in (p.strip() for p in signature[1:-1].split(',')):
if param != 'self':
params.append(param.rpartition(' ')[2])
@ -93,28 +163,28 @@ def autodoc_process_signature(_app, what, _name, _obj, _options, signature, retu
# -- Inheritance Diagram ------------------------------------------------------
try:
import gv # pylint: disable=unused-import
import gv
except ImportError:
pass
else:
extensions.append('sphinx.ext.inheritance_diagram')
# svg scale better (look at the full elm dia)
# but svg links are broken :(
graphviz_output_format = 'png' # png (default) or svg
graphviz_output_format = "svg" # png (default) or svg
inheritance_graph_attrs = dict(
bgcolor = 'gray25', #404040
bgcolor = 'gray25', #404040
)
inheritance_node_attrs = dict(
style = 'rounded', # or 'filled',
# fillcolor = 'gray20', # bg color (should be #CCCCCC)
color = 'gray10', # border color (should be #202020)
style = 'rounded', # or 'filled',
# fillcolor = "gray20", # bg color (should be #CCCCCC)
color = 'gray10', # border color (should be #202020)
fontcolor = 'white',
font = 'sans',
)
inheritance_edge_attrs = dict(
color = 'dodgerblue3', # arrow color (should be #4399FF)
dir = 'none', # arrow direction (back, forward, both or none)
color = 'dodgerblue3', # arrow color (should be #4399FF)
dir = 'none', # arrow direction (back, forward, both or none)
)
@ -123,11 +193,10 @@ else:
# The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes.
#
# html_theme = 'alabaster' # Default sphinx theme
# html_theme = 'default' # Classic python style
# html_theme = 'sphinxdoc' # Much modern sphinx style
# html_theme = 'sphinx13' # The latest one from the sphinx site
html_theme = 'efldoc' # Our custom EFL dark style
html_theme = 'efldoc' # EFL dark style
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
@ -142,16 +211,16 @@ html_theme_path = ['themes']
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
html_short_title = 'Python EFL'
html_short_title = "Python EFL"
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
html_logo = 'images/logo.png'
html_logo = "images/logo.png"
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
html_favicon = 'images/logo.ico'
html_favicon = "images/logo.ico"
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
@ -162,6 +231,10 @@ html_static_path = ['images']
# using the given strftime format.
html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
@ -197,3 +270,121 @@ html_show_sourcelink = False
# Output file base name for HTML help builder.
htmlhelp_basename = 'PythonEFLdoc'
# -- Options for LaTeX output --------------------------------------------------
latex_elements = {
# The paper size ('letterpaper' or 'a4paper').
#'papersize': 'letterpaper',
# The font size ('10pt', '11pt' or '12pt').
#'pointsize': '10pt',
# Additional stuff for the LaTeX preamble.
#'preamble': '',
}
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'PythonEFL.tex', u'Python Bindings for EFL Documentation',
u'Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# If true, show page references after internal links.
#latex_show_pagerefs = False
# If true, show URL addresses after external links.
#latex_show_urls = False
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_domain_indices = True
# -- Options for manual page output --------------------------------------------
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
man_pages = [
('index', 'python-efl', u'Python Bindings for EFL Documentation',
[u'Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko'], 1)
]
# If true, show URL addresses after external links.
#man_show_urls = False
# -- Options for Texinfo output ------------------------------------------------
# Grouping the document tree into Texinfo files. List of tuples
# (source start file, target name, title, author,
# dir menu entry, description, category)
texinfo_documents = [
('index', 'PythonBindingsforEFLElementary', u'Python Bindings for EFL Elementary Documentation',
u'Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko', 'PythonBindingsforEFLElementary', 'One line description of project.',
'Miscellaneous'),
]
# Documents to append as an appendix to all manuals.
#texinfo_appendices = []
# If false, no module index is generated.
#texinfo_domain_indices = True
# How to display URL addresses: 'footnote', 'no', or 'inline'.
#texinfo_show_urls = 'footnote'
# -- Options for Epub output ---------------------------------------------------
# Bibliographic Dublin Core info.
epub_title = u'Python Bindings for EFL'
epub_author = u'Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko'
epub_publisher = u'Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko'
epub_copyright = u'2008-2015, Simon Busch, Gustavo Sverzut Barbieri, Ulisses Furquim, ProFUSION embedded systems, Boris Faure, Fabiano Fidencio, Davide Andreoli, Kai Huuhko'
# The language of the text. It defaults to the language option
# or en if the language is not set.
#epub_language = ''
# The scheme of the identifier. Typical schemes are ISBN or URL.
#epub_scheme = ''
# The unique identifier of the text. This can be a ISBN number
# or the project homepage.
#epub_identifier = ''
# A unique identification for the text.
#epub_uid = ''
# A tuple containing the cover image and cover page html template filenames.
#epub_cover = ()
# HTML files that should be inserted before the pages created by sphinx.
# The format is a list of tuples containing the path and title.
#epub_pre_files = []
# HTML files shat should be inserted after the pages created by sphinx.
# The format is a list of tuples containing the path and title.
#epub_post_files = []
# A list of files that should not be packed into the epub file.
#epub_exclude_files = []
# The depth of the table of contents in toc.ncx.
#epub_tocdepth = 3
# Allow duplicate toc entries.
#epub_tocdup = True

View File

@ -6,30 +6,10 @@
.. versionadded:: 1.8
Object lifetime
---------------
Eo objects (and any which have the delete() method) get their reference count
internally increased by one at object creation. This means that these objects
will not get freed when you release all references to them in your application.
You must call the objects' delete() method to decrease the internal reference
count. This will usually also trigger some kind of action to destroy
the object gracefully, i.e. hiding the graphical object etc, and will set the
C object pointer to NULL, which will prevent you from calling methods on the
object.
If you can't keep track of when your application calls the delete method, you
can check that your object is still valid with either the is_deleted() method,
or with a non-zero check::
if eo_obj:
print(repr(eo_obj))
Logging
-------
PyEFL provides `logging <https://docs.python.org/library/logging.html>`_
PyEFL provides `logging <http://docs.python.org/2/library/logging.html>`_
to loggers which are usually named after their equivalent module,
f.e. *efl.eo*. There is a root logger called *efl* which also receives
any messages coming from the underlying C libraries.

View File

@ -469,6 +469,7 @@ Inheritance diagram
efl.elementary.Slider
efl.elementary.Slideshow
efl.elementary.Spinner
efl.elementary.Systray
efl.elementary.Table
efl.elementary.Theme
efl.elementary.Thumb

View File

@ -33,8 +33,6 @@ Emitted signals
so it avoids possibly expensive reactions to the value change.
- ``spinner,drag,start`` - When dragging has started.
- ``spinner,drag,stop`` - When dragging has stopped.
- ``min,reached`` - Called when spinner value reached min (since 1.20)
- ``max,reached`` - Called when spinner value reached max (since 1.20)
Available styles

View File

@ -0,0 +1,57 @@
.. currentmodule:: efl.elementary
Systray
#######
Enumerations
============
.. _Elm_Systray_Category:
Category of the Status Notifier Item.
-------------------------------------
.. data:: ELM_SYSTRAY_CATEGORY_APP_STATUS
Indicators of application status
.. data:: ELM_SYSTRAY_CATEGORY_COMMUNICATIONS
Communications apps
.. data:: ELM_SYSTRAY_CATEGORY_SYS_SERVICES
System Service apps
.. data:: ELM_SYSTRAY_CATEGORY_HARDWARE
Hardware indicators
.. data:: ELM_SYSTRAY_CATEGORY_OTHER
Undefined category
.. _Elm_Systray_Status:
Application status information.
-------------------------------
.. data:: ELM_SYSTRAY_STATUS_PASSIVE
Passive (normal)
.. data:: ELM_SYSTRAY_STATUS_ACTIVE
Active
.. data:: ELM_SYSTRAY_STATUS_ATTENTION
Needs Attention
.. autoclass:: Systray
.. autofunction:: on_systray_ready
.. autoclass:: EventSystrayReady

View File

@ -1,7 +1,36 @@
Python-EFL
Python Bindings for Enlightenment Foundation Libraries' documentation
#####################################################################
EFL is a collection of libraries that are independent or may build on top of
each-other to provide useful features that complement an OS's existing
environment, rather than wrap and abstract it, trying to be their own
environment and OS in its entirety. This means that it expects you to use
other system libraries and API's in conjunction with EFL libraries, to provide
a whole working application or library, simply using EFL as a set of
convenient pre-made libraries to accomplish a whole host of complex
or painful tasks for you.
One thing that has been important to EFL is efficiency. That is in both
speed and size. The core EFL libraries even with Elementary are about half
the size of the equivalent "small stack" of GTK+ that things like GNOME
use. It is in the realm of one quarter the size of Qt. Of course these
are numbers that can be argued over as to what constitutes an equivalent
measurement. EFL is low on actual memory usage at runtime with memory
footprints a fraction the size of those in the GTK+ and Qt worlds. In
addition EFL is fast. For what it does. Some libraries claim to be very
fast - but then they also don't "do much". It's easy to be fast when you
don't tackle the more complex rendering problems involving alpha blending,
interpolated scaling and transforms with dithering etc. EFL tackles these,
and more.
.. seealso::
- `EFL Overview <http://trac.enlightenment.org/e/wiki/EFLOverview>`_
- `EFL Documentation <http://web.enlightenment.org/p.php?p=docs>`_
- `EDC Reference <https://build.enlightenment.org/job/nightly_efl_gcc_x86_64/lastSuccessful Buil d/artifact/doc/html/edcref.html>`_
- `EFL Big Picture <http://docs.enlightenment.org/books/efl-big-picture/efl_big_picture.pdf>`_
EFL
===
@ -63,25 +92,29 @@ DBus integration
.. toctree:: dbus/dbus
Tutorials
=========
.. toctree::
tutorials/01-window.rst
tutorials/02-sizehints.rst
Acknowledgements
================
:Copyright:
2008-2022 The Python-EFL community (see AUTHORS)
Python Bindings for EFL are Copyright (C) 2008-2015 Simon Busch
and various contributors (see AUTHORS).
:License:
Python Bindings for EFL are licensed LGPL-3 (see COPYING)
Python Bindings for EFL are licensed LGPL-3 (see COPYING).
:Contact:
`Enlightenment developer mailing list <mailto:enlightenment-devel@lists.sourceforge.net>`_
:Authors:
- `Gustavo Sverzut Barbieri <mailto:barbieri@gmail.com>`_
- `Simon Busch <mailto:morphis@gravedo.de>`_
- `Boris 'billiob' Faure <mailto:billiob@gmail.com>`_
- `Davide 'davemds' Andreoli <mailto:dave@gurumeditation.it>`_
- `Fabiano Fidêncio <mailto:fidencio@profusion.mobi>`_
- `Bruno Dilly <mailto:bdilly@profusion.mobi>`_
- `Tiago Falcão <mailto:tiago@profusion.mobi>`_
- `Joost Albers <mailto:joost.albers@nomadrail.com>`_
- `Kai Huuhko <mailto:kai.huuhko@gmail.com>`_
- `Ulisses Furquim <ulissesf@gmail.com>`_
:Contact: `Enlightenment developer mailing list <mailto:enlightenment-devel@lists.sourceforge.net>`_
Indices and tables

190
doc/make.bat Normal file
View File

@ -0,0 +1,190 @@
@ECHO OFF
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set BUILDDIR=_build
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
set I18NSPHINXOPTS=%SPHINXOPTS% .
if NOT "%PAPER%" == "" (
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
)
if "%1" == "" goto help
if "%1" == "help" (
:help
echo.Please use `make ^<target^>` where ^<target^> 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. texinfo to make Texinfo files
echo. gettext to make PO message catalogs
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" == "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\PythonBindingsforEnlightenmentFoundationLibraries.qhcp
echo.To view the help file:
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\PythonBindingsforEnlightenmentFoundationLibraries.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" == "texinfo" (
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
goto end
)
if "%1" == "gettext" (
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
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

View File

@ -4,7 +4,7 @@
Sphinx layout template for the sphinxdoc theme.
:copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
:copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
#}
{%- extends "basic/layout.html" %}
@ -12,7 +12,7 @@
{% block extrahead %}
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300,400,700'
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,400,700'
rel='stylesheet' type='text/css'>
{{ super() }}
@ -20,15 +20,46 @@
<style type="text/css">
table.right { float: right; margin-left: 20px; }
table.right td { border: 1px solid #ccc; }
{% if pagename == 'index' %}
.related { display: none; }
{% endif %}
</style>
<script type="text/javascript">
// intelligent scrolling of the sidebar content
$(window).scroll(function() {
var sb = $('.sphinxsidebarwrapper');
var win = $(window);
var sbh = sb.height();
var offset = $('.sphinxsidebar').position()['top'];
var wintop = win.scrollTop();
var winbot = wintop + win.innerHeight();
var curtop = sb.position()['top'];
var curbot = curtop + sbh;
// does sidebar fit in window?
if (sbh < win.innerHeight()) {
// yes: easy case -- always keep at the top
sb.css('top', $u.min([$u.max([0, wintop - offset - 10]),
$(document).height() - sbh - 200]));
} else {
// no: only scroll if top/bottom edge of sidebar is at
// top/bottom edge of window
if (curtop > wintop && curbot > winbot) {
sb.css('top', $u.max([wintop - offset - 10, 0]));
} else if (curtop < wintop && curbot < winbot) {
sb.css('top', $u.min([winbot - sbh - offset - 20,
$(document).height() - sbh - 200]));
}
}
});
</script>
{%- endif %}
{% endblock %}
{% block rootrellink %}
<li><a href="{{ pathto('index') }}">Home</a>&#160;|</li>
<!-- <li><a href="{{ pathto('contents') }}">Documentation</a> &#187;</li>-->
<li><a href="{{ pathto('index') }}">Home</a>&nbsp;|</li>
<!-- <li><a href="{{ pathto('contents') }}">Documentation</a> &raquo;</li>-->
{% endblock %}
{% block header %}
@ -37,8 +68,8 @@
<li class="index"><a href="{{ pathto('index') }}"><span></span></a></li>
<li class="maintitle">{{ project }} - {{ version }}</li>
<li class="current"><a href="{{ pathto('index') }}"><span>python docs</span></a></li>
<li><a href="https://www.enlightenment.org/docs"><span>other docs</span></a></li>
<li><a href="https://www.enlightenment.org/about-efl"><span>EFL</span></a></li>
<li><a href="http://enlightenment.org/p.php?p=docs"><span>other docs</span></a></li>
<li><a href="http://enlightenment.org/p.php?p=about"><span>EFL</span></a></li>
</ul>
</div>
{% endblock %}
@ -46,17 +77,20 @@
{%- block content %}
<div class="document">
{%- block document %}
<div id="layout">
<div id="content">
<div class="body">
{% block body %} {% endblock %}
</div>
</div>
{{ sidebar() }}
<div class="documentwrapper">
{%- if render_sidebar %}
<div id="sidebar">{{ sidebar() }}</div>
<div class="bodywrapper">
{%- endif %}
</div>
<div class="body">
{% block body %} {% endblock %}
</div>
{%- if render_sidebar %}
</div>
{%- endif %}
</div>
{%- endblock %}
<div class="clearer"></div>
</div>
{%- endblock %}

View File

@ -6,27 +6,19 @@
*
* Originally based on sphinx13 theme.
*
* :copyright: Copyright 2013-2022 by the Python-EFL team, see AUTHORS.
* All the modification done from the s13 theme are marked with the original
* value in a comment, new tags are marked with an empty comment, removed tags
* are just commented out.
* This is usefull when something looks not so good as the original one to
* understand the reason.
*
* :copyright: Copyright 2013-2015 by the Python-EFL team, see AUTHORS.
* :license: LGPL, see COPYING for details.
*
*/
@import url("basic.css");
/* -- main flex layout ----------------------------------------------------- */
#layout {
display: flex;
}
#content {
flex-grow: 1;
}
#sidebar {
flex-grow: 0;
width: 230px;
border-left: 1px solid rgb(111,111,111);
}
/* -- page layout ----------------------------------------------------------- */
body {
@ -34,8 +26,9 @@ body {
'Verdana', sans-serif;
font-size: 14px;
text-align: center;
background-color: rgb(64,64,64);
color: white;
/* background-image: url(bodybg.png); */
background-color: rgb(64,64,64); /* */
color: white; /*black*/
padding: 0;
margin: 0;
}
@ -55,6 +48,7 @@ body {
height: 63px;
padding-right: 18px;
background: url("header_menu_background_last.png") no-repeat scroll right center transparent;
}
.pageheader li {
@ -98,6 +92,7 @@ body {
}
div.document {
/* background-color: white; */
text-align: left;
border: 1px solid rgb(111,111,111);
width: 90%;
@ -106,6 +101,11 @@ div.document {
max-width: 1080px;
}
div.bodywrapper {
margin-right: 240px;
border-right: 1px solid rgb(111,111,111); /*#0a507a*/
}
div.body {
padding: 0.5em 20px 20px 20px;
}
@ -120,10 +120,10 @@ div.related {
}
div.related ul {
background-image: url(rel_background.png);
background-image: url(rel_background.png); /*url(relbg.png)*/
height: 1.9em;
border-top: 1px solid rgb(32,32,32);
border-bottom: 1px solid rgb(32,32,32);
border-top: 1px solid rgb(32,32,32); /*#002e50*/
border-bottom: 1px solid rgb(32,32,32); /*#002e50*/
margin-top: 6px;
margin-bottom: 6px;
}
@ -144,49 +144,44 @@ div.related ul li a {
padding: 0 5px 0 5px;
line-height: 1.75em;
color: rgb(249,249,240);
/* text-shadow: 0px 0px 1px rgba(0, 0, 0, 0.5); */
}
div.related ul li a:hover {
color: white;
}
/* -- sidebar ------------------------------------------------------------- */
div.sphinxsidebar {
margin: 0;
padding: 0;
float: none;
font-size: 1em;
text-align: left;
position: sticky;
top: 0;
/*text-decoration: underline;*/
/* text-shadow: 0px 0px 1px rgba(255, 255, 255, 0.5); */
}
div.sphinxsidebarwrapper {
/* Avoid the buggy moving sidebar
position: relative;
top: 0px;
*/
padding: 0;
}
div.sphinxsidebar {
margin: 0;
padding: 15px 10px;
padding: 0 15px 15px 0;
width: 210px;
float: right;
font-size: 1em;
text-align: left;
}
div.sphinxsidebar .logo {
font-size: 1.8em;
color: rgb(10,80,122);
font-weight: 300;
text-align: center;
margin: 0;
}
div.sphinxsidebar .logo img {
vertical-align: middle;
}
div.sphinxsidebar .download a img {
vertical-align: middle;
}
div.subscribeformwrapper {
display: block;
overflow: auto;
margin-bottom: 1.2em;
}
div.sphinxsidebar input {
border: 1px solid rgb(170,170,170);
font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva',
@ -194,30 +189,9 @@ div.sphinxsidebar input {
font-size: 1em;
}
div.sphinxsidebar .subscribeform {
margin-top: 0;
}
div.sphinxsidebar .subscribeform input {
border: 1px solid #aaa;
font-size: 0.9em;
float: left;
padding: 0.25em 0.5em;
box-sizing: border-box;
}
div.sphinxsidebar .subscribeform input[type="text"] {
width: 60%;
}
div.sphinxsidebar .subscribeform input[type="submit"] {
width: 40%;
border-left: none;
}
div.sphinxsidebar h3 {
font-size: 1.5em;
border-top: 1px solid rgb(111,111,111);
border-top: 1px solid rgb(111,111,111); /*#0a507a;*/
margin-top: 1em;
margin-bottom: 0.5em;
padding-top: 0.5em;
@ -228,11 +202,14 @@ div.sphinxsidebar h4 {
margin-bottom: 0;
}
div.sphinxsidebar h3,
div.sphinxsidebar h4
{
color: rgb(51, 153, 255);
div.sphinxsidebar h3, div.sphinxsidebar h4 {
margin-right: -15px;
margin-left: -15px;
padding-right: 14px;
padding-left: 14px;
color: rgb(51, 153, 255); /*#333*/
font-weight: 300;
/*text-shadow: 0px 0px 0.5px rgba(0, 0, 0, 0.4);*/
}
div.sphinxsidebarwrapper > h3:first-child {
@ -241,7 +218,7 @@ div.sphinxsidebarwrapper > h3:first-child {
}
div.sphinxsidebar h3 a {
color: rgb(51, 153, 255);
color: rgb(51, 153, 255); /*#333*/
}
div.sphinxsidebar ul {
@ -256,18 +233,15 @@ div.sphinxsidebar ul ul {
list-style-image: url(listitem.png);
}
/* -- footer ----------------------------------------------------------- */
div.footer {
background-image: url(footer_background.png);
background-image: url(footer_background.png); /*url(footerbg.png)*/
color: rgb(204,204,204);
text-shadow: 0 0 .2px rgba(255, 255, 255, 0.8);
padding: 6px;
padding: 6px; /*3px 8px 3px 0*/
clear: both;
font-size: 0.8em;
text-align: center;
height: 50px;
text-align: center; /*right*/
height: 50px; /*3em*/
margin-top: 18px;
}
@ -276,7 +250,6 @@ div.footer a {
color: rgb(204,204,204);
}
/* -- body styles ----------------------------------------------------------- */
p {
@ -290,7 +263,7 @@ a {
a:hover {
color: rgb(200,200,210);
text-shadow: rgb(51, 153, 255) 0px 0px 6px;
text-shadow: rgb(51, 153, 255) 0px 0px 6px; /* */
}
div.body a {
@ -298,18 +271,19 @@ div.body a {
}
h1 {
margin: 0.3em 0;
margin: 10px 0 0 0;
font-size: 2.4em;
color: rgb(51, 153, 255);
color: rgb(51, 153, 255); /*#0A507A*/
font-weight: 300;
}
h2 {
margin: 0.8em 0 0 0;
margin: 1.em 0 0.2em 0;
font-size: 1.5em;
font-weight: 300;
padding: 0;
color: rgb(51, 153, 255);
color: rgb(51, 153, 255); /*#174967*/
text-shadow: rgb(51, 153, 255) 0px 0px 10px; /* */
}
h3 {
@ -323,7 +297,7 @@ div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.b
}
div.body h1 a tt, div.body h2 a tt, div.body h3 a tt, div.body h4 a tt, div.body h5 a tt, div.body h6 a tt {
color: rgb(51, 153, 255) !important;
color: rgb(51, 153, 255) !important; /*#0A507A*/
font-size: inherit !important;
}
@ -341,11 +315,6 @@ a.headerlink:hover {
color: white!important;
}
/* avoid font-size when :mod: role in headings */
h1 code, h2 code, h3 code, h4 code {
font-size: inherit;
}
cite, code, tt {
font-family: 'Consolas', 'DejaVu Sans Mono',
'Bitstream Vera Sans Mono', monospace;
@ -353,16 +322,12 @@ cite, code, tt {
letter-spacing: -0.02em;
}
table.deprecated code.literal {
word-break: break-all;
}
code, tt {
background-color: rgb(51,51,51);
border: 1px solid rgb(32,32,32);
background-color: rgb(51,51,51); /*#f2f2f2*/
border: 1px solid rgb(32,32,32); /*#ddd*/
border-radius: 3px;
color: white;
padding: 1px 0.2em;
color: white; /*#333*/
padding: 1px;
}
.descname, .descclassname, .xref {
@ -377,6 +342,10 @@ code, tt {
color: rgb(160,160,255);
}
/*tt.xref {
color: rgb(200,200,255);
}*/
hr {
border: 1px solid rgb(170,187,204);
margin: 2em;
@ -392,14 +361,15 @@ a tt:hover, a code:hover{
}
pre {
font-family: 'Consolas', 'Courier New', 'DejaVu Sans Mono',
font-family: 'Consolas', 'DejaVu Sans Mono',
'Bitstream Vera Sans Mono', monospace;
font-size: 13px;
letter-spacing: 0.015em;
line-height: 120%;
padding: 0.5em;
border-radius: 6px;
background-color: rgb(51,51,51);
border-radius: 4px; /*2px*/
background-color: rgb(51,51,51); /*#f8f8f8*/
border: 1px solid rgb(32,32,32);/*#ccc*/
}
pre a {
@ -429,39 +399,47 @@ table {
margin: 0 -0.5em 0 -0.5em;
}
table td,
table th
{
table td, table th {
padding: 0.2em 0.5em 0.2em 0.5em;
}
div.admonition,
div.warning
{
background-color: rgb(51,51,51);
}
div.admonition > pre,
div.warning > pre
{
margin: 0.4em 1em 0.4em 1em;
}
div.warning {
border-color: rgb(101,16,16);
/* background-color: rgb(101,51,51); /*#FFCCCF*/
}
div.admonition > ul,
div.admonition > ol,
div.warning > ul,
div.warning > ol {
margin: 0.1em 0.5em 0.5em 3em;
div.admonition, div.warning {
font-size: 0.9em;
margin: 1em 0 1em 0;
border: 1px dashed rgb(32,32,32); /*#86989B*/
border-radius: 12px;
background-color: rgb(51,51,51); /*#f7f7f7*/
padding: 0;
}
div.admonition div.highlight {
background: none;
div.admonition p, div.warning p {
margin: 0.5em 1em 0.5em 1em;
padding: 0;
}
div.admonition pre, div.warning pre {
margin: 0.4em 1em 0.4em 1em;
}
div.admonition p.admonition-title,
div.warning p.admonition-title {
margin-top: 1em;
padding-top: 0.5em;
font-weight: bold;
}
div.warning {
border-color: rgb(101,16,16); /*#940000*/
background-color: rgb(101,51,51); /*#FFCCCF*/
}
div.warning p.admonition-title {
}
div.admonition ul, div.admonition ol,
div.warning ul, div.warning ol {
margin: 0.1em 0.5em 0.5em 3em;
padding: 0;
}
.viewcode-back {
@ -475,13 +453,7 @@ div.viewcode-block:target {
border-bottom: 1px solid rgb(170,204,153);
}
.contentstable {
margin-left: 30px;
margin: 0 auto;
table-layout: fixed;
}
dt:target, .highlighted {
dt:target, .highlighted { /* */
background-color: rgb(251,229,78);
background-image: url(hilight_background.png);
border-top: 1px solid rgb(32,32,32);
@ -503,96 +475,57 @@ div.deprecated span.versionmodified {
text-shadow: 0px 0px 3px rgba(180,60,20,0.6);
}
/* Toc tree */
div.toctree-wrapper ul {
padding-left: 1.5em;
list-style-type: disc;
margin-top: 0.2em;
margin-bottom: 0.2em;
}
div.toctree-wrapper a {
text-decoration: none;
}
/* box for enumerations */
div#enumerations > div.section, /* older sphinx */
section#enumerations > section /* newer sphinx */
{
div#enumerations > div.section {
border: 1px solid #202020;
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
margin-bottom: 1em;
}
div#enumerations > div.section h3, /* older sphinx */
section#enumerations > section h3 /* newer sphinx */
{
div#enumerations > div.section h3 {
background-color: #333;
margin-top: 0;
padding: 2px 4px;
padding: 3px;
font-weight: bold;
}
div#enumerations > div.section > dl, /* older sphinx */
div#enumerations > div.section > p,
section#enumerations > section > dl, /* newer sphinx */
section#enumerations > section > p
{
padding-left: 1em;
padding-right: 1em;
div#enumerations > div.section dl,
div#enumerations > div.section p {
padding-left: 3px;
}
/* box for classes */
dd {
padding-right: 3px;
}
dl.class {
border: 1px solid #202020;
box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
padding-bottom: 1em;
}
dl.class > dt {
font-size: 1.2em;
background-color: #333;
padding: 2px 4px;
padding: 2px;
}
dl.class > dt em {
font-size: 0.8em;
}
dl.class > dd {
margin-left: 1em;
margin-right: 1em;
}
/* attributes/properties/methods/etc. */
dl.attribute > dt,
dl.method > dt,
dl.function > dt,
dl.data > dt
{
dl.class dt{
border-bottom: 1px solid #333;
}
dl.attribute > dd,
dl.method > dd,
dl.function > dd,
dl.data > dd
{
margin-left: 1em;
}
dl.field-list > dt {
padding-left: 0;
/* attributes/properties/methods/etc. */
dl.attribute dd, dl.method dd, dl.data dd {
padding-left: 6px;
border-left: 1px solid rgba(200,200,255,0.4);
}
/* -- pygments fix ---------------------------------------------------------- */
.highlight {
background: none;
}
.highlight .go {
color: white !important;
}

View File

@ -1,4 +1,4 @@
[theme]
inherit = basic
stylesheet = efl.css
pygments_style = monokai
pygments_style = trac

View File

@ -4,7 +4,7 @@
Sphinx layout template for the sphinxdoc theme.
:copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
:copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
:license: BSD, see LICENSE for details.
#}
{%- extends "basic/layout.html" %}
@ -14,8 +14,8 @@
{% block sidebar2 %}{% endblock %}
{% block extrahead %}
<link href='https://fonts.googleapis.com/css?family=Open+Sans:300,400,700'
rel='stylesheet' type='text/css' />
<link href='http://fonts.googleapis.com/css?family=Open+Sans:300,400,700'
rel='stylesheet' type='text/css'>
{{ super() }}
{%- if not embedded %}
<style type="text/css">
@ -25,7 +25,7 @@
.related { display: none; }
{% endif %}
</style>
<script>
<script type="text/javascript">
// intelligent scrolling of the sidebar content
$(window).scroll(function() {
var sb = $('.sphinxsidebarwrapper');
@ -57,17 +57,17 @@
{% endblock %}
{% block rootrellink %}
<li><a href="{{ pathto('index') }}">Sphinx home</a>&#160;|</li>
<li><a href="{{ pathto('contents') }}">Documentation</a> &#187;</li>
<li><a href="{{ pathto('index') }}">Sphinx home</a>&nbsp;|</li>
<li><a href="{{ pathto('contents') }}">Documentation</a> &raquo;</li>
{% endblock %}
{% block header %}
<div class="pageheader">
<ul>
<li><a href="{{ pathto('index') }}">Home</a></li>
<li><a href="{{ pathto('usage/installation') }}">Get it</a></li>
<li><a href="{{ pathto('install') }}">Get it</a></li>
<li><a href="{{ pathto('contents') }}">Docs</a></li>
<li><a href="{{ pathto('development/index') }}">Extend</a></li>
<li><a href="{{ pathto('develop') }}">Extend/Develop</a></li>
</ul>
<div>
<a href="{{ pathto('index') }}">

View File

@ -4,7 +4,7 @@
*
* Sphinx stylesheet -- sphinx13 theme.
*
* :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS.
* :copyright: Copyright 2007-2013 by the Sphinx team, see AUTHORS.
* :license: BSD, see LICENSE for details.
*
*/
@ -127,7 +127,6 @@ div.sphinxsidebar {
float: right;
font-size: 1em;
text-align: left;
max-height: 0px;
}
div.sphinxsidebar .logo {
@ -141,41 +140,11 @@ div.sphinxsidebar .logo img {
vertical-align: middle;
}
div.sphinxsidebar .download a img {
vertical-align: middle;
}
div.subscribeformwrapper {
display: block;
overflow: auto;
margin-bottom: 1.2em;
}
div.sphinxsidebar input {
border: 1px solid #aaa;
font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva',
'Verdana', sans-serif;
}
div.sphinxsidebar .subscribeform {
margin-top: 0;
}
div.sphinxsidebar .subscribeform input {
border: 1px solid #aaa;
font-size: 0.9em;
float: left;
padding: 0.25em 0.5em;
box-sizing: border-box;
}
div.sphinxsidebar .subscribeform input[type="text"] {
width: 60%;
}
div.sphinxsidebar .subscribeform input[type="submit"] {
width: 40%;
border-left: none;
font-size: 1em;
}
div.sphinxsidebar h3 {
@ -239,7 +208,7 @@ div.footer a {
/* -- body styles ----------------------------------------------------------- */
p {
p {
margin: 0.8em 0 0.5em 0;
}
@ -300,11 +269,6 @@ a.headerlink:hover {
color: white!important;
}
/* avoid font-size when :mod: role in headings */
h1 code, h2 code, h3 code, h4 code {
font-size: inherit;
}
cite, code, tt {
font-family: 'Consolas', 'DejaVu Sans Mono',
'Bitstream Vera Sans Mono', monospace;
@ -312,16 +276,12 @@ cite, code, tt {
letter-spacing: -0.02em;
}
table.deprecated code.literal {
word-break: break-all;
}
tt {
background-color: #f2f2f2;
border: 1px solid #ddd;
border-radius: 2px;
color: #333;
padding: 1px 0.2em;
padding: 1px;
}
tt.descname, tt.descclassname, tt.xref {
@ -343,7 +303,7 @@ a tt:hover {
}
pre {
font-family: 'Consolas', 'Courier New', 'DejaVu Sans Mono',
font-family: 'Consolas', 'DejaVu Sans Mono',
'Bitstream Vera Sans Mono', monospace;
font-size: 13px;
letter-spacing: 0.015em;
@ -394,37 +354,36 @@ div.admonition, div.warning {
padding: 0;
}
div.admonition > p, div.warning > p {
div.admonition p, div.warning p {
margin: 0.5em 1em 0.5em 1em;
padding: 0;
}
div.admonition > pre, div.warning > pre {
div.admonition pre, div.warning pre {
margin: 0.4em 1em 0.4em 1em;
}
div.admonition > p.admonition-title,
div.warning > p.admonition-title {
margin-top: 0.5em;
div.admonition p.admonition-title,
div.warning p.admonition-title {
margin-top: 1em;
padding-top: 0.5em;
font-weight: bold;
}
div.warning {
border: 1px solid #940000;
/* background-color: #FFCCCF;*/
}
div.admonition > ul,
div.admonition > ol,
div.warning > ul,
div.warning > ol {
div.warning p.admonition-title {
}
div.admonition ul, div.admonition ol,
div.warning ul, div.warning ol {
margin: 0.1em 0.5em 0.5em 3em;
padding: 0;
}
div.admonition div.highlight {
background: none;
}
.viewcode-back {
font-family: 'Open Sans', 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva',
'Verdana', sans-serif;
@ -435,9 +394,3 @@ div.viewcode-block:target {
border-top: 1px solid #ac9;
border-bottom: 1px solid #ac9;
}
.contentstable {
margin-left: 30px;
margin: 0 auto;
table-layout: fixed;
}

View File

@ -1,21 +0,0 @@
Tutorial 1 - Window
===================
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent mattis id dui
vitae lobortis. Fusce et tempus ipsum. Nulla non luctus urna. Pellentesque et
luctus diam. Etiam fermentum vestibulum nisi, eget vestibulum turpis aliquet vitae.
Integer interdum enim eu lacus pulvinar malesuada. Ut urna mi, congue non
pellentesque id, varius eget diam. Ut placerat neque sed orci tincidunt consequat.
Cras fermentum fringilla pulvinar. Ut tempor turpis odio.
Vivamus sed magna tempor orci pharetra dapibus. Phasellus est elit, rhoncus
vitae consequat id, semper at ligula. Sed vitae odio tempor, maximus mi placerat,
faucibus metus. Quisque eget mauris quis ex gravida iaculis finibus vitae arcu.
Morbi non porttitor velit. Nullam pretium ex neque, ac malesuada felis dapibus
sodales. Pellentesque tristique est vel accumsan lobortis. Curabitur viverra
diam sit amet odio tincidunt pellentesque. Vestibulum non eros orci. Aliquam
accumsan convallis ullamcorper. Donec tristique massa nec massa venenatis tempus.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
himenaeos. Aliquam augue nibh, viverra at urna in, lacinia maximus leo.
Nullam vestibulum lobortis elementum.

View File

@ -1,21 +0,0 @@
Tutorial 2 - Size Hints
=======================
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent mattis id dui
vitae lobortis. Fusce et tempus ipsum. Nulla non luctus urna. Pellentesque et
luctus diam. Etiam fermentum vestibulum nisi, eget vestibulum turpis aliquet vitae.
Integer interdum enim eu lacus pulvinar malesuada. Ut urna mi, congue non
pellentesque id, varius eget diam. Ut placerat neque sed orci tincidunt consequat.
Cras fermentum fringilla pulvinar. Ut tempor turpis odio.
Vivamus sed magna tempor orci pharetra dapibus. Phasellus est elit, rhoncus
vitae consequat id, semper at ligula. Sed vitae odio tempor, maximus mi placerat,
faucibus metus. Quisque eget mauris quis ex gravida iaculis finibus vitae arcu.
Morbi non porttitor velit. Nullam pretium ex neque, ac malesuada felis dapibus
sodales. Pellentesque tristique est vel accumsan lobortis. Curabitur viverra
diam sit amet odio tincidunt pellentesque. Vestibulum non eros orci. Aliquam
accumsan convallis ullamcorper. Donec tristique massa nec massa venenatis tempus.
Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos
himenaeos. Aliquam augue nibh, viverra at urna in, lacinia maximus leo.
Nullam vestibulum lobortis elementum.

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -16,26 +16,9 @@
# along with this Python-EFL. If not, see <http://www.gnu.org/licenses/>.
# semver examples:
# development: '1.12.99' ( 1, 12, 99 )
# pre-release: '1.13.0-beta1' ( 1, 13, 0 )
# release: '1.13.0' ( 1, 13, 0 )
# development: "1.12.99" ( 1, 12, 99 )
# pre-release: "1.13.0-beta1" ( 1, 13, 0 )
# release: "1.13.0" ( 1, 13, 0 )
__version__ = '1.26.99'
__version_info__ = (1, 26, 99)
__all__ = [
'dbus_mainloop',
'ecore',
'ecore_con',
'ecore_input',
'ecore_x',
'edje',
'edje_edit',
'elementary',
'emotion',
'eo',
'ethumb',
'evas',
'utils',
]
__version__ = "1.19.0"
__version_info__ = ( 1, 19, 0 )

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2007-2022 various contributors (see AUTHORS)
* Copyright (C) 2007-2016 various contributors (see AUTHORS)
*
* This file is part of Python-EFL.
*

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 2007-2022 various contributors (see AUTHORS)
* Copyright (C) 2007-2016 various contributors (see AUTHORS)
*
* This file is part of Python-EFL.
*

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -40,7 +40,7 @@ cdef class Animator(Eo):
"""
def __init__(self, func, *args, **kargs):
"""
"""Animator(...)
:param func: function to call at every frame.
:type func: callable
@ -141,7 +141,7 @@ cdef class AnimatorTimeline(Animator):
"""
def __init__(self, func, double runtime, *args, **kargs):
"""
"""AnimatorTimeline(...)
:param func: The function to call when it ticks off
:type func: callable

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -45,8 +45,6 @@ cdef exe_flags2str(int value):
flags.append("NOT_LEADER")
if value & enums.ECORE_EXE_TERM_WITH_PARENT:
flags.append("ECORE_EXE_TERM_WITH_PARENT")
if value & enums.ECORE_EXE_ISOLATE_IO:
flags.append("ECORE_EXE_ISOLATE_IO")
return ", ".join(flags)
@ -305,10 +303,6 @@ cdef class Exe(object):
ECORE_EXE_TERM_WITH_PARENT
Makes child receive SIGTERM when parent dies
ECORE_EXE_ISOLATE_IO
Try and isolate stdin/out and err of the process so it isn't
shared with the parent. Since 1.21
:type flags: int
:param data: extra data to be associated and available with ``data_get()``
@ -558,10 +552,6 @@ cdef class Exe(object):
- ECORE_EXE_USE_SH: Use /bin/sh to run the command.
- ECORE_EXE_NOT_LEADER Do not use setsid() to have the
executed process be its own session leader
- ECORE_EXE_TERM_WITH_PARENT Makes child receive SIGTERM when
parent dies
- ECORE_EXE_ISOLATE_IO Try and isolate stdin/out and err of the
process so it isn't shared with the parent
:return: set of masks, ORed.

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -78,7 +78,7 @@ cdef class FdHandler(object):
"""
def __init__(self, fd, int flags, func, *args, **kargs):
"""
"""FdHandler(...)
:param fd: file descriptor or object with fileno() method.
:param flags: bitwise OR of ECORE_FD_READ, ECORE_FD_WRITE...

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -73,7 +73,7 @@ cdef class FileDownload(object):
"""
def __init__(self, url, dst, completion_cb, progress_cb, *args, **kargs):
"""
"""FileDownload(...)
:param url: The complete url to download
:param dst: Where to download the file

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -60,7 +60,7 @@ cdef class FileMonitor(object):
"""
def __init__(self, path, monitor_cb, *args, **kargs):
"""
"""FileMonitor(...)
:param path: The complete path of the folder you want to monitor.
:type path: str

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -40,7 +40,7 @@ cdef class Idler(Eo):
"""
def __init__(self, func, *args, **kargs):
"""
"""Idler(...)
:param func: Function to call when system is idle.
:type func: callable
@ -123,7 +123,7 @@ cdef class IdleEnterer(Idler):
"""
def __init__(self, func, *args, **kargs):
"""
"""IdleEnterer(...)
:param func: Function to call when system enters idle.
:type func: callable

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -60,7 +60,7 @@ cdef class Poller(Eo):
"""
def __init__(self, int interval, func, pol_type=0, *args, **kargs):
"""
"""Poller(...)
:param interval: The poll interval
:type interval: int
@ -83,39 +83,24 @@ cdef class Poller(Eo):
self.func = func
self.args = args
self.kargs = kargs
# From efl 1.20 pollers are no more Eo objects in C, thus
# we cannot use Eo.obj and _set_obj() anymore :(
# self._set_obj(ecore_poller_add(pol_type, interval, _ecore_task_cb, <void *>self))
self.obj2 = ecore_poller_add(pol_type, interval, _ecore_task_cb, <void *>self)
Py_INCREF(self)
self._set_obj(ecore_poller_add(pol_type, interval, _ecore_task_cb, <void *>self))
def __str__(self):
return "Poller(func=%s, args=%s, kargs=%s)" % (
self.func, self.args, self.kargs)
return "%s Poller(func=%s, args=%s, kargs=%s)" % (Eo.__str__(self),
self.func, self.args, self.kargs)
def __repr__(self):
return "Poller(interval=%d, func=%s, args=%s, kargs=%s)" % (
self.interval if self.obj2 else -1,
return "%s Poller(interval=%d, func=%s, args=%s, kargs=%s)" % (Eo.__repr__(self),
self.interval if self.obj else -1,
self.func, self.args, self.kargs)
cpdef bint _task_exec(self) except *:
return self.func(*self.args, **self.kargs)
def is_deleted(self):
"""Check if the object has been deleted thus leaving the object shallow.
:return: True if the object has been deleted yet, False otherwise.
:rtype: bool
"""
return bool(self.obj2 == NULL)
def delete(self):
""" Stop callback emission and free internal resources. """
ecore_poller_del(self.obj2)
self.obj2 = NULL
Py_DECREF(self)
ecore_poller_del(self.obj)
property interval:
""" The interval (in ticks) between each call of the poller
@ -124,15 +109,15 @@ cdef class Poller(Eo):
"""
def __get__(self):
return ecore_poller_poller_interval_get(self.obj2)
return ecore_poller_poller_interval_get(self.obj)
def __set__(self, int t):
ecore_poller_poller_interval_set(self.obj2, t)
ecore_poller_poller_interval_set(self.obj, t)
def interval_set(self, int t):
ecore_poller_poller_interval_set(self.obj2, t)
ecore_poller_poller_interval_set(self.obj, t)
def interval_get(self):
return ecore_poller_poller_interval_get(self.obj2)
return ecore_poller_poller_interval_get(self.obj)
def poller_add(int t, func, *args, **kargs):

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -42,7 +42,7 @@ cdef class Timer(Eo):
"""
def __init__(self, double interval, func, *args, **kargs):
"""
"""Timer(...)
:param interval: interval in seconds.
:type interval: float

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -31,7 +31,7 @@ cdef void _con_dns_lookup_cb(const char *canonname, const char *ip, sockaddr *so
cdef class Lookup(object):
def __init__(self, name, done_cb, *args, **kargs):
"""
"""Lookup()
A simple class to perform asynchronous DNS lookups.

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -196,7 +196,7 @@ cdef class Url(Eo):
"""
def __init__(self, url, custom_request=None, **kargs):
"""
"""Url(...)
:param url: URL that will receive requests.
:type url: string

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -17,6 +17,7 @@
from efl.utils.conversions cimport _ctouni
from efl.ecore cimport _event_mapping_register, _event_mapping_get
ECORE_EVENT_MODIFIER_SHIFT = enums.ECORE_EVENT_MODIFIER_SHIFT
@ -33,25 +34,23 @@ ECORE_EVENT_LOCK_SHIFT = enums.ECORE_EVENT_LOCK_SHIFT
ECORE_EVENT_MODIFIER_ALTGR = enums.ECORE_EVENT_MODIFIER_ALTGR
# NOTE: Cannot use ecore._event_mapping_register helper here
# because ECORE_EVENT_* are already registered by ecore.x
# Thus we need a separate mapping to not conflict.
cdef object _input_event_type_mapping = None
cdef int _input_events_registered = 0
cdef int _ecore_input_events_register() except 0:
global _input_event_type_mapping
global _input_events_registered
if not _input_event_type_mapping:
_input_event_type_mapping = {
ECORE_EVENT_KEY_DOWN: EventKey,
ECORE_EVENT_KEY_UP: EventKey,
ECORE_EVENT_MOUSE_BUTTON_DOWN: EventMouseButton,
ECORE_EVENT_MOUSE_BUTTON_UP: EventMouseButton,
ECORE_EVENT_MOUSE_MOVE: EventMouseMove,
ECORE_EVENT_MOUSE_IN: EventMouseIO,
ECORE_EVENT_MOUSE_OUT: EventMouseIO,
ECORE_EVENT_MOUSE_WHEEL: EventMouseWheel,
}
if _input_events_registered == 0:
_event_mapping_register(ECORE_EVENT_KEY_DOWN, EventKey)
_event_mapping_register(ECORE_EVENT_KEY_UP, EventKey)
_event_mapping_register(ECORE_EVENT_MOUSE_BUTTON_DOWN, EventMouseButton)
_event_mapping_register(ECORE_EVENT_MOUSE_BUTTON_UP, EventMouseButton)
_event_mapping_register(ECORE_EVENT_MOUSE_MOVE, EventMouseMove)
_event_mapping_register(ECORE_EVENT_MOUSE_IN, EventMouseIO)
_event_mapping_register(ECORE_EVENT_MOUSE_OUT, EventMouseIO)
_event_mapping_register(ECORE_EVENT_MOUSE_WHEEL, EventMouseWheel)
_input_events_registered = 1
return 1
@ -86,7 +85,7 @@ cdef class InputEventHandler(EventHandler):
if not callable(func):
raise TypeError("Parameter 'func' must be callable")
event_cls = _input_event_type_mapping.get(type)
event_cls = _event_mapping_get(type)
if event_cls is None:
raise ValueError("Unknow Ecore_Event type %d" % type)
@ -146,7 +145,6 @@ cdef class EventPoint:
def __repr__(self):
return "<EventPoint x=%d y=%d>" % (self.x, self.y)
cdef class EventMulti:
"""
:ivar int device: 0 if normal mouse, 1+ for other mouse-devices (eg multi-touch - other fingers)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -180,7 +180,7 @@ def init():
if edje_external_type_abi_version_get() != EDJE_EXTERNAL_TYPE_ABI_VERSION:
raise TypeError("python-edje Edje_External_Type abi_version differs "
"from libedje.so. Recompile python-efl!")
"from libedje.so. Recompile python-edje!")
return r

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -106,7 +106,7 @@ cdef class Edje(Object):
def __init__(self, Canvas canvas not None, file=None, group=None, size=None,
geometry=None, **kwargs):
"""
"""Edje(...)
:param canvas: Evas canvas for this object
:type canvas: :py:class:`~efl.evas.Canvas`
@ -137,6 +137,22 @@ cdef class Edje(Object):
self._text_change_cb = None
self._message_handler_cb = None
def __repr__(self):
x, y, w, h = self.geometry_get()
r, g, b, a = self.color_get()
file, group = self.file_get()
name = self.name_get()
if name:
name_str = "name=%r, "
else:
name_str = ""
clip = bool(self.clip_get() is not None)
return ("<%s(%sfile=%r, group=%r, geometry=(%d, %d, %d, %d), "
"color=(%d, %d, %d, %d), layer=%s, clip=%r, visible=%s)>") % \
(self.__class__.__name__, name_str, file, group,
x, y, w, h, r, g, b, a,
self.layer_get(), clip, self.visible_get())
def data_get(self, key):
"""Get data from Edje data collection (defined in .edj).
@ -767,70 +783,6 @@ cdef class Edje(Object):
return edje_object_part_text_input_hint_get(self.obj,
<const char *>part if part is not None else NULL)
def part_text_prediction_hint_set(self, part, hint):
"""Sets the prediction hint to use an intelligent reply suggestion
service.
:param part: the part name
:type part: str
:param hint: the prediction hint text
:type hint: str
.. versionadded:: 1.20
"""
if isinstance(part, unicode): part = PyUnicode_AsUTF8String(part)
if isinstance(hint, unicode): hint = PyUnicode_AsUTF8String(hint)
edje_object_part_text_prediction_hint_set(self.obj,
<const char *>part if part is not None else NULL,
<const char *>hint if hint is not None else NULL)
def part_text_prediction_hint_hash_set(self, part, key, value):
"""Sets the prediction hint data at the specified key
:param part: the part name
:type part: str
:param key: the key of the prediction hint
:type key: str
:param value: the data to replace
:type value: str
:return bool: `True` on success, `False` otherwise
.. versionadded:: 1.21
"""
if isinstance(part, unicode): part = PyUnicode_AsUTF8String(part)
if isinstance(key, unicode): key = PyUnicode_AsUTF8String(key)
if isinstance(value, unicode): value = PyUnicode_AsUTF8String(value)
edje_object_part_text_prediction_hint_hash_set(self.obj,
<const char *>part if part is not None else NULL,
<const char *>key if key is not None else NULL,
<const char *>value if value is not None else NULL)
def part_text_prediction_hint_hash_del(self, part, key):
"""Removes the prediction hint data identified by a key
:param part: the part name
:type part: str
:param key: the key of the prediction hint
:type key: str
:return bool: `True` on success, `False` otherwise
.. versionadded:: 1.21
"""
if isinstance(part, unicode): part = PyUnicode_AsUTF8String(part)
if isinstance(key, unicode): key = PyUnicode_AsUTF8String(key)
edje_object_part_text_prediction_hint_hash_del(self.obj,
<const char *>part if part is not None else NULL,
<const char *>key if key is not None else NULL)
def part_swallow(self, part, Object obj):
"""Swallows an object into the edje
@ -1554,4 +1506,4 @@ def on_text_change(func):
return func
_object_mapping_register("Efl.Canvas.Layout", Edje)
_object_mapping_register("Edje.Object", Edje)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -78,6 +78,7 @@ __all__ = (
"slideshow",
"spinner",
#"store",
"systray",
"table",
"theme",
"thumb",

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -59,6 +59,8 @@ ELM_EVENT_PROCESS_FOREGROUND = enums.ELM_EVENT_PROCESS_FOREGROUND
ELM_ECORE_EVENT_ETHUMB_CONNECT = enums.ELM_ECORE_EVENT_ETHUMB_CONNECT
ELM_EVENT_SYS_NOTIFY_NOTIFICATION_CLOSED = enums.ELM_EVENT_SYS_NOTIFY_NOTIFICATION_CLOSED
ELM_EVENT_SYS_NOTIFY_ACTION_INVOKED = enums.ELM_EVENT_SYS_NOTIFY_ACTION_INVOKED
ELM_EVENT_SYSTRAY_READY = enums.ELM_EVENT_SYSTRAY_READY
ELM_FOCUS_PREVIOUS = enums.ELM_FOCUS_PREVIOUS
ELM_FOCUS_NEXT = enums.ELM_FOCUS_NEXT
@ -514,6 +516,18 @@ ELM_SLIDER_INDICATOR_VISIBLE_MODE_ALWAYS = enums.ELM_SLIDER_INDICATOR_VISIBLE_MO
ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS = enums.ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS
ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE = enums.ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE
ELM_EVENT_SYSTRAY_READY = enums.ELM_EVENT_SYSTRAY_READY
ELM_SYSTRAY_CATEGORY_APP_STATUS = enums.ELM_SYSTRAY_CATEGORY_APP_STATUS
ELM_SYSTRAY_CATEGORY_COMMUNICATIONS = enums.ELM_SYSTRAY_CATEGORY_COMMUNICATIONS
ELM_SYSTRAY_CATEGORY_SYS_SERVICES = enums.ELM_SYSTRAY_CATEGORY_SYS_SERVICES
ELM_SYSTRAY_CATEGORY_HARDWARE = enums.ELM_SYSTRAY_CATEGORY_HARDWARE
ELM_SYSTRAY_CATEGORY_OTHER = enums.ELM_SYSTRAY_CATEGORY_OTHER
ELM_SYSTRAY_STATUS_PASSIVE = enums.ELM_SYSTRAY_STATUS_PASSIVE
ELM_SYSTRAY_STATUS_ACTIVE = enums.ELM_SYSTRAY_STATUS_ACTIVE
ELM_SYSTRAY_STATUS_ATTENTION = enums.ELM_SYSTRAY_STATUS_ATTENTION
ELM_THUMB_ANIMATION_START = enums.ELM_THUMB_ANIMATION_START
ELM_THUMB_ANIMATION_LOOP = enums.ELM_THUMB_ANIMATION_LOOP
ELM_THUMB_ANIMATION_STOP = enums.ELM_THUMB_ANIMATION_STOP
@ -703,11 +717,6 @@ def init():
"""
EINA_LOG_DOM_INFO(PY_EFL_ELM_LOG_DOMAIN, "Initializing efl.elementary")
# Force Edje object type to be always available, since we cannot
# anticipate when Elementary is going to return a pointer to one.
import efl.edje
# argc and argv are currently used by EFL to support app restart
# and binary relocation. These are probably not useful to us but we
# pass the information here regardless because useful functionality
@ -1271,6 +1280,7 @@ include "slider.pxi"
include "slideshow.pxi"
include "spinner.pxi"
#include "store.pxi"
include "systray.pxi"
include "table.pxi"
include "theme.pxi"
include "thumb.pxi"

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -47,7 +47,7 @@ cdef class Accessible(Object):
"""
def __init__(self, target, parent = None):
"""
"""Accessible(...)
:param target: The evas object to register as an accessible object.
:param parent: The elementary object which is used for creating

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -26,7 +26,7 @@ cdef class Actionslider(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Actionslider(..)
:param parent: Parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -28,7 +28,7 @@ cdef class Background(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Background(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`
@ -184,4 +184,4 @@ cdef class Background(LayoutClass):
def load_size_set(self, w, h):
elm_bg_load_size_set(self.obj, w, h)
_object_mapping_register("Efl.Ui.Bg_Legacy", Background)
_object_mapping_register("Elm.Bg", Background)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -75,7 +75,7 @@ cdef class Box(Object):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Box(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,3 +1,5 @@
cdef extern from "Ecore.h":
ctypedef void (*Ecore_Cb)(void *data)
cdef extern from "Evas.h":
ctypedef void *Evas_Object_Box_Data

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -26,7 +26,7 @@ cdef class Bubble(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Bubble(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -25,7 +25,7 @@ cdef class Button(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Button(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`
@ -135,4 +135,4 @@ cdef class Button(LayoutClass):
self._callback_del("unpressed", func)
_object_mapping_register("Efl.Ui.Button_Legacy", Button)
_object_mapping_register("Elm.Button", Button)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -53,7 +53,7 @@ cdef class CalendarMark(object):
def __init__(self, evasObject cal, mark_type, mark_time,
Elm_Calendar_Mark_Repeat_Type repeat):
"""
"""CalendarMark(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`
@ -109,7 +109,7 @@ cdef class Calendar(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Calendar(..)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -25,7 +25,7 @@ cdef class Check(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Check(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`
@ -65,4 +65,4 @@ cdef class Check(LayoutClass):
self._callback_del("changed", func)
_object_mapping_register("Efl.Ui.Check_Legacy", Check)
_object_mapping_register("Elm.Check", Check)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -26,7 +26,7 @@ cdef class Clock(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Clock(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,6 +1,14 @@
from efl.utils.conversions cimport python_list_objects_to_eina_list
cdef extern from "Elementary.h":
struct _Elm_Selection_Data:
Evas_Coord x, y
Elm_Sel_Format format
void *data
size_t len
Elm_Xdnd_Action action
ctypedef _Elm_Selection_Data Elm_Selection_Data
ctypedef Eina_Bool (*Elm_Drop_Cb) (void *data, Evas_Object *obj, Elm_Selection_Data *ev)
ctypedef Elm_Object_Item *(*Elm_Xy_Item_Get_Cb) (Evas_Object *obj, Evas_Coord x, Evas_Coord y, int *xposret, int *yposret)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -29,7 +29,7 @@ cdef class ColorselectorPaletteItem(ObjectItem):
cdef int r, g, b, a
def __init__(self, int r, int g, int b, int a, *args, **kwargs):
"""
"""ColorselectorPaletteItem(...)
:param r: Red value of color
:type r: int
@ -108,7 +108,7 @@ cdef class Colorselector(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Colorselector(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -115,7 +115,7 @@ class Combobox(_Combobox, Button, Entry, Genlist, Hover):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Combobox(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -25,7 +25,7 @@ cdef class Conformant(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Conformant(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -35,7 +35,7 @@ cdef class CtxpopupItem(ObjectItem):
def __init__(self, label = None, evasObject icon = None,
callback = None, cb_data = None, *args, **kargs):
"""
"""CtxpopupItem(...)
:param label: The Label of the new item
:type label: string
@ -142,7 +142,6 @@ cdef class CtxpopupItem(ObjectItem):
def __get__(self):
return _object_item_to_python(elm_ctxpopup_item_next_get(self.item))
cdef class Ctxpopup(LayoutClass):
"""
@ -155,7 +154,7 @@ cdef class Ctxpopup(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Ctxpopup(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`
@ -235,86 +234,6 @@ cdef class Ctxpopup(LayoutClass):
else:
return None
def item_insert_before(self, CtxpopupItem before, label, evasObject icon=None,
func=None, *args, **kwargs):
"""Add a new item to the list before the indicated item
:param CtxpopupItem before: The item before which to add it
:param string label: The label of new item
:param evasObject icon: The icon of new item
:param func: The callback function to be invoked when this item is selected.
:param \*args: The data to be attached for callback
:param \*\*kwargs: The data to be attached for callback
:return: :class:`CtxpopupItem`
.. versionadded:: 1.21
"""
cdef:
Elm_Object_Item *item
Evas_Smart_Cb cb = NULL
CtxpopupItem ret = CtxpopupItem.__new__(CtxpopupItem)
if func is not None and callable(func):
cb = _object_item_callback
if isinstance(label, unicode): label = PyUnicode_AsUTF8String(label)
item = elm_ctxpopup_item_insert_before(self.obj,
before.item if before is not None else NULL,
<const char *>label if label is not None else NULL,
icon.obj if icon is not None else NULL,
cb, <void*>ret)
if item != NULL:
ret._set_obj(item)
ret.cb_func = func
ret.args = args
ret.kwargs = kwargs
return ret
else:
return None
def item_insert_after(self, CtxpopupItem after, label, evasObject icon=None,
func=None, *args, **kwargs):
"""Add a new item to the list after the indicated item
:param CtxpopupItem after: The item after which to add it
:param string label: The label of new item
:param evasObject icon: The icon of new item
:param func: The callback function to be invoked when this item is selected.
:param \*args: The data to be attached for callback
:param \*\*kwargs: The data to be attached for callback
:return: :class:`CtxpopupItem`
.. versionadded:: 1.21
"""
cdef:
Elm_Object_Item *item
Evas_Smart_Cb cb = NULL
CtxpopupItem ret = CtxpopupItem.__new__(CtxpopupItem)
if func is not None and callable(func):
cb = _object_item_callback
if isinstance(label, unicode): label = PyUnicode_AsUTF8String(label)
item = elm_ctxpopup_item_insert_after(self.obj,
after.item if after is not None else NULL,
<const char *>label if label is not None else NULL,
icon.obj if icon is not None else NULL,
cb, <void*>ret)
if item != NULL:
ret._set_obj(item)
ret.cb_func = func
ret.args = args
ret.kwargs = kwargs
return ret
else:
return None
def item_prepend(self, label, evasObject icon=None,
func=None, *args, **kwargs):
"""A constructor for a :py:class:`CtxpopupItem`.

View File

@ -20,5 +20,3 @@ cdef extern from "Elementary.h":
Elm_Object_Item *elm_ctxpopup_last_item_get(const Evas_Object *obj)
Elm_Object_Item *elm_ctxpopup_item_prev_get(const Elm_Object_Item *it)
Elm_Object_Item *elm_ctxpopup_item_next_get(const Elm_Object_Item *it)
Elm_Object_Item *elm_ctxpopup_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data)
Elm_Object_Item *elm_ctxpopup_item_insert_after(Evas_Object *obj, Elm_Object_Item *before, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -26,7 +26,7 @@ cdef class Datetime(Object):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Datetime(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`
@ -347,4 +347,5 @@ cdef class Datetime(Object):
self._callback_del("changed", func)
_object_mapping_register("Efl.Ui.Clock_Legacy", Datetime)
# _object_mapping_register("Elm.Datetime", Datetime)
_object_mapping_register("Efl.Ui.Clock", Datetime)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -26,7 +26,7 @@ cdef class Dayselector(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Dayselector(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -56,7 +56,7 @@ cdef class DiskselectorItem(ObjectItem):
def __init__(self, label=None, evasObject icon=None, callback=None,
cb_data=None, *args, **kargs):
"""
"""DiskselectorItem(...)
:param label: The label of the diskselector item.
:type label: string
@ -183,7 +183,7 @@ cdef class Diskselector(Object):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Diskselector(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -11,8 +11,7 @@ from efl.evas.enums cimport EVAS_EVENT_FLAG_NONE, EVAS_CALLBACK_KEY_DOWN, \
from efl.ecore cimport Ecore_Pos_Map
from efl.elementary.enums cimport Elm_Process_State, Elm_Sys_Notify_Urgency, \
Elm_Policy, Elm_Policy_Quit, Elm_Policy_Exit, Elm_Policy_Throttle, \
Elm_Sel_Format, Elm_Xdnd_Action
Elm_Policy, Elm_Policy_Quit, Elm_Policy_Exit, Elm_Policy_Throttle
cdef extern from "time.h":
@ -48,14 +47,6 @@ cdef extern from "Elementary.h":
const char *palette_name
Eina_List *color_list
#selection
ctypedef struct Elm_Selection_Data:
Evas_Coord x, y
Elm_Sel_Format format
void *data
size_t len
Elm_Xdnd_Action action
#event
ctypedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type t, void *event_info)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -49,7 +49,7 @@ def utf8_to_markup(string):
<const char *>string if string is not None else NULL))
cdef class EntryContextMenuItem(object):
"""
"""EntryContextMenuItem(...)
Type of contextual item that can be added in to long press menu.
@ -192,7 +192,7 @@ cdef void py_elm_entry_filter_cb(void *data, Evas_Object *entry, char **text) wi
cdef class EntryAnchorInfo(object):
"""
"""EntryAnchorInfo(...)
The info sent in the callback for the ``anchor,clicked`` signals emitted
by entries.
@ -254,7 +254,7 @@ cdef object _entryanchor_conv(void *addr):
cdef class EntryAnchorHoverInfo(object):
"""
"""EntryAnchorHoverInfo(...)
The info sent in the callback for ``anchor,hover,opened`` signals emitted
by the entries.
@ -348,7 +348,7 @@ cdef class Entry(LayoutClass):
self.markup_filters = []
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Entry(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`
@ -1472,58 +1472,6 @@ cdef class Entry(LayoutClass):
def prediction_allow_get(self):
return elm_entry_prediction_allow_get(self.obj)
property prediction_hint:
"""The prediction hint to use an intelligent reply suggestion service.
:type: string (**writeonly**)
.. versionadded:: 1.20
"""
def __set__(self, string):
if isinstance(string, unicode): string = PyUnicode_AsUTF8String(string)
elm_entry_prediction_hint_set(self.obj,
<const char *>string if string is not None else NULL)
def prediction_hint_set(self, string):
if isinstance(string, unicode): string = PyUnicode_AsUTF8String(string)
elm_entry_prediction_hint_set(self.obj,
<const char *>string if string is not None else NULL)
def prediction_hint_hash_set(self, key, value):
"""Sets the prediction hint data at the specified key.
:param key: The key of the prediction hint
:type key: string
:param value: The data to replace
:type value: string
:return bool: `True` on success, `False` otherwise
.. versionadded:: 1.21
"""
if isinstance(key, unicode): key = PyUnicode_AsUTF8String(key)
if isinstance(value, unicode): value = PyUnicode_AsUTF8String(value)
return bool(elm_entry_prediction_hint_hash_set(self.obj,
<const char *>key if key is not None else NULL,
<const char *>value if value is not None else NULL))
def prediction_hint_hash_del(self, key):
"""Removes the prediction hint data identified by a key.
:param key: The key of the prediction hint
:type key: string
:return bool: `True` on success, `False` otherwise
.. versionadded:: 1.21
"""
if isinstance(key, unicode): key = PyUnicode_AsUTF8String(key)
return bool(elm_entry_prediction_hint_hash_del(self.obj,
<const char *>key if key is not None else NULL))
# TODO:
# def filter_limit_size(self, data, text):
# """Filter inserted text based on user defined character and byte limits

View File

@ -21,11 +21,20 @@ cdef extern from "Elementary.h":
Eina_Bool hover_top
Eina_Bool hover_bottom
ctypedef struct Elm_Selection_Data:
Evas_Coord x, y
Elm_Sel_Format format
void *data
size_t len
Elm_Xdnd_Action action
ctypedef struct Elm_Entry_Context_Menu_Item:
pass
ctypedef void (*Elm_Entry_Filter_Cb)(void *data, Evas_Object *entry, char **text)
ctypedef Eina_Bool (*Elm_Drop_Cb) (void *data, Evas_Object *obj, Elm_Selection_Data *ev)
# Data for the elm_entry_filter_limit_size() entry filter.
ctypedef struct Elm_Entry_Filter_Limit_Size:
int max_char_count # The maximum number of characters allowed.
@ -130,9 +139,6 @@ cdef extern from "Elementary.h":
void elm_entry_imf_context_reset(Evas_Object *obj)
void elm_entry_prediction_allow_set(Evas_Object *obj, Eina_Bool allow)
Eina_Bool elm_entry_prediction_allow_get(const Evas_Object *obj)
void elm_entry_prediction_hint_set(Evas_Object *obj, const char *prediction_hint)
Eina_Bool elm_entry_prediction_hint_hash_set(Evas_Object *obj, const char *key, const char *value)
Eina_Bool elm_entry_prediction_hint_hash_del(Evas_Object *obj, const char *key)
# TODO: void elm_entry_filter_limit_size(void *data, Evas_Object *entry, char **text)
# TODO: void elm_entry_filter_accept_set(void *data, Evas_Object *entry, char **text)
# TODO: void *elm_entry_imf_context_get(const Evas_Object *obj)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -37,7 +37,7 @@ cdef class Fileselector(LayoutClass):
cdef list _custom_filters
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Fileselector(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -26,7 +26,7 @@ cdef class FileselectorButton(Button):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""FileselectorButton(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -29,7 +29,7 @@ cdef class FileselectorEntry(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""FileselectorEntry(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -26,7 +26,7 @@ cdef class Flip(Object):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Flip(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`
@ -203,4 +203,4 @@ cdef class Flip(Object):
self._callback_del("animate,done", func)
_object_mapping_register("Efl.Ui.Flip_Legacy", Flip)
_object_mapping_register("Efl.Ui.Flip", Flip)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -42,7 +42,7 @@ cdef class FlipSelectorItem(ObjectItem):
def __init__(self, label = None, callback = None, cb_data = None,
*args, **kwargs):
"""
"""FlipSelectorItem(...)
:param label: The (text) label of the new item
:type label: string
@ -181,7 +181,7 @@ cdef class FlipSelector(Object):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""FlipSelector(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -25,7 +25,7 @@ cdef class Frame(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Frame(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`
@ -95,4 +95,4 @@ cdef class Frame(LayoutClass):
self._callback_del("clicked", func)
_object_mapping_register("Efl.Ui.Frame_Legacy", Frame)
_object_mapping_register("Efl.Ui.Frame", Frame)

View File

@ -14,6 +14,7 @@ from . import ELM_EVENT_PROCESS_BACKGROUND
from . import ELM_EVENT_PROCESS_FOREGROUND
from . import ELM_EVENT_SYS_NOTIFY_NOTIFICATION_CLOSED
from . import ELM_EVENT_SYS_NOTIFY_ACTION_INVOKED
from . import ELM_EVENT_SYSTRAY_READY
from . import ELM_OBJECT_LAYER_BACKGROUND
from . import ELM_OBJECT_LAYER_DEFAULT

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -23,7 +23,7 @@ cdef class GengridItem(ObjectItem):
def __init__(self, GengridItemClass item_class not None, item_data = None, \
func = None, func_data = None, *args, **kwargs):
"""
"""GengridItem(..)
:param item_class: a valid instance that defines the
behavior of this item. See :py:class:`GengridItemClass`.

View File

@ -35,7 +35,7 @@ cdef class GengridItemClass:
def __init__(self, item_style=None, text_get_func=None,
content_get_func=None, state_get_func=None, del_func=None):
"""
"""GengridItemClass constructor.
:param item_style: the string that defines the gengrid item
theme to be used. The corresponding edje group will

View File

@ -8,7 +8,7 @@ cdef class Gengrid(Object):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""Gengrid(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

View File

@ -28,8 +28,6 @@ cdef extern from "Elementary.h":
void elm_genlist_clear(Evas_Object *obj)
void elm_genlist_multi_select_set(Evas_Object *obj, Eina_Bool multi)
Eina_Bool elm_genlist_multi_select_get(const Evas_Object *obj)
void elm_genlist_multi_select_mode_set(Evas_Object *obj, Elm_Object_Multi_Select_Mode mode)
Elm_Object_Multi_Select_Mode elm_genlist_multi_select_mode_get(const Evas_Object *obj)
void elm_genlist_mode_set(Evas_Object *obj, Elm_List_Mode mode)
Elm_List_Mode elm_genlist_mode_get(const Evas_Object *obj)
Elm_Object_Item * elm_genlist_item_append(Evas_Object *obj, Elm_Genlist_Item_Class *itc, void *data, Elm_Object_Item *parent, Elm_Genlist_Item_Type flags, Evas_Smart_Cb func, void *func_data)

View File

@ -15,7 +15,7 @@ cdef class GenlistItem(ObjectItem):
GenlistItem parent_item=None,
Elm_Genlist_Item_Type flags=enums.ELM_GENLIST_ITEM_NONE,
func=None, func_data=None, *args, **kwargs):
"""
"""GenlistItem(...)
:param item_data: Data that defines the model of this row.
This value will be given to methods of ``item_class`` such as

View File

@ -46,7 +46,7 @@ cdef class GenlistItemClass(object):
filter_get_func=None, reusable_content_get_func=None,
*args, **kwargs):
"""
"""GenlistItemClass constructor.
:param item_style: the string that defines the genlist item
theme to be used. The corresponding edje group will

View File

@ -10,7 +10,7 @@ cdef class Genlist(Object):
"""
def __init__(self, evasObject parent not None, *args, **kwargs):
"""
"""Genlist(...)
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`
@ -64,26 +64,6 @@ cdef class Genlist(Object):
def multi_select_get(self):
return bool(elm_genlist_multi_select_get(self.obj))
property multi_select_mode:
"""The genlist multi select mode.
Whenever the user need to pres Ctrl to perform multiselect or not.
:type: :ref:`Elm_Object_Multi_Select_Mode`
.. versionadded:: 1.20
"""
def __set__(self, mode):
elm_genlist_multi_select_mode_set(self.obj, mode)
def __get__(self):
return elm_genlist_multi_select_mode_get(self.obj)
def multi_select_mode_set(self, mode):
elm_genlist_multi_select_mode_set(self.obj, mode)
def multi_select_mode_get(self):
return elm_genlist_multi_select_mode_get(self.obj)
property mode:
"""The mode used for sizing items horizontally.

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -19,7 +19,7 @@
include "gesture_layer_cdef.pxi"
cdef class GestureTapsInfo(object):
"""
"""GestureTapsInfo(...)
Holds taps info for user
@ -64,7 +64,7 @@ cdef class GestureTapsInfo(object):
return self.info.timestamp
cdef class GestureMomentumInfo(object):
"""
"""GestureMomentumInfo(...)
Holds momentum info for user
x1 and y1 are not necessarily in sync
@ -158,7 +158,7 @@ cdef class GestureMomentumInfo(object):
return self.info.n
cdef class GestureLineInfo(object):
"""
"""GestureLineInfo(...)
Holds line info for user
@ -187,7 +187,7 @@ cdef class GestureLineInfo(object):
return self.info.angle
cdef class GestureZoomInfo(object):
"""
"""GestureZoomInfo(...)
Holds zoom info for user
@ -241,7 +241,7 @@ cdef class GestureZoomInfo(object):
return self.info.momentum
cdef class GestureRotateInfo(object):
"""
"""GestureRotateInfo(...)
Holds rotation info for user
@ -364,7 +364,7 @@ cdef class GestureLayer(Object):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""
"""GestureLayer(...)
:param parent: The gesture layer's parent widget.
:type parent: :py:class:`~efl.evas.Object`

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#

Some files were not shown because too many files have changed in this diff Show More