Compare commits

...

332 Commits

Author SHA1 Message Date
Davide Andreoli c8d7bddb47 Do not try to build with Cython3
Thanks goes @rafspiny for pointing this out
2023-11-26 08:36:10 +01:00
Davide Andreoli 4bb6d9fa9f Update package metadata 2023-11-26 08:35:02 +01:00
Davide Andreoli 0b089a5623 Silence pycharm warnings in setup.py 2023-11-26 08:34:14 +01:00
Davide Andreoli a7464e66e6 Maintenance release 1.26.1 2023-10-08 05:45:50 +02:00
Davide Andreoli d1b4512e52 open new development phase 2022-02-27 20:26:17 +01:00
Davide Andreoli 9896656574 Prepare release 1.26.0 2022-02-27 20:21:54 +01:00
Davide Andreoli fb649f30e7 packaging is required to build the wheel 2022-02-27 19:49:30 +01:00
Davide Andreoli f0ab762e16 Copyright 2022 2022-02-27 19:07:34 +01:00
Davide Andreoli 4548c5a01b Fixes a memory error
as reported at:
https://phab.enlightenment.org/D12326
and
https://build.opensuse.org/request/show/945361

thanks goes to Andreas Schwab and Simotek
2022-02-27 11:19:23 +01:00
Davide Andreoli cadc757e7e setup: use packaging instead of distutils for version check
Distutils is deprecated in py3.10, and packaging is already a
dependency of setuptools
2022-02-27 10:52:50 +01:00
Davide Andreoli ed959b59af Update README 2021-12-06 14:27:47 +01:00
Davide Andreoli ec2b95ceab README: remove not maintained/broken apps
Also add some TODO items and fix an htts link
2021-12-06 11:00:13 +01:00
Davide Andreoli dcf362b03f Update README 2021-12-06 09:26:49 +01:00
Davide Andreoli d420f60e0d updated release instructions 2021-12-05 19:18:25 +01:00
Davide Andreoli 0848286409 fix pip uploading
...a really stupid fix
2021-12-05 18:56:44 +01:00
Davide Andreoli 3ca71a067e Dropped python 2.6 support
and deprecate all versions of python 2, with a big-fat warning.
Python2 support will be fully removed in a later release.
2021-12-05 16:13:22 +01:00
Davide Andreoli 9dce9ccad4 setup: stop importing the version from sources
This was creating all sort of issues, because the efl modules in sources
are not meant to work. And installation from sdist using pip was
complainig about efl not found (because it build in a restricted env)

So just read the __init__.py file and extract the version from there
(to be DRY)
2021-12-05 12:24:38 +01:00
Davide Andreoli 7141f21f0b setup: disjoint pythonefl version from efl version
minor version of bindings and efl are not always the same
2021-12-05 12:04:09 +01:00
Davide Andreoli fabcef1278 setup: Factorize reading files and cmd exec 2021-12-05 12:00:47 +01:00
Davide Andreoli a0a6d756b5 Fix install using pip
pip run setup.py bdist_wheel so we need to take that into account

this also fix generation of wheels in general
2021-12-05 10:43:36 +01:00
Davide Andreoli e467b3e871 Change build tool from distutils to setuptools
This is needed for publishing on pip
2021-12-03 08:37:56 +01:00
Davide Andreoli 69cfc2c7fc Docs: always show the breadcumb 2021-11-30 09:21:20 +01:00
Davide Andreoli f70d7c949f Docs: a better flax layout, also with sticky sidebar 2021-11-30 09:19:48 +01:00
Davide Andreoli 838d4b38c5 Docs: comment out unused js 2021-11-29 22:25:05 +01:00
Davide Andreoli b821107688 Docs: updated links 2021-11-29 08:21:38 +01:00
Davide Andreoli e7545e3185 Docs: a bit of style 2021-11-29 08:12:32 +01:00
Davide Andreoli 5ac4f71131 Docs: set pygment style in theme, not in config 2021-11-29 04:56:53 +01:00
Davide Andreoli 7e4116335a Docs: updated sphinx base html theme 2021-11-29 04:55:20 +01:00
Davide Andreoli 26e2b89a9d Docs: use png for inheritance graphs
svg looks a bit better, but the links are then broken :(
2021-11-18 08:21:47 +01:00
Davide Andreoli 2d0668c548 A bit of linting 2021-11-18 07:22:27 +01:00
Davide Andreoli a83da00bc7 Docs: cleanup the conf file
Regenerate from a fresh sphinx-quickstart
2021-11-18 07:02:41 +01:00
Davide Andreoli 31a147fc7c Docs: remove an old workaround
The ClassName(...) on each class was an old hack that is
not needed anymore
2021-11-18 06:25:19 +01:00
Davide Andreoli 1f441a18c8 typo in README 2021-11-17 08:58:51 +01:00
Davide Andreoli d7275844f1 Docs: fix generation of class methods
autodoc_default_flags is deprecated and do not work anymore with sphinx 4.1
Use autodoc_default_options instead

Also separate __init__ and class docs, seems more explicit to me
2021-11-17 08:50:12 +01:00
Davide Andreoli f3c99eeafa gitignore++ 2021-11-14 23:25:02 +01:00
Davide Andreoli 3dfacc01ab Docs: added infra for tutorials
Also remove some really old presentation text,
we should write some new intro
2021-11-14 23:24:18 +01:00
Davide Andreoli 22274ae81d Docs: remove not needed files 2021-11-14 23:21:00 +01:00
Davide Andreoli 25ed1cc567 Fix build after README rename
whopsss
2021-11-14 20:24:02 +01:00
Davide Andreoli 22203c0838 Remove the old TODO file 2021-11-12 07:58:46 +01:00
Davide Andreoli 0253f9e178 New markdown README 2021-11-12 07:51:27 +01:00
Davide Andreoli 55e9e51f69 Open 1.26 development phase 2020-09-24 19:31:13 +02:00
Davide Andreoli 5a81c2c944 Prepare 1.25 release 2020-09-24 19:04:53 +02:00
Davide Andreoli 5a02f13210 Do not fail when build with CC="clang"
clang seems much better in building elementary, while gcc need a lot
of ram and tend to fail badly

So for now on clang is the suggested compiler to use
2020-06-25 18:54:03 +02:00
Davide Andreoli 22cc200a61 Back to devel mode 2020-04-30 08:13:09 +02:00
Davide Andreoli 09e016bdbd Update release instructions 2020-04-30 07:57:59 +02:00
Davide Andreoli bd81c36cd0 Prepare the 1.24 release 2020-04-30 07:46:20 +02:00
Davide Andreoli 81c48dd2d9 Explicitly declare efl submodules
seems to make editors happier
2020-04-29 08:37:53 +02:00
Davide Andreoli b9117cb590 Update INSTALL 2020-04-27 20:04:16 +02:00
Davide Andreoli 32aec52918 Fix tests 2020-04-27 20:02:57 +02:00
Davide Andreoli a7e86793c3 Follow efl rename Efl.Canvas.Text -> Efl.Canvas.Textblock 2020-04-27 20:02:08 +02:00
Davide Andreoli a1eeae15f8 gitignore++ 2020-04-27 19:16:23 +02:00
Davide Andreoli 9ba5210a6a Open up development phase 2019-10-06 11:29:09 +02:00
Davide Andreoli d61c596278 Prepeare the 1.23 release 2019-10-06 08:45:57 +02:00
Davide Andreoli e2ce1b49a3 Open up 1.23 development 2019-04-26 11:30:26 +02:00
Davide Andreoli 8ff30f9edd Prepare 1.22 release 2019-04-23 09:18:32 +02:00
Davide Andreoli d544412cd1 Follow Eo class name changes 2019-04-23 09:13:45 +02:00
Davide Andreoli 3b0552259d Silence Cython warnings
I'm keeping python 2 style for compatibility reasons
2019-04-23 08:55:29 +02:00
Davide Andreoli 4fa39916ee Fix for 1.22 Eo api changes 2019-04-23 08:54:13 +02:00
Davide Andreoli 42ee207c16 In development mode again 2018-08-26 11:42:24 +02:00
Davide Andreoli c9f5b53e28 Try to fix tests on jenkins
Seems this test do not have enough time,
lets try with an higher timeout
2018-08-23 19:56:04 +02:00
Davide Andreoli 8cc259ca26 Remove Systray leftovers 2018-08-23 19:55:46 +02:00
Davide Andreoli d25784cca8 Prepare the 1.21 release 2018-08-23 19:07:46 +02:00
Davide Andreoli 7c555cc9da Say goodbye to the Systray widget
This is a really bad break !!!

... shame on us to have used an efl beta api :(
2018-08-22 21:01:20 +02:00
Davide Andreoli 3e198f7294 Disable a failing test
This is failing only when used in the full suite (00_run_all_tests)

it works normally if launched directly, so I think it's just a
test suite issue
2018-08-21 20:08:23 +02:00
Davide Andreoli b855a82160 This test now work as expected 2018-08-17 11:02:15 +02:00
Davide Andreoli 583f42b131 Setup warnings-- 2018-08-17 10:52:42 +02:00
Davide Andreoli 2991a6683e Fix elm.Image.file.__get__
This is to hide a behaviour changes in elm, quite a corner case, but
spotted by our tests.

If you do a file_get before a file_set, elm is nomore nullifying the
pointers, thus we try to ctouni our garbage. Just initialize well
our vars
2018-08-17 10:46:00 +02:00
Davide Andreoli fb9b06931e Ctxpopup: add slow test with many items
just to replicate the C example
2018-07-22 08:14:12 +02:00
Davide Andreoli 48d9c26945 New 1.21 API: edje.Object.part_text_prediction_hint_hash_set/del 2018-07-22 08:04:09 +02:00
Davide Andreoli 4721842b1e New 1.21 API: elm.Entry.prediction_hint_hash_set/del 2018-07-22 07:51:16 +02:00
Davide Andreoli 6aa3501136 New 1.21 API: Ecore_Exe_Flags.ECORE_EXE_ISOLATE_IO
just a new enum value
2018-07-16 20:16:16 +02:00
Davide Andreoli 18ca98e66f New 1.21 API: Ctxpopup item_insert_before/after
with test
2018-07-16 20:00:50 +02:00
Davide Andreoli 006052543f Fix 2 changed class names
#FollowTheWhiteRabbit
2018-07-15 08:15:44 +02:00
Davide Andreoli 30c9c60b5d Fix warnings spotted by cython 0.28
Those are all simbols redeclared in different places
2018-03-24 08:42:31 +01:00
Davide Andreoli 26607a0986 Changes to make cython 0.28 happy
This just refactor how the extensions are named, nothing
is changed in the final layout of the package.

Renamed the dbus extension, that was indeed the only
one with a different naming scheme.

Also raised the minimum cython version a bit, min is
now at 0.23.5, that is still quite old. The oldest
ones seems to not like the new naming scheme.
2018-03-19 21:16:53 +01:00
Davide Andreoli ffc3c337dc Elm: fix Layout.content_swallow_list_get() to not leak
The eina_list_free was wrongly used and was leaking
the whole list. Fixed.
2018-03-04 09:46:21 +01:00
Davide Andreoli 4b8ddcff7d Elm: add test for elm_image_get() before a set() call 2018-03-01 18:32:46 +01:00
Davide Andreoli 00d92cbebe Changed (again) all the elm class names
#FollowTheWhiteRabbit
2018-02-17 01:18:14 +01:00
Davide Andreoli f81fc890bb systray do not work anymore as the widget has been removed from efl :(
... we still need to decide what to do with this breakage
2017-12-12 19:25:39 +01:00
Davide Andreoli 28c9775898 rename Edje.Object to Efl.Canvas.Layout
#FollowTheWhiteRabbit

also fix a small typo in the Makefile
2017-12-09 20:42:20 +01:00
Davide Andreoli 344da31ceb Efl.Ui.Spinner downgraded to Elm.Spinner
#FollowTheWhiteRabbit
2017-09-07 19:30:34 +02:00
Davide Andreoli bc9d5648e7 Fix an evas test
...not that I really understand the utility nor the root cause of tha fail
but this test was segfaulting
2017-09-03 20:33:26 +02:00
Davide Andreoli 58ab1d26f7 Some new OE widget names
#FollowTheWhiteRabbit
2017-09-03 20:28:07 +02:00
Davide Andreoli fe144b8f96 Pypi is migrating, adjust the release instructions 2017-08-16 21:51:59 +02:00
Davide Andreoli efcebb52bf open up the 1.21 development cycle 2017-08-09 08:54:06 +02:00
Davide Andreoli 7d3799d7fa Prepare the 1.20.0 release 2017-08-05 19:05:00 +02:00
Davide Andreoli 85e23f2851 Prepare the 1.20.0-beta1 pre-release 2017-07-22 18:10:16 +02:00
Davide Andreoli c5759b6d67 New 1.20 API: elm.Menu.open() 2017-07-22 17:39:23 +02:00
Davide Andreoli 5bbaba2a6e New 1.20 API: elm.Genlist.multi_select_mode
with test
2017-07-22 17:24:06 +02:00
Davide Andreoli 74ed9e86a4 Use the buffer engine for elm tests
This should make tests work also on jenkins
2017-07-22 11:35:28 +02:00
Davide Andreoli 3ef64e685c Some more tests cleanups
Now I get 100% success on my machine :)
2017-07-22 11:22:15 +02:00
Davide Andreoli 6e2b444712 Use new style import in elm tests
For some obscure reasons the elm tests was failing here (only when run from the setup.py command) with the old style imports
2017-07-22 11:09:15 +02:00
Davide Andreoli 7d8049b0c5 Adjust some more tests 2017-07-22 10:57:24 +02:00
Davide Andreoli 741000d423 Move elm external test from edje to elm
elm widgets need an elm parent to work correctly, so it's better to use an elm win instead of a ecore evas one.
2017-07-22 10:55:04 +02:00
Davide Andreoli fecc0c2604 Edje: remove custom __repr__ implementation
to be consistent with the others
2017-07-22 09:08:03 +02:00
Davide Andreoli 9d5efd8aef Do not test Combobox widget
it is deprecated
2017-07-22 08:46:19 +02:00
Davide Andreoli 25f620ef19 python-edje do not exists anymore 2017-07-22 08:42:14 +02:00
Davide Andreoli 6e80968778 test list: use a correct FDO icon name 2017-07-20 21:29:46 +02:00
Davide Andreoli 64584362b7 setup.py: clean ecore_input files in CleanGenerated 2017-07-16 20:28:44 +02:00
Davide Andreoli 8ad73b3e69 Ecore.Poller is no more an Eo object in C :( 2017-07-16 14:12:32 +02:00
Davide Andreoli 5b9ba62e8f Fix a nasty ecore.x and ecore.input conflict
Both modules register the ECORE_EVENT_* events, so if you use them toghether one of the 2 was failing to run because the events was already registered by the other.

I'm fixing this by keeping a local event map in ecore.input, not the cleaner solution but it's the safer one I can found (in term of backward compatibility)

This fix (at least) epymc in standalone mode (without a wm)
2017-07-15 22:52:39 +02:00
Davide Andreoli 26a4c38d67 New 1.20 API: evas.Map.coords_get 2017-07-15 17:30:19 +02:00
Davide Andreoli 15b29e3ce8 New 1.20 API: elm/edje text_prediction_hint
no tests, as I have no idea on how to use this feature
2017-07-15 17:07:08 +02:00
Davide Andreoli 6bd7daa883 New 1.20 API: elm.Spinner min/max,reached events
with test
2017-07-15 10:44:58 +02:00
Kai Huuhko 5864a9dd2d Documentation: Add better documentation about object lifetime 2017-07-09 16:50:24 +03:00
Kai Huuhko a475ecba44 Elementary: Add import to efl.edje
Since we can't always anticipate when Elm will return a pointer to
an Edje object, let's just have the type always available.
2017-06-18 20:30:52 +03:00
Davide Andreoli eace418f9b Some new widget names
#FollowTheWhiteRabbit
2017-06-18 18:38:25 +02:00
Davide Andreoli bb2a45f013 Open up 1.20 dev cycle 2017-04-21 09:25:30 +02:00
Davide Andreoli 8c7ad9f31f Prepare the 1.19 release 2017-04-18 19:40:42 +02:00
Davide Andreoli d9f06e72a2 Fix evas.Box test
testing the color for a box do not make much sense, and its failing...
2017-04-18 19:22:17 +02:00
Davide Andreoli df221788f0 Fix file_download test
the old url was not reporting the total size anymore, thus making the test fail
2017-04-18 19:21:04 +02:00
Davide Andreoli 6a7e698368 New 1.19 API: evas.Image.load_head_skip 2017-04-15 20:41:14 +02:00
Davide Andreoli 4557daa602 EcoreConUrl is no more an Eo object :(
#FollowTheWhiteRabbit
2017-04-15 20:20:08 +02:00
Kai Huuhko a70c42e681 elm: Don't allow FontProperties to be freed manually
This could easily lead to segfaults and double frees if the lifetime of the Python object is not managed carefully.

We now do the free automatically when the object no longer has references to it.
2017-04-15 16:50:27 +03:00
Davide Andreoli d87e0a5484 another win stack piece 2017-04-04 20:35:29 +02:00
Davide Andreoli 89bb6a1998 Revert "New 1.19 API: elm.Win.stack_*"
This reverts commit f76e272990.

The win stack api has gone in beta,
we can re-revert after the release
2017-04-04 20:22:35 +02:00
Kai Huuhko b06c3151f7 elm: Fix font_properties_get 2017-03-31 17:51:00 +03:00
Davide Andreoli add166fb62 New 1.19 API: elm.Calendar.date_{min,max}
with test
2017-03-15 21:07:10 +01:00
Davide Andreoli 7aec398ede New 1.19 API: elm.ELM_INPUT_PANEL_LAYOUT_VOICE 2017-03-15 19:54:43 +01:00
Davide Andreoli da9258f474 New 1.19 API: elm.GengridItem.custom_size 2017-03-15 19:41:17 +01:00
Davide Andreoli 9c00cbb0fe New 1.19 API: elm.Naviframe "item,activated" cb
with test refactor/reformat
2017-02-27 20:23:02 +01:00
Davide Andreoli 18e2d9c102 Make the new image test py2 compat 2017-02-26 22:54:18 +01:00
Davide Andreoli 71354b3bb8 New 1.19 API: elm.Image.async_open + 4 new callbacks
with test
2017-02-26 22:50:25 +01:00
Davide Andreoli a293b4e124 Split 2 elm.Image tests in 2 files 2017-02-26 21:29:11 +01:00
Davide Andreoli e3224c882a whops, forgot compat wrappers for added enums 2017-02-26 21:08:03 +01:00
Davide Andreoli dccd0ed62f New 1.19 API: ELM_CALENDAR_REVERSE_DAILY 2017-02-26 20:59:38 +01:00
Davide Andreoli 9231e530bf New 1.19 API: elm.Progressbar.is_pulsing
with a stipid test
2017-02-26 10:30:29 +01:00
Davide Andreoli 6f92607ba4 New 1.19 API: elm.Panel "toggled" signal
with test
2017-02-26 09:43:15 +01:00
Davide Andreoli f76e272990 New 1.19 API: elm.Win.stack_*
with test
2017-02-25 12:58:42 +01:00
Davide Andreoli 3e0dbeb7f7 New 1.19 API: elm.Panel.scrollable_content_size_get 2017-02-25 10:57:19 +01:00
Davide Andreoli 98b7b2408f Rename class names accordly to Eo recent changes
This will lead do break sooner or later, for example:
Datetime is internally an Efl.Ui.Clock, so once Clock will be renamed we will be at a closed corner :(

#FollowTheWhiteRabbit
2016-12-28 14:11:48 +01:00
Davide Andreoli ac7013064f Silence lots of Eo errors
more info in the code comment
2016-11-05 17:51:00 +01:00
Davide Andreoli f2f8906968 Respect pep8 2016-11-05 15:14:41 +01:00
Davide Andreoli 032750af77 Fix Gengrid.item_insert_after to do the right thing 2016-11-05 15:01:48 +01:00
Davide Andreoli 16fa850f24 Fix for cython 0.25
New cython do not like our cdef @DEPRECATED decorator implementation,
I'm not able to fix it, so I just rewrite it in pure python.

The new one is a bit simpler, it do not print the source file anymore,
but still augment the documentation.

Tested with Cython 0.24.1 and 0.25.1 on both python 2.7 and 3.5, hope is enough.

#IHateCython
2016-11-05 11:42:26 +01:00
Davide Andreoli 0b03f8b2f3 some cc don't like the way cython use EINA_LOG macros
In some system we saw the compilation fail with this error:
efl/eo/efl.eo.c:1137:60: error: format not a string literal and no format arguments [-Werror=format-security]
   EINA_LOG_DOM_INFO(__pyx_v_3efl_2eo_PY_EFL_EO_LOG_DOMAIN, __pyx_k_Initializing_efl_eo);

so just ignore those warnings
2016-10-24 21:15:03 +02:00
Davide Andreoli 810623dbe4 Tests: use correct FDO icon names
Hope I catched them all
2016-10-22 12:33:32 +02:00
Davide Andreoli 01220931fc Evas: Do not call xxx_callback_del if obj is NULL
@fix
2016-10-22 11:43:25 +02:00
Davide Andreoli 924f291660 Test External: more readable indentation 2016-10-22 11:30:51 +02:00
Davide Andreoli 2e5e96a8dd Test Externals: keep in sync with the C test 2016-10-22 11:25:30 +02:00
Davide Andreoli ea4bc8790d warnings -- 2016-10-14 23:16:25 +02:00
Davide Andreoli 9e25d34920 warnings-- 2016-10-14 23:04:27 +02:00
Davide Andreoli 953f468229 Edje_External: fix a wrong var name
spotted by (now readable) warnings
2016-10-14 22:54:50 +02:00
Davide Andreoli f872e7b8c6 Fix usage of EINA_LOG_* functions
spotted by warnings :)
2016-10-14 22:45:32 +02:00
Davide Andreoli e0d892ecaa Silence some false compiler warnings
This make the output a lot more readable, we can now spot real warnings
2016-10-14 22:43:19 +02:00
Davide Andreoli cb062511b2 Makefile: go with py3 by default
this do not affect normal build (python setup.py xxx)
the Makefile is just a shortcut for devs
2016-10-14 22:41:03 +02:00
Davide Andreoli fa5b944f31 Eo: Eo_Event -> Efl_Event
#FollowTheWhiteRabbit (tm)
2016-10-14 21:29:15 +02:00
Davide Andreoli 99c618fc2b Remove ecore warning about subprocess incompatibility
This conflict seems to not exists anymore, the added test should prove it

Also removed unused return values from the existing exe test

(cherry picked from commit 191af7ac380ab87d29e4886fe07cd02b8dd5afa9)
2016-10-02 09:56:27 +02:00
Davide Andreoli 1a2b8e64f8 small doc fix 2016-09-24 13:58:12 +02:00
Kai Huuhko 6ad9bb3521 Emotion: Document module names and mark module options as deprecated 2016-09-03 22:37:49 +03:00
Kai Huuhko 0217da6c1f Emotion: Change default module_name to gstreamer1 2016-09-03 22:37:19 +03:00
Kai Huuhko f7e96cf0af Elm.Spinner: Add two missing signals and fix documentation issues 2016-08-29 18:44:35 +03:00
Kai Huuhko 58cfedf5af Elm.Genlist: Document new "indent" item style 2016-08-26 21:47:46 +03:00
Kai Huuhko 818e7db2e6 Tests: Disable edje edit test that segfaults 2016-08-21 20:02:01 +03:00
Kai Huuhko 6fa2d3ff95 Follow Eo -> Efl renames 2016-08-21 19:53:41 +03:00
Davide Andreoli 212eca4321 1.19 development starts now 2016-08-21 15:57:21 +02:00
Davide Andreoli cca359974a Prepare the 1.18.0 release 2016-08-20 09:32:49 +02:00
Kai Huuhko f652b6e18f Evas.Smart: Store event string in the spec to ensure it doesn't get decreffed
This fixes event string corruption and segfault in epymc
2016-08-16 22:57:09 +03:00
Kai Huuhko fdab8ed5b6 tests: Fix edje decorators test
Commit dd584b9f79ec41b53ca620ae534fcf84f12e30a9 fixed bad behaviour in edje entry.

Our test was picking up the "changed" and "cursor,changed" signals emitted by edje entry
when its text was set to "" on creation. Raster changed this behaviour, removing the
emissions, so let's do the same in our test and add some future proofing as well.

Fixes T4374
2016-08-16 21:57:21 +03:00
Kai Huuhko b2af779d7d Switch enums to use the old system we had previously
This allows us to support Cython 0.23+
2016-08-16 10:11:34 +03:00
Davide Andreoli 4bd421562d Improve the ecore test suite
no more print and lots more asserts
2016-08-14 13:02:19 +02:00
Davide Andreoli d6fc38ea59 ecore.Exe: implement is_deleted for consistency with other classes 2016-08-14 11:58:49 +02:00
Davide Andreoli 380e7a58ff ecore.FdHandler: implement is_deleted for consistency with other classes 2016-08-14 10:35:58 +02:00
Davide Andreoli 939cd71702 Small Timer docs improvement 2016-08-14 08:55:01 +02:00
Kai Huuhko 0ef56b3a58 setup.py: Fix error handling in uninstall command 2016-08-14 05:03:34 +03:00
Kai Huuhko c955d488f9 setup.py: Blacklist Cython 0.24 2016-08-14 04:41:11 +03:00
Kai Huuhko a575effa6b setup.py: Check that pregenerated files are available when requested 2016-08-14 04:27:45 +03:00
Davide Andreoli 3d31901da7 new 1.18 API: elm.Window.noblank
with test
2016-08-13 15:18:26 +02:00
Davide Andreoli 79979d9d2d New 1.18 API: elm.Slider.indicator_show_on_focus
with test
2016-08-13 13:44:22 +02:00
Davide Andreoli a8c1486aad New 1.18 API: elm.Entry.file_text_format 2016-08-13 12:59:43 +02:00
Kai Huuhko 54adcd9970 Bump copyright year 2016-08-13 01:13:30 +03:00
Kai Huuhko 96ae57ed6a Elm.Photo: Add callback prints to example 2016-08-12 23:57:15 +03:00
Davide Andreoli eaa09b6b16 New 1.18 API: elm.Popup.scrollable 2016-08-12 22:46:27 +02:00
Davide Andreoli 6ff9589e83 New 1.18 API: elm.Popup.align
with test, also added test for the existing orient property
2016-08-12 22:28:00 +02:00
Davide Andreoli 222f32eaf2 New 1.18 API: elm.Configuration.vsync 2016-08-12 13:26:58 +02:00
Davide Andreoli 5258779d41 New 1.18 API: elm.Configuration.icon_theme 2016-08-12 13:22:43 +02:00
Davide Andreoli 5342d77d60 New 1.18 API: elm-Configuration.font_hint_type 2016-08-12 12:59:27 +02:00
Davide Andreoli 7066070992 New 1.18 API: elm.Configuration.first_item_focus_on_first_focusin
Also this one was there from 1.11
2016-08-12 10:23:50 +02:00
Davide Andreoli cfb967333d New 1.18 API: elm.Configuration.accel_preference_override
This one was in real there from 1.11, but we missed it
2016-08-12 10:17:20 +02:00
Davide Andreoli 78d90dd467 New 1.18 API: 3 new getters for elm.Photo
NOTE: the test for the editable property is failing...need to recheck this!
2016-08-12 10:04:49 +02:00
Kai Huuhko 30c2ce90c3 Partial revert of ecd93319ee
This API was never meant to be exposed.
2016-08-12 05:52:23 +03:00
Kai Huuhko 55039295f2 Elm.List: Sync with C API 2016-08-12 02:46:30 +03:00
Kai Huuhko ad2ead12f7 api_coverage.py: Ignore systray 2016-08-12 02:44:22 +03:00
Kai Huuhko ecd93319ee Elm.Image: Sync with C API 2016-08-12 00:13:51 +03:00
Davide Andreoli 187ca5249b Fix the genlist reusable contents test 2016-08-11 11:31:07 +02:00
Davide Andreoli a1bef554e0 New 1.18 API: elm.Object.focus_move_policy_automatic
TBH I think that "automatic" should just have been a new value in the
elm.Object.focus_move_policy enum.... but I really don't have any more
energy to discuss this thing.
2016-08-10 20:59:53 +02:00
Davide Andreoli 23c6ffc8cf Docs and tests for new elm.Label styles
default/left
default/right
marker/left
marker/right
2016-08-10 19:06:50 +02:00
Davide Andreoli 71946bffb3 Mark the ComboBox widget as broken/deprecated.
This is really sad, but the combobox is broken by design and should have been never used in legacy code.

Really, really, sorry about the inconvenience!!
2016-08-10 18:38:32 +02:00
Davide Andreoli bc411cd774 New 1.18 API: elm.Configuration.web_backend 2016-08-10 11:41:49 +02:00
Kai Huuhko aeeee73fda Ecore: Include traceback with subprocess warning 2016-08-09 22:24:11 +03:00
Davide Andreoli 9fb954433e New 1.18 API: elm.Configuration.popup_scrollable 2016-08-09 21:20:44 +02:00
Davide Andreoli 4e57019e1e New 1.18 API: elm.Entry.select_allow
with test
2016-08-09 21:10:16 +02:00
Davide Andreoli f59e7c0c18 New 1.18 API: edje.Edje.part_box_insert_after() 2016-08-09 20:40:02 +02:00
Davide Andreoli e47f403a0b New 1.18 API: elm.Slider.range_enabled/range
with test
2016-08-09 18:52:55 +02:00
Davide Andreoli 2f1aff95c5 New 1.18 API: elm.Configuration.scroll_animation_disabled 2016-08-09 17:22:08 +02:00
Davide Andreoli 01d334b5f6 New 1.18 API: elm.Genlist.filtered_items_count()
with test
2016-08-09 16:21:43 +02:00
Davide Andreoli 105743d304 New 1.18 API: elm.Configuration.scroll_accel_factor 2016-08-09 15:56:25 +02:00
Davide Andreoli c11a7cf227 New 1.18 API: elm Genlist reusable content functionality
with a FAILING test (failing also in C)

(I love to implement broken stuff)
2016-08-09 15:39:35 +02:00
Davide Andreoli 99113cd990 Fix implementation of elm.GenlistItem.all_contents_unset()
the old implementation was not working at all, so I marked it @since 1.18
also added a test for it
2016-08-09 12:56:00 +02:00
Davide Andreoli 9381d46765 New 1.18 API: elm.GengridItem.all_contents_unset()
with test
2016-08-09 12:22:11 +02:00
Davide Andreoli 83656bff33 New 1.18 API: elm.Entry.select_region (get + property)
with test
2016-08-09 10:19:14 +02:00
Davide Andreoli 48eec126bb New 1.18 API: elm.Transit.revert()
with test
2016-08-09 09:51:24 +02:00
Davide Andreoli b37c970587 Fix definition of oe functions
#FollowTheWhiteRabbit (tm)
2016-08-08 18:01:39 +02:00
Davide Andreoli 5a3c19b521 dbus: do not segv atexit under py3
This is a workaround as I cannot find a better way to fix this :(

The real issue is that dbus run some callback in our code after
our shutdown of ecore and eina
2016-08-08 17:20:16 +02:00
Davide Andreoli 02f7eb07dd dbus: fix watch cleanups
EINA_LIST_FREE is wrong here, because the handler is already
removed from the list inside e_dbus_fd_handler_del.
Use EINA_LIST_FOREACH_SAFE to be more correct
2016-08-08 17:08:53 +02:00
Davide Andreoli 4a0310140a dbus: actually make timeouts works
dbus timeout are in millisecs, while ecore need seconds...
so timeouts was broken... since the time of e_dbus
2016-08-08 16:59:59 +02:00
Davide Andreoli d87b3bb9d0 dbus: cleanup timeouts
now timeouts should be much more stable
2016-08-08 16:43:35 +02:00
Davide Andreoli a19f0ad434 dbus: code cleanup
no functional changes
2016-08-08 15:47:35 +02:00
Davide Andreoli 11d23a94f1 dbus: remove unuse field in timer struct
td->interval is never used, so remove it
2016-08-08 15:41:45 +02:00
Davide Andreoli f287a1f98c dbus: rename globals to be consistent
no functional changes
2016-08-08 15:32:44 +02:00
Davide Andreoli ffb294b82f dbus: remove unused code
refcount is never incremented nor used, thus the connection was never properly closed

...shutdown bug still there
2016-08-08 15:29:01 +02:00
Kai Huuhko 78c9fe21af Revert "Remove NullHandler from C library logger"
This reverts commit bc8bac1f1a.
2016-08-05 19:43:28 +03:00
Kai Huuhko 13ea0cbe1d Logger: Fix unicode handling with message file and function string parts 2016-08-05 19:30:26 +03:00
Kai Huuhko f86234dd25 Evas.Smart: Comment out a warning for an issue we can't fix
When a smart event has event_info we need to convert it to a Python object.
We rely on the C library documentation to inform us when an event includes event_info
and assign a conversion function to the event handler based on this and pass the Python
object as an extra parameter to the callback. However when the documentation has omitted
this information we erroneously leave the extra parameter out, making the callbacks have
one less parameter, which our users rely on. Finding out the error after release is
useless since fixing it would mean breaking user callbacks.

This warning informed us at runtime when event_info was non-null but it's pretty much
useless so let's remove it.

Our smart callbacks should never have had two different signatures.
2016-08-05 19:12:44 +03:00
Davide Andreoli fbabb111d8 Fix (and optimize) smart callbacks add/del 2016-08-05 17:20:33 +02:00
Davide Andreoli 283efd1a28 Logger: do not fail if the error msg contain invalid chars
now invalid chars are replaced by an "?"
2016-08-05 15:09:06 +02:00
Davide Andreoli 12217e9c2a Add docs (and repr) for ECORE_EXE_TERM_WITH_PARENT 2016-08-05 14:23:42 +02:00
Kai Huuhko bc8bac1f1a Remove NullHandler from C library logger
This makes py-efl spew out an error if your app hasn't been setup to handle the logging.

If you don't like this, complain to Dave.
2016-08-04 14:31:21 +03:00
Kai Huuhko 0916eae9ff Add logging to the rest of the individual unit tests 2016-08-03 14:47:42 +03:00
Kai Huuhko d6bad7a838 Enable logging in elm image icon unit test 2016-08-03 12:10:12 +03:00
Davide Andreoli 2ebc0dcf74 2 more class name tests 2016-08-02 19:30:49 +02:00
Davide Andreoli e2edab7b1c tests: 2 small fixes
* ElmWeb external test skipped for the moment.
* Decorators test fixed by adding the new "edje,language,none" signal ti the list of expected.
2016-08-01 20:05:04 +02:00
Davide Andreoli 11c7d38a56 rename Elm_Frame -> Efl_Ui_frame
#FollowTheWhiteRabbit (tm)
2016-08-01 17:24:15 +02:00
Davide Andreoli 9b5b526620 Ecore.Idlers are no more an Eo object in C :(
#TheWhiteRabbitIsDead
2016-08-01 17:09:22 +02:00
Davide Andreoli 8f23c26d89 Ecore.Animator is no more an Eo object in C :(
#TheWhiteRabbitIsDead
2016-08-01 16:50:57 +02:00
Davide Andreoli 5680c76a49 Adjust dns lookup test
something changed in the lookup behaviour as this test was passing in the past,
but indeed the new behaviour seems more correct
2016-07-24 14:37:14 +02:00
Davide Andreoli 082456600a Rename some classes to new Eo names
#FollowTheWhiteRabbit (tm)
2016-06-26 16:17:20 +02:00
Davide Andreoli be3069b280 Update to new Eo callback stop mechanism
#FollowTheWhiteRabbit (tm)
2016-06-26 15:54:36 +02:00
Davide Andreoli 36ca39e015 Follow recent Eo class names change 2016-06-03 14:21:22 +02:00
Davide Andreoli 243664d738 Add a test to check eo class names
a bit hackish, but do his work.
And is important to check those names now that efl class names are going to be shuffled around :P
2016-06-03 14:20:41 +02:00
Davide Andreoli e0456df2a2 better indent 2016-06-03 11:45:08 +02:00
Davide Andreoli 51946aaf8b Follow eo class rename 2016-06-03 11:14:40 +02:00
Davide Andreoli cadf409404 Going back to use eo_del instead of eo_unref
...still untested as the bindings are broken for something else atm
2016-06-03 09:14:31 +02:00
Davide Andreoli 7fd0f973ca Safer version of the parent hack
not all objects have a bindable parent, Timer fe have Loop as parent and we don't have bindings for Loop.
2016-05-29 15:49:17 +02:00
Davide Andreoli c2c09d4dc9 Hack to keep the legacy behavior of Eo.parent 2016-05-29 15:41:46 +02:00
Davide Andreoli bae6125061 Slideshow: Fix doc to reflect the real behaviour of the widget. 2016-05-23 19:50:01 +02:00
Bernhard M. Wiedemann 5bbbed95c0 Allow to skip last_updated and sphinx_version
Summary:
this part is a copied from Sphinx-1.3.6 's
sphinx/themes/basic/layout.html

and allows distributions to drop the build date
to have reproducible builds

Test Plan:
in doc/conf.py set
html_last_updated_fmt = None
and make sure that generated html files do not contain
Last updated on None

Reviewers: DaveMDS

Differential Revision: https://phab.enlightenment.org/D3781
2016-05-23 19:22:12 +02:00
Davide Andreoli eca2dfaa0b Follow Eo changes
eo_del -> eo_unref
eo_key_del -> eo_key_set(NULL)
EO_BASE_EVENT_DEL -> EO_EVENT_DEL
2016-05-18 21:38:46 +02:00
Davide Andreoli aba5250634 Follow recent Eo changes 2016-04-24 12:11:07 +02:00
Kai Huuhko 41c1779e81 Shuffle in the latest Eo memes 2016-03-19 01:08:33 +02:00
Kai Huuhko 77d023dfe1 More Eo updates 2016-03-09 20:07:05 +02:00
Kai Huuhko 05c19962dc Follow changes in Eo
- version 4 (eo_add changes coming later)
- events
2016-03-04 11:10:11 +02:00
Davide Andreoli fea03a787c Fix 2 examples to work with py2 2016-02-08 19:42:22 +01:00
Davide Andreoli b6f729dc3a Open the 1.18 development cycle 2016-02-07 20:22:44 +01:00
Davide Andreoli 6668176720 Prepare the 1.17 release 2016-02-06 14:59:44 +01:00
Kai Huuhko 9a3d441f1c Update TODO 2016-02-03 14:05:51 +02:00
Kai Huuhko d5656fdd3d Elm.Genlist: Add small optimizations for filter and state cbs 2016-02-03 14:05:51 +02:00
Kai Huuhko ba7bf818d8 Elm.MultiButtonEntry: Correct documentation 2016-02-03 14:05:38 +02:00
Kai Huuhko 1189e17fe0 Elm.FileSelector: Fix ref leak 2016-02-02 21:41:37 +02:00
Kai Huuhko fc987411da Clean up cruft code 2016-02-02 21:37:02 +02:00
Kai Huuhko 523fe8ad4d Elm.MultiButtonEntry: Fix filter callback 2016-02-02 21:23:02 +02:00
Kai Huuhko 3661a78c96 Elm.MultiButtonEntry: Attempt to fix leaks, add more docs 2016-02-02 20:30:20 +02:00
Kai Huuhko caef23bb34 Trivial todo note updates and doc fix 2016-02-02 14:23:00 +02:00
Kai Huuhko 684ad779dc Edje: Make ExternalParam_from_ptr a C only function 2016-02-02 14:11:08 +02:00
Davide Andreoli 625500bffc fix the url for the remote image test 2016-01-23 19:28:41 +01:00
Davide Andreoli 0ecf04eba9 just a bit of indentation 2016-01-23 18:44:06 +01:00
Davide Andreoli 11d3007f02 New 1.17 API: evas.Object.paragraph_direction 2016-01-23 18:34:13 +01:00
Davide Andreoli cab804e69b New 1.17 API: elm.Notity.dismiss() 2016-01-23 16:40:49 +01:00
Davide Andreoli 190d0aa7b6 New 1.17 API: elm.Popup.dismiss() 2016-01-23 16:32:08 +01:00
Davide Andreoli 24318c8d33 New 1.17 API: elm.Configuration.profile_* family functions 2016-01-23 15:56:25 +01:00
Kai Huuhko 6980ffb0e4 Elementary: Use the private internal_data dict instead of abusing user data dict 2016-01-23 15:55:49 +02:00
Kai Huuhko fa69908d71 Eo: Add a private dict which can be used for callbacks etc. 2016-01-23 15:38:06 +02:00
Davide Andreoli 86aa8c5138 New 1.17 API: elm.Ctxpopup "geometry,update" smart cb 2016-01-23 14:33:01 +01:00
Davide Andreoli 9809eb2739 New 1.17 API: ELM_GEN[GRID/LIST]_ITEM_SCROLLTO_BOTTOM
The grid enum was a bit messed, it was using the list enums, fixed and leave the old one in place for compatibility
2016-01-23 13:46:43 +01:00
Davide Andreoli 4f8dfc195f New elm widget: Combobox
with docs and example
2016-01-23 12:19:20 +01:00
Davide Andreoli 078d440e05 New 1.17 API: edje.Edje.color_class_clear() 2016-01-21 23:03:11 +01:00
Davide Andreoli e087d0d918 New 1.17 API: edje.Edje.text_class_del() 2016-01-21 22:51:20 +01:00
Davide Andreoli 920a8891e6 whops, forgot to commit this file in a previous commit 2016-01-21 22:32:08 +01:00
Davide Andreoli f03f83fba9 New 1.17 API: elm.Configuration.context_menu_disabled 2016-01-21 22:31:07 +01:00
Davide Andreoli 926c325de8 New 1.17 API: edje size_class family functions 2016-01-21 21:33:23 +01:00
Davide Andreoli 005dd26f73 Implemented Genlist filter ability
It is somehow not perfectly working, see TODO for more info
2016-01-20 22:55:43 +01:00
Davide Andreoli 90595ffdca Gengrid: a small doc improvement 2016-01-18 21:25:00 +01:00
Davide Andreoli fc68b43317 ecore_con.Url: do not fail when receiving an event that is not for us.
The url callbacks are called for EVERY ecore_con usage, object_from_instance
can fail in case the Url is not generated from us (for example an elm Image that
load the data from the net). So just ignore those events.
2016-01-18 21:24:26 +01:00
Davide Andreoli 458121f6be Moved (un)focused and language,changed events down to Object.
There is no need to replicate this events in every widget, they belong to Object
2016-01-10 13:09:19 +01:00
Davide Andreoli f3e6315413 Add a new module: ecore_input
as always with docs and example
2016-01-08 22:18:49 +01:00
Davide Andreoli 592467c7bd ethumb test: more correct global usage 2016-01-04 20:14:58 +01:00
Davide Andreoli 1599140196 Forgot since 1.17 in last commits 2016-01-03 18:59:47 +01:00
Davide Andreoli 0021e4a186 oh, this is really important ... :) 2016-01-03 18:51:38 +01:00
Davide Andreoli 17df9e69aa Revamp old and broken EthumbClient module
This was not functional at all, so I broke the API "a bit"
2016-01-03 18:50:33 +01:00
Davide Andreoli 93d2c01002 Implemented efl.Ethumb.Ethumb class.
With docs and an example

EthumbClient will follow asap
2016-01-03 16:48:45 +01:00
Davide Andreoli e963e6d061 emotion test: another harmless leftover removed 2016-01-03 16:48:45 +01:00
Davide Andreoli 8af35d3f56 emotion test: remove an unwanted/unused import 2016-01-03 16:48:45 +01:00
Kai Huuhko 8f2baa86b5 utils.deprecated: Fix compatibility with Python 3.5 2016-01-03 09:32:05 +02:00
Kai Huuhko 6c16e2f746 Ecore.Exe: Add missing documentation for the Events 2015-12-25 21:17:14 +02:00
Kai Huuhko 16f7cb1a24 api_coverage.py: Include all files in cdef search
Fixes Elm
2015-12-25 21:17:14 +02:00
Davide Andreoli 06cb7ad598 More tests on GenlistItem show/bring_in 2015-12-20 12:25:22 +01:00
Kai Huuhko 75fa5ff256 Elementary.dnd: Fix various leftover issues 2015-12-09 21:26:29 +02:00
Kai Huuhko 5d73c59088 print()-- 2015-12-09 21:02:59 +02:00
Kai Huuhko 453c2a123c Elementary: Implement drag and drop
Has some issues which we can work on later, should be API stable now.
2015-12-09 20:58:06 +02:00
Davide Andreoli 8e7616c1b3 Add test/example for Genlist tree 2015-12-07 12:20:49 +01:00
Davide Andreoli 76e94bcbf8 just a note 2015-11-16 20:46:58 +01:00
Davide Andreoli eaf3110089 A new ecore module: ecore_con
It's now super easy to perform various network task in a full efl fashion.
Implemented "Lookup" for dns query and "Url" to perform http requests.
"Server" will come soon.

Comes with quite complete docs, examples and unit tests
2015-11-16 20:45:07 +01:00
Davide Andreoli f01ac0788e Open the 1.17 development phase 2015-11-15 21:28:14 +01:00
Davide Andreoli d4f355f584 2 small fix in docs 2015-11-15 21:09:06 +01:00
Davide Andreoli 5594375fac test: show python-efl and python versions in win title 2015-11-14 17:54:21 +01:00
Davide Andreoli aceff14567 Prepare the 1.16 release 2015-11-14 17:41:57 +01:00
Davide Andreoli 8ad08e8ef8 New 1.16 API: various next_item_get/set 2015-11-14 17:27:49 +01:00
Davide Andreoli ed5f93850f New 1.16 API: Elm.Object.focus_region_show_mode 2015-11-14 16:37:20 +01:00
Davide Andreoli 435e57ca44 rename Hoversel API label_auto_changed->auto_update 2015-10-20 21:23:05 +02:00
Davide Andreoli fd0b963651 Implemented TablePadding test 2015-10-20 21:22:09 +02:00
Davide Andreoli a7c8b2d40d New 1.16 API: Hoversel.label_auto_changed
...what a bad name for this prop
2015-10-07 22:05:28 +02:00
Davide Andreoli b82ed6f029 New 1.16 API: Configuration.scroll_thumbscroll_smooth_* 2015-10-07 20:58:21 +02:00
Davide Andreoli df1719d4c9 Blacklist Cython 0.23.X
The 0.23 series break our enum usage, 0.24 will come with a new enum
system, so wait for it and blacklist the broken one for now.
2015-10-06 20:54:49 +02:00
Davide Andreoli 3c20338884 new 1.16 API: Index.standard_priority and IndexItem.priority 2015-10-06 20:39:51 +02:00
Davide Andreoli 95846a8eaa Genlist: new 1.16 'changed' signal 2015-10-06 19:59:51 +02:00
Davide Andreoli e9c55b7f5e Add missed doc for ObjectItem.tooltip_window_mode 2015-08-24 22:50:08 +02:00
Davide Andreoli 28812962d5 Rewamped genlist tests
* splitted each test in a single file
* use new style imports
* some other small improvements here and there
2015-08-16 16:43:43 +02:00
Davide Andreoli 191ce5c22c Improve a bit Genlist documentation
This can be improved lots more, but I'm out of time :(
2015-08-16 12:10:46 +02:00
Davide Andreoli 40ac305d0d GenlistItem.data is now also writable 2015-08-15 13:36:00 +02:00
Davide Andreoli d0026d6103 Add the missed prop elm.Object.tooltip_orient 2015-08-12 09:54:07 +02:00
Davide Andreoli 1dc4053ce5 Re-enable the evas callbacks len test
Dunno why this was commented out, seems usefull to me
2015-08-05 15:06:50 +02:00
Davide Andreoli 7f132af8d6 Update release process instructions 2015-08-05 15:05:20 +02:00
Davide Andreoli 870611de99 Open the 1.16 development phase 2015-08-05 14:21:38 +02:00
Davide Andreoli 0834e66762 Prepare the 1.15.0 release 2015-08-04 10:31:46 +02:00
Davide Andreoli 43591f8b8e Docs: Add classes that was not documented 2015-08-04 09:21:21 +02:00
Davide Andreoli 3de1d7be24 New 1.15 API: evas.Textblock.obstacle_* functions
untested, but quite simple api, should work
2015-08-03 18:53:19 +02:00
Davide Andreoli 634c56d14c New 1.15 API: Window.autohide 2015-08-03 18:16:26 +02:00
Davide Andreoli f3b3858902 New 1.15 API: Configuration.transition_duration_factor 2015-08-03 17:04:05 +02:00
Davide Andreoli f3df1b4cc9 New 1.15 API: Scroller.wheel_disabled, with test 2015-08-03 16:37:25 +02:00
Davide Andreoli 7f5c30c7fd New 1.15 signal for Entry: context,open 2015-08-03 16:20:40 +02:00
Davide Andreoli 281cb65c1a Entry: Fix the name of the callback_rejected_del function 2015-08-03 16:17:33 +02:00
Davide Andreoli 130f1db451 New 1.15 API: Object.focus_move_policy, with test. 2015-08-03 16:09:16 +02:00
Davide Andreoli 97dadf30da New 1.15 API: EVAS_CALLBACK_CANVAS_VIEWPORT_RESIZE, with test
Also fixed EVAS_CALLBACK_AXIS_UPDATE that was half implemented
2015-08-03 14:09:36 +02:00
Davide Andreoli 5e138dcdf2 Fix build on OSX
should fix T2440
2015-07-12 19:42:56 +02:00
Davide Andreoli 4ad8fc60ae Fix build when ecore-x is not available 2015-07-12 19:35:55 +02:00
Kai Huuhko 37930f389d Follow recent changes in Eo 2015-06-01 17:59:47 +03:00
Davide Andreoli ac685358bd Docs: fix a small error in Ctxpopup 2015-05-17 14:52:18 +02:00
Davide Andreoli 92c05e801a Doc for SegmentControlItem 2015-05-14 20:46:42 +02:00
Kai Huuhko 3dd36bd770 Elm: Replace FIXME in init about argc/v with description 2015-05-09 20:54:44 +03:00
Kai Huuhko 9b234a4266 Elm: Fix module init from embedded interpreter
sys.argv doesn't exist there
2015-05-09 20:16:45 +03:00
Kai Huuhko a1f36bb073 Elm: Unify modules into a monolithic module 2015-05-07 22:37:48 +03:00
Davide Andreoli dba05cc1ba Add notes for pypi upload 2015-05-07 20:56:55 +02:00
520 changed files with 26937 additions and 19090 deletions

5
.gitignore vendored
View File

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

10
.pylintrc Normal file
View File

@ -0,0 +1,10 @@
[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,

154
CODING
View File

@ -1,3 +1,28 @@
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
=====
@ -23,6 +48,46 @@ Style
...also because I found it more readable and I like it more :P -davemds-
Documentation cheatsheet
========================
* Links:
:class:`List` (for classes)
:func:`elm_list_go` (for functions)
:attr:`homogeneous` (for properties)
:ref:`Elm_List_Mode` (for enums)
:data:`ELM_LIST_LIMIT` (for enum values)
:func:`efl.evas.Object.delete` (for items not in current scope)
:func:`~efl.evas.Object.delete` (will show it short, just "delete")
* Formatting:
``ELM_LIST_SCROLL`` (for enum values, bools and None)
* Versions:
.. versionadded:: 1.15
.. versionchanged:: 1.15
Description of the change.
.. deprecated:: 1.15
Use the blah, blah way instead.
* Notes:
.. seealso:: :py:attr:`mode`
.. note:: Some text to be noted, blah, blah, blah,
some more information for this note, etc.
.. warning:: Same as note, but the box will be red
some more information for this warning, etc.
Design patterns
===============
@ -58,61 +123,54 @@ Tips
Release process instructions
============================
* Announce at enlightenment-release@lists.sourceforge.net that you are planning
for the release
* Change versions in efl/__init__.py (ex: 1.9.0)
* 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)
* Update the ChangeLog 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 that tarballs are
ready for testing
- setup.py build_doc -b changes ...and manually merge from the html file
... wait 24 hours, fix any issues found. In the mean time you can prepare the
release announcement for phame/ml.
* 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)
* 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
* 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
* Publish the blog post on phame (Official Announcements)
* Announce the release to release@lists.enlightenment.org
(an alias for e-announce etc.)
* Update download link on website (clone website/www.git, edit, commit, push)
* Announce the release to release@lists.enlightenment.org and
enlightenment-release@lists.sourceforge.net
* Change versions again in efl/__init__.py (ex: 1.9.99)
more info at:
phab.enlightenment.org/w/release_procedure/
for more info:
--------------
* packaging.python.org
* phab.enlightenment.org/w/release_procedure/
* phab.enlightenment.org/w/hosting/ssh/
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

288
ChangeLog
View File

@ -1,16 +1,298 @@
===================
2015-08-03 v1.15.0
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
===================
Fixes:
* Fixes for cython 0.25 compatibility
* elm.font_properties_get
* elm.Gengrid.item_insert_after now work as expected
Changes:
* Removed ecore warning about subprocess incompatibility, with test to prove it
* Emotion: changed default module_name to "gstreamer1"
* elm.font_properties_free: Changed to no-op as we now do the free
automatically when there are no more references to the FontProperties object
* elm.Panel.scrollable_content_size is now also readable
* EcoreConUrl is no more an Eo object in C
Additions:
* evas.Image.load_head_skip
* elm.ELM_INPUT_PANEL_LAYOUT_VOICE
* elm.ELM_CALENDAR_REVERSE_DAILY
* elm.Calendar.date_max
* elm.Calendar.date_min
* elm.GengridItem.custom_size
* elm.Image.async_open
* elm.Image.callback_load_cancel_add
* elm.Image.callback_load_error_add
* elm.Image.callback_load_open_add
* elm.Image.callback_load_ready_add
* elm.Naviframe.callback_item_activated_add
* elm.Panel.callback_toggled_add
* elm.Progressbar.is_pulsing
* elm.Spinner.callback_drag_start_add
* elm.Spinner.callback_drag_stop_add
===================
2016-08-22 v1.18.0
===================
Fixes:
* Fixed (workaround) dbus crash on python >= 3.5
* Fixed Logger module to not fail on unicode error messages
Changes:
* Changed enums implementation to gain compatibility with Cython > 0.22
* Docs: Allow to skip last_updated and sphinx_version
* elm.Combobox: The combobox widget has been deprecated.
* elm.Photo.editable property is now also readable
* elm.Photo.fill_inside property is now also readable
* elm.Photo.size property is now also readable
Additions:
* ecore.Exe.is_deleted
* ecore.FdHandler.is_deleted
* edje.Edje.part_box_insert_after
* elm.Configuration.accel_preference_override
* elm.Configuration.first_item_focus_on_first_focusin
* elm.Configuration.font_hint_type
* elm.Configuration.icon_theme
* elm.Configuration.popup_scrollable
* elm.Configuration.scroll_accel_factor
* elm.Configuration.scroll_animation_disabled
* elm.Configuration.vsync
* elm.Configuration.web_backend
* elm.Entry.file_text_format
* elm.Entry.select_allow
* elm.Entry.select_region
* elm.GengridItem.all_contents_unset
* elm.Genlist.filtered_items_count
* elm.GenlistItem.all_contents_unset
* elm.List.multi_select_mode (and the Elm_Object_Multi_Select_Mode enum)
* elm.Object.focus_move_policy_automatic
* elm.Popup.align
* elm.Popup.scrollable
* elm.Slider.range
* elm.Slider.range_enabled
* elm.Slider.indicator_show_on_focus
* elm.Transit.revert
* elm.Window.noblank
==================
2016-01-7 v1.17.0
==================
Fixes:
* Fixed compatibility with python 3.5 (utils.deprecated was broken)
* Various ref leaks fixed in elementary
* Multibuttonentry filter callback
Additions:
* ecore_input Module
* ecore_con Module
* ecore_con.Url Class
* ecore_con.Lookup Class
* evas.Object.paragraph_direction
* evas.EVAS_BIDI_DIRECTION_INHERIT
* edje.Edje.color_class_clear
* edje.Edje.size_class_del
* edje.Edje.size_class_get
* edje.Edje.size_class_set
* edje.Edje.text_class_del
* edje.size_class_del
* edje.size_class_get
* edje.size_class_list
* edje.size_class_set
* ethumb Module
* ethumb.Ethumb Class
* ethumb_client Module
* ethumb_client.EthumbClient Class
* elm.Combobox Class
* elm.Configuration.context_menu_disabled
* elm.Configuration.profile_derived_add
* elm.Configuration.profile_derived_del
* elm.Configuration.profile_exists
* elm.Configuration.profile_list_full
* elm.Configuration.profile_save
* elm.Ctxpopup.callback_geometry_update_add
* elm.ELM_GENGRID_ITEM_SCROLLTO_BOTTOM
* elm.Gengrid.drag_item_container_add
* elm.Gengrid.drag_item_container_del
* elm.Gengrid.drop_item_container_add
* elm.Gengrid.drop_item_container_del
* elm.ELM_GENLIST_ITEM_SCROLLTO_BOTTTOM
* elm.Genlist.callback_filter_done_add
* elm.Genlist.drag_item_container_add
* elm.Genlist.drag_item_container_del
* elm.Genlist.drop_item_container_add
* elm.Genlist.drop_item_container_del
* elm.Genlist.filter
* elm.MultiButtonEntry.filter_remove
* elm.Notify.callback_dismissed_add
* elm.Notify.dismiss
* elm.Object.callback_moved_add
* elm.Object.drag_action_set
* elm.Object.drag_start
* elm.Object.drop_target_add
* elm.Object.drop_target_del
* elm.Popup.callback_dismissed_add
* elm.Popup.dismiss
===================
2015-11-14 v1.16.0
===================
Additions:
* elm.Configuration.scroll_thumbscroll_smooth_amount
* elm.Configuration.scroll_thumbscroll_smooth_start
* elm.Configuration.scroll_thumbscroll_smooth_time_window
* elm.Genlist.callback_changed_add
* elm.GenlistItem.data is now also writable
* elm.Object.focus_next_item_get
* elm.Object.focus_next_item_set
* elm.Object.focus_region_show_mode
* elm.Object.tooltip_orient
* elm.ObjectItem.focus_next_item_get
* elm.ObjectItem.focus_next_item_set
* elm.ObjectItem.focus_next_object_get
* elm.ObjectItem.focus_next_object_set
===================
2015-08-05 v1.15.0
===================
Fixes:
Improvements:
* elm.Entry: Fixed name of the callback_rejected_del function
* Fixed build on OSX
* Fixed build when ecore-x is not available
* Fixed module init from embedded interpreter
Changes:
* Elm: Unify modules into a monolithic module
Additions:
Deprecation:
* elm.Configuration.transition_duration_factor
* elm.Window.autohide
* elm.ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN
* elm.Entry.callback_context_open_add/del
* elm.ELM_FOCUS_MOVE_POLICY_KEY_ONLY
* elm.Object.focus_move_policy
* elm.Scrollable.wheel_disabled
* evas.Textblock.obstacle_add
* evas.Textblock.obstacle_del
* evas.Textblock.obstacles_update
* evas.EVAS_CALLBACK_CANVAS_VIEWPORT_RESIZE
===================

18
INSTALL
View File

@ -3,22 +3,19 @@
===============
* Python 2.6 or higher, 3.2 or higher (http://www.python.org/)
- Tested with Python 2.7 / 3.3 / 3.4
- Tested with Python 3.8
* Cython 0.21 or higher (http://cython.org/)
- Tested with Cython 0.21.2
- Tested with Cython 0.29.16
* 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
* EFL must be the same minor version of the bindings,
es. python-efl 1.24 need efl 1.24
* To build the DOCS you will also need:
- python-sphinx
- [optional] graphviz
* At least 4GB of free RAM to build
2. BUILDING PYTHON-EFL
@ -29,6 +26,11 @@
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

@ -16,7 +16,7 @@
#
PY = python
PY = python3
.PHONY: build
@ -29,6 +29,11 @@ install:
$(PY) setup.py install
.PHONY: uninstall
uninstall:
$(PY) setup.py uninstall
.PHONY: doc
doc:
$(PY) setup.py build build_doc
@ -44,12 +49,20 @@ clean:
$(PY) setup.py clean --all
.PHONY: maintaner-clean
maintaner-clean:
.PHONY: maintainer-clean
maintainer-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,bztar
$(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

7
README
View File

@ -1,7 +0,0 @@
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)

92
README.md Normal file
View File

@ -0,0 +1,92 @@
# 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.

45
TODO
View File

@ -1,45 +0,0 @@
BUGS
====
* EdjeEdit: PartState API does not work
* Elm.Map: overlays_show segfaults, scrollers in examples are jumpy
* Elementary: when we use custom function callbacks we usually leak some
reference around, some examples:
- Fileselector.custom_filter_append()
- Multibuttonentry.format_function_set()
- Multibuttonentry.filter_append()
- Multibuttonentry.filterprepend()
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
* Evas: SmartObject needs testing
* Improve ethumb
* 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
---
* Drag-n-Drop
* 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

@ -24,6 +24,12 @@ c_exclude_list = [
"elm_access", # Access disabled until 1.9
"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)
@ -163,7 +169,9 @@ def get_pyapis(pxd_path, header_name, prefix):
for path, dirs, files in os.walk(pxd_path):
for f in files:
if not f.endswith(".pxd"):
# if not f.endswith(".pxd"):
# continue
if f.endswith(".pyc"):
continue
open_args = (os.path.join(path, f),)
open_kwargs = dict(mode="r")

View File

@ -1,153 +0,0 @@
# 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,40 +1,47 @@
# -*- coding: utf-8 -*-
#
# Python Bindings for EFL Elementary documentation build configuration file, created by
# sphinx-quickstart on Thu Jun 28 09:21:25 2012.
# Configuration file for the Sphinx documentation builder.
#
# 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.
# 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
import sys, os, platform
# pylint: disable=invalid-name
import os
import sys
import platform
# -- Path setup --------------------------------------------------------------
# If extensions (or modules to document with autodoc) are in another directory,
# 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'))
# 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'))
# Delete any previously imported efl package
if "efl" in sys.modules:
del sys.modules["efl"]
if 'efl' in sys.modules:
del sys.modules['efl']
# -- General configuration -----------------------------------------------------
# -- Project information -----------------------------------------------------
project = 'Python EFL'
author = 'The Python-EFL community (see AUTHORS)'
copyright = '2008-2022, ' + author # pylint: disable=redefined-builtin
# -- General configuration ----------------------------------------------------
# If your documentation needs a minimal Sphinx version, state it here.
needs_sphinx = '1.1'
needs_sphinx = '3.1'
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
@ -46,113 +53,36 @@ 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'
# 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'
# master_doc = 'index'
# 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_flags = [
'members',
'show-inheritance',
# 'inherited-members',
# 'undoc-members',
]
autoclass_content = "both"
autodoc_docstring_signature = True
# autodoc_member_order = "bysource"
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'
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
return None
params = list()
params = []
for param in (p.strip() for p in signature[1:-1].split(',')):
if param != 'self':
params.append(param.rpartition(' ')[2])
@ -163,28 +93,28 @@ def autodoc_process_signature(app, what, name, obj, options, signature, return_a
# -- Inheritance Diagram ------------------------------------------------------
try:
import gv
import gv # pylint: disable=unused-import
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 = "svg" # png (default) or svg
graphviz_output_format = 'png' # 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)
)
@ -193,10 +123,11 @@ 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' # EFL dark style
html_theme = 'efldoc' # Our custom 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
@ -211,16 +142,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,
@ -231,10 +162,6 @@ 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 = {}
@ -270,121 +197,3 @@ 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

@ -0,0 +1,6 @@
.. currentmodule:: efl.ecore_con
:class:`efl.ecore_con.Lookup` Class
===================================
.. autoclass:: efl.ecore_con.Lookup

9
doc/ecore/class-url.rst Normal file
View File

@ -0,0 +1,9 @@
.. currentmodule:: efl.ecore_con
:class:`efl.ecore_con.Url` Class
===================================
.. autoclass:: efl.ecore_con.Url
.. autoclass:: efl.ecore_con.EventUrlComplete
.. autoclass:: efl.ecore_con.EventUrlProgress
.. autoclass:: efl.ecore_con.EventUrlData

View File

@ -15,8 +15,8 @@ great responsiveness without the need for threads(or any other concurrency).
Timers
------
:py:class:`Timers<efl.ecore.Timer>` serve two main purposes: doing something at a specified time and
repeatedly doing something with a set interval.
:py:class:`Timers<efl.ecore.Timer>` serve two main purposes: doing something at
a specified time and repeatedly doing something with a set interval.
Animators
@ -73,14 +73,6 @@ error. Any valid file descriptor can be used with this API, regardless of if
was gotten with an OS specific API or from ecore.
see :py:class:`FdHandler<efl.ecore.FdHandler>`
File download
-------------
Ecore provide the :py:class:`FileDownload<efl.ecore.FileDownload>` class
to perform asyncronous download of files from the net. Two callbacks are
used to inform the user while progress occurs and when the download has
finished.
File monitor
------------
@ -91,6 +83,25 @@ Events will be generatd everytime a file or directory (that live in the
give path) is created/deleted/modified.
File download
-------------
Ecore provide the :py:class:`FileDownload<efl.ecore.FileDownload>` class
to perform asyncronous download of files from the net. Two callbacks are
used to inform the user while progress occurs and when the download has
finished.
Ecore Con
---------
The ecore_con module provide various utilities to perform different network
related tasks. Everything provided in a fully async way. Most notable are the
:class:`efl.ecore_con.Lookup` class to perform DNS requests, the
:class:`efl.ecore_con.Url` class to perform HTTP requests and the
:class:`efl.ecore_con.Server` class to implement your own server.
API Reference
-------------
@ -99,6 +110,8 @@ API Reference
:titlesonly:
module-ecore
module-ecore_input
module-ecore_con
Inheritance diagram

View File

@ -0,0 +1,5 @@
.. automodule:: efl.ecore_con
:exclude-members: Url, EventUrlComplete, EventUrlProgress, EventUrlData,
Lookup, ConEventFilter

View File

@ -0,0 +1,3 @@
.. automodule:: efl.ecore_input

View File

@ -6,10 +6,30 @@
.. 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 <http://docs.python.org/2/library/logging.html>`_
PyEFL provides `logging <https://docs.python.org/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

@ -1,2 +1,85 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.actionslider
Actionslider
############
.. image:: /images/actionslider-preview.png
Widget description
==================
An actionslider is a switcher for two or three labels with
customizable magnet properties.
The user drags and releases the indicator, to choose a label.
Labels can occupy the following positions.
- Left
- Right
- Center
Positions can be enabled or disabled.
Magnets can be set on the above positions.
When the indicator is released, it will move to its nearest "enabled and
magnetized" position.
Emitted signals
===============
- ``selected`` - when user selects an enabled position (the label is
passed as event info)".
- ``pos_changed`` - when the indicator reaches any of the
positions("left", "right" or "center").
Layout text parts
=================
- ``indicator`` - An indicator label of the actionslider
- ``left`` - A left label of the actionslider
- ``right`` - A right label of the actionslider
- ``center`` - A center label of the actionslider
Enumerations
============
.. _Elm_Actionslider_Pos:
Actionslider positions
----------------------
.. data:: ELM_ACTIONSLIDER_NONE
No position
.. data:: ELM_ACTIONSLIDER_LEFT
Left position
.. data:: ELM_ACTIONSLIDER_CENTER
Center position
.. data:: ELM_ACTIONSLIDER_RIGHT
Right position
.. data:: ELM_ACTIONSLIDER_ALL
All positions
Inheritance diagram
===================
.. inheritance-diagram:: Actionslider
:parts: 2
.. autoclass:: Actionslider

View File

@ -1,2 +1,58 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.background
Background
##########
.. image:: /images/background-preview.png
Widget description
==================
The background widget is used for setting a solid color, image or Edje group
as a background to a window (unless it has transparency enabled) or any
container object.
It works just like an image, but has some properties useful to a
background, like setting it to tiled, centered, scaled or stretched.
Layout content parts
====================
- ``overlay`` - overlay of the bg
Enumerations
============
.. _Elm_Bg_Option:
Background display modes
------------------------
.. data:: ELM_BG_OPTION_CENTER
Center
.. data:: ELM_BG_OPTION_SCALE
Scale
.. data:: ELM_BG_OPTION_STRETCH
Stretch
.. data:: ELM_BG_OPTION_TILE
Tile
Inheritance diagram
===================
.. inheritance-diagram:: Background
:parts: 2
.. autoclass:: Background

View File

@ -1,2 +1,118 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.box
Box
###
.. image:: /images/box-preview.png
Widget description
==================
A box arranges objects in a linear fashion, governed by a layout function
that defines the details of this arrangement.
By default, the box will use an internal function to set the layout to
a single row, either vertical or horizontal. This layout is affected
by a number of parameters, such as the homogeneous flag set by
:py:attr:`~Box.homogeneous`, the values given by :py:attr:`~Box.padding` and
:py:attr:`~Box.align` and the hints set to each object in the box.
For this default layout, it's possible to change the orientation with
:py:attr:`~Box.horizontal`. The box will start in the vertical orientation,
placing its elements ordered from top to bottom. When horizontal is set,
the order will go from left to right. If the box is set to be
homogeneous, every object in it will be assigned the same space, that
of the largest object. Padding can be used to set some spacing between
the cell given to each object. The alignment of the box, set with
:py:attr:`~Box.align`, determines how the bounding box of all the elements
will be placed within the space given to the box widget itself.
The size hints of each object also affect how they are placed and sized
within the box. :py:attr:`~efl.evas.Object.size_hint_min` will give the minimum
size the object can have, and the box will use it as the basis for all
latter calculations. Elementary widgets set their own minimum size as
needed, so there's rarely any need to use it manually.
:py:attr:`~efl.evas.Object.size_hint_weight`, when not in homogeneous mode, is
used to tell whether the object will be allocated the minimum size it
needs or if the space given to it should be expanded. It's important
to realize that expanding the size given to the object is not the same
thing as resizing the object. It could very well end being a small
widget floating in a much larger empty space. If not set, the weight
for objects will normally be 0.0 for both axis, meaning the widget will
not be expanded. To take as much space possible, set the weight to
``EVAS_HINT_EXPAND`` (defined to 1.0) for the desired axis to expand.
Besides how much space each object is allocated, it's possible to control
how the widget will be placed within that space using
:py:attr:`~efl.evas.Object.size_hint_align`. By default, this value will be 0.5
for both axis, meaning the object will be centered, but any value from
0.0 (left or top, for the ``x`` and ``y`` axis, respectively) to 1.0
(right or bottom) can be used. The special value *EVAS_HINT_FILL*, which
is -1.0, means the object will be resized to fill the entire space it
was allocated.
In addition, customized functions to define the layout can be set, which
allow the application developer to organize the objects within the box
in any number of ways.
The special :py:meth:`Box.layout_transition` function can be used
to switch from one layout to another, animating the motion of the
children of the box.
.. note:: Objects should not be added to box objects using _add() calls.
Enumerations
============
.. _Evas_Object_Box_Layout:
Box layout modes
----------------
.. data:: ELM_BOX_LAYOUT_HORIZONTAL
Horizontal layout
.. data:: ELM_BOX_LAYOUT_VERTICAL
Vertical layout
.. data:: ELM_BOX_LAYOUT_HOMOGENEOUS_VERTICAL
Homogeneous vertical layout
.. data:: ELM_BOX_LAYOUT_HOMOGENEOUS_HORIZONTAL
Homogeneous horizontal layout
.. data:: ELM_BOX_LAYOUT_HOMOGENEOUS_MAX_SIZE_HORIZONTAL
Homogeneous layout, maximum size on the horizontal axis
.. data:: ELM_BOX_LAYOUT_HOMOGENEOUS_MAX_SIZE_VERTICAL
Homogeneous layout, maximum size on the horizontal axis
.. data:: ELM_BOX_LAYOUT_FLOW_HORIZONTAL
Horizontally flowing layout
.. data:: ELM_BOX_LAYOUT_FLOW_VERTICAL
Vertically flowing layout
.. data:: ELM_BOX_LAYOUT_STACK
Stacking layout
Inheritance diagram
===================
.. inheritance-diagram:: Box
:parts: 2
.. autoclass:: Box

View File

@ -1,2 +1,86 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.bubble
Bubble
######
.. image:: /images/bubble-preview.png
Widget description
==================
The Bubble is a widget to show text similar to how speech is
represented in comics.
The bubble widget contains 5 important visual elements:
- The frame is a rectangle with rounded edjes and an "arrow".
- The ``icon`` is an image to which the frame's arrow points to.
- The ``label`` is a text which appears to the right of the icon if the
corner is **top_left** or **bottom_left** and is right aligned to
the frame otherwise.
- The ``info`` is a text which appears to the right of the label. Info's
font is of a lighter color than label.
- The ``content`` is an evas object that is shown inside the frame.
The position of the arrow, icon, label and info depends on which corner is
selected. The four available corners are:
- ``top_left`` - Default
- ``top_right``
- ``bottom_left``
- ``bottom_right``
Layout content parts
====================
- ``default`` - A content of the bubble
- ``icon`` - An icon of the bubble
Layout text parts
=================
- ``default`` - Label of the bubble
- ``info`` - info of the bubble
Emitted signals
===============
- ``clicked`` - This is called when a user has clicked the bubble.
Enumerations
============
.. _Elm_Bubble_Pos:
Bubble arrow positions
----------------------
.. data:: ELM_BUBBLE_POS_TOP_LEFT
Top left position
.. data:: ELM_BUBBLE_POS_TOP_RIGHT
Top right position
.. data:: ELM_BUBBLE_POS_BOTTOM_LEFT
Bottom left position
.. data:: ELM_BUBBLE_POS_BOTTOM_RIGHT
Bottom right position
Inheritance diagram
===================
.. inheritance-diagram:: Bubble
:parts: 2
.. autoclass:: Bubble

View File

@ -1,3 +1,63 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.button
Button
######
.. image:: /images/button-preview.png
Widget description
==================
This is a push-button. Press it and run some function. It can contain
a simple label and icon object and it also has an autorepeat feature.
Available styles
================
- ``default`` a normal button.
- ``anchor`` Like default, but the button fades away when the mouse is not
over it, leaving only the text or icon.
- ``hoversel_vertical`` Internally used by
:py:class:`~efl.elementary.hoversel.Hoversel` to give a continuous look
across its options.
- ``hoversel_vertical_entry`` Another internal for
:py:class:`~efl.elementary.hoversel.Hoversel`.
- ``naviframe`` Internally used by
:py:class:`~efl.elementary.naviframe.Naviframe` for its back button.
- ``colorselector`` Internally used by
:py:class:`~efl.elementary.colorselector.Colorselector` for its left and
right buttons.
Layout content parts
====================
- ``icon`` - An icon of the button
Layout text parts
=================
- ``default`` - Label of the button
Emitted signals
===============
- ``clicked``: the user clicked the button (press/release).
- ``repeated``: the user pressed the button without releasing it.
- ``pressed``: button was pressed.
- ``unpressed``: button was released after being pressed.
Inheritance diagram
===================
.. inheritance-diagram:: Button
:parts: 2
.. autoclass:: Button

View File

@ -1,2 +1,169 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.calendar_elm
Calendar
########
.. image:: /images/calendar-preview.png
Widget description
==================
This is a calendar widget.
It helps applications to flexibly display a calender with day of the week,
date, year and month. Applications are able to set specific dates to be
reported back, when selected, in the smart callbacks of the calendar widget.
The API of this widget lets the applications perform other functions, like:
- placing marks on specific dates
- setting the bounds for the calendar (minimum and maximum years)
- setting the day names of the week (e.g. "Thu" or "Thursday")
- setting the year and month format.
Emitted signals
===============
- ``changed`` - emitted when the date in the calendar is changed.
- ``display,changed`` - emitted when the current month displayed in the
calendar is changed.
Enumerations
============
.. _Elm_Calendar_Mark_Repeat_Type:
Calendar mark repeat types
--------------------------
.. data:: ELM_CALENDAR_UNIQUE
Default value.
Marks will be displayed only on event day.
.. data:: ELM_CALENDAR_DAILY
Marks will be displayed every day after event day (inclusive).
.. data:: ELM_CALENDAR_WEEKLY
Marks will be displayed every week after event day (inclusive) - i.e.
each seven days.
.. data:: ELM_CALENDAR_MONTHLY
Marks will be displayed every month day that coincides to event day.
E.g.: if an event is set to 30th Jan, no marks will be displayed on Feb,
but will be displayed on 30th Mar
.. data:: ELM_CALENDAR_ANNUALLY
Marks will be displayed every year that coincides to event day (and month).
E.g. an event added to 30th Jan 2012 will be repeated on 30th Jan 2013.
.. data:: ELM_CALENDAR_LAST_DAY_OF_MONTH
Marks will be displayed every last day of month after event day
(inclusive).
.. data:: ELM_CALENDAR_REVERSE_DAILY
Marks will be displayed every day before event day.
.. versionadded:: 1.19
.. _Elm_Calendar_Select_Mode:
Calendar selection modes
------------------------
.. data:: ELM_CALENDAR_SELECT_MODE_DEFAULT
Default mode
.. data:: ELM_CALENDAR_SELECT_MODE_ALWAYS
Select always
.. data:: ELM_CALENDAR_SELECT_MODE_NONE
Don't select
.. data:: ELM_CALENDAR_SELECT_MODE_ONDEMAND
Select on demand
.. _Elm_Calendar_Selectable:
Selectable
----------
.. data:: ELM_CALENDAR_SELECTABLE_NONE
None selectable
.. data:: ELM_CALENDAR_SELECTABLE_YEAR
Year is selectable
.. data:: ELM_CALENDAR_SELECTABLE_MONTH
Month is selectable
.. data:: ELM_CALENDAR_SELECTABLE_DAY
Day is selectable
.. _Elm_Calendar_Weekday:
Days
----
.. data:: ELM_DAY_SUNDAY
Sunday
.. data:: ELM_DAY_MONDAY
Monday
.. data:: ELM_DAY_TUESDAY
Tuesday
.. data:: ELM_DAY_WEDNESDAY
Wednesday
.. data:: ELM_DAY_THURSDAY
Thursday
.. data:: ELM_DAY_FRIDAY
Friday
.. data:: ELM_DAY_SATURDAY
Saturday
Inheritance diagram
===================
.. inheritance-diagram::
Calendar
CalendarMark
:parts: 2
.. autoclass:: Calendar
.. autoclass:: CalendarMark

View File

@ -1,2 +1,47 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.check
Check
#####
.. image:: /images/check-preview.png
Widget description
==================
The check widget allows for toggling a value between true and false.
Check objects are a lot like radio objects in layout and functionality,
except they do not work as a group, but independently, and only toggle
the value of a boolean :py:attr:`~Check.state` between false and true.
Emitted signals
===============
- ``changed`` - This is called whenever the user changes the state of
the check objects.
Layout content parts
====================
- ``icon`` - An icon of the check
Layout text parts
=================
- ``default`` - A label of the check
- ``on`` - On state label of the check
- ``off`` - Off state label of the check
Inheritance diagram
===================
.. inheritance-diagram:: Check
:parts: 2
.. autoclass:: Check

View File

@ -1,2 +1,92 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.clock
Clock
#####
.. image:: /images/clock-preview.png
Widget description
==================
This is a digital clock widget.
In its default theme, it has a vintage "flipping numbers clock" appearance,
which will animate sheets of individual algarisms individually as time goes
by.
A newly created clock will fetch system's time (already considering
local time adjustments) to start with, and will tick accordingly. It may
or may not show seconds.
Clocks have an **edition** mode. When in it, the sheets will display
extra arrow indications on the top and bottom and the user may click on
them to raise or lower the time values. After it's told to exit edition
mode, it will keep ticking with that new time set (it keeps the
difference from local time).
Also, when under edition mode, user clicks on the cited arrows which are
**held** for some time will make the clock to flip the sheet, thus
editing the time, continuously and automatically for the user. The
interval between sheet flips will keep growing in time, so that it helps
the user to reach a time which is distant from the one set.
The time display is, by default, in military mode (24h), but an am/pm
indicator may be optionally shown, too, when it will switch to 12h.
Emitted signals
===============
- ``changed`` - the clock's user changed the time
Enumerations
============
.. _Elm_Clock_Edit_Mode:
Clock edit modes
----------------
.. data:: ELM_CLOCK_EDIT_DEFAULT
Default edit
.. data:: ELM_CLOCK_EDIT_HOUR_DECIMAL
Edit hours' decimal
.. data:: ELM_CLOCK_EDIT_HOUR_UNIT
Edit hours' unit
.. data:: ELM_CLOCK_EDIT_MIN_DECIMAL
Edit minutes' decimal
.. data:: ELM_CLOCK_EDIT_MIN_UNIT
Edit minutes' unit
.. data:: ELM_CLOCK_EDIT_SEC_DECIMAL
Edit seconds' decimal
.. data:: ELM_CLOCK_EDIT_SEC_UNIT
Edit seconds' unit
.. data:: ELM_CLOCK_EDIT_ALL
Edit all
Inheritance diagram
===================
.. inheritance-diagram:: Clock
:parts: 2
.. autoclass:: Clock

View File

@ -1,2 +1,64 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.colorselector
Colorselector
#############
.. image:: /images/colorselector-preview.png
Widget description
==================
A Colorselector is a color selection widget.
It allows application to set a series of colors. It also allows to
load/save colors from/to config with a unique identifier, by default,
the colors are loaded/saved from/to config using "default" identifier.
The colors can be picked by user from the color set by clicking on
individual color item on the palette or by selecting it from selector.
Emitted signals
===============
- ``"changed"`` - When the color value changes on selector
- ``"color,item,selected"`` - When user clicks on color item.
The event_info parameter of the callback will be the selected
color item.
- ``"color,item,longpressed"`` - When user long presses on color item.
The event_info parameter of the callback will be the selected
color item.
Enumerations
============
.. _Elm_Colorselector_Mode:
Colorselector modes
-------------------
.. data:: ELM_COLORSELECTOR_PALETTE
Show palette
.. data:: ELM_COLORSELECTOR_COMPONENTS
Show components
.. data:: ELM_COLORSELECTOR_BOTH
Show palette and components
Inheritance diagram
===================
.. inheritance-diagram::
Colorselector
ColorselectorPaletteItem
:parts: 2
.. autoclass:: Colorselector
.. autoclass:: ColorselectorPaletteItem

View File

@ -0,0 +1,54 @@
.. currentmodule:: efl.elementary
Combobox
########
.. warning::
**THE COMBOBOX IS BROKEN AND DEPRECATED, DO NOT USE IN ANY CASE !!**
The behaviour and the API of the Combobox will change in future release.
If you are already using this we really encourage you to switch
to other widgets.
We are really sorry about this breakage, but there is nothing we can do
to avoid this :(
.. image:: /images/combobox-preview.png
Widget description
==================
This is a the classic combobox widget, it is the composition of a
:class:`Button`, an :class:`Entry`, a :class:`Genlist` and an :class:`Hover`.
Thus you can use all the functionality of the base classes on the
:class:`Combobox` itself.
Available styles
================
- ``default`` a normal combobox.
Emitted signals
===============
- ``dismissed``: The combobox hover has been dismissed.
- ``expanded``: The combobox hover has been expanded.
- ``clicked``: The combobox button has been clicked.
- ``item,selected``: An item has been selected (highlighted).
- ``item,pressed``: An item has been pressed (clicked).
- ``filter,done``: Item filtering on genlist is completed.
Inheritance diagram
===================
.. inheritance-diagram:: Combobox
:parts: 2
.. autoclass:: _Combobox
.. autoclass:: Combobox

View File

@ -1,2 +1,162 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.configuration
Configuration
#############
Description
===========
Elementary configuration is formed by a set options bounded to a
given profile, like theme, "finger size", etc.
These are functions with which one synchronizes changes made to those
values to the configuration storing files, de facto. You most probably
don't want to use the functions in this group unless you're writing an
elementary configuration manager.
Profiles
========
Profiles are pre-set options that affect the whole look-and-feel of
Elementary-based applications. There are, for example, profiles
aimed at desktop computer applications and others aimed at mobile,
touchscreen-based ones. You most probably don't want to use the
functions in this group unless you're writing an elementary
configuration manager.
Elementary Scrolling
====================
These set how scrollable views in Elementary widgets should behave on
user interaction.
Password show last
==================
Show last feature of password mode enables user to view the last input
entered for few seconds before masking it. These functions allow to set
this feature in password mode of entry widget and also allow to
manipulate the duration for which the input has to be visible.
Elementary Engine
=================
These are functions setting and querying which rendering engine
Elementary will use for drawing its windows' pixels.
The following are the available engines:
- "software_x11"
- "fb"
- "directfb"
- "software_16_x11"
- "software_8_x11"
- "xrender_x11"
- "opengl_x11"
- "software_gdi"
- "software_16_wince_gdi"
- "sdl"
- "software_16_sdl"
- "opengl_sdl"
- "buffer"
- "ews"
- "opengl_cocoa"
- "psl1ght"
ATSPI AT-SPI2 Accessibility
===========================
Elementary widgets support Linux Accessibility standard. For more
information please visit:
http://www.linuxfoundation.org/collaborate/workgroups/accessibility/atk/at-spi/at-spi_on_d-bus
Enumerations
============
.. _Elm_Softcursor_Mode:
Elm_Softcursor_Mode
-------------------
.. data:: ELM_SOFTCURSOR_MODE_AUTO
Auto-detect if a software cursor should be used (default)
.. data:: ELM_SOFTCURSOR_MODE_ON
Always use a softcursor
.. data:: ELM_SOFTCURSOR_MODE_OFF
Never use a softcursor
.. _Elm_Slider_Indicator_Visible_Mode:
Elm_Slider_Indicator_Visible_Mode
---------------------------------
.. data:: ELM_SLIDER_INDICATOR_VISIBLE_MODE_DEFAULT
show indicator on mouse down or change in slider value
.. data:: ELM_SLIDER_INDICATOR_VISIBLE_MODE_ALWAYS
Always show the indicator
.. data:: ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS
Show the indicator on focus
.. data:: ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE
Never show the indicator
.. _Edje_Channel:
Audio Channels
--------------
.. data:: EDJE_CHANNEL_EFFECT
Standard audio effects
.. data:: EDJE_CHANNEL_BACKGROUND
Background audio sounds
.. data:: EDJE_CHANNEL_MUSIC
Music audio
.. data:: EDJE_CHANNEL_FOREGROUND
Foreground audio sounds
.. data:: EDJE_CHANNEL_INTERFACE
Sounds related to the interface
.. data:: EDJE_CHANNEL_INPUT
Sounds related to regular input
.. data:: EDJE_CHANNEL_ALERT
Sounds for major alerts
.. data:: EDJE_CHANNEL_ALL
All audio channels (convenience)
Inheritance diagram
===================
.. inheritance-diagram:: Configuration
:parts: 2
.. autoclass:: Configuration

View File

@ -1,2 +1,43 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.conformant
Conformant
##########
.. image:: /images/conformant-preview.png
Widget description
==================
The aim is to provide a widget that can be used in elementary apps to
account for space taken up by the indicator, virtual keypad & softkey
windows when running the illume2 module of E17.
So conformant content will be sized and positioned considering the
space required for such stuff, and when they popup, as a keyboard
shows when an entry is selected, conformant content won't change.
Emitted signals
===============
- ``virtualkeypad,state,on``: if virtualkeypad state is switched to ``on``.
- ``virtualkeypad,state,off``: if virtualkeypad state is switched to ``off``.
- ``clipboard,state,on``: if clipboard state is switched to ``on``.
- ``clipboard,state,off``: if clipboard state is switched to ``off``.
Layout content parts
====================
- ``default`` - A content of the conformant
Inheritance diagram
===================
.. inheritance-diagram:: Conformant
:parts: 2
.. autoclass:: Conformant

View File

@ -1,2 +1,84 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.ctxpopup
Ctxpopup
########
.. image:: /images/ctxpopup-preview.png
Widget description
==================
A ctxpopup is a widget that, when shown, pops up a list of items. It
automatically chooses an area inside its parent object's view to
optimally fit into it. In the default theme, it will also point an arrow
to it's top left position at the time one shows it. Ctxpopup items have
a label and/or an icon. It is intended for a small number of items
(hence the use of list, not genlist).
.. note::
Ctxpopup is a specialization of :py:class:`~efl.elementary.hover.Hover`.
Emitted signals
===============
- ``dismissed`` - This is called when 1. the outside of ctxpopup was clicked
or 2. its parent area is changed or 3. the language is changed and also when
4. the parent object is resized due to the window rotation. Then ctxpopup is
dismissed.
- ``geometry,update`` - The geometry has changed (since 1.17)
Layout content parts
====================
- ``default`` - A content of the ctxpopup
- ``icon`` - An icon in the title area
Layout text parts
=================
- ``default`` - Title label in the title area
Enumerations
============
.. _Elm_Ctxpopup_Direction:
Ctxpopup arrow directions
-------------------------
.. data:: ELM_CTXPOPUP_DIRECTION_DOWN
Arrow is pointing down
.. data:: ELM_CTXPOPUP_DIRECTION_RIGHT
Arrow is pointing right
.. data:: ELM_CTXPOPUP_DIRECTION_LEFT
Arrow is pointing left
.. data:: ELM_CTXPOPUP_DIRECTION_UP
Arrow is pointing up
.. data:: ELM_CTXPOPUP_DIRECTION_UNKNOWN
Arrow direction is unknown
Inheritance diagram
===================
.. inheritance-diagram::
Ctxpopup
CtxpopupItem
:parts: 2
.. autoclass:: Ctxpopup
.. autoclass:: CtxpopupItem

View File

@ -1,2 +1,216 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.datetime_elm
Datetime
########
Widget description
==================
Datetime widget is used to display and input date & time values.
This widget displays date and time as per the **system's locale** settings
(Date includes Day, Month & Year along with the defined separators and Time
includes Hour, Minute & AM/PM fields). Separator for AM/PM field is ignored.
The corresponding Month, AM/PM strings are displayed according to the
systems language settings.
Datetime format is a combination of LIBC standard characters like "%%d %%b
%%Y %%I : %%M %%p" which, as a whole represents both Date as well as Time
format.
Elm_datetime supports only the following sub set of libc date format specifiers:
**%%Y** The year as a decimal number including the century (example: 2011).
**%%y** The year as a decimal number without a century (range 00 to 99)
**%%m** The month as a decimal number (range 01 to 12).
**%%b** The abbreviated month name according to the current locale.
**%%B** The full month name according to the current locale.
**%%h** The abbreviated month name according to the current locale(same as %%b).
**%%d** The day of the month as a decimal number (range 01 to 31).
**%%e** The day of the month as a decimal number (range 1 to 31). single
digits are preceded by a blank.
**%%I** The hour as a decimal number using a 12-hour clock (range 01 to 12).
**%%H** The hour as a decimal number using a 24-hour clock (range 00 to 23).
**%%k** The hour (24-hour clock) as a decimal number (range 0 to 23). single
digits are preceded by a blank.
**%%l** The hour (12-hour clock) as a decimal number (range 1 to 12); single
digits are preceded by a blank.
**%%M** The minute as a decimal number (range 00 to 59).
**%%p** Either 'AM' or 'PM' according to the given time value, or the
corresponding strings for the current locale. Noon is treated as 'PM'
and midnight as 'AM'
**%%P** Like %p but in lower case: 'am' or 'pm' or a corresponding string for
the current locale.
**%%c** The preferred date and time representation for the current locale.
**%%x** The preferred date representation for the current locale without the time.
**%%X** The preferred time representation for the current locale without the date.
**%%r** The complete calendar time using the AM/PM format of the current locale.
**%%R** The hour and minute in decimal numbers using the format %H:%M.
**%%T** The time of day in decimal numbers using the format %H:%M:%S.
**%%D** The date using the format %%m/%%d/%%y.
**%%F** The date using the format %%Y-%%m-%%d.
(For more reference on the available **LIBC date format specifiers**,
please visit the link:
http://www.gnu.org/s/hello/manual/libc.html#Formatting-Calendar-Time )
Datetime widget can provide Unicode **separators** in between its fields
except for AM/PM field. A separator can be any **Unicode character**
other than the LIBC standard date format specifiers.
Example: In the format::
%%b %%d **,** %%y %%H **:** %%M
comma(,) is separator for date field %%d and colon(:) is separator for
hour field %%H.
The default format is a predefined one, based on the system Locale.
Hour format 12hr(1-12) or 24hr(0-23) display can be selected by setting
the corresponding user format.
Datetime supports six fields: Year, Month, Date, Hour, Minute, AM/PM.
Depending on the Datetime module that is loaded, the user can see
different UI to select the individual field values.
The individual fields of Datetime can be arranged in any order according
to the format set by application.
There is a provision to set the visibility of a particular field as TRUE/
FALSE so that **only time/ only date / only required fields** will be
displayed.
Each field is having a default minimum and maximum values just like the
daily calendar information. These min/max values can be modified as per
the application usage.
User can enter the values only in between the range of maximum and
minimum. Apart from these APIs, there is a provision to display only a
limited set of values out of the possible values. APIs to select the
individual field limits are intended for this purpose.
The whole widget is left aligned and its size grows horizontally
depending on the current format and each field's visible/disabled state.
Datetime individual field selection is implemented in a modular style.
Module can be implemented as a Ctxpopup based selection or an ISE based
selection or even a spinner like selection etc.
Datetime Module design
======================
The following functions are expected to be implemented in a Datetime module:
**Field creation**::
__________ __________
| |----- obj_hook() ---------------------->>>| |
| |<<<----------------returns Mod_data ------| |
| Datetime |_______ | |
| widget | |Assign module call backs | Module |
| base |<<<____| | |
| | | |
| |----- field_create() ------------------>>>| |
|__________|<<<----------------returns field_obj -----|__________|
**Field value setting**::
__________ __________
| | | |
| Datetime |<<<----------elm_datetime_value_set()---| |
| widget | | Module |
| base |----display_field_value()------------>>>| |
|__________| |__________|
**del_hook**::
__________ __________
| | | |
| Datetime |----obj_unhook()-------------------->>>>| |
| widget | | Module |
| base | <<<-----frees mod_data---------| |
|__________| |__________|
Any module can use the following shared functions that are implemented in
elm_datetime.c:
**field_format_get()** - gives the field format.
**field_limit_get()** - gives the field minimum, maximum limits.
To enable a module, set the ELM_MODULES environment variable as shown:
**export ELM_MODULES="datetime_input_ctxpopup>datetime/api"**
Emitted signals
===============
- ``changed`` - whenever Datetime field value is changed, this signal is sent.
Enumerations
============
.. _Elm_Datetime_Field_Type:
Datetime fields
---------------
.. data:: ELM_DATETIME_YEAR
Year
.. data:: ELM_DATETIME_MONTH
Month
.. data:: ELM_DATETIME_DATE
Date
.. data:: ELM_DATETIME_HOUR
Hour
.. data:: ELM_DATETIME_MINUTE
Minute
.. data:: ELM_DATETIME_AMPM
Am/Pm
Inheritance diagram
===================
.. inheritance-diagram:: Datetime
:parts: 2
.. autoclass:: Datetime

View File

@ -1,2 +1,98 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.dayselector
Dayselector
###########
.. image:: /images/dayselector-preview.png
Widget description
==================
Dayselector displays all seven days of the week and allows the user to
select multiple days.
The selection can be toggle by just clicking on the day.
Dayselector also provides the functionality to check whether a day is
selected or not.
First day of the week is taken from config settings by default. It can be
altered by using the API :py:attr:`~Dayselector.week_start` API.
APIs are provided for setting the duration of weekend
:py:attr:`~Dayselector.weekend_start` and :py:attr:`~Dayselector.weekend_length`
does this job.
Two styles of weekdays and weekends are supported in Dayselector.
Application can emit signals on individual check objects for setting the
weekday, weekend styles.
Once the weekend start day or weekend length changes, all the weekday &
weekend styles will be reset to default style. It's the application's
responsibility to set the styles again by sending corresponding signals.
"day0" indicates Sunday, "day1" indicates Monday etc. continues and so,
"day6" indicates the Saturday part name.
Application can change individual day display string by using the API
:py:meth:`~efl.elementary.object.Object.part_text_set`.
:py:meth:`~efl.elementary.object.Object.part_content_set` API sets the
individual day object only if the passed one is a Check widget.
Check object representing a day can be set/get by the application by using
the elm_object_part_content_set/get APIs thus providing a way to handle
the different check styles for individual days.
Emitted signals
===============
- ``dayselector,changed`` - when the user changes the state of a day.
Enumerations
============
.. _Elm_Dayselector_Day:
Dayselector days
----------------
.. data:: ELM_DAYSELECTOR_SUN
Sunday
.. data:: ELM_DAYSELECTOR_MON
Monday
.. data:: ELM_DAYSELECTOR_TUE
Tuesday
.. data:: ELM_DAYSELECTOR_WED
Wednesday
.. data:: ELM_DAYSELECTOR_THU
Thursday
.. data:: ELM_DAYSELECTOR_FRI
Friday
.. data:: ELM_DAYSELECTOR_SAT
Saturday
Inheritance diagram
===================
.. inheritance-diagram:: Dayselector
:parts: 2
.. autoclass:: Dayselector

View File

@ -1,2 +1,70 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.diskselector
Diskselector
############
.. image:: /images/diskselector-preview.png
Widget description
==================
A diskselector is a kind of list widget. It scrolls horizontally,
and can contain label and icon objects. Three items are displayed
with the selected one in the middle.
It can act like a circular list with round mode and labels can be
reduced for a defined length for side items.
Emitted signals
===============
- ``selected`` - when item is selected, i.e. scroller stops.
- ``clicked`` - This is called when a user clicks an item
- ``scroll,anim,start`` - scrolling animation has started
- ``scroll,anim,stop`` - scrolling animation has stopped
- ``scroll,drag,start`` - dragging the diskselector has started
- ``scroll,drag,stop`` - dragging the diskselector has stopped
.. note:: The ``scroll,anim,*`` and ``scroll,drag,*`` signals are only emitted
by user intervention.
Layout content parts
====================
- ``icon`` - An icon in the diskselector item
Layout text parts
=================
- ``default`` - Label of the diskselector item
Scrollable Interface
====================
This widget supports the scrollable interface.
If you wish to control the scrolling behaviour using these functions,
inherit both the widget class and the
:py:class:`~efl.elementary.scroller.Scrollable` class
using multiple inheritance, for example::
class ScrollableGenlist(Genlist, Scrollable):
def __init__(self, canvas, *args, **kwargs):
Genlist.__init__(self, canvas)
Inheritance diagram
===================
.. inheritance-diagram::
Diskselector
DiskselectorItem
:parts: 2
.. autoclass:: Diskselector
.. autoclass:: DiskselectorItem

View File

@ -1,10 +1,7 @@
Elementary
##########
.. module:: efl.elementary
What is elementary?
===================
*******************
Elementary is a the high level toolkit based on the underlying efl
technologies (:doc:`Evas </evas/evas>`, :doc:`Edje </edje/edje>`,
@ -16,10 +13,10 @@ of flexibility.
Callbacks
=========
*********
Widget callbacks
----------------
================
Widget callbacks are set with callback_*_add methods which take a callable,
and optional args, kwargs as data.
@ -34,7 +31,7 @@ or::
Event callbacks
---------------
===============
Event callbacks have signature of::
@ -42,91 +39,442 @@ Event callbacks have signature of::
A sample Python Elementary program
==================================
**********************************
.. literalinclude:: ../../examples/elementary/test_win_dialog.py
:language: python
API Reference
=============
*************
Enumerations
============
.. _Elm_Object_Layer:
Object layers
-------------
.. versionadded:: 1.14
.. data:: ELM_OBJECT_LAYER_BACKGROUND
where to place backgrounds
.. data:: ELM_OBJECT_LAYER_DEFAULT
Evas_Object default layer (and thus for Elementary)
.. data:: ELM_OBJECT_LAYER_FOCUS
where focus object visualization is
.. data:: ELM_OBJECT_LAYER_TOOLTIP
where to show tooltips
.. data:: ELM_OBJECT_LAYER_CURSOR
where to show cursors
.. data:: ELM_OBJECT_LAYER_LAST
last layer known by Elementary
.. _Elm_Policy:
Policy types
------------
.. data:: ELM_POLICY_QUIT
Under which circumstances the application should quit automatically.
.. data:: ELM_POLICY_EXIT
Defines elm_exit() behaviour. (since 1.8)
.. data:: ELM_POLICY_THROTTLE
Defines how throttling should work (since 1.8)
.. _Elm_Policy_Quit:
Quit policy types
-----------------
.. data:: ELM_POLICY_QUIT_NONE
Never quit the application automatically
.. data:: ELM_POLICY_QUIT_LAST_WINDOW_CLOSED
Quit when the application's last window is closed
.. data:: ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN
Quit when the application's last window is hidden
.. versionadded:: 1.15
.. _Elm_Policy_Exit:
Exit policy types
-----------------
Possible values for the ELM_POLICY_EXIT policy.
.. data:: ELM_POLICY_EXIT_NONE
Just quit the main loop on exit().
.. data:: ELM_POLICY_EXIT_WINDOWS_DEL
Delete all the windows after quitting the main loop.
.. _Elm_Policy_Throttle:
Throttle policy types
---------------------
Possible values for the #ELM_POLICY_THROTTLE policy.
.. data:: ELM_POLICY_THROTTLE_CONFIG
Do whatever elementary config is configured to do.
.. data:: ELM_POLICY_THROTTLE_HIDDEN_ALWAYS
Always throttle when all windows are no longer visible.
.. data:: ELM_POLICY_THROTTLE_NEVER
Never throttle when windows are all hidden, regardless of config settings.
.. _Elm_Object_Multi_Select_Mode:
Object multi select policy values
---------------------------------
Possible values for the #ELM_OBJECT_MULTI_SELECT_MODE policy.
.. versionadded:: 1.18
.. data:: ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT
Default multiple select mode.
.. data:: ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL
Disallow mutiple selection when clicked without control key pressed.
.. _Elm_Process_State:
Elm_Process_State
-----------------
.. data:: ELM_PROCESS_STATE_FOREGROUND
The process is in a foreground/active/running state - work as normal.
.. versionadded:: 1.12
.. data:: ELM_PROCESS_STATE_BACKGROUND
The process is in the bacgkround, so you may want to stop animating,
fetching data as often etc.
.. versionadded:: 1.12
.. _Elm_Sys_Notify_Closed_Reason:
Notify close reasons
--------------------
The reason the notification was closed
.. data:: ELM_SYS_NOTIFY_CLOSED_EXPIRED
The notification expired.
.. versionadded:: 1.10
.. data:: ELM_SYS_NOTIFY_CLOSED_DISMISSED
The notification was dismissed by the user.
.. versionadded:: 1.10
.. data:: ELM_SYS_NOTIFY_CLOSED_REQUESTED
The notification was closed by a call to CloseNotification method.
.. versionadded:: 1.10
.. data:: ELM_SYS_NOTIFY_CLOSED_UNDEFINED
Undefined/reserved reasons.
.. versionadded:: 1.10
.. _Elm_Sys_Notify_Urgency:
Notify urgency levels
---------------------
Urgency levels of a notification
:see: :py:func:`sys_notify_send`
.. data:: ELM_SYS_NOTIFY_URGENCY_LOW
Low
.. versionadded:: 1.10
.. data:: ELM_SYS_NOTIFY_URGENCY_NORMAL
Normal
.. versionadded:: 1.10
.. data:: ELM_SYS_NOTIFY_URGENCY_CRITICAL
Critical
.. versionadded:: 1.10
.. _Elm_Glob_Match_Flags:
Glob matching
-------------
Glob matching bitfiled flags
.. data:: ELM_GLOB_MATCH_NO_ESCAPE
Treat backslash as an ordinary character instead of escape.
.. versionadded:: 1.11
.. data:: ELM_GLOB_MATCH_PATH
Match a slash in string only with a slash in pattern and not by an
asterisk (*) or a question mark (?) metacharacter, nor by a bracket
expression ([]) containing a slash.
.. versionadded:: 1.11
.. data:: ELM_GLOB_MATCH_PERIOD
Leading period in string has to be matched exactly by a period in
pattern. A period is considered to be leading if it is the first
character in string, or if both ELM_GLOB_MATCH_PATH is set and the
period immediately follows a slash.
.. versionadded:: 1.11
.. data:: ELM_GLOB_MATCH_NOCASE
The pattern is matched case-insensitively.
.. versionadded:: 1.11
.. _General:
General
=======
General Elementary API. Functions that don't relate to
Elementary objects specifically.
Here are documented functions which init/shutdown the library,
that apply to generic Elementary objects, that deal with
configuration, et cetera.
.. autoclass:: EthumbConnect
.. autoclass:: ConfigAllChanged
.. autoclass:: PolicyChanged
.. autoclass:: ProcessBackground
.. autoclass:: ProcessForeground
.. autofunction:: on_ethumb_connect
.. autofunction:: on_config_all_changed
.. autofunction:: on_policy_changed
.. autofunction:: on_process_background
.. autofunction:: on_process_foreground
.. autofunction:: init
.. autofunction:: shutdown
.. autofunction:: run
.. autofunction:: exit
.. autofunction:: policy_set
.. autofunction:: policy_get
.. autofunction:: language_set
.. autofunction:: process_state_get
.. _Fingers:
Fingers
=======
Elementary is designed to be finger-friendly for touchscreens,
and so in addition to scaling for display resolution, it can
also scale based on finger "resolution" (or size). You can then
customize the granularity of the areas meant to receive clicks
on touchscreens.
Different profiles may have pre-set values for finger sizes.
.. autofunction:: coords_finger_size_adjust
.. _Caches:
Caches
======
These are functions which let one fine-tune some cache values for
Elementary applications, thus allowing for performance adjustments.
.. autofunction:: cache_all_flush
.. _Fonts:
Fonts
=====
These are functions dealing with font rendering, selection and the
like for Elementary applications. One might fetch which system
fonts are there to use and set custom fonts for individual classes
of UI items containing text (text classes).
.. autofunction:: font_properties_get
.. autofunction:: font_properties_free
.. autofunction:: font_fontconfig_name_get
.. autoclass:: FontProperties
.. _Debug:
Debug
=====
Don't use them unless you are sure.
.. autofunction:: object_tree_dump
.. autofunction:: object_tree_dot_dump
.. _Sys_Notify:
Sys Notify
==========
.. autofunction:: sys_notify_close
.. autofunction:: sys_notify_send
.. autofunction:: on_sys_notify_notification_closed
.. autofunction:: on_sys_notify_action_invoked
.. autoclass:: SysNotifyNotificationClosed
.. autoclass:: SysNotifyActionInvoked
Widgets
=======
.. toctree:: *
:glob:
:maxdepth: 1
Inheritance diagram
===================
.. inheritance-diagram::
efl.elementary.actionslider
efl.elementary.background
efl.elementary.box
efl.elementary.bubble
efl.elementary.button
efl.elementary.calendar_elm
efl.elementary.check
efl.elementary.clock
efl.elementary.colorselector
efl.elementary.configuration
efl.elementary.conformant
efl.elementary.ctxpopup
efl.elementary.datetime_elm
efl.elementary.dayselector
efl.elementary.diskselector
efl.elementary.entry
efl.elementary.fileselector
efl.elementary.fileselector_button
efl.elementary.fileselector_entry
efl.elementary.flip
efl.elementary.flipselector
efl.elementary.frame
efl.elementary.general
efl.elementary.gengrid
efl.elementary.genlist
efl.elementary.gesture_layer
efl.elementary.grid
efl.elementary.hover
efl.elementary.hoversel
efl.elementary.icon
efl.elementary.image
efl.elementary.index
efl.elementary.innerwindow
efl.elementary.label
efl.elementary.layout
efl.elementary.layout_class
efl.elementary.list
efl.elementary.map
efl.elementary.mapbuf
efl.elementary.menu
efl.elementary.multibuttonentry
efl.elementary.naviframe
efl.elementary.need
efl.elementary.notify
efl.elementary.object
efl.elementary.object_item
efl.elementary.panel
efl.elementary.panes
efl.elementary.photo
efl.elementary.photocam
efl.elementary.plug
efl.elementary.popup
efl.elementary.progressbar
efl.elementary.radio
efl.elementary.scroller
efl.elementary.segment_control
efl.elementary.separator
efl.elementary.slider
efl.elementary.slideshow
efl.elementary.spinner
efl.elementary.systray
efl.elementary.table
efl.elementary.theme
efl.elementary.thumb
efl.elementary.toolbar
efl.elementary.transit
efl.elementary.video
efl.elementary.web
efl.elementary.window
:parts: 2
efl.elementary.Actionslider
efl.elementary.Background
efl.elementary.Box
efl.elementary.Bubble
efl.elementary.Button
efl.elementary.Calendar
efl.elementary.Check
efl.elementary.Clock
efl.elementary.Colorselector
efl.elementary.Combobox
efl.elementary.Configuration
efl.elementary.Conformant
efl.elementary.Ctxpopup
efl.elementary.Datetime
efl.elementary.Dayselector
efl.elementary.Diskselector
efl.elementary.Entry
efl.elementary.Fileselector
efl.elementary.FileselectorButton
efl.elementary.FileselectorEntry
efl.elementary.Flip
efl.elementary.FlipSelector
efl.elementary.Frame
efl.elementary.Gengrid
efl.elementary.Genlist
efl.elementary.GestureLayer
efl.elementary.Grid
efl.elementary.Hover
efl.elementary.Hoversel
efl.elementary.Icon
efl.elementary.Image
efl.elementary.Index
efl.elementary.InnerWindow
efl.elementary.Label
efl.elementary.Layout
efl.elementary.List
efl.elementary.Map
efl.elementary.Mapbuf
efl.elementary.Menu
efl.elementary.MultiButtonEntry
efl.elementary.Naviframe
efl.elementary.Notify
efl.elementary.Object
efl.elementary.ObjectItem
efl.elementary.Panel
efl.elementary.Panes
efl.elementary.Photo
efl.elementary.Photocam
efl.elementary.Plug
efl.elementary.Popup
efl.elementary.Progressbar
efl.elementary.Radio
efl.elementary.Scroller
efl.elementary.SegmentControl
efl.elementary.Separator
efl.elementary.Slider
efl.elementary.Slideshow
efl.elementary.Spinner
efl.elementary.Table
efl.elementary.Theme
efl.elementary.Thumb
efl.elementary.Toolbar
efl.elementary.Transit
efl.elementary.Video
efl.elementary.Web
efl.elementary.Window
:parts: 1

View File

@ -1,2 +1,584 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.entry
Entry
#####
.. image:: /images/entry-preview.png
Widget description
==================
An entry is a convenience widget which shows a box that the user can
enter text into.
Entries by default don't scroll, so they grow to accommodate the entire text,
resizing the parent window as needed. This can be changed with the property
:py:attr:`~efl.elementary.entry.Entry.scrollable`.
They can also be single line or multi line (the default) and when set
to multi line mode they support text wrapping in any of the modes
indicated by :ref:`Elm_Wrap_Type`.
Other features include password mode, filtering of inserted text with
:py:meth:`~efl.elementary.entry.Entry.markup_filter_append` and related
functions, inline "items" and formatted markup text.
Scrollable Interface
====================
This widget supports the scrollable interface.
If you wish to control the scolling behaviour using these functions,
inherit both the widget class and the
:py:class:`~efl.elementary.scroller.Scrollable` class
using multiple inheritance, for example::
class ScrollableGenlist(Genlist, Scrollable):
def __init__(self, canvas, *args, **kwargs):
Genlist.__init__(self, canvas)
Formatted text
==============
The markup tags supported by the Entry are defined by the theme, but
even when writing new themes or extensions it's a good idea to stick to
a sane default, to maintain coherency and avoid application breakages.
Currently defined by the default theme are the following tags:
``<br>``
Inserts a line break.
``<ps>``
Inserts a paragraph separator. This is preferred over line
breaks.
``<tab>``
Inserts a tab.
``<em>...</em>``
Emphasis. Sets the *oblique* style for the
enclosed text.
``<b>...</b>``
Sets the **bold** style for the enclosed text.
``<link>...</link>``
Underlines the enclosed text.
``<hilight>...</hilight>``
Highlights the enclosed text.
Special markups
===============
Besides those used to format text, entries support two special markup
tags used to insert click-able portions of text or items inlined within
the text.
Anchors
-------
Anchors are similar to HTML anchors. Text can be surrounded by <a> and
</a> tags and an event will be generated when this text is clicked,
like this::
This text is outside <a href=anc-01>but this one is an anchor</a>
The ``href`` attribute in the opening tag gives the name that will be
used to identify the anchor and it can be any valid utf8 string.
When an anchor is clicked, an ``"anchor,clicked"`` signal is emitted with
an :py:class:`EntryAnchorInfo` in the ``event_info`` parameter for the
callback function. The same applies for ``anchor,in`` (mouse in),
``anchor,out`` (mouse out), ``anchor,down`` (mouse down), and ``anchor,up``
(mouse up) events on an anchor.
Items
-----
Inlined in the text, any other :py:class:`~efl.elementary.object.Object` can
be inserted by using ``<item>`` tags this way::
<item size=16x16 vsize=full href=emoticon/haha></item>
Just like with anchors, the ``href`` identifies each item, but these need,
in addition, to indicate their size, which is done using any one of
``size``, ``absize`` or ``relsize`` attributes. These attributes take their
value in the WxH format, where W is the width and H the height of the
item.
- absize: Absolute pixel size for the item. Whatever value is set will
be the item's size regardless of any scale value the object may have
been set to. The final line height will be adjusted to fit larger items.
- size: Similar to *absize*, but it's adjusted to the scale value set
for the object.
- relsize: Size is adjusted for the item to fit within the current
line height.
Besides their size, items are specified a ``vsize`` value that affects
how their final size and position are calculated. The possible values
are:
- ``ascent``: Item will be placed within the line's baseline and its
ascent. That is, the height between the line where all characters are
positioned and the highest point in the line. For ``size`` and
``absize`` items, the descent value will be added to the total line
height to make them fit. ``relsize`` items will be adjusted to fit
within this space.
- ``full``: Items will be placed between the descent and ascent, or the
lowest point in the line and its highest.
After the size for an item is calculated, the entry will request an object to
place in its space. For this, the functions set with
:py:meth:`~efl.elementary.entry.Entry.item_provider_append` and related
functions will be called in order until one of them returns a non-*None* value.
If no providers are available, or all of them return *None*, then the entry
falls back to one of the internal defaults, provided the name matches with one
of them.
All of the following are currently supported:
- emoticon/angry
- emoticon/angry-shout
- emoticon/crazy-laugh
- emoticon/evil-laugh
- emoticon/evil
- emoticon/goggle-smile
- emoticon/grumpy
- emoticon/grumpy-smile
- emoticon/guilty
- emoticon/guilty-smile
- emoticon/haha
- emoticon/half-smile
- emoticon/happy-panting
- emoticon/happy
- emoticon/indifferent
- emoticon/kiss
- emoticon/knowing-grin
- emoticon/laugh
- emoticon/little-bit-sorry
- emoticon/love-lots
- emoticon/love
- emoticon/minimal-smile
- emoticon/not-happy
- emoticon/not-impressed
- emoticon/omg
- emoticon/opensmile
- emoticon/smile
- emoticon/sorry
- emoticon/squint-laugh
- emoticon/surprised
- emoticon/suspicious
- emoticon/tongue-dangling
- emoticon/tongue-poke
- emoticon/uh
- emoticon/unhappy
- emoticon/very-sorry
- emoticon/what
- emoticon/wink
- emoticon/worried
- emoticon/wtf
Alternatively, an item may reference an image by its path, using
the URI form ``file:///path/to/an/image.png`` and the entry will then
use that image for the item.
Setting entry's style
=====================
There are 2 major ways to change the entry's style:
- Theme - set the "base" field to the desired style.
- User style - Pushing overrides to the theme style to the textblock object
by using :py:meth:`~efl.elementary.entry.Entry.text_style_user_push`.
You should modify the theme when you would like to change the style for
aesthetic reasons. While the user style should be changed when you would
like to change the style to something specific defined at run-time, e.g,
setting font or font size in a text editor.
Loading and saving files
========================
Entries have convenience functions to load text from a file and save changes
back to it after a short delay. The automatic saving is enabled by default, but
can be disabled with :py:attr:`~efl.elementary.entry.Entry.autosave` and files
can be loaded directly as plain text or have any markup in them recognized. See
:py:attr:`~efl.elementary.entry.Entry.file` for more details.
Emitted signals
===============
- ``changed``: The text within the entry was changed.
- ``changed,user``: The text within the entry was changed because of user
interaction.
- ``activated``: The enter key was pressed on a single line entry.
- ``aborted``: The escape key was pressed on a single line entry. (since 1.7)
- ``press``: A mouse button has been pressed on the entry.
- ``longpressed``: A mouse button has been pressed and held for a couple
seconds.
- ``clicked``: The entry has been clicked (mouse press and release).
- ``clicked,double``: The entry has been double clicked.
- ``clicked,triple``: The entry has been triple clicked.
- ``selection,paste``: A paste of the clipboard contents was requested.
- ``selection,copy``: A copy of the selected text into the clipboard was
requested.
- ``selection,cut``: A cut of the selected text into the clipboard was
requested.
- ``selection,start``: A selection has begun and no previous selection
existed.
- ``selection,changed``: The current selection has changed.
- ``selection,cleared``: The current selection has been cleared.
- ``cursor,changed``: The cursor has changed position.
- ``anchor,clicked``: An anchor has been clicked. The event_info
parameter for the callback will be an :py:class:`EntryAnchorInfo`.
- ``anchor,in``: Mouse cursor has moved into an anchor. The event_info
parameter for the callback will be an :py:class:`EntryAnchorInfo`.
- ``anchor,out``: Mouse cursor has moved out of an anchor. The event_info
parameter for the callback will be an :py:class:`EntryAnchorInfo`.
- ``anchor,up``: Mouse button has been unpressed on an anchor. The event_info
parameter for the callback will be an :py:class:`EntryAnchorInfo`.
- ``anchor,down``: Mouse button has been pressed on an anchor. The event_info
parameter for the callback will be an :py:class:`EntryAnchorInfo`.
- ``preedit,changed``: The preedit string has changed.
- ``text,set,done``: Whole text has been set to the entry.
- ``rejected``: .Called when some of inputs are rejected by the filter. (since 1.9)
Layout content parts
====================
- ``icon`` - An icon in the entry
- ``end`` - A content in the end of the entry
Layout text parts
=================
- ``default`` - text of the entry
- ``guide`` - placeholder of the entry
Enumerations
============
.. _Elm_Entry_Autocapital_Type:
Autocapitalization types
------------------------
.. data:: ELM_AUTOCAPITAL_TYPE_NONE
No auto-capitalization when typing
.. data:: ELM_AUTOCAPITAL_TYPE_WORD
Autocapitalize each word typed
.. data:: ELM_AUTOCAPITAL_TYPE_SENTENCE
Autocapitalize the start of each sentence
.. data:: ELM_AUTOCAPITAL_TYPE_ALLCHARACTER
Autocapitalize all letters
.. _Elm_Entry_Cnp_Mode:
Copy & paste modes
------------------
.. data:: ELM_CNP_MODE_MARKUP
Copy & paste text with markup tags
.. data:: ELM_CNP_MODE_NO_IMAGE
Copy & paste text without item (image) tags
.. data:: ELM_CNP_MODE_PLAINTEXT
Copy & paste text without markup tags
.. _Elm_Input_Hints:
Input Hints
-----------
.. data:: ELM_INPUT_HINT_NONE
No active hints
.. versionadded:: 1.12
.. data:: ELM_INPUT_HINT_AUTO_COMPLETE
Suggest word auto completion
.. versionadded:: 1.12
.. data:: ELM_INPUT_HINT_SENSITIVE_DATA
typed text should not be stored
.. versionadded:: 1.12
.. _Elm_Entry_Input_Panel_Lang:
Input panel language sort order
-------------------------------
.. data:: ELM_INPUT_PANEL_LANG_AUTOMATIC
Automatic
.. data:: ELM_INPUT_PANEL_LANG_ALPHABET
Alphabetic
.. _Elm_Entry_Input_Panel_Layout:
Input panel layouts
-------------------
.. data:: ELM_INPUT_PANEL_LAYOUT_NORMAL
Default layout
.. data:: ELM_INPUT_PANEL_LAYOUT_NUMBER
Number layout
.. data:: ELM_INPUT_PANEL_LAYOUT_EMAIL
Email layout
.. data:: ELM_INPUT_PANEL_LAYOUT_URL
URL layout
.. data:: ELM_INPUT_PANEL_LAYOUT_PHONENUMBER
Phone number layout
.. data:: ELM_INPUT_PANEL_LAYOUT_IP
IP layout
.. data:: ELM_INPUT_PANEL_LAYOUT_MONTH
Month layout
.. data:: ELM_INPUT_PANEL_LAYOUT_NUMBERONLY
Number only layout
.. data:: ELM_INPUT_PANEL_LAYOUT_INVALID
Never use this
.. data:: ELM_INPUT_PANEL_LAYOUT_HEX
Hexadecimal layout
.. data:: ELM_INPUT_PANEL_LAYOUT_TERMINAL
Command-line terminal layout
.. data:: ELM_INPUT_PANEL_LAYOUT_PASSWORD
Like normal, but no auto-correct, no auto-capitalization etc.
.. data:: ELM_INPUT_PANEL_LAYOUT_DATETIME
Date and time layout
.. versionadded:: 1.10
.. data:: ELM_INPUT_PANEL_LAYOUT_EMOTICON
Emoticon layout
.. versionadded:: 1.10
.. data:: ELM_INPUT_PANEL_LAYOUT_VOICE
Voice layout, but if the IME does not support voice, then normal layout will be shown
.. versionadded:: 1.19
.. _Elm_Input_Panel_Layout_Normal_Variation:
Input panel normal layout variation
-----------------------------------
.. data:: ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_NORMAL
The plain normal layout
.. versionadded:: 1.12
.. data:: ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_FILENAME
Filename layout. Symbols such as '/' should be disabled
.. versionadded:: 1.12
.. data:: ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_PERSON_NAME
The name of a person
.. versionadded:: 1.12
.. _Elm_Input_Panel_Layout_Numberonly_Variation:
Input panel numberonly layout variation
---------------------------------------
.. data:: ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_NORMAL
The numberonly normal layout
.. versionadded:: 1.12
.. data:: ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED
The signed number layout
.. versionadded:: 1.12
.. data:: ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_DECIMAL
The decimal number layout
.. versionadded:: 1.12
.. data:: ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED_AND_DECIMAL
The signed and decimal number layout
.. versionadded:: 1.12
.. _Elm_Input_Panel_Layout_Password_Variation:
Input panel password layout variation
-------------------------------------
.. data:: ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NORMAL
The normal password layout
.. versionadded:: 1.12
.. data:: ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NUMBERONLY
The password layout to allow only number
.. versionadded:: 1.12
.. _Elm_Entry_Input_Panel_Return_Key_Type:
Input panel return key modes
----------------------------
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT
Default
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE
Done
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_GO
Go
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_JOIN
Join
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN
Login
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_NEXT
Next
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH
Search
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEND
Send
.. data:: ELM_INPUT_PANEL_RETURN_KEY_TYPE_SIGNIN
Sign-in
.. versionadded:: 1.10
.. _Elm_Entry_Text_Format:
Text format
-----------
.. data:: ELM_TEXT_FORMAT_PLAIN_UTF8
Plain UTF-8 type
.. data:: ELM_TEXT_FORMAT_MARKUP_UTF8
UTF-8 with markup
.. _Elm_Wrap_Type:
Wrap mode
---------
.. data:: ELM_WRAP_NONE
No wrap
.. data:: ELM_WRAP_CHAR
Wrap between characters
.. data:: ELM_WRAP_WORD
Wrap in allowed wrapping points (as defined in the unicode standard)
.. data:: ELM_WRAP_MIXED
Word wrap, and if that fails, char wrap
Inheritance diagram
===================
.. inheritance-diagram:: Entry
:parts: 2
.. autofunction:: markup_to_utf8
.. autofunction:: utf8_to_markup
.. autoclass:: Entry
.. autoclass:: EntryContextMenuItem
.. autoclass:: FilterLimitSize
.. autoclass:: FilterAcceptSet
.. autoclass:: EntryAnchorInfo
.. autoclass:: EntryAnchorHoverInfo

View File

@ -1,2 +1,137 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.fileselector
Fileselector
############
.. image:: /images/fileselector-preview.png
Widget description
==================
A file selector is a widget that allows a user to navigate through a
file system, reporting file selections back via its API.
It contains shortcut buttons for home directory (*~*) and to jump one
directory upwards (..), as well as cancel/ok buttons to confirm/cancel a
given selection. After either one of those two former actions, the file
selector will issue its ``"done"`` smart callback.
There's a text entry on it, too, showing the name of the current
selection. There's the possibility of making it editable, so it is
useful on file saving dialogs on applications, where one gives a file
name to save contents to, in a given directory in the system. This
custom file name will be reported on the ``"done"`` smart callback
(explained in sequence).
Finally, it has a view to display file system items into in two possible
forms:
- list
- grid
If Elementary is built with support of the Ethumb thumbnailing library,
the second form of view will display preview thumbnails of files which
it supports.
Emitted signals
===============
- ``activated`` - the user activated a file. This can happen by
double-clicking or pressing Enter key. (**event_info** is a string with the
activated file path)
- ``selected`` - the user has clicked on a file (when not in folders-only
mode) or directory (when in folders-only mode)
- ``directory,open`` - the list has been populated with new content
(*event_info* is the directory's path)
- ``done`` - the user has clicked on the "ok" or "cancel"
buttons (*event_info* is the selection's path)
Layout text parts
=================
- ``ok`` - OK button label if the ok button is set. (since 1.8)
- ``cancel`` - Cancel button label if the cancel button is set. (since 1.8)
Enumerations
============
.. _Elm_Fileselector_Mode:
Fileselector modes
------------------
.. data:: ELM_FILESELECTOR_LIST
Layout as a list
.. data:: ELM_FILESELECTOR_GRID
Layout as a grid
.. _Elm_Fileselector_Sort:
Fileselector sort method
------------------------
.. data:: ELM_FILESELECTOR_SORT_BY_FILENAME_ASC
Sort by filename in ascending order
.. versionadded:: 1.9
.. data:: ELM_FILESELECTOR_SORT_BY_FILENAME_DESC
Sort by filename in descending order
.. versionadded:: 1.9
.. data:: ELM_FILESELECTOR_SORT_BY_TYPE_ASC
Sort by file type in ascending order
.. versionadded:: 1.9
.. data:: ELM_FILESELECTOR_SORT_BY_TYPE_DESC
Sort by file type in descending order
.. versionadded:: 1.9
.. data:: ELM_FILESELECTOR_SORT_BY_SIZE_ASC
Sort by file size in ascending order
.. versionadded:: 1.9
.. data:: ELM_FILESELECTOR_SORT_BY_SIZE_DESC
Sort by file size in descending order
.. versionadded:: 1.9
.. data:: ELM_FILESELECTOR_SORT_BY_MODIFIED_ASC
Sort by file modification date in ascending order
.. versionadded:: 1.9
.. data:: ELM_FILESELECTOR_SORT_BY_MODIFIED_DESC
Sort by file modification date in descending order
.. versionadded:: 1.9
Inheritance diagram
===================
.. inheritance-diagram:: Fileselector
:parts: 2
.. autoclass:: Fileselector

View File

@ -1,2 +1,74 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.fileselector_button
Fileselector Button
###################
.. image:: /images/fileselector-button-preview.png
Widget description
==================
This is a button that, when clicked, creates an Elementary window (or
inner window) with a :py:class:`~efl.elementary.fileselector.Fileselector`
within.
When a file is chosen, the (inner) window is closed and the button emits
a signal having the selected file as it's ``event_info``.
This widget encapsulates operations on its internal file selector on its
own API. There is less control over its file selector than that one
would have instantiating one directly.
Available styles
================
- ``default``
- ``anchor``
- ``hoversel_vertical``
- ``hoversel_vertical_entry``
Emitted signals
===============
- ``file,chosen`` - the user has selected a path which comes as the
``event_info`` data
Layout text parts
=================
- ``default`` - Label of the fileselector_button
Layout content parts
====================
- ``icon`` - Icon of the fileselector_button
Fileselector Interface
======================
This widget supports the fileselector interface.
If you wish to control the fileselector part using these functions,
inherit both the widget class and the
:py:class:`~efl.elementary.fileselector.Fileselector` class
using multiple inheritance, for example::
class CustomFileselectorButton(Fileselector, FileselectorButton):
def __init__(self, canvas, *args, **kwargs):
FileselectorButton.__init__(self, canvas)
Inheritance diagram
===================
.. inheritance-diagram:: FileselectorButton
:parts: 2
.. autoclass:: FileselectorButton

View File

@ -1,2 +1,87 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.fileselector_entry
Fileselector Entry
##################
.. image:: /images/fileselector-entry-preview.png
Widget description
==================
This is an entry made to be filled with or display a file
system path string.
Besides the entry itself, the widget has a
:py:class:`~efl.elementary.fileselector_button.FileselectorButton` on its side,
which will raise an internal
:py:class:`~efl.elementary.fileselector.Fileselector`, when clicked, for path
selection aided by file system navigation.
This file selector may appear in an Elementary window or in an
inner window. When a file is chosen from it, the (inner) window
is closed and the selected file's path string is exposed both as
a smart event and as the new text on the entry.
This widget encapsulates operations on its internal file
selector on its own API. There is less control over its file
selector than that one would have instantiating one directly.
Emitted signals
===============
- ``changed`` - The text within the entry was changed
- ``activated`` - The entry has had editing finished and
changes are to be "committed"
- ``press`` - The entry has been clicked
- ``longpressed`` - The entry has been clicked (and held) for a
couple seconds
- ``clicked`` - The entry has been clicked
- ``clicked,double`` - The entry has been double clicked
- ``selection,paste`` - A paste action has occurred on the
entry
- ``selection,copy`` - A copy action has occurred on the entry
- ``selection,cut`` - A cut action has occurred on the entry
- ``unpressed`` - The file selector entry's button was released
after being pressed.
- ``file,chosen`` - The user has selected a path via the file
selector entry's internal file selector, whose string
comes as the ``event_info`` data.
Layout text parts
=================
- ``default`` - Label of the fileselector_button
Layout content parts
====================
- ``button icon`` - Button icon of the fileselector_entry
Fileselector Interface
======================
This widget supports the fileselector interface.
If you wish to control the fileselector part using these functions,
inherit both the widget class and the
:py:class:`~efl.elementary.fileselector.Fileselector` class
using multiple inheritance, for example::
class CustomFileselectorButton(Fileselector, FileselectorButton):
def __init__(self, canvas, *args, **kwargs):
FileselectorButton.__init__(self, canvas)
Inheritance diagram
===================
.. inheritance-diagram:: FileselectorEntry
:parts: 2
.. autoclass:: FileselectorEntry

View File

@ -1,2 +1,164 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.flip
Flip
####
.. image:: /images/flip-preview.png
Widget description
==================
This widget holds two content :py:class:`efl.evas.Object`: one on
the front and one on the back. It allows you to flip from front to back
and vice-versa using various animations.
If either the front or back contents are not set the flip will treat that
as transparent. So if you were to set the front content but not the back,
and then call :py:meth:`Flip.go` you would see whatever is below the flip.
For a list of supported animations see :py:meth:`Flip.go`.
Emitted signals
===============
- ``animate,begin`` - when a flip animation was started
- ``animate,done`` - when a flip animation is finished
Layout content parts
====================
- ``front`` - A front content of the flip
- ``back`` - A back content of the flip
Enumerations
============
.. _Elm_Flip_Direction:
Flip directions
---------------
.. data:: ELM_FLIP_DIRECTION_UP
Allows interaction with the top of the widget.
.. data:: ELM_FLIP_DIRECTION_DOWN
Allows interaction with the bottom of the widget.
.. data:: ELM_FLIP_DIRECTION_LEFT
Allows interaction with the left portion of
the widget.
.. data:: ELM_FLIP_DIRECTION_RIGHT
Allows interaction with the right portion of
the widget.
.. _Elm_Flip_Interaction:
Flip interaction modes
----------------------
.. data:: ELM_FLIP_INTERACTION_NONE
No interaction is allowed
.. data:: ELM_FLIP_INTERACTION_ROTATE
Interaction will cause rotate animation
.. data:: ELM_FLIP_INTERACTION_CUBE
Interaction will cause cube animation
.. data:: ELM_FLIP_INTERACTION_PAGE
Interaction will cause page animation
.. _Elm_Flip_Mode:
Flip types
----------
.. data:: ELM_FLIP_ROTATE_Y_CENTER_AXIS
Rotate the currently visible content around a vertical axis in the
middle of its width, the other content is shown as the other side of the
flip.
.. data:: ELM_FLIP_ROTATE_X_CENTER_AXIS
Rotate the currently visible content around a horizontal axis in the
middle of its height, the other content is shown as the other side of
the flip.
.. data:: ELM_FLIP_ROTATE_XZ_CENTER_AXIS
Rotate the currently visible content around a diagonal axis in the
middle of its width, the other content is shown as the other side of the
flip.
.. data:: ELM_FLIP_ROTATE_YZ_CENTER_AXIS
Rotate the currently visible content around a diagonal axis in the
middle of its height, the other content is shown as the other side of
the flip.
.. data:: ELM_FLIP_CUBE_LEFT
Rotate the currently visible content to the left as if the flip was a
cube, the other content is show as the right face of the cube.
.. data:: ELM_FLIP_CUBE_RIGHT
Rotate the currently visible content to the right as if the flip was a
cube, the other content is show as the left face of the cube.
.. data:: ELM_FLIP_CUBE_UP
Rotate the currently visible content up as if the flip was a cube, the
other content is show as the bottom face of the cube.
.. data:: ELM_FLIP_CUBE_DOWN
Rotate the currently visible content down as if the flip was a cube, the
other content is show as the upper face of the cube.
.. data:: ELM_FLIP_PAGE_LEFT
Move the currently visible content to the left as if the flip was a
book, the other content is shown as the page below that.
.. data:: ELM_FLIP_PAGE_RIGHT
Move the currently visible content to the right as if the flip was a
book, the other content is shown as the page below that.
.. data:: ELM_FLIP_PAGE_UP
Move the currently visible content up as if the flip was a book, the
other content is shown as the page below that.
.. data:: ELM_FLIP_PAGE_DOWN
Move the currently visible content down as if the flip was a book, the
other content is shown as the page below that.
Inheritance diagram
===================
.. inheritance-diagram:: Flip
:parts: 2
.. autoclass:: Flip

View File

@ -1,2 +1,50 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.flipselector
Flipselector
############
.. image:: /images/flipselector-preview.png
Widget description
==================
A flip selector is a widget to show a set of *text* items, one at a time, with
the same sheet switching style as the :py:class:`~efl.elementary.clock.Clock`
widget, when one changes the current displaying sheet (thus, the "flip" in the
name).
User clicks to flip sheets which are *held* for some time will
make the flip selector to flip continuously and automatically for
the user. The interval between flips will keep growing in time,
so that it helps the user to reach an item which is distant from
the current selection.
Emitted signals
===============
- ``selected`` - when the widget's selected text item is changed
- ``overflowed`` - when the widget's current selection is changed
from the first item in its list to the last
- ``underflowed`` - when the widget's current selection is changed
from the last item in its list to the first
Layout text parts
=================
- ``default`` - label of the flipselector item
Inheritance diagram
===================
.. inheritance-diagram::
FlipSelector
FlipSelectorItem
:parts: 2
.. autoclass:: FlipSelector
.. autoclass:: FlipSelectorItem

View File

@ -1,2 +1,54 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.frame
Frame
#####
.. image:: /images/frame-preview.png
Widget description
==================
Frame is a widget that holds some content and has a title.
Available styles
================
- default
- pad_small
- pad_medium
- pad_large
- pad_huge
- outdent_top
- outdent_bottom
Out of all these styles only default shows the title.
Emitted signals
===============
- ``clicked`` - The user has clicked the frame's label
Layout content parts
====================
- ``default`` - A content of the frame
Layout text parts
=================
- ``default`` - Label of the frame
Inheritance diagram
===================
.. inheritance-diagram:: Frame
:parts: 2
.. autoclass:: Frame

View File

@ -1,2 +0,0 @@
.. automodule:: efl.elementary.general

View File

@ -1,2 +1,330 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.gengrid
Gengrid
#######
.. image:: /images/gengrid-preview.png
Widget description
==================
This widget aims to position objects in a grid layout while actually
creating and rendering only the visible ones, using the same idea as the
:py:class:`~efl.elementary.genlist.Genlist`: the user defines a **class** for
each item, specifying functions that will be called at object creation,
deletion, etc. When those items are selected by the user, a callback
function is issued. Users may interact with a gengrid via the mouse (by
clicking on items to select them and clicking on the grid's viewport and
swiping to pan the whole view) or via the keyboard, navigating through
item with the arrow keys.
Scrollable Interface
====================
This widget supports the scrollable interface.
If you wish to control the scolling behaviour using these functions,
inherit both the widget class and the
:py:class:`~efl.elementary.scroller.Scrollable` class
using multiple inheritance, for example::
class ScrollableGenlist(Genlist, Scrollable):
def __init__(self, canvas, *args, **kwargs):
Genlist.__init__(self, canvas)
Gengrid layouts
===============
Gengrid may layout its items in one of two possible layouts:
- horizontal or
- vertical.
When in "horizontal mode", items will be placed in **columns**, from top
to bottom and, when the space for a column is filled, another one is
started on the right, thus expanding the grid horizontally, making for
horizontal scrolling. When in "vertical mode" , though, items will be
placed in **rows**, from left to right and, when the space for a row is
filled, another one is started below, thus expanding the grid vertically
(and making for vertical scrolling).
Gengrid items
=============
An item in a gengrid can have 0 or more texts (they can be regular text
or textblock Evas objects - that's up to the style to determine), 0 or
more contents (which are simply objects swallowed into the gengrid
item's theming Edje object) and 0 or more **boolean states**, which
have the behavior left to the user to define. The Edje part names for
each of these properties will be looked up, in the theme file for the
gengrid, under the Edje (string) data items named ``"texts"``,
``"contents"`` and ``"states"``, respectively. For each of those
properties, if more than one part is provided, they must have names
listed separated by spaces in the data fields. For the default gengrid
item theme, we have **one** text part (``"elm.text"``), **two** content
parts (``"elm.swalllow.icon"`` and ``"elm.swallow.end"``) and **no**
state parts.
A gengrid item may be at one of several styles. Elementary provides one
by default - "default", but this can be extended by system or
application custom themes/overlays/extensions (see
:py:class:`~efl.elementary.theme.Theme` for more details).
Gengrid item classes
====================
In order to have the ability to add and delete items on the fly, gengrid
implements a class (callback) system where the application provides a
structure with information about that type of item (gengrid may contain
multiple different items with different classes, states and styles).
Gengrid will call the functions in this struct (methods) when an item is
"realized" (i.e., created dynamically, while the user is scrolling the
grid). All objects will simply be deleted when no longer needed with
:meth:`~efl.eo.Eo.delete`. The :class:`GengridItemClass` class contains the
following attributes and methods:
- ``item_style`` - This is a constant string and simply defines the name
of the item style. It **must** be specified and the default should be
``default``.
- ``func.text_get`` - This function is called when an item object is
actually created. The ``data`` parameter will point to the same data
passed to :meth:`~Gengrid.item_append` and related item creation
functions. The ``obj`` parameter is the gengrid object itself, while
the ``part`` one is the name string of one of the existing text parts
in the Edje group implementing the item's theme.
See :py:meth:`GengridItemClass.text_get`.
- ``func.content_get`` - This function is called when an item object is
actually created. The ``data`` parameter will point to the same data
passed to :py:meth:`GengridItem.append_to` and related item creation
functions. The ``obj`` parameter is the gengrid object itself, while
the ``part`` one is the name string of one of the existing (content)
swallow parts in the Edje group implementing the item's theme. It must
return ``None,`` when no content is desired, or a valid object handle,
otherwise. The object will be deleted by the gengrid on its deletion
or when the item is "unrealized". See :py:meth:`GengridItemClass.content_get`.
- ``func.state_get`` - This function is called when an item object is
actually created. The ``data`` parameter will point to the same data
passed to :py:meth:`GengridItem.append_to` and related item creation
functions. The ``obj`` parameter is the gengrid object itself, while
the ``part`` one is the name string of one of the state parts in the
Edje group implementing the item's theme. Return ``False`` for
false/off or ``True`` for true/on. Gengrids will emit a signal to
its theming Edje object with ``"elm,state,xxx,active"`` and ``"elm"``
as "emission" and "source" arguments, respectively, when the state is
true (the default is false), where ``xxx`` is the name of the (state)
part. See :py:meth:`GengridItemClass.state_get`.
- ``func.del`` - This is called when
:meth:`efl.elementary.object_item.ObjectItem.delete` is called on
an item or :meth:`~Gengrid.clear` is called on the gengrid. This is
intended for use when gengrid items are deleted, so any data attached
to the item (e.g. its data parameter on creation) can be deleted. See
:py:meth:`GengridItemClass.delete`.
Usage hints
===========
If the user wants to have multiple items selected at the same time,
:attr:`~Gengrid.multi_select` will permit it. If the gengrid is
single-selection only (the default), then :attr:`~Gengrid.selected_item`
will return the selected item or ``None``, if none is selected. If the
gengrid is under multi-selection, then :attr:`~Gengrid.selected_items`
will return a list (that is only valid as long as no items are modified
(added, deleted, selected or unselected) of child items on a gengrid.
If an item changes (internal (boolean) state, text or content changes),
then use :meth:`~GengridItem.update` to have gengrid update the item with
the new state. A gengrid will re-"realize" the item, thus calling the
functions in the :class:`GengridItemClass` set for that item.
To programmatically (un)select an item or get the selected state, use
:attr:`GengridItem.selected`. To make an item disabled (unable to be
selected and appear differently) or get the disabled state
use :attr:`GengridItem.disabled`.
Grid cells will only have their selection smart callbacks called when
firstly getting selected. Any further clicks will do nothing, unless you
enable the "always select mode", with :attr:`~Gengrid.select_mode` as
:attr:`ELM_OBJECT_SELECT_MODE_ALWAYS`, thus making every click to issue
selection callbacks. :attr:`~Gengrid.select_mode` as
:attr:`ELM_OBJECT_SELECT_MODE_NONE` will turn off the ability to select items
entirely in the widget and they will neither appear selected nor call
the selection smart callbacks.
Remember that you can create new styles and add your own theme
augmentation per application with
:meth:`Theme.extension_add<efl.elementary.theme.Theme.extension_add>`. If you
absolutely must have a specific style that overrides any theme the user
or system sets up you can use
:meth:`Theme.extension_add<efl.elementary.theme.Theme.overlay_add>` to add such
a file.
Emitted signals
===============
- ``activated`` - The user has double-clicked or pressed
(enter|return|spacebar) on an item. The ``event_info`` parameter
is the gengrid item that was activated.
- ``clicked,double`` - The user has double-clicked an item.
The ``event_info`` parameter is the gengrid item that was double-clicked.
- ``clicked,right`` - The user has right-clicked an item. The
``event_info`` parameter is the item that was right-clicked. (since: 1.13)
- ``longpressed`` - This is called when the item is pressed for a certain
amount of time. By default it's 1 second.
- ``selected`` - The user has made an item selected. The
``event_info`` parameter is the gengrid item that was selected.
- ``unselected`` - The user has made an item unselected. The
``event_info`` parameter is the gengrid item that was unselected.
- ``realized`` - This is called when the item in the gengrid
has its implementing Evas object instantiated, de facto.
``event_info`` is the gengrid item that was created.
- ``unrealized`` - This is called when the implementing Evas
object for this item is deleted. ``event_info`` is the gengrid
item that was deleted.
- ``changed`` - Called when an item is added, removed, resized
or moved and when the gengrid is resized or gets "horizontal"
property changes.
- ``scroll,anim,start`` - This is called when scrolling animation has
started.
- ``scroll,anim,stop`` - This is called when scrolling animation has
stopped.
- ``drag,start,up`` - Called when the item in the gengrid has
been dragged (not scrolled) up.
- ``drag,start,down`` - Called when the item in the gengrid has
been dragged (not scrolled) down.
- ``drag,start,left`` - Called when the item in the gengrid has
been dragged (not scrolled) left.
- ``drag,start,right`` - Called when the item in the gengrid has
been dragged (not scrolled) right.
- ``drag,stop`` - Called when the item in the gengrid has
stopped being dragged.
- ``drag`` - Called when the item in the gengrid is being
dragged.
- ``scroll`` - called when the content has been scrolled
(moved).
- ``scroll,drag,start`` - called when dragging the content has
started.
- ``scroll,drag,stop`` - called when dragging the content has
stopped.
- ``edge,top`` - This is called when the gengrid is scrolled until
the top edge.
- ``edge,bottom`` - This is called when the gengrid is scrolled
until the bottom edge.
- ``edge,left`` - This is called when the gengrid is scrolled
until the left edge.
- ``edge,right`` - This is called when the gengrid is scrolled
until the right edge.
- ``moved`` - This is called when a gengrid item is moved by a user
interaction in a reorder mode. The ``event_info`` parameter is the item that
was moved.
- ``index,update`` - This is called when a gengrid item index is changed.
Note that this callback is called while each item is being realized.
- ``highlighted`` - an item in the list is highlighted. This is called when
the user presses an item or keyboard selection is done so the item is
physically highlighted. The ``event_info`` parameter is the item that was
highlighted.
- ``unhighlighted`` - an item in the list is unhighlighted. This is called
when the user releases an item or keyboard selection is moved so the item
is physically unhighlighted. The ``event_info`` parameter is the item that
was unhighlighted.
- ``item,focused`` - When the gengrid item has received focus. (since 1.10)
- ``item,unfocused`` - When the gengrid item has lost focus. (since 1.10)
- ``item,reorder,anim,start`` - This is called when a gengrid item movement
has just started by keys in reorder mode. The parameter is the item that
is going to move. (since 1.10)
- ``item,reorder,anim,stop`` - This is called when a gengrid item movement just
stopped in reorder mode. The parameter is the item that was moved. (since 1.10)
Enumerations
============
.. _Elm_Gengrid_Item_Scrollto_Type:
Items' scroll to types
----------------------
.. data:: ELM_GENGRID_ITEM_SCROLLTO_NONE
No scroll to
.. data:: ELM_GENGRID_ITEM_SCROLLTO_IN
Scroll to the nearest viewport
.. data:: ELM_GENGRID_ITEM_SCROLLTO_TOP
Scroll to the top of viewport
.. data:: ELM_GENGRID_ITEM_SCROLLTO_MIDDLE
Scroll to the middle of viewport
.. data:: ELM_GENGRID_ITEM_SCROLLTO_BOTTOM
Scroll to the bottom of viewport
.. versionadded:: 1.17
.. _Elm_Gengrid_Object_Multi_Select_Mode:
Multi-select mode
-----------------
.. data:: ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT
Default multiple select mode
.. versionadded:: 1.10
.. data:: ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL
Disallow mutiple selection when clicked without control key pressed
.. versionadded:: 1.10
.. data:: ELM_OBJECT_MULTI_SELECT_MODE_MAX
Value unknown
.. versionadded:: 1.10
.. _Elm_Gengrid_Reorder_Type:
Reorder type
------------
.. data:: ELM_GENGRID_REORDER_TYPE_NORMAL
Normal reorder mode
.. versionadded:: 1.11
.. data:: ELM_GENGRID_REORDER_TYPE_SWAP
Swap reorder mode
.. versionadded:: 1.11
Inheritance diagram
===================
.. inheritance-diagram::
Gengrid
GengridItem
GengridItemClass
:parts: 2
.. autoclass:: Gengrid
.. autoclass:: GengridItem
.. autoclass:: GengridItemClass

View File

@ -1,2 +1,438 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.genlist
Genlist
#######
.. image:: /images/genlist-preview.png
Widget description
==================
This widget aims to have more expansive list than the simple list in
Elementary that could have more flexible items and allow many more
entries while still being fast and low on memory usage. At the same time
it was also made to be able to do tree structures. But the price to pay
is more complexity when it comes to usage. If all you want is a simple
list (not much items) with icons and a single text, use the normal
:class:`List` object.
Genlist has a fairly large API, mostly because it's relatively complex,
trying to be both expansive, powerful and efficient. First we will begin
an overview on the theory behind genlist.
Genlist item classes - creating items
=====================================
In order to have the ability to add and delete items on the fly, genlist
implements the item class (callback) system where the application provides a
structure with information about that type of item (genlist may contain
multiple different items with different classes, states and styles).
Genlist will call the functions in this class (methods) when an item is
"realized" (i.e., created dynamically, while the user is scrolling the
grid). All objects will simply be deleted when no longer needed with
:func:`efl.evas.Object.delete`. :class:`GenlistItemClass` contains the
following members:
- ``item_style`` - This is a constant string and define the name of the default
item style. It **must** be provided.
- ``decorate_item_style`` - This is a constant string and define the name of
the style to be used in the "decorate" mode.
See :attr:`GenlistItem.decorate_mode`.
- ``decorate_all_item_style`` - This is a constant string and
define the name of the style to be used in the "decorate all" mode.
See :attr:`Genlist.decorate_mode`.
- ``text_get`` - This function will be called for every text part. Should
return the text to display. See :func:`GenlistItemClass.text_get`.
- ``content_get`` - This function will be called for every content part.
Should return an object to display, the object will be deleted by the
genlist on its deletion or when the item is "unrealized". See
:func:`GenlistItemClass.content_get`.
- ``state_get`` - This function will be called for every state part. Must
return ``True`` for false/off or ``True`` for true/on. Genlists will
emit a signal to its theming Edje object with ``"elm,state,xxx,active"``
and ``"elm"`` as "emission" and "source" arguments, respectively, when
the state is true (the default is false), where ``xxx`` is the name of
the (state) part. See :func:`GenlistItemClass.state_get`.
- ``func.del`` - This is intended for use when genlist items are deleted,
so any data attached to the item (e.g. its data parameter on creation)
can be deleted. See :func:`GenlistItemClass.delete`.
Available item styles
=====================
- ``default`` The default style: icon, text, end icon
- ``default_style`` The text part is a textblock and can use markups
- ``double_label`` Two different text parts
- ``icon_top_text_bottom``
- ``group_index``
- ``one_icon`` Only 1 icon (left) (since: 1.1)
- ``end_icon`` Only 1 icon (at end/right) (since: 1.1)
- ``no_icon`` No icon (since: 1.1)
- ``full`` Only one object, elm.swallow.content, which consumes whole area of
the genlist item (since: 1.7)
- ``indent`` Has indentation to match tree group items (since: 1.19)
Structure of items
==================
An item in a genlist can have 0 or more texts (they can be regular text
or textblock Evas objects - that's up to the style to determine), 0 or
more contents (which are simply objects swallowed into the genlist item's
theming Edje object) and 0 or more **boolean states**, which have the
behavior left to the user to define. The Edje part names for each of
these properties will be looked up, in the theme file for the genlist,
under the Edje (string) data items named ``labels``, ``contents``
and ``states``, respectively. For each of those properties, if more
than one part is provided, they must have names listed separated by
spaces in the data fields. For the default genlist item theme, we have
**one** text part (``elm.text``), **two** content parts
(``elm.swallow.icon`` and ``elm.swallow.end``) and **no** state parts.
Editing and Navigating
======================
Items can be added by several calls. All of them return a
:py:class:`GenlistItem` handle that is an internal member inside the genlist.
They all take a data parameter that is meant to be used for a handle to the
applications internal data (eg. the struct with the original item data). The
parent parameter is the parent genlist item this belongs to if it is a tree or
an indexed group, and None if there is no parent. The flags can be a bitmask of
:attr:`ELM_GENLIST_ITEM_NONE`, :attr:`ELM_GENLIST_ITEM_TREE` and
:attr:`ELM_GENLIST_ITEM_GROUP`. If :attr:`ELM_GENLIST_ITEM_TREE` is set then
this item is displayed as an item that is able to expand and have child items.
If :attr:`ELM_GENLIST_ITEM_GROUP` is set then this item is group index item
that is displayed at the top until the next group comes. The func parameter is
a convenience callback that is called when the item is selected and the data
parameter will be the func_data parameter, ``obj`` be the genlist object and
event_info will be the genlist item.
:py:meth:`GenlistItem.append_to` adds an item to the end of the list, or if
there is a parent, to the end of all the child items of the parent.
:py:meth:`GenlistItem.prepend_to` is the same but adds to the beginning of
the list or children list. :py:meth:`GenlistItem.insert_before` inserts at
item before another item and :py:meth:`GenlistItem.insert_after` inserts after
the indicated item.
The application can clear the list with :py:meth:`Genlist.clear` which deletes
all the items in the list and
:py:meth:`~efl.elementary.object_item.ObjectItem.delete` will delete a specific
item. :py:meth:`GenlistItem.subitems_clear` will clear all items that are
children of the indicated parent item.
To help inspect list items you can jump to the item at the top of the list
with :py:attr:`Genlist.first_item` which will return the first item, and
similarly :py:attr:`Genlist.last_item` gets the item at the end of the list.
:py:attr:`GenlistItem.next` and :py:attr:`GenlistItem.prev` get the next
and previous items respectively relative to the indicated item. Using
these calls you can walk the entire item list/tree. Note that as a tree
the items are flattened in the list, so :py:attr:`GenlistItem.parent` will
let you know which item is the parent (and thus know how to skip them if
wanted).
Multi-selection
===============
If the application wants multiple items to be able to be selected,
:py:attr:`Genlist.multi_select` can enable this. If the list is
single-selection only (the default), then :py:attr:`Genlist.selected_item`
will return the selected item, if any, or None if none is selected. If the
list is multi-select then :py:attr:`Genlist.selected_items` will return a
list (that is only valid as long as no items are modified (added, deleted,
selected or unselected)).
Usage hints
===========
There are also convenience functions.
:py:attr:`efl.elementary.object_item.ObjectItem.widget` will return the genlist
object the item belongs to. :py:meth:`GenlistItem.show` will make the scroller
scroll to show that specific item so its visible.
:py:attr:`efl.elementary.object_item.ObjectItem.data` returns the data pointer
set by the item creation functions.
If an item changes (state of boolean changes, text or contents change),
then use :py:meth:`GenlistItem.update` to have genlist update the item with
the new state. Genlist will re-realize the item and thus call the functions
in the _Elm_Genlist_Item_Class for that item.
Use :py:attr:`GenlistItem.selected` to programmatically (un)select an item or
get its selected state. Similarly to expand/contract an item and get its
expanded state, use :py:attr:`GenlistItem.expanded`. And again to make an item
disabled (unable to be selected and appear differently) use
:py:attr:`GenlistItem.disabled` to set this and get the disabled state.
In general to indicate how the genlist should expand items horizontally to
fill the list area, use :py:attr:`Genlist.mode`. Valid modes are
ELM_LIST_LIMIT, ELM_LIST_COMPRESS and ELM_LIST_SCROLL. The default is
ELM_LIST_SCROLL. This mode means that if items are too wide to fit, the
scroller will scroll horizontally. Otherwise items are expanded to
fill the width of the viewport of the scroller. If it is
ELM_LIST_LIMIT, items will be expanded to the viewport width
if larger than the item, but genlist widget with is
limited to the largest item. D not use ELM_LIST_LIMIT mode with homogeneous
mode turned on. ELM_LIST_COMPRESS can be combined with a different style
that uses Edje's ellipsis feature (cutting text off like this: "tex...").
Items will only call their selection func and callback when first becoming
selected. Any further clicks will do nothing, unless you enable always
select with :py:attr:`Genlist.select_mode` as ELM_OBJECT_SELECT_MODE_ALWAYS.
This means even if selected, every click will make the selected callbacks
be called. :py:attr:`Genlist.select_mode` as ELM_OBJECT_SELECT_MODE_NONE will
turn off the ability to select items entirely and they will neither
appear selected nor call selected callback functions.
Remember that you can create new styles and add your own theme augmentation per
application with :py:meth:`efl.elementary.theme.Theme.extension_add`. If you
absolutely must have a specific style that overrides any theme the user or
system sets up you can use :py:meth:`efl.elementary.theme.Theme.overlay_add` to
add such a file.
Scrollable Interface
====================
This widget supports the scrollable interface.
If you wish to control the scrolling behaviour using these functions,
inherit both the widget class and the
:py:class:`~efl.elementary.scroller.Scrollable` class
using multiple inheritance, for example::
class ScrollableGenlist(Genlist, Scrollable):
def __init__(self, canvas, *args, **kwargs):
Genlist.__init__(self, canvas)
Implementation
==============
Evas tracks every object you create. Every time it processes an event
(mouse move, down, up etc.) it needs to walk through objects and find out
what event that affects. Even worse every time it renders display updates,
in order to just calculate what to re-draw, it needs to walk through many
many many objects. Thus, the more objects you keep active, the more
overhead Evas has in just doing its work. It is advisable to keep your
active objects to the minimum working set you need. Also remember that
object creation and deletion carries an overhead, so there is a
middle-ground, which is not easily determined. But don't keep massive lists
of objects you can't see or use. Genlist does this with list objects. It
creates and destroys them dynamically as you scroll around. It groups them
into blocks so it can determine the visibility etc. of a whole block at
once as opposed to having to walk the whole list. This 2-level list allows
for very large numbers of items to be in the list (tests have used up to
2,000,000 items). Also genlist employs a queue for adding items. As items
may be different sizes, every item added needs to be calculated as to its
size and thus this presents a lot of overhead on populating the list, this
genlist employs a queue. Any item added is queued and spooled off over
time, actually appearing some time later, so if your list has many members
you may find it takes a while for them to all appear, with your process
consuming a lot of CPU while it is busy spooling.
Genlist also implements a tree structure, but it does so with callbacks to
the application, with the application filling in tree structures when
requested (allowing for efficient building of a very deep tree that could
even be used for file-management). See the above smart signal callbacks for
details.
Emitted signals
===============
- ``activated`` - The user has double-clicked or pressed
(enter|return|spacebar) on an item. The ``event_info`` parameter is the
item that was activated.
- ``clicked,double`` - The user has double-clicked an item. The
``event_info`` parameter is the item that was double-clicked.
- ``clicked,right`` - The user has right-clicked an item. The
``event_info`` parameter is the item that was right-clicked. (since: 1.13)
- ``selected`` - This is called when a user has made an item selected.
The event_info parameter is the genlist item that was selected.
- ``unselected`` - This is called when a user has made an item
unselected. The event_info parameter is the genlist item that was
unselected.
- ``expanded`` - This is called when :py:attr:`GenlistItem.expanded` is
called and the item is now meant to be expanded. The event_info
parameter is the genlist item that was indicated to expand. It is the
job of this callback to then fill in the child items.
- ``contracted`` - This is called when :py:attr:`GenlistItem.expanded` is
called and the item is now meant to be contracted. The event_info
parameter is the genlist item that was indicated to contract. It is the
job of this callback to then delete the child items.
- ``expand,request`` - This is called when a user has indicated they want
to expand a tree branch item. The callback should decide if the item can
expand (has any children) and then call :py:attr:`GenlistItem.expanded`
appropriately to set the state. The event_info parameter is the genlist
item that was indicated to expand.
- ``contract,request`` - This is called when a user has indicated they
want to contract a tree branch item. The callback should decide if the
item can contract (has any children) and then call
:py:attr:`GenlistItem.expanded` appropriately to set the state. The
event_info parameter is the genlist item that was indicated to contract.
- ``realized`` - This is called when the item in the list is created as a
real evas object. event_info parameter is the genlist item that was
created.
- ``unrealized`` - This is called just before an item is unrealized.
After this call content objects provided will be deleted and the item
object itself delete or be put into a floating cache.
- ``drag,start,up`` - This is called when the item in the list has been
dragged (not scrolled) up.
- ``drag,start,down`` - This is called when the item in the list has been
dragged (not scrolled) down.
- ``drag,start,left`` - This is called when the item in the list has been
dragged (not scrolled) left.
- ``drag,start,right`` - This is called when the item in the list has
been dragged (not scrolled) right.
- ``drag,stop`` - This is called when the item in the list has stopped
being dragged.
- ``drag`` - This is called when the item in the list is being dragged.
- ``longpressed`` - This is called when the item is pressed for a certain
amount of time. By default it's 1 second. The event_info parameter is the
longpressed genlist item.
- ``scroll,anim,start`` - This is called when scrolling animation has
started.
- ``scroll,anim,stop`` - This is called when scrolling animation has
stopped.
- ``scroll,drag,start`` - This is called when dragging the content has
started.
- ``scroll,drag,stop`` - This is called when dragging the content has
stopped.
- ``edge,top`` - This is called when the genlist is scrolled until
the top edge.
- ``edge,bottom`` - This is called when the genlist is scrolled
until the bottom edge.
- ``edge,left`` - This is called when the genlist is scrolled
until the left edge.
- ``edge,right`` - This is called when the genlist is scrolled
until the right edge.
- ``multi,swipe,left`` - This is called when the genlist is multi-touch
swiped left.
- ``multi,swipe,right`` - This is called when the genlist is multi-touch
swiped right.
- ``multi,swipe,up`` - This is called when the genlist is multi-touch
swiped up.
- ``multi,swipe,down`` - This is called when the genlist is multi-touch
swiped down.
- ``multi,pinch,out`` - This is called when the genlist is multi-touch
pinched out.
- ``multi,pinch,in`` - This is called when the genlist is multi-touch
pinched in.
- ``swipe`` - This is called when the genlist is swiped.
- ``moved`` - This is called when a genlist item is moved in reorder mode.
- ``moved,after`` - This is called when a genlist item is moved after
another item in reorder mode. The event_info parameter is the reordered
item. To get the relative previous item, use :py:attr:`GenlistItem.prev`.
This signal is called along with "moved" signal.
- ``moved,before`` - This is called when a genlist item is moved before
another item in reorder mode. The event_info parameter is the reordered
item. To get the relative previous item, use :py:attr:`GenlistItem.next`.
This signal is called along with "moved" signal.
- ``language,changed`` - This is called when the program's language is
changed.
- ``tree,effect,finished`` - This is called when a genlist tree effect
is finished.
- ``highlighted`` - an item in the list is highlighted. This is called when
the user presses an item or keyboard selection is done so the item is
physically highlighted. The ``event_info`` parameter is the item that was
highlighted.
- ``unhighlighted`` - an item in the list is unhighlighted. This is called
when the user releases an item or keyboard selection is moved so the item
is physically unhighlighted. The ``event_info`` parameter is the item that
was unhighlighted.
- ``item,focused`` - When the genlist item has received focus. (since 1.10)
- ``item,unfocused`` - When the genlist item has lost focus. (since 1.10)
- ``changed`` - Genlist is now changed their items and properties and all
calculation is finished. (since 1.16)
- ``filter,done`` - Genlist filter operation is completed.. (since 1.17)
Enumerations
============
.. _Elm_Genlist_Item_Type:
Genlist item types
------------------
.. data:: ELM_GENLIST_ITEM_NONE
Simple item
.. data:: ELM_GENLIST_ITEM_TREE
The item may be expanded and have child items
.. data:: ELM_GENLIST_ITEM_GROUP
An index item of a group of items
.. _Elm_Genlist_Item_Field_Type:
Genlist items' field types
--------------------------
.. data:: ELM_GENLIST_ITEM_FIELD_ALL
Match all fields
.. data:: ELM_GENLIST_ITEM_FIELD_TEXT
Match text fields
.. data:: ELM_GENLIST_ITEM_FIELD_CONTENT
Match content fields
.. data:: ELM_GENLIST_ITEM_FIELD_STATE
Match state fields
.. _Elm_Genlist_Item_Scrollto_Type:
Genlist items' scroll-to types
------------------------------
.. data:: ELM_GENLIST_ITEM_SCROLLTO_NONE
No scroll to
.. data:: ELM_GENLIST_ITEM_SCROLLTO_IN
Scroll to the nearest viewport
.. data:: ELM_GENLIST_ITEM_SCROLLTO_TOP
Scroll to the top of viewport
.. data:: ELM_GENLIST_ITEM_SCROLLTO_MIDDLE
Scroll to the middle of viewport
.. data:: ELM_GENLIST_ITEM_SCROLLTO_BOTTTOM
Scroll to the bottom of viewport
.. versionadded:: 1.17
Inheritance diagram
===================
.. inheritance-diagram::
Genlist
GenlistItem
GenlistItemClass
:parts: 2
.. autoclass:: Genlist
.. autoclass:: GenlistItem
.. autoclass:: GenlistItemClass

View File

@ -1,2 +1,152 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.gesture_layer
Gesture Layer
#############
.. image:: /images/gesturelayer-preview.png
Widget description
==================
Use the GestureLayer to detect gestures. The advantage is that you don't
have to implement gesture detection, just set callbacks for gesture states.
In order to use Gesture Layer you start with instantiating this class
with a parent object parameter. Next 'activate' gesture layer with a
:py:meth:`~GestureLayer.attach` call. Usually with same object as target (2nd
parameter).
Now you need to tell gesture layer what gestures you follow. This is done with
:py:meth:`~GestureLayer.cb_set` call. By setting the callback you actually
saying to gesture layer: I would like to know when the gesture
:ref:`Elm_Gesture_Type` switches to state :ref:`Elm_Gesture_State`.
Next, you need to implement the actual action that follows the input in
your callback.
Note that if you like to stop being reported about a gesture, just set
all callbacks referring this gesture to None. (again with
:py:meth:`~GestureLayer.cb_set`)
The information reported by gesture layer to your callback is depending
on :ref:`Elm_Gesture_Type`:
- :class:`GestureTapsInfo` is the info reported for tap gestures:
- :attr:`ELM_GESTURE_N_TAPS`
- :attr:`ELM_GESTURE_N_LONG_TAPS`
- :attr:`ELM_GESTURE_N_DOUBLE_TAPS`
- :attr:`ELM_GESTURE_N_TRIPLE_TAPS`
- :class:`GestureMomentumInfo` is info reported for momentum gestures:
- :attr:`ELM_GESTURE_MOMENTUM`
- :class:`GestureLineInfo` is the info reported for line gestures
(this also contains :class:`GestureMomentumInfo` internal structure):
- :attr:`ELM_GESTURE_N_LINES`
- :attr:`ELM_GESTURE_N_FLICKS`
Note that we consider a flick as a line-gesture that should be completed
in flick-time-limit as defined in
:py:class:`~efl.elementary.configuration.Configuration`.
:class:`GestureZoomInfo` is the info reported for :attr:`ELM_GESTURE_ZOOM`
gesture.
:class:`GestureRotateInfo` is the info reported for
:attr:`ELM_GESTURE_ROTATE` gesture.
Gesture Layer Tweaks:
Note that line, flick, gestures can start without the need to remove
fingers from surface. When user fingers rests on same-spot gesture is
ended and starts again when fingers moved.
Setting glayer_continues_enable to false in
:py:class:`~efl.elementary.configuration.Configuration` will change this
behavior so gesture starts when user touches (a *DOWN* event)
touch-surface and ends when no fingers touches surface (a *UP* event).
Enumerations
============
.. _Elm_Gesture_State:
Gesture states
--------------
.. data:: ELM_GESTURE_STATE_UNDEFINED
Gesture not started
.. data:: ELM_GESTURE_STATE_START
Gesture started
.. data:: ELM_GESTURE_STATE_MOVE
Gesture is ongoing
.. data:: ELM_GESTURE_STATE_END
Gesture completed
.. data:: ELM_GESTURE_STATE_ABORT
Ongoing gesture was aborted
.. _Elm_Gesture_Type:
Gesture types
-------------
.. data:: ELM_GESTURE_N_TAPS
N fingers single taps
.. data:: ELM_GESTURE_N_LONG_TAPS
N fingers single long-taps
.. data:: ELM_GESTURE_N_DOUBLE_TAPS
N fingers double-single taps
.. data:: ELM_GESTURE_N_TRIPLE_TAPS
N fingers triple-single taps
.. data:: ELM_GESTURE_MOMENTUM
Reports momentum in the direction of move
.. data:: ELM_GESTURE_N_LINES
N fingers line gesture
.. data:: ELM_GESTURE_N_FLICKS
N fingers flick gesture
.. data:: ELM_GESTURE_ZOOM
Zoom
.. data:: ELM_GESTURE_ROTATE
Rotate
Inheritance diagram
===================
.. inheritance-diagram:: GestureLayer
:parts: 2
.. autoclass:: GestureLayer

View File

@ -1,2 +1,33 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.grid
Grid
####
.. image:: /images/grid-preview.png
Widget description
==================
A grid layout widget.
The grid is a grid layout widget that lays out a series of children as a
fixed "grid" of widgets using a given percentage of the grid width and
height each using the child object.
The Grid uses a "Virtual resolution" that is stretched to fill the grid
widgets size itself. The default is 100 x 100, so that means the
position and sizes of children will effectively be percentages (0 to 100)
of the width or height of the grid widget.
Inheritance diagram
===================
.. inheritance-diagram:: Grid
:parts: 2
.. autoclass:: Grid
.. autofunction:: grid_pack_set
.. autofunction:: grid_pack_get

View File

@ -1,2 +1,109 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.hover
Hover
#####
.. image:: /images/hover-preview.png
Widget description
==================
A Hover object will hover over its ``parent`` object at the ``target``
location.
Anything in the background will be given a darker coloring to indicate
that the hover object is on top (at the default theme). When the hover
is clicked it is dismissed(hidden), if the contents of the hover are
clicked that **doesn't** cause the hover to be dismissed.
A Hover object has two parents. One parent that owns it during creation
and the other parent being the one over which the hover object spans.
Available styles
================
- default
- popout
- menu
- hoversel_vertical
Emitted signals
===============
- ``clicked`` - the user clicked the empty space in the hover to
dismiss.
- ``dismissed`` - the user clicked the empty space in the hover to dismiss.
(since 1.8)
- ``smart,changed`` - a content object placed under the "smart"
policy was replaced to a new slot direction.
Layout content parts
====================
- ``left``
- ``top-left``
- ``top``
- ``top-right``
- ``right``
- ``bottom-right``
- ``bottom``
- ``bottom-left``
- ``middle``
- ``smart``
All directions may have contents at the same time, except for "smart".
This is a special placement hint and its use case depends of the
calculations coming from :py:meth:`~Hover.best_content_location_get`. Its use
is for cases when one desires only one hover content, but with a dynamic
special placement within the hover area. The content's geometry,
whenever it changes, will be used to decide on a best location, not
extrapolating the hover's parent object view to show it in (still being
the hover's target determinant of its medium part -- move and resize it
to simulate finger sizes, for example). If one of the directions other
than "smart" are used, a previously content set using it will be
deleted, and vice-versa.
.. note:: The hover object will take up the entire space of ``target``
object.
.. note:: The content parts listed indicate the direction that the content
will be displayed
Enumerations
============
.. _Elm_Hover_Axis:
Hover axis
----------
.. data:: ELM_HOVER_AXIS_NONE
No preferred orientation
.. data:: ELM_HOVER_AXIS_HORIZONTAL
Horizontal orientation
.. data:: ELM_HOVER_AXIS_VERTICAL
Vertical orientation
.. data:: ELM_HOVER_AXIS_BOTH
Both
Inheritance diagram
===================
.. inheritance-diagram:: Hover
:parts: 2
.. autoclass:: Hover

View File

@ -1,2 +1,56 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.hoversel
Hoversel
########
.. image:: /images/hoversel-preview.png
Widget description
==================
A hoversel is a button that pops up a list of items (automatically
choosing the direction to display) that have a label and, optionally, an
icon to select from.
It is a convenience widget to avoid the need to do all the piecing
together yourself. It is intended for a small number of items in the
hoversel menu (no more than 8), though is capable of many more.
Emitted signals
===============
- ``clicked`` - the user clicked the hoversel button and popped up
the sel
- ``selected`` - an item in the hoversel list is selected. event_info
is the item
- ``dismissed`` - the hover is dismissed
- ``expanded`` - the hover is expanded (since 1.9)
- ``item,focused`` - the hoversel item has received focus. (since 1.10)
- ``item,unfocused`` - the hoversel item has lost focus. (since 1.10)
Layout content parts
====================
- ``icon`` - An icon of the hoversel
Layout text parts
=================
- ``default`` - Label of the hoversel
Inheritance diagram
===================
.. inheritance-diagram::
Hoversel
HoverselItem
:parts: 2
.. autoclass:: Hoversel
.. autoclass:: HoverselItem

View File

@ -1,2 +1,183 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.icon
Icon
####
.. image:: /images/icon-preview.png
Widget description
==================
An icon object is used to display standard icon images ("delete",
"edit", "arrows", etc.) or images coming from a custom file (PNG, JPG,
EDJE, etc.), on icon contexts.
The icon image requested can be in the Elementary theme in use, or in
the ``freedesktop.org`` theme paths. It's possible to set the order of
preference from where an image will be fetched.
This widget inherits from the :py:class:`~efl.elementary.image.Image` one, so
that all the functions acting on it also work for icon objects.
You should be using an icon, instead of an image, whenever one of the
following apply:
- you need a **thumbnail** version of an original image
- you need freedesktop.org provided icon images
- you need theme provided icon images (Edje groups)
Default images provided by Elementary's default theme are described below.
These are names that follow (more or less) the **Freedesktop** icon naming
specification. Use of these names are **preferred**, at least if you want to
give your user the ability to use other themes. All these icons can be
seen in the elementary_test application, the test is called "Icon Standard".
- ``folder`` (since 1.13)
- ``user-home`` (since 1.13)
- ``user-trash`` (since 1.13)
- ``view-close`` (since 1.13)
- ``view-refresh`` (since 1.13)
- ``window-close`` 1.13)
- ``document-close`` (since 1.13)
- ``document-edit`` (since 1.13)
- ``dialog-info`` (since 1.13)
- ``dialog-close`` (since 1.13)
- ``arrow-up`` (since 1.13)
- ``arrow-down`` (since 1.13)
- ``arrow-left`` (since 1.13)
- ``arrow-right`` (since 1.13)
- ``arrow-up-left`` (since 1.13)
- ``arrow-up-right`` (since 1.13)
- ``arrow-down-left`` (since 1.13)
- ``arrow-down-right`` (since 1.13)
- ``edit-delete`` (since 1.13)
- ``application-chat`` (since 1.13)
- ``application-clock`` (since 1.13)
- ``media-seek-forward`` 1.13)
- ``media-seek-backward`` (since 1.13)
- ``media-skip-forward`` (since 1.13)
- ``media-skip-backward`` (since 1.13)
- ``media-playback-pause`` (since 1.13)
- ``media-playback-start`` (since 1.13)
- ``media-playback-stop`` (since 1.13)
- ``media-eject`` (since 1.13)
- ``audio-volume`` (since 1.13)
- ``audio-volume-muted`` (since 1.13)
These are names for icons that were first intended to be used in
toolbars, but can be used in many other places too:
- ``home``
- ``close``
- ``apps``
- ``arrow_up``
- ``arrow_down``
- ``arrow_left``
- ``arrow_right``
- ``chat``
- ``clock``
- ``delete``
- ``edit``
- ``refresh``
- ``folder``
- ``file``
These are names for icons that were designed to be used in menus
(but again, you can use them anywhere else):
- ``menu/home``
- ``menu/close``
- ``menu/apps``
- ``menu/arrow_up``
- ``menu/arrow_down``
- ``menu/arrow_left``
- ``menu/arrow_right``
- ``menu/chat``
- ``menu/clock``
- ``menu/delete``
- ``menu/edit``
- ``menu/refresh``
- ``menu/folder``
- ``menu/file``
And these are names for some media player specific icons:
- ``media_player/forward``
- ``media_player/info``
- ``media_player/next``
- ``media_player/pause``
- ``media_player/play``
- ``media_player/prev``
- ``media_player/rewind``
- ``media_player/stop``
Emitted signals
===============
- ``thumb,done`` - Setting :py:attr:`~Icon.thumb` has completed with success
- ``thumb,error`` - Setting :py:attr:`~Icon.thumb` has failed
Enumerations
============
.. _Elm_Icon_Lookup_Order:
Icon lookup modes
-----------------
.. data:: ELM_ICON_LOOKUP_FDO_THEME
freedesktop, theme
.. data:: ELM_ICON_LOOKUP_THEME_FDO
theme, freedesktop
.. data:: ELM_ICON_LOOKUP_FDO
freedesktop
.. data:: ELM_ICON_LOOKUP_THEME
theme
.. _Elm_Icon_Type:
Icon type
---------
.. data:: ELM_ICON_NONE
No icon
.. data:: ELM_ICON_FILE
Icon is a file
.. data:: ELM_ICON_STANDARD
Icon is set with standards name
Inheritance diagram
===================
.. inheritance-diagram:: Icon
:parts: 2
.. autoclass:: Icon

View File

@ -1,2 +1,102 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.image
Image
#####
.. image:: /images/image-preview.png
Widget description
==================
An Elementary image object allows one to load and display an image
file on it, be it from a disk file or from a memory region.
Exceptionally, one may also load an Edje group as the contents of the
image. In this case, though, most of the functions of the image API will
act as a no-op.
One can tune various properties of the image, like:
- pre-scaling,
- smooth scaling,
- orientation,
- aspect ratio during resizes, etc.
An image object may also be made valid source and destination for drag
and drop actions by setting :py:attr:`~Image.editable`.
Emitted signals
===============
- ``drop`` - This is called when a user has dropped an image
typed object onto the object in question -- the
event info argument is the path to that image file
- ``clicked`` - This is called when a user has clicked the image
- ``download,start`` - remote url download has started
- ``download,progress`` - url download in progress
- ``download,end`` - remote url download has finished
- ``download,error`` - remote url download has finished with errors
- ``load,open`` - Triggered when the file has been opened, if async open is
enabled (image size is known). (since 1.19)
- ``load,ready`` - Triggered when the image file is ready for display, if
preload is enabled. (since 1.19)
- ``load,error`` - Triggered if an async I/O or decoding error occurred, if
async open or preload is enabled (since 1.19)
- ``load,cancel`` - Triggered whenener async I/O was cancelled. (since 1.19)
Enumerations
============
.. _Elm_Image_Orient:
Image manipulation types
------------------------
.. data:: ELM_IMAGE_ORIENT_NONE
No orientation change
.. data:: ELM_IMAGE_ORIENT_0
No orientation change
.. data:: ELM_IMAGE_ROTATE_90
Rotate 90 degrees clockwise
.. data:: ELM_IMAGE_ROTATE_180
Rotate 180 degrees clockwise
.. data:: ELM_IMAGE_ROTATE_270
Rotate 270 degrees clockwise
.. data:: ELM_IMAGE_FLIP_HORIZONTAL
Flip the image horizontally
.. data:: ELM_IMAGE_FLIP_VERTICAL
Flip the image vertically
.. data:: ELM_IMAGE_FLIP_TRANSPOSE
Flip the image along the y = (width - x) line (bottom-left to top-right)
.. data:: ELM_IMAGE_FLIP_TRANSVERSE
Flip the image along the y = x line (top-left to bottom-right)
Inheritance diagram
===================
.. inheritance-diagram:: Image
:parts: 2
.. autoclass:: Image

View File

@ -1,2 +1,61 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.index
Index
#####
.. image:: /images/index-preview.png
Widget description
==================
An index widget gives you an index for fast access to whichever
group of other UI items one might have.
It's a list of text items (usually letters, for alphabetically ordered
access).
Index widgets are by default hidden and just appear when the
user clicks over it's reserved area in the canvas. In its
default theme, it's an area one ``finger`` wide on
the right side of the index widget's container.
When items on the index are selected, smart callbacks get called, so that its
user can make other container objects to show a given area or child object
depending on the index item selected. You'd probably be using an index together
with :py:class:`~efl.elementary.list.List`,
:py:class:`~efl.elementary.genlist.Genlist` or
:py:class:`~efl.elementary.gengrid.Gengrid`.
Emitted signals
===============
- ``changed`` - When the selected index item changes. ``event_info``
is the selected item's data.
- ``delay,changed`` - When the selected index item changes, but
after a small idling period. ``event_info`` is the selected
item's data.
- ``selected`` - When the user releases a mouse button and
selects an item. ``event_info`` is the selected item's data.
- ``level,up`` - when the user moves a finger from the first
level to the second level
- ``level,down`` - when the user moves a finger from the second
level to the first level
The ``delay,changed`` event has a delay on change before the event is actually
reported and moreover just the last event happening on those time frames will
actually be reported.
Inheritance diagram
===================
.. inheritance-diagram::
Index
IndexItem
:parts: 2
.. autoclass:: Index
.. autoclass:: IndexItem

View File

@ -1,2 +1,42 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.innerwindow
Innerwindow
###########
.. image:: /images/innerwindow-preview.png
Widget description
==================
An inwin is a window inside a window that is useful for a quick popup.
It does not hover.
It works by creating an object that will occupy the entire window, so it must be
created using an :py:class:`~efl.elementary.window.Window` as parent only. The
inwin object can be hidden or restacked below every other object if it's needed
to show what's behind it without destroying it. If this is done, the
:py:meth:`~InnerWindow.activate` function can be used to bring it back to full
visibility again.
Available styles
================
- ``default`` The inwin is sized to take over most of the window it's
placed in.
- ``minimal`` The size of the inwin will be the minimum necessary to show
its contents.
- ``minimal_vertical`` Horizontally, the inwin takes as much space as
possible, but it's sized vertically the most it needs to fit its
contents.
Inheritance diagram
===================
.. inheritance-diagram:: InnerWindow
:parts: 2
.. autoclass:: InnerWindow

View File

@ -1,2 +1,85 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.label
Label
#####
.. image:: /images/label-preview.png
Widget description
==================
Widget to display text, with simple html-like markup.
The Label widget **doesn't** allow text to overflow its boundaries, if the
text doesn't fit the geometry of the label it will be ellipsized or be
cut.
Available styles
================
``default``
The default style
``default/left``
Left aligned label (since 1.18)
``default/right``
Right aligned label (since 1.18)
``marker``
Centers the text in the label and makes it bold by default
``marker/left``
Like marker but left aligned (since 1.18)
``marker/right``
Like marker but right aligned (since 1.18)
``slide_long``
The entire text appears from the right of the screen and
slides until it disappears in the left of the screen(reappearing on
the right again).
``slide_short``
The text appears in the left of the label and slides to
the right to show the overflow. When all of the text has been shown
the position is reset.
``slide_bounce``
The text appears in the left of the label and slides to
the right to show the overflow. When all of the text has been shown
the animation reverses, moving the text to the left.
Custom themes can of course invent new markup tags and style them any way
they like.
Emitted signals
===============
- ``slide,end`` - The slide is end.
Enumerations
============
.. _Elm_Label_Slide_Mode:
Slide modes
-----------
.. data:: ELM_LABEL_SLIDE_MODE_NONE
The label will never slide.
.. data:: ELM_LABEL_SLIDE_MODE_AUTO
The label slide if the content is bigger than it's container.
.. data:: ELM_LABEL_SLIDE_MODE_ALWAYS
The label will always slide.
Inheritance diagram
===================
.. inheritance-diagram:: Label
:parts: 2
.. autoclass:: Label

View File

@ -1,2 +1,164 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.layout
Layout
######
.. image:: /images/layout-preview.png
Widget description
==================
This is a container widget that takes a standard Edje design file and
wraps it very thinly in a widget.
An Edje design (theme) file has a very wide range of possibilities to
describe the behavior of elements added to the Layout. Check out the Edje
documentation and the EDC reference to get more information about what can
be done with Edje.
Just like :py:class:`~efl.elementary.list.List`,
:py:class:`~efl.elementary.box.Box`, and other container
widgets, any object added to the Layout will become its child, meaning
that it will be deleted if the Layout is deleted, move if the Layout is
moved, and so on.
The Layout widget can contain as many Contents, Boxes or Tables as
described in its theme file. For instance, objects can be added to
different Tables by specifying the respective Table part names. The same
is valid for Content and Box.
The objects added as child of the Layout will behave as described in the
part description where they were added. There are 3 possible types of
parts where a child can be added:
Content (SWALLOW part)
Only one object can be added to the ``SWALLOW`` part (but you still can
have many ``SWALLOW`` parts and one object on each of them). Use the
``Object.content_set/get/unset`` functions to set, retrieve and unset
objects as content of the *SWALLOW*. After being set to this part,
the object size, position, visibility, clipping and other description
properties will be totally controlled by the description of the
given part (inside the Edje theme file).
One can use ``size_hint_`` functions on the child to have some kind of
control over its behavior, but the resulting behavior will still
depend heavily on the ``SWALLOW`` part description.
The Edje theme also can change the part description, based on
signals or scripts running inside the theme. This change can also be
animated. All of this will affect the child object set as content
accordingly. The object size will be changed if the part size is
changed, it will animate move if the part is moving, and so on.
Box (BOX part)
An Edje ``BOX`` part is very similar to the Elementary
:py:class:`~efl.elementary.box.Box` widget. It allows one to add objects to
the box and have them distributed along its area, accordingly to the
specified ``layout`` property (now by ``layout`` we mean the chosen
layouting design of the Box, not the Layout widget itself).
A similar effect for having a box with its position, size and other things
controlled by the Layout theme would be to create an Elementary
:py:class:`~efl.elementary.box.Box` widget and add it as a Content in the
``SWALLOW`` part.
The main difference of using the Layout Box is that its behavior, the box
properties like layouting format, padding, align, etc. will be all
controlled by the theme. This means, for example, that a signal could be
sent to the Layout theme (with
:py:meth:`~efl.elementary.object.Object.signal_emit`) and the theme handled
the signal by changing the box padding, or align, or both. Using the
Elementary :py:class:`~efl.elementary.box.Box` widget is not necessarily
harder or easier, it just depends on the circumstances and requirements.
The Layout Box can be used through the ``box_`` set of functions.
Table (TABLE part)
Just like the *Box*, the Layout Table is very similar to the Elementary
:py:class:`~efl.elementary.table.Table` widget. It allows one to add objects
to the Table specifying the row and column where the object should be added,
and any column or row span if necessary.
Again, we could have this design by adding a
:py:class:`~efl.elementary.table.Table` widget to the ``SWALLOW`` part using
:py:func:`~efl.elementary.object.Object.part_content_set`. The same
difference happens here when choosing to use the Layout Table (a ``TABLE``
part) instead of the :py:class:`~efl.elementary.table.Table` plus
``SWALLOW`` part. It's just a matter of convenience.
The Layout Table can be used through the ``table_`` set of functions.
Another interesting thing about the Layout widget is that it offers some
predefined themes that come with the default Elementary theme. These themes can
be set by :py:attr:`~efl.elementary.layout_class.LayoutClass.theme`, and provide
some basic functionality depending on the theme used.
Most of them already send some signals, some already provide a toolbar or
back and next buttons.
Layout Class
============
Elementary, besides having the :py:class:`~efl.elementary.layout.Layout`
widget, exposes its foundation -- the Elementary Layout Class -- in
order to create other widgets which are, basically, a certain layout
with some more logic on top.
The idea is to make the creation of that widgets as easy as possible,
factorizing code on this common base. For example, a button is a layout
(that looks like push button) that happens to react on clicks and keyboard
events in a special manner, calling its user back on those events. That's no
surprise, then, that the :py:class:`~efl.elementary.button.Button`
implementation relies on LayoutClass, if you go to check it.
Container parts, here, map directly to Edje parts from the layout's Edje
group. Besides that, there's a whole infrastructure around Edje files:
- interfacing by signals,
- setting/retrieving text part values,
- dealing with table and box parts directly,
- etc.
Finally, layout objects will do **part aliasing** for you, if you set
it up properly. For that, take a look at
Elm_Layout_Part_Alias_Description, where it's explained in detail.
Available styles
================
These are available predefined theme layouts. All of them have class =
*layout*, group = *application*, and style = one of the following options:
- ``toolbar-content`` - application with toolbar and main content area
- ``toolbar-content-back`` - application with toolbar and main content
area with a back button and title area
- ``toolbar-content-back-next`` - application with toolbar and main
content area with a back and next buttons and title area
- ``content-back`` - application with a main content area with a back
button and title area
- ``content-back-next`` - application with a main content area with a
back and next buttons and title area
- ``toolbar-vbox`` - application with toolbar and main content area as a
vertical box
- ``toolbar-table`` - application with toolbar and main content area as a
table
Emitted signals
===============
- ``theme,changed`` - The theme was changed.
Inheritance diagram
===================
.. inheritance-diagram:: Layout
:parts: 2
.. autoclass:: Layout
.. autoclass:: LayoutClass

View File

@ -1,2 +0,0 @@
.. automodule:: efl.elementary.layout_class

View File

@ -1,2 +1,134 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.list
List
####
.. image:: /images/list-preview.png
Widget description
==================
A list widget is a container whose children are displayed vertically or
horizontally, in order, and can be selected.
The list can accept only one or multiple items selection. Also has many
modes of items displaying.
A list is a very simple type of list widget. For more robust
lists, :py:class:`~efl.elementary.genlist.Genlist` should probably be used.
Emitted signals
===============
- ``activated`` - The user has double-clicked or pressed
(enter|return|spacebar) on an item.
- ``clicked,double`` - The user has double-clicked an item.
- ``clicked,right`` - The user has right-clicked an item. (since: 1.13)
- ``selected`` - when the user selected an item
- ``unselected`` - when the user unselected an item
- ``longpressed`` - an item in the list is long-pressed
- ``edge,top`` - the list is scrolled until the top edge
- ``edge,bottom`` - the list is scrolled until the bottom edge
- ``edge,left`` - the list is scrolled until the left edge
- ``edge,right`` - the list is scrolled until the right edge
- ``highlighted`` - an item in the list is highlighted. This is called when
the user presses an item or keyboard selection is done so the item is
physically highlighted.
- ``unhighlighted`` - an item in the list is unhighlighted. This is called
when the user releases an item or keyboard selection is moved so the item
is physically unhighlighted.
- ``item,focused`` - When the list item has received focus. (since 1.10)
- ``item,unfocused`` - When the list item has lost focus. (since 1.10)
Available styles
================
- ``default``
Layout content parts
====================
- ``start`` - A start position object in the list item
- ``end`` - A end position object in the list item
Layout text parts
=================
- ``default`` - label in the list item
Scrollable Interface
====================
This widget supports the scrollable interface.
If you wish to control the scolling behaviour using these functions,
inherit both the widget class and the
:py:class:`~efl.elementary.scroller.Scrollable` class
using multiple inheritance, for example::
class ScrollableGenlist(Genlist, Scrollable):
def __init__(self, canvas, *args, **kwargs):
Genlist.__init__(self, canvas)
Enumerations
============
.. _Elm_List_Mode:
List sizing modes
-----------------
.. data:: ELM_LIST_COMPRESS
The list won't set any of its size hints to inform how a possible container
should resize it.
Then, if it's not created as a "resize object", it might end with zeroed
dimensions. The list will respect the container's geometry and, if any of
its items won't fit into its transverse axis, one won't be able to scroll it
in that direction.
.. data:: ELM_LIST_SCROLL
Default value.
This is the same as ELM_LIST_COMPRESS, with the exception that if any of
its items won't fit into its transverse axis, one will be able to scroll
it in that direction.
.. data:: ELM_LIST_LIMIT
Sets a minimum size hint on the list object, so that containers may
respect it (and resize itself to fit the child properly).
More specifically, a minimum size hint will be set for its transverse
axis, so that the largest item in that direction fits well. This is
naturally bound by the list object's maximum size hints, set externally.
.. data:: ELM_LIST_EXPAND
Besides setting a minimum size on the transverse axis, just like on
ELM_LIST_LIMIT, the list will set a minimum size on the longitudinal
axis, trying to reserve space to all its children to be visible at a time.
This is naturally bound by the list object's maximum size hints, set
externally.
Inheritance diagram
===================
.. inheritance-diagram::
List
ListItem
:parts: 2
.. autoclass:: List
.. autoclass:: ListItem

View File

@ -1,2 +1,209 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.map
Map
###
.. image:: /images/map-preview.png
:width: 100%
Widget description
==================
The *Map* is a widget specifically for displaying a geographic map.
It uses `OpenStreetMap <http://www.openstreetmap.org/>`_ as map tile provider,
`YOURS <http://www.yournavigation.org/>`_ for routing calculation and
`Nominatim <http://nominatim.openstreetmap.org/>`_ to convert geographic
coordinates to/from address names. But custom providers can be added.
It supports some basic but yet nice features:
- zooming and scrolling
- markers with content to be displayed when user clicks over them
- automatic grouping of markers based on zoom level
- routes calculation
- names/coordinates conversion (and viceversa)
Emitted signals
===============
- ``clicked`` - Called when a user has clicked the map without dragging around.
- ``clicked,double`` - Called when a user has double-clicked the map.
- ``press`` - This is called when a user has pressed down on the map.
- ``longpressed`` - This is called when a user has pressed down on the map
for a long time without dragging around.
- ``scroll`` - the content has been scrolled (moved).
- ``scroll,drag,start`` - dragging the contents around has started.
- ``scroll,drag,stop`` - dragging the contents around has stopped.
- ``scroll,anim,start`` - scrolling animation has started.
- ``scroll,anim,stop`` - scrolling animation has stopped.
- ``zoom,start`` - Zoom animation started.
- ``zoom,stop`` - Zoom animation stopped.
- ``zoom,change`` - Zoom changed when using an auto zoom mode.
- ``tile,load`` - A map tile image load begins.
- ``tile,loaded`` - A map tile image load ends.
- ``tile,loaded,fail`` - A map tile image load fails.
- ``route,load`` - Route request begins.
- ``route,loaded`` - Route request ends.
- ``route,loaded,fail`` - Route request fails.
- ``name,load`` - Name request begins.
- ``name,loaded`` - Name request ends.
- ``name,loaded,fail`` - Name request fails.
- ``overlay,clicked`` - A overlay is clicked.
- ``loaded`` - when a map is finally loaded.
Scrollable Interface
====================
This widget supports the scrollable interface.
If you wish to control the scolling behaviour using these functions,
inherit both the widget class and the
:py:class:`Scrollable<efl.elementary.scroller.Scrollable>` class
using multiple inheritance, for example::
class ScrollableGenlist(Genlist, Scrollable):
def __init__(self, canvas, *args, **kwargs):
Genlist.__init__(self, canvas)
Enumerations
============
.. _Elm_Map_Overlay_Type:
Map overlay types
-----------------
.. data:: ELM_MAP_OVERLAY_TYPE_NONE
None
.. data:: ELM_MAP_OVERLAY_TYPE_DEFAULT
The default overlay type.
.. data:: ELM_MAP_OVERLAY_TYPE_CLASS
The Class overlay is used to group marker together.
.. data:: ELM_MAP_OVERLAY_TYPE_GROUP
A group of overlays.
.. data:: ELM_MAP_OVERLAY_TYPE_BUBBLE
This class can *follow* another overlay.
.. data:: ELM_MAP_OVERLAY_TYPE_ROUTE
This is used to draw a route result on the map.
.. data:: ELM_MAP_OVERLAY_TYPE_LINE
Simply draw a line on the map.
.. data:: ELM_MAP_OVERLAY_TYPE_POLYGON
Simply draw a polygon on the map.
.. data:: ELM_MAP_OVERLAY_TYPE_CIRCLE
Simply draw a circle on the map.
.. data:: ELM_MAP_OVERLAY_TYPE_SCALE
This will draw a dinamic scale on the map.
.. _Elm_Map_Route_Method:
Map route methods
-----------------
.. data:: ELM_MAP_ROUTE_METHOD_FASTEST
Route should prioritize time
.. data:: ELM_MAP_ROUTE_METHOD_SHORTEST
Route should prioritize distance
.. _Elm_Map_Route_Type:
Map route types
---------------
.. data:: ELM_MAP_ROUTE_TYPE_MOTOCAR
Route should consider an automobile will be used.
.. data:: ELM_MAP_ROUTE_TYPE_BICYCLE
Route should consider a bicycle will be used by the user.
.. data:: ELM_MAP_ROUTE_TYPE_FOOT
Route should consider user will be walking.
.. _Elm_Map_Source_Type:
Map source types
----------------
.. data:: ELM_MAP_SOURCE_TYPE_TILE
Map tile provider
.. data:: ELM_MAP_SOURCE_TYPE_ROUTE
Route service provider
.. data:: ELM_MAP_SOURCE_TYPE_NAME
Name service provider
.. _Elm_Map_Zoom_Mode:
Map zoom modes
--------------
.. data:: ELM_MAP_ZOOM_MODE_MANUAL
Zoom controlled manually by :py:attr:`~Map.zoom`
It's set by default.
.. data:: ELM_MAP_ZOOM_MODE_AUTO_FIT
Zoom until map fits inside the scroll frame with no pixels outside this
area.
.. data:: ELM_MAP_ZOOM_MODE_AUTO_FILL
Zoom until map fills scroll, ensuring no pixels are left unfilled.
Inheritance diagram
===================
.. inheritance-diagram:: Map
:parts: 2
.. autoclass:: Map
.. autoclass:: MapRoute
.. autoclass:: MapName
.. autoclass:: MapOverlay
.. autoclass:: MapOverlayClass
.. autoclass:: MapOverlayBubble
.. autoclass:: MapOverlayLine
.. autoclass:: MapOverlayPolygon
.. autoclass:: MapOverlayCircle
.. autoclass:: MapOverlayScale
.. autoclass:: MapOverlayRoute

View File

@ -1,2 +1,33 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.mapbuf
Mapbuf
######
.. image:: /images/mapbuf-preview.png
Widget description
==================
This holds one content object and uses an Evas Map of transformation
points to be later used with this content. So the content will be
moved, resized, etc as a single image. So it will improve performance
when you have a complex interface, with a lot of elements, and will
need to resize or move it frequently (the content object and its
children).
Layout content parts
====================
- ``default`` - The main content of the mapbuf
Inheritance diagram
===================
.. inheritance-diagram:: Mapbuf
:parts: 2
.. autoclass:: Mapbuf

View File

@ -1,2 +1,48 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.menu
Menu
####
.. image:: /images/menu-preview.png
Widget description
==================
A menu is a list of items displayed above its parent.
When the menu is showing its parent is darkened. Each item can have a
sub-menu. The menu object can be used to display a menu on a right click
event, in a toolbar, anywhere.
Emitted signals
===============
- ``clicked`` - the user clicked the empty space in the menu to dismiss.
- ``dismissed`` - the user clicked the empty space in the menu to dismiss (since 1.8)
Layout content parts
====================
- ``default`` - A main content of the menu item
Layout text parts
=================
- ``default`` - label in the menu item
Inheritance diagram
===================
.. inheritance-diagram::
Menu
MenuItem
:parts: 2
.. autoclass:: Menu
.. autoclass:: MenuItem

View File

@ -1,2 +1,60 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.multibuttonentry
MultiButtonEntry
################
.. image:: /images/multibuttonentry-preview.png
Widget description
==================
A Multibuttonentry is a widget to allow a user enter text and manage
it as a number of buttons. Each text button is inserted by pressing the
"return" key. If there is no space in the current row, a new button is
added to the next row. When a text button is pressed, it will become
focused. Backspace removes the focus. When the Multibuttonentry loses
focus items longer than one line are shrunk to one line.
Typical use case of multibuttonentry is, composing emails/messages to a
group of addresses, each of which is an item that can be clicked for
further actions.
Emitted signals
===============
- ``item,selected`` - this is called when an item is selected by
api, user interaction, and etc. this is also called when a
user press back space while cursor is on the first field of
entry. event_info contains the item.
- ``item,added`` - when a new multi-button entry item is added.
event_info contains the item.
- ``item,deleted`` - when a multi-button entry item is deleted.
event_info contains the item.
- ``item,clicked`` - this is called when an item is clicked by user
interaction. Both "item,selected" and "item,clicked" are needed.
event_info contains the item.
- ``clicked`` - when multi-button entry is clicked.
- ``expanded`` - when multi-button entry is expanded.
- ``contracted`` - when multi-button entry is contracted.
- ``expand,state,changed`` - when shrink mode state of
multi-button entry is changed.
Layout text parts
=================
- ``default`` - A label of the multibuttonentry
- ``default`` - A label of the multibuttonentry item
Inheritance diagram
===================
.. inheritance-diagram:: MultiButtonEntry
:parts: 2
.. autoclass:: MultiButtonEntry
.. autoclass:: MultiButtonEntryItem

View File

@ -1,2 +1,96 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.naviframe
Naviframe
#########
.. image:: /images/naviframe-preview.png
Widget description
==================
Naviframe stands for navigation frame. It's a views manager
for applications.
A naviframe holds views (or pages) as its items. Those items are
organized in a stack, so that new items get pushed on top of the
old, and only the topmost view is displayed at one time. The
transition between views is animated, depending on the theme
applied to the widget.
Naviframe views hold spaces to various elements, which are:
- back button, used to navigate to previous views,
- next button, used to navigate to next views in the stack,
- title label,
- sub-title label,
- title icon and
- content area.
Layout content parts
====================
- ``default`` - The main content of the current page
- ``icon`` - An icon in the title area of the current page
- ``prev_btn`` - A button of the current page to go to the previous page
- ``next_btn`` - A button of the current page to go to the next page
Layout text parts
=================
- ``default`` - Title label in the title area of the current page
- ``subtitle`` - Sub-title label in the title area of the current page
Most of those content objects can be passed at the time of an item
creation (see :py:meth:`~NaviframeItem.push_to`).
Available styles
================
Naviframe items can have different styles, which affect the
transition between views, for example. On the default theme, two of
them are supported:
- ``basic`` - views are switched sliding horizontally, one after the other
- ``overlap`` - like the previous one, but the previous view stays at its place
and is overlapped by the new
Emitted signals
===============
- ``transition,finished`` - When the transition is finished in changing the item
- ``title,transition,finished`` - When the title area's transition is finished
- ``title,clicked`` - User clicked title area
- ``item,activated`` - Naviframe item was activated (since 1.19)
All the parts, for content and text, described here will also be
reachable by naviframe **items** direct calls:
- :py:meth:`~efl.elementary.object_item.ObjectItem.delete`
- :py:meth:`~efl.elementary.object_item.ObjectItem.part_text_set`
- :py:meth:`~efl.elementary.object_item.ObjectItem.part_text_get`
- :py:meth:`~efl.elementary.object_item.ObjectItem.part_content_set`
- :py:meth:`~efl.elementary.object_item.ObjectItem.part_content_get`
- :py:meth:`~efl.elementary.object_item.ObjectItem.part_content_unset`
- :py:meth:`~efl.elementary.object_item.ObjectItem.signal_emit`
What happens is that the topmost item of a naviframe will be the
widget's target layout, when accessed directly. Items lying below
the top one can be interacted with this way.
Inheritance diagram
===================
.. inheritance-diagram::
Naviframe
NaviframeItem
:parts: 2
.. autoclass:: Naviframe
.. autoclass:: NaviframeItem

View File

@ -1,2 +1,20 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.need
Need
####
Description
===========
These functions are used for requesting use of optional Elementary modules.
Check their return value for whether the feature is actually supported.
.. autofunction:: efl.elementary.need_efreet
.. autofunction:: efl.elementary.need_systray
.. autofunction:: efl.elementary.need_sys_notify
.. autofunction:: efl.elementary.need_e_dbus
.. autofunction:: efl.elementary.need_eldbus
.. autofunction:: efl.elementary.need_elocation
.. autofunction:: efl.elementary.need_ethumb
.. autofunction:: efl.elementary.need_web

View File

@ -1,2 +1,55 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.notify
Notify
######
.. image:: /images/notify-preview.png
Widget description
==================
Display a container in a particular region of the parent.
A timeout can be set to automatically hide the notify. This is so that, after
an :py:meth:`~efl.evas.Object.show` on a notify object, if a timeout was set on
it, it will **automatically** get hidden after that time.
Emitted signals
===============
- ``timeout`` - when timeout happens on notify and it's hidden
- ``block,clicked`` - when a click outside of the notify happens
- ``dismissed`` - When notify is closed as a result of a dismiss (since 1.17)
Layout content parts
====================
- ``default`` - The main content of the notify
Enumerations
============
.. _ELM_NOTIFY_ALIGN_FILL:
ELM_NOTIFY_ALIGN_FILL
---------------------
.. data:: ELM_NOTIFY_ALIGN_FILL
Use with :py:attr:`Notify.align`
.. versionadded:: 1.8
Inheritance diagram
===================
.. inheritance-diagram:: Notify
:parts: 2
.. autoclass:: Notify

View File

@ -1,2 +1,388 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.object
Object
######
Copy and Paste
==============
Implements the following functionality
a. select, copy/cut and paste
b. clipboard
c. drag and drop
in order to share data across application windows.
Contains functions to select text or a portion of data,
send it to a buffer, and paste the data into a target.
elm_cnp provides a generic copy and paste facility based on its windowing
system.
It is not necessary to know the details of each windowing system,
but some terms and behavior are common.
Currently the X11 window system is widely used, and only X11 functionality is
implemented.
In X11R6 window system, CopyPaste works like a peer-to-peer communication.
Copying is an operation on an object in an X server.
X11 calls those objects 'selections' which have names.
Generally, two selection types are needed for copy and paste:
The Primary selection and the Clipboard selection.
Primary selection is for selecting text (that means highlighted text).
Clipboard selection is for explicit copying behavior
(such as ctrl+c, or 'copy' in a menu).
Thus, in applications most cases only use the clipboard selection.
As stated before, taking ownership of a selection doesn't move any actual data.
Copying and Pasting is described as follows:
1. Copy text in Program A : Program A takes ownership of the selection
2. Paste text in Program B : Program B notes that Program A owns the selection
3. Program B asks A for the text
4. Program A responds and sends the text to program B
5. Program B pastes the response
More information is on
- http://www.jwz.org/doc/x-cut-and-paste.html
- X11R6 Inter-Client Communication Conventions Manual, section 2
Emitted smart events
====================
- ``moved`` - When the object change position. (since 1.17)
- ``focus`` - When the object has received focus. (since 1.8)
- ``unfocus`` - When the object has lost focus. (since 1.8)
- ``language,changed`` - Whenever system locale changes.
Enumerations
============
.. _Elm_Object_Focus_Direction:
Focus direction
---------------
.. data:: ELM_FOCUS_PREVIOUS
Focus previous
.. data:: ELM_FOCUS_NEXT
Focus next
.. data:: ELM_FOCUS_UP
Focus up
.. versionadded:: 1.8.1
.. data:: ELM_FOCUS_DOWN
Focus down
.. versionadded:: 1.8.1
.. data:: ELM_FOCUS_RIGHT
Focus right
.. versionadded:: 1.8.1
.. data:: ELM_FOCUS_LEFT
Focus left
.. versionadded:: 1.8.1
.. _Elm_Focus_Move_Policy:
Focus move policy
-----------------
.. data:: ELM_FOCUS_MOVE_POLICY_CLICK
Give focus to object when they are clicked
.. versionadded:: 1.10
.. data:: ELM_FOCUS_MOVE_POLICY_IN
Give focus to object on mouse-in
.. versionadded:: 1.10
.. data:: ELM_FOCUS_MOVE_POLICY_KEY_ONLY
Focus is set on key input like Left, Right, Up, Down, Tab, or Shift+Tab
.. versionadded:: 1.15
.. _Elm_Focus_Autoscroll_Mode:
Focus autoscroll mode
---------------------
.. data:: ELM_FOCUS_AUTOSCROLL_MODE_SHOW
Directly show the focused region or item automatically.
.. versionadded:: 1.10
.. data:: ELM_FOCUS_AUTOSCROLL_MODE_NONE
Do not show the focused region or item automatically.
.. versionadded:: 1.10
.. data:: ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN
Bring_in the focused region or item automatically which might
invole the scrolling
.. versionadded:: 1.10
.. _Elm_Focus_Region_Show_Mode:
Focus region show mode
----------------------
.. data:: ELM_FOCUS_REGION_SHOW_WIDGET
as a widget
.. versionadded:: 1.16
.. data:: ELM_FOCUS_REGION_SHOW_ITEM
as an item
.. versionadded:: 1.16
.. _Elm_Input_Event_Type:
Input event types
-----------------
.. data:: EVAS_CALLBACK_KEY_DOWN
.. data:: EVAS_CALLBACK_KEY_UP
.. data:: EVAS_CALLBACK_MOUSE_WHEEL
.. _Elm_Object_Sel_Type:
Selection type
--------------
Defines the types of selection property names.
:see: http://www.x.org/docs/X11/xlib.pdf for more details.
.. data:: ELM_SEL_TYPE_PRIMARY
Primary text selection (highlighted or selected text)
.. data:: ELM_SEL_TYPE_SECONDARY
Used when primary selection is in use
.. data:: ELM_SEL_TYPE_XDND
Drag 'n' Drop
.. data:: ELM_SEL_TYPE_CLIPBOARD
Clipboard selection (ctrl+C)
.. _Elm_Object_Sel_Format:
Selection format
----------------
Defines the types of content.
.. data:: ELM_SEL_FORMAT_TARGETS
For matching every possible atom
.. data:: ELM_SEL_FORMAT_NONE
Content is from outside of Elementary
.. data:: ELM_SEL_FORMAT_TEXT
Plain unformatted text: Used for things that don't want rich markup
.. data:: ELM_SEL_FORMAT_MARKUP
Edje textblock markup, including inline images
.. data:: ELM_SEL_FORMAT_IMAGE
Images
.. data:: ELM_SEL_FORMAT_VCARD
Vcards
.. data:: ELM_SEL_FORMAT_HTML
Raw HTML-like data (eg. webkit)
.. _Elm_Object_Xdnd_Action:
XDND action
-----------
Defines the kind of action associated with the drop data if for XDND
.. versionadded:: 1.8
.. data:: ELM_XDND_ACTION_UNKNOWN
Action type is unknown
.. data:: ELM_XDND_ACTION_COPY
Copy the data
.. data:: ELM_XDND_ACTION_MOVE
Move the data
.. data:: ELM_XDND_ACTION_PRIVATE
Private action type
.. data:: ELM_XDND_ACTION_ASK
Ask the user what to do
.. data:: ELM_XDND_ACTION_LIST
List the data
.. data:: ELM_XDND_ACTION_LINK
Link the data
.. data:: ELM_XDND_ACTION_DESCRIPTION
Describe the data
.. _Elm_Object_Select_Mode:
Selection modes
---------------
.. data:: ELM_OBJECT_SELECT_MODE_DEFAULT
Items will only call their selection func and callback when
first becoming selected. Any further clicks will do nothing,
unless you set always select mode.
.. data:: ELM_OBJECT_SELECT_MODE_ALWAYS
This means that, even if selected, every click will make the
selected callbacks be called.
.. data:: ELM_OBJECT_SELECT_MODE_NONE
This will turn off the ability to select items entirely and
they will neither appear selected nor call selected callback
functions.
.. data:: ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY
No select mode with no finger size rule
.. _Elm_Tooltip_Orient:
Tooltip orientation
-------------------
.. data:: ELM_TOOLTIP_ORIENT_NONE
Default value, Tooltip moves with mouse pointer
.. versionadded:: 1.16
.. data:: ELM_TOOLTIP_ORIENT_TOP_LEFT
Tooltip should appear at the top left of parent
.. versionadded:: 1.16
.. data:: ELM_TOOLTIP_ORIENT_TOP
Tooltip should appear at the top of parent
.. versionadded:: 1.16
.. data:: ELM_TOOLTIP_ORIENT_TOP_RIGHT
Tooltip should appear at the top right of parent
.. versionadded:: 1.16
.. data:: ELM_TOOLTIP_ORIENT_LEFT
Tooltip should appear at the left of parent
.. versionadded:: 1.16
.. data:: ELM_TOOLTIP_ORIENT_CENTER
Tooltip should appear at the center of parent
.. versionadded:: 1.16
.. data:: ELM_TOOLTIP_ORIENT_RIGHT
Tooltip should appear at the right of parent
.. versionadded:: 1.16
.. data:: ELM_TOOLTIP_ORIENT_BOTTOM_LEFT
Tooltip should appear at the bottom left of parent
.. versionadded:: 1.16
.. data:: ELM_TOOLTIP_ORIENT_BOTTOM
Tooltip should appear at the bottom of parent
.. versionadded:: 1.16
.. data:: ELM_TOOLTIP_ORIENT_BOTTOM_RIGHT
Tooltip should appear at the bottom right of parent
.. versionadded:: 1.16
.. data:: ELM_TOOLTIP_ORIENT_LAST
Sentinel value, don't use
.. versionadded:: 1.16
Inheritance diagram
===================
.. inheritance-diagram:: Object
:parts: 2
.. autoclass:: Object

View File

@ -1,2 +1,13 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.object_item
Object Item
###########
Inheritance diagram
===================
.. inheritance-diagram:: ObjectItem
:parts: 2
.. autoclass:: ObjectItem

View File

@ -1,2 +1,61 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.panel
Panel
#####
.. image:: /images/panel-preview.png
Widget description
==================
A panel is a type of animated container that contains subobjects.
It can be expanded or contracted by clicking the button on it's edge.
Emitted signals
===============
- ``toggled`` - Emitted when the panel has been toggled. (since 1.19)
Layout content parts
====================
- ``default`` - A content of the panel
Enumerations
============
.. _Elm_Panel_Orient:
Panel orientation types
-----------------------
.. data:: ELM_PANEL_ORIENT_TOP
Panel (dis)appears from the top
.. data:: ELM_PANEL_ORIENT_BOTTOM
Panel (dis)appears from the bottom
.. data:: ELM_PANEL_ORIENT_LEFT
Panel (dis)appears from the left
.. data:: ELM_PANEL_ORIENT_RIGHT
Panel (dis)appears from the right
Inheritance diagram
===================
.. inheritance-diagram:: Panel
:parts: 2
.. autoclass:: Panel

View File

@ -1,2 +1,46 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.panes
Panes
#####
.. image:: /images/panes-preview.png
Widget description
==================
The panes widget adds a draggable bar between two contents. When
dragged this bar will resize contents' size.
Panes can be displayed vertically or horizontally, and contents size
proportion can be customized (homogeneous by default).
Emitted signals
===============
- ``press`` - The panes has been pressed (button wasn't released yet).
- ``unpressed`` - The panes was released after being pressed.
- ``clicked`` - The panes has been clicked.
- ``clicked,double`` - The panes has been double clicked.
Layout content parts
====================
- ``left`` - A leftside content of the panes
- ``right`` - A rightside content of the panes
- ``top`` - A top content of the vertical panes
- ``bottom`` - A bottom content of the vertical panes
If panes are displayed vertically, left content will be displayed on top.
Inheritance diagram
===================
.. inheritance-diagram:: Panes
:parts: 2
.. autoclass:: Panes

View File

@ -1,2 +1,39 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.photo
Photo
#####
.. image:: /images/photo-preview.png
Widget description
==================
An Elementary photo widget is intended for displaying a photo, for
ex., a person's image (contact).
Simple, yet with a very specific purpose. It has a decorative frame
around the inner image itself, on the default theme.
This widget relies on an internal :py:class:`~efl.elementary.icon.Icon`, so
that the APIs of these two widgets are similar (drag and drop is also possible
here, for example).
Emitted signals
===============
- ``clicked`` - This is called when a user has clicked the photo
- ``drag,start`` - One has started dragging the inner image out of the photo's
frame
- ``drag,end`` - One has dropped the dragged image somewhere
Inheritance diagram
===================
.. inheritance-diagram:: Photo
:parts: 2
.. autoclass:: Photo

View File

@ -1,2 +1,93 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.photocam
Photocam
########
Widget description
==================
This is a widget specifically for displaying high-resolution digital
camera photos giving speedy feedback (fast load), low memory footprint
and zooming and panning as well as fitting logic. It is entirely focused
on jpeg images, and takes advantage of properties of the jpeg format (via
evas loader features in the jpeg loader).
Emitted signals
===============
- ``clicked`` - This is called when a user has clicked the photo without
dragging around.
- ``press`` - This is called when a user has pressed down on the photo.
- ``longpressed`` - This is called when a user has pressed down on the
photo for a long time without dragging around.
- ``clicked,double`` - This is called when a user has double-clicked the
photo.
- ``load`` - Photo load begins.
- ``loaded`` - This is called when the image file load is complete for
the first view (low resolution blurry version).
- ``load,detail`` - Photo detailed data load begins.
- ``loaded,detail`` - This is called when the image file load is
complete for the detailed image data (full resolution needed).
- ``zoom,start`` - Zoom animation started.
- ``zoom,stop`` - Zoom animation stopped.
- ``zoom,change`` - Zoom changed when using an auto zoom mode.
- ``scroll`` - the content has been scrolled (moved)
- ``scroll,anim,start`` - scrolling animation has started
- ``scroll,anim,stop`` - scrolling animation has stopped
- ``scroll,drag,start`` - dragging the contents around has started
- ``scroll,drag,stop`` - dragging the contents around has stopped
- ``download,start`` - remote url download has started
- ``download,progress`` - url download in progress
- ``download,end`` - remote url download has finished
- ``download,error`` - remote url download has finished with errors
Scrollable Interface
====================
This widget supports the scrollable interface.
If you wish to control the scrolling behaviour using these functions,
inherit both the widget class and the
:py:class:`~efl.elementary.scroller.Scrollable` class
using multiple inheritance, for example::
class ScrollableGenlist(Genlist, Scrollable):
def __init__(self, canvas, *args, **kwargs):
Genlist.__init__(self, canvas)
Enumerations
============
.. _Elm_Photocam_Zoom_Mode:
Photocam zoom modes
-------------------
.. data:: ELM_PHOTOCAM_ZOOM_MODE_MANUAL
Zoom controlled normally by :py:attr:`~Photocam.zoom`
.. data:: ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT
Zoom until photo fits in photocam
.. data:: ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL
Zoom until photo fills photocam
.. data:: ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT_IN
Zoom in until photo fits in photocam
Inheritance diagram
===================
.. inheritance-diagram:: Photocam
:parts: 2
.. autoclass:: Photocam

View File

@ -1,2 +1,38 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.plug
Plug
####
Widget Description
==================
An object that allows one to show an image which other process created.
It can be used anywhere like any other elementary widget.
Emitted signals
===============
- ``clicked`` - the user clicked the image (press/release).
- ``image,deleted`` - the server side was deleted.
- ``image,resized`` - the server side was resized. The ``event_info`` parameter
of the callback will be ``Evas_Coord_Size`` (two integers).
.. note::
the event "image,resized" will be sent whenever the server
resized its image and this **always** happen on the first
time. Then it can be used to track when the server-side image
is fully known (client connected to server, retrieved its
image buffer through shared memory and resized the evas
object).
Inheritance diagram
===================
.. inheritance-diagram:: Plug
:parts: 2
.. autoclass:: Plug

View File

@ -1,2 +1,151 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.popup
Popup
#####
.. image:: /images/popup-preview.png
Widget description
==================
This widget is an enhancement of :py:class:`~efl.elementary.notify.Notify`.
In addition to Content area, there are two optional sections namely Title
area and Action area.
Popup Widget displays its content with a particular orientation in the
parent area. This orientation can be one among top, center, bottom,
left, top-left, top-right, bottom-left and bottom-right. Content part of
Popup can be an Evas Object set by application or it can be Text set by
application or set of items containing an icon and/or text. The
content/item-list can be removed using elm_object_content_set with second
parameter passed as None.
Following figures shows the textual layouts of popup in which Title Area
and Action area area are optional ones. Action area can have up to 3
buttons handled using elm_object common APIs mentioned below. If user
wants to have more than 3 buttons then these buttons can be put inside
the items of a list as content. User needs to handle the clicked signal
of these action buttons if required. No event is processed by the widget
automatically when clicked on these action buttons.
Figure::
|---------------------| |---------------------| |---------------------|
| Title Area | | Title Area | | Title Area |
|Icon| Text | |Icon| Text | |Icon| Text |
|---------------------| |---------------------| |---------------------|
| Item 1 | | | | |
|---------------------| | | | |
| Item 2 | | | | Description |
|---------------------| | Content | | |
| Item 3 | | | | |
|---------------------| | | | |
| . | |---------------------| |---------------------|
| . | | Action Area | | Action Area |
| . | | Btn1 |Btn2|. |Btn3 | | Btn1 |Btn2| |Btn3 |
|---------------------| |---------------------| |---------------------|
| Item N | Content Based Layout Description based Layout
|---------------------|
| Action Area |
| Btn1 |Btn2|. |Btn3 |
|---------------------|
Item Based Layout
Timeout can be set on expiry of which popup instance hides and sends a
smart signal "timeout" to the user. The visible region of popup is
surrounded by a translucent region called Blocked Event area. By
clicking on Blocked Event area, the signal "block,clicked" is sent to
the application. This block event area can be avoided by using API
elm_popup_allow_events_set. When gets hidden, popup does not get
destroyed automatically, application should destroy the popup instance
after use. To control the maximum height of the internal scroller for
item, we use the height of the action area which is passed by theme
based on the number of buttons currently set to popup.
Emitted signals
===============
- ``timeout`` - when ever popup is closed as a result of timeout.
- ``block,clicked`` - when ever user taps on Blocked Event area.
- ``item,focused`` - the popup item has received focus. (since 1.10)
- ``item,unfocused`` - the popup item has lost focus. (since 1.10)
- ``dismissed`` - the popup has been dismissed. (since 1.17)
Layout content parts
====================
- ``default`` - The content of the popup
- ``title,icon`` - Title area's icon
- ``button1`` - 1st button of the action area
- ``button2`` - 2nd button of the action area
- ``button3`` - 3rd button of the action area
- ``default`` - Item's icon
Layout text parts
=================
- ``title,text`` - This operates on Title area's label
- ``default`` - content-text set in the content area of the widget
- ``default`` - Item's label
Enumerations
============
.. _Elm_Popup_Orient:
Popup orientation types
-----------------------
.. data:: ELM_POPUP_ORIENT_TOP
Popup should appear in the top of parent, default
.. data:: ELM_POPUP_ORIENT_CENTER
Popup should appear in the center of parent
.. data:: ELM_POPUP_ORIENT_BOTTOM
Popup should appear in the bottom of parent
.. data:: ELM_POPUP_ORIENT_LEFT
Popup should appear in the left of parent
.. data:: ELM_POPUP_ORIENT_RIGHT
Popup should appear in the right of parent
.. data:: ELM_POPUP_ORIENT_TOP_LEFT
Popup should appear in the top left of parent
.. data:: ELM_POPUP_ORIENT_TOP_RIGHT
Popup should appear in the top right of parent
.. data:: ELM_POPUP_ORIENT_BOTTOM_LEFT
Popup should appear in the bottom left of parent
.. data:: ELM_POPUP_ORIENT_BOTTOM_RIGHT
Popup should appear in the bottom right of parent
Inheritance diagram
===================
.. inheritance-diagram::
Popup
PopupItem
:parts: 2
.. autoclass:: Popup
.. autoclass:: PopupItem

View File

@ -1,2 +1,67 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.progressbar
Progressbar
###########
.. image:: /images/progressbar-preview.png
Widget description
==================
The progress bar is a widget for visually representing the progress
status of a given job/task.
A progress bar may be horizontal or vertical. It may display an icon
besides it, as well as primary and **units** labels. The former is meant
to label the widget as a whole, while the latter, which is formatted
with floating point values (and thus accepts a ``printf``-style format
string, like ``"%1.2f units"``), is meant to label the widget's **progress
value**. Label, icon and unit strings/objects are **optional** for
progress bars.
A progress bar may be **inverted**, in which case it gets its values
inverted, i.e., high values being on the left or top and low values on
the right or bottom, for horizontal and vertical modes respectively.
The **span** of the progress, as set by :py:attr:`~Progressbar.span_size`, is
its length (horizontally or vertically), unless one puts size hints on the
widget to expand on desired directions, by any container. That length will be
scaled by the object or applications scaling factor. Applications can query the
progress bar for its value with :py:attr:`~Progressbar.value`.
This widget emits the following signals, besides the ones sent from
:py:class:`~efl.elementary.layout_class.LayoutClass`:
- ``changed`` - when the value is changed
This widget has the following styles:
- ``default``
- ``wheel`` (simple style, no text, no progression, only "pulse"
effect is available)
- ``double`` (style with two independent progress indicators)
Default text parts of the progressbar widget that you can use for are:
- ``default`` - Label of the progressbar
Default content parts of the progressbar widget that you can use for are:
- ``icon`` - An icon of the progressbar
Default part names for the "recording" style:
- ``elm.cur.progressbar`` - The "main" indicator bar
- ``elm.cur.progressbar1`` - The "secondary" indicator bar
Inheritance diagram
===================
.. inheritance-diagram:: Progressbar
:parts: 2
.. autoclass:: Progressbar

View File

@ -1,2 +1,61 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.radio
Radio
#####
.. image:: /images/radio-preview.png
Widget description
==================
Radio is a widget that allows for one or more options to be displayed
and have the user choose only one of them.
A radio object contains an indicator, an optional Label and an optional
icon object. While it's possible to have a group of only one radio they,
are normally used in groups of two or more.
Radio objects are grouped in a slightly different, compared to other UI
toolkits. There is no separate group name/id to remember or manage. The
members represent the group, there are the group. To make a group, use
:py:meth:`Radio.group_add` and pass existing radio object and the new radio
object.
The radio object(s) will select from one of a set of integer values, so
any value they are configuring needs to be mapped to a set of integers.
To configure what value that radio object represents, use
:py:attr:`~Radio.state_value` to set the integer it represents. The
value of the whole group (which one is currently selected) is
represented by the property :py:attr:`~Radio.value` on any group member. For
convenience the radio objects are also able to directly set an
integer(int) to the value that is selected.
Emitted signals
===============
- ``changed`` - This is called whenever the user changes the state of one of
the radio objects within the group of radio objects that work together.
Layout text parts
=================
- ``default`` - Label of the radio
Layout content parts
====================
- ``icon`` - An icon of the radio
Inheritance diagram
===================
.. inheritance-diagram:: Radio
:parts: 2
.. autoclass:: Radio

View File

@ -1,2 +1,135 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.scroller
Scroller
########
.. image:: /images/scroller-preview.png
Widget description
==================
A scroller holds a single object and "scrolls it around".
This means that it allows the user to use a scrollbar (or a finger) to
drag the viewable region around, allowing to move through a much larger
object that is contained in the scroller. The scroller will always have
a small minimum size by default as it won't be limited by the contents
of the scroller.
This widget inherits from :py:class:`~efl.elementary.layout_class.LayoutClass`,
so that all the functions acting on it also work for scroller objects.
.. note:: When Elementary is in embedded mode the scrollbars will not be
draggable, they appear merely as indicators of how much has been
scrolled.
.. note:: When Elementary is in desktop mode the thumbscroll(a.k.a.
fingerscroll) won't work.
Emitted signals
===============
- ``edge,left`` - the left edge of the content has been reached
- ``edge,right`` - the right edge of the content has been reached
- ``edge,top`` - the top edge of the content has been reached
- ``edge,bottom`` - the bottom edge of the content has been reached
- ``scroll`` - the content has been scrolled (moved)
- ``scroll,left`` - the content has been scrolled (moved) leftwards
- ``scroll,right`` - the content has been scrolled (moved) rightwards
- ``scroll,up`` - the content has been scrolled (moved) upwards
- ``scroll,down`` - the content has been scrolled (moved) downwards
- ``scroll,anim,start`` - scrolling animation has started
- ``scroll,anim,stop`` - scrolling animation has stopped
- ``scroll,drag,start`` - dragging the contents around has started
- ``scroll,drag,stop`` - dragging the contents around has stopped
- ``vbar,drag`` - the vertical scroll bar has been dragged
- ``vbar,press`` - the vertical scroll bar has been pressed
- ``vbar,unpress`` - the vertical scroll bar has been unpressed
- ``hbar,drag`` - the horizontal scroll bar has been dragged
- ``hbar,press`` - the horizontal scroll bar has been pressed
- ``hbar,unpress`` - the horizontal scroll bar has been unpressed
- ``scroll,page,changed`` - the visible page has changed
.. note:: The "scroll,anim,*" and "scroll,drag,*" signals are only emitted by
user intervention.
Layout content parts
====================
- ``default`` - A content of the scroller
Enumerations
============
.. _Elm_Scroller_Policy:
Scrollbar visibility
--------------------
.. data:: ELM_SCROLLER_POLICY_AUTO
Show scrollbars as needed
.. data:: ELM_SCROLLER_POLICY_ON
Always show scrollbars
.. data:: ELM_SCROLLER_POLICY_OFF
Never show scrollbars
.. _Elm_Scroller_Single_Direction:
Single direction
----------------
Type that controls how the content is scrolled.
.. data:: ELM_SCROLLER_SINGLE_DIRECTION_NONE
Scroll every direction
.. data:: ELM_SCROLLER_SINGLE_DIRECTION_SOFT
Scroll single direction if the direction is certain
.. data:: ELM_SCROLLER_SINGLE_DIRECTION_HARD
Scroll only single direction
.. _Elm_Scroller_Movement_Block:
Movement block
--------------
Type that blocks the scroll movement in one or more direction.
:since: 1.8
.. data:: ELM_SCROLLER_MOVEMENT_NO_BLOCK
Do not block movements
.. data:: ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL
Block vertical movements
.. data:: ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL
Block horizontal movements
Inheritance diagram
===================
.. inheritance-diagram:: Scroller
:parts: 2
.. autoclass:: Scroller
.. autoclass:: Scrollable

View File

@ -1,2 +1,51 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.segment_control
Segment Control
###############
.. image:: /images/segmentcontrol-preview.png
Widget description
==================
Segment control widget is a horizontal control made of multiple
segment items, each segment item functioning similar to discrete two
state button. A segment control groups the items together and provides
compact single button with multiple equal size segments.
Segment item size is determined by base widget size and the number of
items added. Only one segment item can be at selected state. A segment
item can display combination of Text and any Evas_Object like Images or
other widget.
Emitted signals
===============
- ``changed`` - When the user clicks on a segment item which is not
previously selected and get selected. The event_info parameter is the
segment item.
Layout content parts
====================
- ``icon`` - An icon in a segment control item
Layout text parts
=================
- ``default`` - Title label in a segment control item
Inheritance diagram
===================
.. inheritance-diagram:: SegmentControl
:parts: 2
.. autoclass:: SegmentControl
.. autoclass:: SegmentControlItem

View File

@ -1,2 +1,24 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.separator
Separator
#########
.. image:: /images/separator-preview.png
Widget description
==================
Separator is a very thin object used to separate other objects.
A separator can be vertical or horizontal.
Inheritance diagram
===================
.. inheritance-diagram:: Separator
:parts: 2
.. autoclass:: Separator

View File

@ -1,2 +1,68 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.slider
Slider
######
.. image:: /images/slider-preview.png
Widget description
==================
The slider adds a draggable "slider" widget for selecting the value of
something within a range.
A slider can be horizontal or vertical. It can contain an Icon and has a
primary label as well as a units label (that is formatted with floating
point values and thus accepts a printf-style format string, like
``"%1.2f units"``. There is also an indicator string that may be somewhere
else (like on the slider itself) that also accepts a format string like
units. Label, Icon Unit and Indicator strings/objects are optional.
A slider may be inverted which means values invert, with high vales being
on the left or top and low values on the right or bottom (as opposed to
normally being low on the left or top and high on the bottom and right).
The slider should have its minimum and maximum values set by the
application with :py:attr:`Slider.min_max` and value should also be set by
the application before use with :py:attr:`Slider.value`. The span of the
slider is its length (horizontally or vertically). This will be scaled by
the object or applications scaling factor. At any point code can query the
slider for its value with :py:attr:`Slider.value`.
Emitted signals
===============
- ``changed`` - Whenever the slider value is changed by the user.
- ``slider,drag,start`` - dragging the slider indicator around has
started.
- ``slider,drag,stop`` - dragging the slider indicator around has
stopped.
- ``delay,changed`` - A short time after the value is changed by
the user. This will be called only when the user stops dragging
for a very short period or when they release their finger/mouse,
so it avoids possibly expensive reactions to the value change.
Layout content parts
====================
- ``icon`` - An icon of the slider
- ``end`` - A end part content of the slider
Layout text parts
=================
- ``default`` - Label of the slider
Inheritance diagram
===================
.. inheritance-diagram:: Slider
:parts: 2
.. autoclass:: Slider

View File

@ -1,2 +1,74 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.slideshow
Slideshow
#########
.. image:: /images/slideshow-preview.png
Widget description
==================
This widget, as the name indicates, is a pre-made image
slideshow panel, with API functions acting on (child) image
items presentation. Between those actions, are:
- advance to next/previous image
- select the style of image transition animation
- set the exhibition time for each image
- start/stop the slideshow
The transition animations are defined in the widget's theme,
consequently new animations can be added without having to
update the widget's code.
Slideshow items
===============
For slideshow items, just like for :py:class:`~efl.elementary.genlist.Genlist`
ones, the user defines a **classes**, specifying functions that will be called
on the item's creation and deletion times.
The :py:class:`SlideshowItemClass` class contains the following
members:
- ``get`` - When an item is displayed, this function is
called, and it's where one should create the item object, de
facto. For example, the object can be a pure Evas image object
or a :py:class:`~efl.elementary.photocam.Photocam` widget.
- ``delete`` - When an item is no more displayed, this function
is called, where the user must delete any data associated to
the item.
Slideshow caching
=================
The slideshow provides facilities to have items adjacent to the
one being displayed **already "realized"** (i.e. loaded) for
you, so that the system does not have to decode image data
anymore at the time it has to actually switch images on its
viewport. The user is able to set the numbers of items to be
cached **before** and **after** the current item, in the widget's
item list.
Emitted signals
===============
- ``changed`` - when the slideshow switches its view to a new item.
event_info parameter in callback contains the current visible item
- ``transition,end`` - when a slide transition ends. event_info
parameter in callback contains the current visible item
Inheritance diagram
===================
.. inheritance-diagram:: Slideshow
:parts: 2
.. autoclass:: Slideshow
.. autoclass:: SlideshowItem
.. autoclass:: SlideshowItemClass

View File

@ -1,2 +1,54 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.spinner
Spinner
#######
.. image:: /images/spinner-preview.png
Widget description
==================
A spinner is a widget which allows the user to increase or decrease
numeric values using arrow buttons, or edit values directly, clicking
over it and typing the new value.
By default the spinner will not wrap and has a label
of ``"%.0f"`` (just showing the integer value of the double).
A spinner has a label that is formatted with floating
point values and thus accepts a printf-style format string, like
``"%1.2f units"``.
It also allows specific values to be replaced by pre-defined labels.
Emitted signals
===============
- ``changed`` - Whenever the spinner value is changed.
- ``delay,changed`` - A short time after the value is changed by
the user. This will be called only when the user stops dragging
for a very short period or when they release their finger/mouse,
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
================
- ``default``: Default style
- ``vertical``: up/down buttons at the right side and text left aligned.
Inheritance diagram
===================
.. inheritance-diagram:: Spinner
:parts: 2
.. autoclass:: Spinner

View File

@ -1,2 +0,0 @@
.. automodule:: efl.elementary.systray

View File

@ -1,2 +1,38 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.table
Table
#####
.. image:: /images/table-preview.png
Widget description
==================
A container widget to arrange other widgets in a table where items can
span multiple columns or rows - even overlap (and then be raised or
lowered accordingly to adjust stacking if they do overlap).
The row and column count is not fixed. The table widget adjusts itself
when subobjects are added to it dynamically.
The most common way to use a table is::
table = Table(win)
table.show()
table.padding = (space_between_columns, space_between_rows)
table.pack(table_content_object, x_coord, y_coord, colspan, rowspan)
table.pack(table_content_object, x_coord, y_coord, colspan, rowspan)
table.pack(table_content_object, x_coord, y_coord, colspan, rowspan)
Inheritance diagram
===================
.. inheritance-diagram:: Table
:parts: 2
.. autoclass:: Table
.. autofunction:: table_pack_set
.. autofunction:: table_pack_get

View File

@ -1,2 +1,81 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.theme
Theme
#####
Description
===========
Elementary uses Edje to theme its widgets, naturally. But for the most
part this is hidden behind a simpler interface that lets the user set
extensions and choose the style of widgets in a much easier way.
Instead of thinking in terms of paths to Edje files and their groups
each time you want to change the appearance of a widget, Elementary
works so you can add any theme file with extensions or replace the
main theme at one point in the application, and then just set the style
of widgets with
:py:attr:`Object.style<efl.elementary.object.Object.style>`
and related functions. Elementary
will then look in its list of themes for a matching group and apply it,
and when the theme changes midway through the application, all widgets
will be updated accordingly.
There are three concepts you need to know to understand how Elementary
theming works: default theme, extensions and overlays.
Default theme, obviously enough, is the one that provides the default
look of all widgets. End users can change the theme used by Elementary
by setting the ``ELM_THEME`` environment variable before running an
application, or globally for all programs using the ``elementary_config``
utility. Applications can change the default theme using :py:attr:`Theme.order`,
but this can go against the user wishes, so it's not an advised practice.
Ideally, applications should find everything they need in the already
provided theme, but there may be occasions when that's not enough and
custom styles are required to correctly express the idea. For this
cases, Elementary has extensions.
Extensions allow the application developer to write styles of its own
to apply to some widgets. This requires knowledge of how each widget
is themed, as extensions will always replace the entire group used by
the widget, so important signals and parts need to be there for the
object to behave properly (see documentation of Edje for details).
Once the theme for the extension is done, the application needs to add
it to the list of themes Elementary will look into, using
:py:func:`Theme.extension_add()`, and set the style of the desired widgets as
he would normally with
:py:attr:`Object.style<efl.elementary.object.Object.style>`.
Overlays, on the other hand, can replace the look of all widgets by
overriding the default style. Like extensions, it's up to the application
developer to write the theme for the widgets it wants, the difference
being that when looking for the theme, Elementary will check first the
list of overlays, then the set theme and lastly the list of extensions,
so with overlays it's possible to replace the default view and every
widget will be affected. This is very much alike to setting the whole
theme for the application and will probably clash with the end user
options, not to mention the risk of ending up with not matching styles
across the program. Unless there's a very special reason to use them,
overlays should be avoided for the reasons exposed before.
All these theme lists are handled by :py:class:`Theme` instances. Elementary
keeps one default internally. It's possible to create a new instance of a
:py:class:`Theme` to set other theme for a specific widget (and all of its
children), but this is as discouraged, if not even more so, than using
overlays. Don't use this unless you really know what you are doing.
.. note::
Remember to :py:func:`Theme.free` the instance when you're done with it!
Inheritance diagram
===================
.. inheritance-diagram:: Theme
:parts: 2
.. autoclass:: Theme

View File

@ -1,2 +1,172 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.thumb
Thumb
#####
.. image:: /images/thumb-preview.png
Widget description
==================
A thumbnail object is used for displaying the thumbnail of an image
or video. You must have compiled Elementary with ``Ethumb_Client``
support. Also, Ethumb's DBus service must be present and
auto-activated in order to have thumbnails generated. You must also
have a **session** bus, not a **system** one.
Once the thumbnail object becomes visible, it will check if there
is a previously generated thumbnail image for the file set on
it. If not, it will start generating this thumbnail.
Different configuration settings will cause different thumbnails to
be generated even on the same file.
Generated thumbnails are stored under ``$HOME/.thumbnails/``. Check
Ethumb's documentation to change this path, and to see other
configuration options.
Emitted signals
===============
- ``clicked`` - This is called when a user has clicked the
thumbnail object without dragging it around.
- ``clicked,double`` - This is called when a user has double-clicked
the thumbnail object.
- ``press`` - This is called when a user has pressed down over the
thumbnail object.
- ``generate,start`` - The thumbnail generation has started.
- ``generate,stop`` - The generation process has stopped.
- ``generate,error`` - The thumbnail generation failed.
- ``load,error`` - The thumbnail image loading failed.
Available styles
================
- ``default``
- ``noframe``
Enumerations
============
.. _Elm_Thumb_Animation_Setting:
Thumb animation mode
--------------------
.. data:: ELM_THUMB_ANIMATION_START
Play animation once
.. data:: ELM_THUMB_ANIMATION_LOOP
Keep playing animation until stop is requested
.. data:: ELM_THUMB_ANIMATION_STOP
Stop playing the animation
.. _Ethumb_Thumb_FDO_Size:
Thumb FDO size
--------------
.. data:: ETHUMB_THUMB_NORMAL
128x128 as defined by FreeDesktop.Org standard
.. data:: ETHUMB_THUMB_LARGE
256x256 as defined by FreeDesktop.Org standard
.. _Ethumb_Thumb_Format:
Thumb format
------------
.. data:: ETHUMB_THUMB_FDO
PNG as defined by FreeDesktop.Org standard
.. data:: ETHUMB_THUMB_JPEG
JPEGs are often smaller and faster to read/write
.. data:: ETHUMB_THUMB_EET
EFL's own storage system, supports key parameter
.. _Ethumb_Thumb_Aspect:
Thumb aspect
------------
.. data:: ETHUMB_THUMB_KEEP_ASPECT
keep original proportion between width and height
.. data:: ETHUMB_THUMB_IGNORE_ASPECT
ignore aspect and foce it to match thumbnail's width and height
.. data:: ETHUMB_THUMB_CROP
keep aspect but crop (cut) the largest dimension
.. _Ethumb_Thumb_Orientation:
Thumb orientation
-----------------
.. data:: ETHUMB_THUMB_ORIENT_NONE
keep orientation as pixel data is
.. data:: ETHUMB_THUMB_ROTATE_90_CW
rotate 90° clockwise
.. data:: ETHUMB_THUMB_ROTATE_180
rotate 180°
.. data:: ETHUMB_THUMB_ROTATE_90_CCW
rotate 90° counter-clockwise
.. data:: ETHUMB_THUMB_FLIP_HORIZONTAL
flip horizontally
.. data:: ETHUMB_THUMB_FLIP_VERTICAL
flip vertically
.. data:: ETHUMB_THUMB_FLIP_TRANSPOSE
transpose
.. data:: ETHUMB_THUMB_FLIP_TRANSVERSE
transverse
.. data:: ETHUMB_THUMB_ORIENT_ORIGINAL
use orientation from metadata (EXIF-only currently)
Inheritance diagram
===================
.. inheritance-diagram:: Thumb
:parts: 2
.. autoclass:: Thumb

View File

@ -1,2 +1,127 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.toolbar
Toolbar
#######
.. image:: /images/toolbar-preview.png
Widget description
==================
A toolbar is a widget that displays a list of items inside a box. It
can be scrollable, show a menu with items that don't fit to toolbar size
or even crop them.
Only one item can be selected at a time.
Items can have multiple states, or show menus when selected by the user.
Emitted signals
===============
- ``clicked`` - when the user clicks on a toolbar item and becomes selected.
- ``longpressed`` - when the toolbar is pressed for a certain amount of time.
- ``item,focused`` - When the toolbar item has received focus. (since 1.10)
- ``item,unfocused`` - When the toolbar item has lost focus. (since 1.10)
Available styles
================
- ``default``
- ``transparent`` - no background or shadow, just show the content
Layout text parts
=================
- ``default`` - label of the toolbar item
Scrollable Interface
====================
This widget supports the scrollable interface.
If you wish to control the scrolling behaviour using these functions,
inherit both the widget class and the
:py:class:`~efl.elementary.scroller.Scrollable` class
using multiple inheritance, for example::
class ScrollableGenlist(Genlist, Scrollable):
def __init__(self, canvas, *args, **kwargs):
Genlist.__init__(self, canvas)
Enumerations
============
.. _Elm_Toolbar_Shrink_Mode:
Toolbar shrink modes
--------------------
.. data:: ELM_TOOLBAR_SHRINK_NONE
Set toolbar minimum size to fit all the items
.. data:: ELM_TOOLBAR_SHRINK_HIDE
Hide exceeding items
.. data:: ELM_TOOLBAR_SHRINK_SCROLL
Allow accessing exceeding items through a scroller
.. data:: ELM_TOOLBAR_SHRINK_MENU
Inserts a button to pop up a menu with exceeding items
.. data:: ELM_TOOLBAR_SHRINK_EXPAND
Expand all items according the size of the toolbar.
.. _Elm_Toolbar_Item_Scrollto_Type:
Toolbar item scrollto types
---------------------------
Where to position the item in the toolbar.
.. data:: ELM_TOOLBAR_ITEM_SCROLLTO_NONE
No scrollto
.. data:: ELM_TOOLBAR_ITEM_SCROLLTO_IN
To the nearest viewport
.. data:: ELM_TOOLBAR_ITEM_SCROLLTO_FIRST
To the first of viewport
.. data:: ELM_TOOLBAR_ITEM_SCROLLTO_MIDDLE
To the middle of viewport
.. data:: ELM_TOOLBAR_ITEM_SCROLLTO_LAST
To the last of viewport
Inheritance diagram
===================
.. inheritance-diagram::
Toolbar
ToolbarItem
ToolbarItemState
:parts: 2
.. autoclass:: Toolbar
.. autoclass:: ToolbarItem
.. autoclass:: ToolbarItemState

View File

@ -1,2 +1,166 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.transit
Transit
#######
Widget description
==================
Transit is designed to apply various animated transition effects to
``Evas_Object``, such like translation, rotation, etc. For using these
effects, create a :py:class:`Transit` and add the desired transition effects.
Once the effects are added into transit, they will be automatically managed
(their callback will be called for the set duration and they will be deleted
upon completion).
Example::
from efl.elementary.transit import Transit, ELM_TRANSIT_TWEEN_MODE_DECELERATE
t = Transit()
t.object_add(obj)
t.effect_translation_add(0, 0, 280, 280)
t.duration = 1
t.auto_reverse = True
t.tween_mode = ELM_TRANSIT_TWEEN_MODE_DECELERATE
t.repeat_times = 3
Some transition effects are used to change the properties of objects. They
are:
- :py:func:`~Transit.effect_translation_add`
- :py:func:`~Transit.effect_color_add`
- :py:func:`~Transit.effect_rotation_add`
- :py:func:`~Transit.effect_wipe_add`
- :py:func:`~Transit.effect_zoom_add`
- :py:func:`~Transit.effect_resizing_add`
Other transition effects are used to make one object disappear and another
object appear on its place. These effects are:
- :py:func:`~Transit.effect_flip_add`
- :py:func:`~Transit.effect_resizable_flip_add`
- :py:func:`~Transit.effect_fade_add`
- :py:func:`~Transit.effect_blend_add`
It's also possible to make a transition chain with
:py:func:`~Transit.chain_transit_add`.
.. warning:: We strongly recommend to use elm_transit just when edje can
not do the trick. Edje is better at handling transitions than
Elm_Transit. Edje has more flexibility and animations can be
manipulated inside the theme.
Enumerations
============
.. _Elm_Transit_Effect_Flip_Axis:
Flip effects
------------
.. data:: ELM_TRANSIT_EFFECT_FLIP_AXIS_X
Flip on X axis
.. data:: ELM_TRANSIT_EFFECT_FLIP_AXIS_Y
Flip on Y axis
.. _Elm_Transit_Effect_Wipe_Dir:
Wipe effects
------------
.. data:: ELM_TRANSIT_EFFECT_WIPE_DIR_LEFT
Wipe to the left
.. data:: ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT
Wipe to the right
.. data:: ELM_TRANSIT_EFFECT_WIPE_DIR_UP
Wipe up
.. data:: ELM_TRANSIT_EFFECT_WIPE_DIR_DOWN
Wipe down
.. _Elm_Transit_Effect_Wipe_Type:
Wipe types
----------
.. data:: ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE
Hide the object during the animation.
.. data:: ELM_TRANSIT_EFFECT_WIPE_TYPE_SHOW
Show the object during the animation.
.. _Elm_Transit_Tween_Mode:
Tween modes
-----------
.. data:: ELM_TRANSIT_TWEEN_MODE_LINEAR
Constant speed
.. data:: ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL
Starts slow, increase speed over time, then decrease again and stop slowly
.. data:: ELM_TRANSIT_TWEEN_MODE_DECELERATE
Starts fast and decrease speed over time
.. data:: ELM_TRANSIT_TWEEN_MODE_ACCELERATE
Starts slow and increase speed over time
.. data:: ELM_TRANSIT_TWEEN_MODE_DIVISOR_INTERP
Start at gradient v1, interpolated via power of v2 curve
.. versionadded:: 1.13
.. data:: ELM_TRANSIT_TWEEN_MODE_BOUNCE
Start at 0.0 then "drop" like a ball bouncing to the ground at 1.0, and
bounce v2 times, with decay factor of v1
.. versionadded:: 1.13
.. data:: ELM_TRANSIT_TWEEN_MODE_SPRING
Start at 0.0 then "wobble" like a spring rest position 1.0, and wobble
v2 times, with decay factor of v1
.. versionadded:: 1.13
.. data:: ELM_TRANSIT_TWEEN_MODE_BEZIER_CURVE
Follow the cubic-bezier curve calculated with the control points (x1,
y1), (x2, y2)
.. versionadded:: 1.13
Inheritance diagram
===================
.. inheritance-diagram:: Transit
:parts: 2
.. autoclass:: Transit

View File

@ -1,2 +1,27 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.video
Video
#####
Widget description
==================
Display a video by using Emotion.
It embeds the video inside an Edje object, so you can do some
animation depending on the video state change. It also implements a
resource management policy to remove this burden from the application.
Inheritance diagram
===================
.. inheritance-diagram::
Video
Player
:parts: 2
.. autoclass:: Video
.. autoclass:: Player

View File

@ -1,2 +1,139 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.web
Web
###
Widget description
==================
A web widget is used for displaying web pages (HTML/CSS/JS)
using WebKit-EFL. You must have compiled Elementary with
ewebkit support.
Emitted signals
===============
- ``download,request``: A file download has been requested. Event info is
a WebDownload instance
- ``editorclient,contents,changed``: Editor client's contents changed
- ``editorclient,selection,changed``: Editor client's selection changed
- ``frame,created``: A new frame was created. Event info is an
Evas_Object which can be handled with WebKit's ewk_frame API
- ``icon,received``: An icon was received by the main frame
- ``inputmethod,changed``: Input method changed. Event info is an
Eina_Bool indicating whether it's enabled or not
- ``js,windowobject,clear``: JS window object has been cleared
- ``link,hover,in``: Mouse cursor is hovering over a link. Event info
is a tuple, where the first string contains the URL the link
points to, and the second one the title of the link
- ``link,hover,out``: Mouse cursor left the link
- ``load,document,finished``: Loading of a document finished. Event info
is the frame that finished loading
- ``load,error``: Load failed. Event info is a WebFrameLoadError instance
- ``load,finished``: Load finished. Event info is None on success, on
error it's a WebFrameLoadError instance
- ``load,newwindow,show``: A new window was created and is ready to be
shown
- ``load,progress``: Overall load progress. Event info is
a double containing a value between 0.0 and 1.0
- ``load,provisional``: Started provisional load
- ``load,started``: Loading of a document started
- ``menubar,visible,get``: Queries if the menubar is visible. Event info
is a bool where the callback should set True if
the menubar is visible, or False in case it's not
- ``menubar,visible,set``: Informs menubar visibility. Event info is
a bool indicating the visibility
- ``popup,created``: A dropdown widget was activated, requesting its
popup menu to be created. Event info is a WebMenu instance
- ``popup,willdelete``: The web object is ready to destroy the popup
object created. Event info is a WebMenu instance
- ``ready``: Page is fully loaded
- ``scrollbars,visible,get``: Queries visibility of scrollbars. Event
info is a bool where the visibility state should be set
- ``scrollbars,visible,set``: Informs scrollbars visibility. Event info
is an Eina_Bool with the visibility state set
- ``statusbar,text,set``: Text of the statusbar changed. Event info is
a string with the new text
- ``statusbar,visible,get``: Queries visibility of the status bar.
Event info is a bool where the visibility state should be
set.
- ``statusbar,visible,set``: Informs statusbar visibility. Event info is
an Eina_Bool with the visibility value
- ``title,changed``: Title of the main frame changed. Event info is a
string with the new title
- ``toolbars,visible,get``: Queries visibility of toolbars. Event info
is a bool where the visibility state should be set
- ``toolbars,visible,set``: Informs the visibility of toolbars. Event
info is an Eina_Bool with the visibility state
- ``tooltip,text,set``: Show and set text of a tooltip. Event info is
a string with the text to show
- ``uri,changed``: URI of the main frame changed. Event info is a string (deprecated. use ``url,changed`` instead)
- ``url,changed``: URL of the main frame changed. Event info is a string
with the new URI
- ``view,resized``: The web object internal's view changed sized
- ``windows,close,request``: A JavaScript request to close the current
window was requested
- ``zoom,animated,end``: Animated zoom finished
Enumerations
============
.. _Elm_Web_Window_Feature:
Web window features
-------------------
.. data:: ELM_WEB_WINDOW_FEATURE_TOOLBAR
Toolbar
.. data:: ELM_WEB_WINDOW_FEATURE_STATUSBAR
Status bar
.. data:: ELM_WEB_WINDOW_FEATURE_SCROLLBARS
Scrollbars
.. data:: ELM_WEB_WINDOW_FEATURE_MENUBAR
Menu bar
.. data:: ELM_WEB_WINDOW_FEATURE_LOCATIONBAR
Location bar
.. data:: ELM_WEB_WINDOW_FEATURE_FULLSCREEN
Fullscreen
.. _Elm_Web_Zoom_Mode:
Web zoom modes
--------------
.. data:: ELM_WEB_ZOOM_MODE_MANUAL
Zoom controlled normally by :py:attr:`~Web.zoom`
.. data:: ELM_WEB_ZOOM_MODE_AUTO_FIT
Zoom until content fits in web object.
.. data:: ELM_WEB_ZOOM_MODE_AUTO_FILL
Zoom until content fills web object.
Inheritance diagram
===================
.. inheritance-diagram:: Web
:parts: 2
.. autoclass:: Web

View File

@ -1,2 +1,359 @@
.. currentmodule:: efl.elementary
.. automodule:: efl.elementary.window
Window
######
Widget description
==================
The window class of Elementary.
Contains functions to manipulate windows. The Evas engine used to render
the window contents is specified in the system or user elementary config
files (whichever is found last), and can be overridden with the
ELM_ENGINE environment variable for testing. Engines that may be
supported (depending on Evas and Ecore-Evas compilation setup and
modules actually installed at runtime) are (listed in order of best
supported and most likely to be complete and work to lowest quality).
Note that ELM_ENGINE is really only needed for special cases and debugging.
you should normally use ELM_DISPLAY and ELM_ACCEL environment variables, or
core elementary config. ELM_DISPLAY can be set to "x11" or "wl" to indicate
the target display system (as on Linux systems you may have both display
systems available, so this selects which to use). ELM_ACCEL may also be set
to indicate if you want accelerations and which kind to use. see
:py:attr:`~efl.elementary.configuration.Configuration.accel_preference` for
details on this environment variable values.
``x11``, ``x``, ``software-x11``, ``software_x11``
Software rendering in X11
``gl``, ``opengl``, ``opengl-x11``, ``opengl_x11``
OpenGL or OpenGL-ES2 rendering in X11
``shot:...``
Virtual screenshot renderer - renders to output file and exits
``fb``, ``software-fb``, ``software_fb``
Linux framebuffer direct software rendering
``sdl``, ``software-sdl``, ``software_sdl``
SDL software rendering to SDL buffer
``gl-sdl``, ``gl_sdl``, ``opengl-sdl``, ``opengl_sdl``
OpenGL or OpenGL-ES2 using SDL
``gdi``, ``software-gdi``, ``software_gdi``
Windows WIN32 rendering via GDI with software
``ews``
rendering to EWS (Ecore + Evas Single Process Windowing System)
``gl-cocoa``, ``gl_cocoa``, ``opengl-cocoa``, ``opengl_cocoa``
OpenGL rendering in Cocoa
``wayland_shm``
Wayland client SHM rendering
``wayland_egl``
Wayland client OpenGL/EGL rendering
``drm``
Linux drm/kms etc. direct display
All engines use a simple string to select the engine to render, EXCEPT
the "shot" engine. This actually encodes the output of the virtual
screenshot and how long to delay in the engine string. The engine string
is encoded in the following way::
"shot:[delay=XX][:][repeat=DDD][:][file=XX]"
Where options are separated by a ``:`` char if more than one option is
given, with delay, if provided being the first option and file the last
(order is important). The delay specifies how long to wait after the
window is shown before doing the virtual "in memory" rendering and then
save the output to the file specified by the file option (and then exit).
If no delay is given, the default is 0.5 seconds. If no file is given the
default output file is "out.png". Repeat option is for continuous
capturing screenshots. Repeat range is from 1 to 999 and filename is
fixed to "out001.png" Some examples of using the shot engine::
ELM_ENGINE="shot:delay=1.0:repeat=5:file=elm_test.png" elementary_test
ELM_ENGINE="shot:delay=1.0:file=elm_test.png" elementary_test
ELM_ENGINE="shot:file=elm_test2.png" elementary_test
ELM_ENGINE="shot:delay=2.0" elementary_test
ELM_ENGINE="shot:" elementary_test
Emitted signals
===============
- ``delete,request``: the user requested to close the window. See
:py:attr:`~Window.autodel`.
- ``focus,in``: window got focus
- ``focus,out``: window lost focus
- ``moved``: window that holds the canvas was moved
- ``withdrawn``: window is still managed normally but removed from view
- ``iconified``: window is minimized (perhaps into an icon or taskbar)
- ``normal``: window is in a normal state (not withdrawn or iconified)
- ``stick``: window has become sticky (shows on all desktops)
- ``unstick``: window has stopped being sticky
- ``fullscreen``: window has become fullscreen
- ``unfullscreen``: window has stopped being fullscreen
- ``maximized``: window has been maximized
- ``unmaximized``: window has stopped being maximized
- ``ioerr``: there has been a low-level I/O error with the display system
- ``indicator,prop,changed``: an indicator's property has been changed
- ``rotation,changed``: window rotation has been changed
- ``profile,changed``: profile of the window has been changed
- ``theme,changed`` - The theme was changed. (since 1.13)
Enumerations
============
.. _Elm_Win_Type:
Window types
------------
.. data:: ELM_WIN_UNKNOWN
Unknown window type (since 1.9)
.. data:: ELM_WIN_BASIC
A normal window.
Indicates a normal, top-level window. Almost every window will be
created with this type.
.. data:: ELM_WIN_DIALOG_BASIC
Used for simple dialog windows
.. data:: ELM_WIN_DESKTOP
For special desktop windows, like a background window holding desktop icons.
.. data:: ELM_WIN_DOCK
The window is used as a dock or panel.
Usually would be kept on top of any other window by the Window Manager.
.. data:: ELM_WIN_TOOLBAR
The window is used to hold a floating toolbar, or similar.
.. data:: ELM_WIN_MENU
Similar to ELM_WIN_TOOLBAR.
.. data:: ELM_WIN_UTILITY
A persistent utility window, like a toolbox or palette.
.. data:: ELM_WIN_SPLASH
Splash window for a starting up application.
.. data:: ELM_WIN_DROPDOWN_MENU
The window is a dropdown menu, as when an entry in a menubar is clicked.
Typically used with :py:attr:`~Window.override`. This hint exists for
completion only, as the EFL way of implementing a menu would not
normally use a separate window for its contents.
.. data:: ELM_WIN_POPUP_MENU
Like ELM_WIN_DROPDOWN_MENU, but for the menu triggered by right-clicking
an object.
.. data:: ELM_WIN_TOOLTIP
The window is a tooltip.
A short piece of explanatory text that typically appear after the mouse
cursor hovers over an object for a while. Typically used with
:py:attr:`~Window.override` and also not very commonly used in the EFL.
.. data:: ELM_WIN_NOTIFICATION
A notification window, like a warning about battery life or a new E-Mail
received.
.. data:: ELM_WIN_COMBO
A window holding the contents of a combo box.
Not usually used in the EFL.
.. data:: ELM_WIN_DND
Used to indicate the window is a representation of an object being
dragged across different windows, or even applications.
Typically used with :py:attr:`~Window.override`.
.. data:: ELM_WIN_INLINED_IMAGE
The window is rendered onto an image buffer.
No actual window is created for this type, instead the window and all of
its contents will be rendered to an image buffer. This allows to have
children window inside a parent one just like any other object would be,
and do other things like applying Evas_Map effects to it. This is the
only type of window that requires the ``parent`` parameter
to be a valid :py:class:`efl.evas.Object`.
.. data:: ELM_WIN_SOCKET_IMAGE
The window is rendered onto an image buffer and can be shown other
process's plug image object.
No actual window is created for this type, instead the window and all of
its contents will be rendered to an image buffer and can be shown other
process's plug image object
.. _Elm_Win_Indicator_Mode:
Indicator states
----------------
.. data:: ELM_WIN_INDICATOR_UNKNOWN
Unknown indicator state.
.. data:: ELM_WIN_INDICATOR_HIDE
Hides the indicator.
.. data:: ELM_WIN_INDICATOR_SHOW
Shows the indicator.
.. _Elm_Win_Indicator_Opacity_Mode:
Indicator opacity
-----------------
.. data:: ELM_WIN_INDICATOR_OPACITY_UNKNOWN
Unknown indicator opacity mode.
.. data:: ELM_WIN_INDICATOR_OPAQUE
Opacifies the indicator.
.. data:: ELM_WIN_INDICATOR_TRANSLUCENT
Be translucent the indicator.
.. data:: ELM_WIN_INDICATOR_TRANSPARENT
Transparentizes the indicator.
.. _Elm_Win_Keyboard_Mode:
Keyboard virtual keyboard modes
-------------------------------
.. data:: ELM_WIN_KEYBOARD_UNKNOWN
Unknown keyboard state.
.. data:: ELM_WIN_KEYBOARD_OFF
Request to deactivate the keyboard.
.. data:: ELM_WIN_KEYBOARD_ON
Enable keyboard with default layout.
.. data:: ELM_WIN_KEYBOARD_ALPHA
Alpha (a-z) keyboard layout.
.. data:: ELM_WIN_KEYBOARD_NUMERIC
Numeric keyboard layout.
.. data:: ELM_WIN_KEYBOARD_PIN
PIN keyboard layout.
.. data:: ELM_WIN_KEYBOARD_PHONE_NUMBER
Phone keyboard layout.
.. data:: ELM_WIN_KEYBOARD_HEX
Hexadecimal numeric keyboard layout.
.. data:: ELM_WIN_KEYBOARD_TERMINAL
Full (QWERTY) keyboard layout.
.. data:: ELM_WIN_KEYBOARD_PASSWORD
Password keyboard layout.
.. data:: ELM_WIN_KEYBOARD_IP
IP keyboard layout.
.. data:: ELM_WIN_KEYBOARD_HOST
Host keyboard layout.
.. data:: ELM_WIN_KEYBOARD_FILE
File keyboard layout.
.. data:: ELM_WIN_KEYBOARD_URL
URL keyboard layout.
.. data:: ELM_WIN_KEYBOARD_KEYPAD
Keypad layout.
.. data:: ELM_WIN_KEYBOARD_J2ME
J2ME keyboard layout.
.. _Elm_Illume_Command:
Illume commands
---------------
Available commands that can be sent to the Illume manager.
When running under an Illume session, a window may send commands to the
Illume manager to perform different actions.
.. data:: ELM_ILLUME_COMMAND_FOCUS_BACK
Reverts focus to the previous window
.. data:: ELM_ILLUME_COMMAND_FOCUS_FORWARD
Sends focus to the next window in the list
.. data:: ELM_ILLUME_COMMAND_FOCUS_HOME
Hides all windows to show the Home screen
.. data:: ELM_ILLUME_COMMAND_CLOSE
Closes the currently active window
Inheritance diagram
===================
.. inheritance-diagram::
Window
StandardWindow
DialogWindow
:parts: 2
.. autoclass:: Window
.. autoclass:: StandardWindow
.. autoclass:: DialogWindow

View File

@ -47,9 +47,20 @@ loaded file.
There will be a delay between an API being called and it being really
executed, since this request will be done in the main thread, and it needs to
be sent to the decoding thread. For this reason, always call functions like
emotion_object_size_get() or emotion_object_length_get() after some signal
being sent, like "playback_started" or "open_done".
be sent to the decoding thread. For this reason, never access properties or
call methods before a start up signal being sent, such "playback_started" or
"open_done".
Supported module names
======================
- **gstreamer1** (default)
- **xine**
- **libvlc**
- generic modules (launched in a separate process)
- **vlc**
Emitted signals
@ -70,7 +81,7 @@ interesting signals:
- ``length_change`` Emitted if the media change it's size
- ``channels_change`` Emitted when the number of channels change
- ``title_change`` Emitted when the title change (?)
- ``progress_change``
- ``progress_change``
- ``ref_change``
- ``button_num_change``
- ``button_change``

View File

@ -0,0 +1,6 @@
.. currentmodule:: efl.ethumb
:class:`efl.ethumb.Ethumb` Class
================================
.. autoclass:: efl.ethumb.Ethumb

View File

@ -0,0 +1,6 @@
.. currentmodule:: efl.ethumb_client
:class:`efl.ethumb_client.EthumbClient` Class
=============================================
.. autoclass:: efl.ethumb_client.EthumbClient

View File

@ -1,28 +1,55 @@
.. _ethumb_main_intro:
What is Ethumb?
----------------
===============
Ethumb will use Evas to generate thumbnail images of given files. The API
allows great customization of the generated files and also helps compling to
FreeDesktop.Org Thumbnail Specification.
How to use the Ethumb object
-----------------------------
(http://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html)
However, thumbnailing can be an expensive process that will impact your
application experience, blocking animations and user interaction during the
generation. Another problem is that one should try to cache the thumbnails in
a place that other applications can benefit from the file.
:class:`~efl.ethumb_client.EthumbClient` exists to solve this. It will
communicate with a server using standard D-Bus protocol. The server will use
:class:`~efl.ethumb.Ethumb` itself to generate the thumbnail images and cache
them using FreeDesktop.Org standard. It is recommended that most applications
use :class:`~efl.ethumb_client.EthumbClient` instead of
:class:`~efl.ethumb.Ethumb` directly.
Another difference is that one :class:`~efl.ethumb.Ethumb` instance
can only generate a single thumbnail at a given time, so you must implement
some sort of queue mechanism if you need more than one. Instead
:class:`~efl.ethumb_client.EthumbClient` is a able to receive more than one
request at the same time.
Recommended reading:
:class:`~efl.ethumb.Ethumb` to generate thumbnails in the local process.
:class:`~efl.ethumb_client.EthumbClient` to generate thumbnails using a
server (recommended).
API Reference
-------------
=============
.. toctree::
:maxdepth: 4
:titlesonly:
ethumb_module
pyethumb
ethumb_client
module-ethumb.rst
module-ethumb_client.rst
Inheritance diagram
-------------------
===================
.. inheritance-diagram::
efl.ethumb
efl.ethumb_client
.. inheritance-diagram:: efl.ethumb
:parts: 2

View File

@ -1,7 +0,0 @@
.. currentmodule:: efl.ethumb
:class:`efl.ethumb_client.Client` Class
========================================
.. autoclass:: efl.ethumb_client.Client

View File

@ -1,5 +0,0 @@
:mod:`efl.ethumb` Module
========================
.. automodule:: efl.ethumb
:exclude-members: PyEthumb

View File

@ -0,0 +1,3 @@
.. automodule:: efl.ethumb
:exclude-members: Ethumb

View File

@ -0,0 +1,3 @@
.. automodule:: efl.ethumb_client
:exclude-members: EthumbClient

View File

@ -1,9 +0,0 @@
.. currentmodule:: efl.ethumb
:class:`efl.ethumb.PyEthumb` Class
==================================
.. autoclass:: efl.ethumb.PyEthumb
.. currentmodule:: efl.ethumb

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -1,36 +1,7 @@
Python Bindings for Enlightenment Foundation Libraries' documentation
Python-EFL
#####################################################################
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
===
@ -62,6 +33,7 @@ Ethumb
======
.. toctree:: ethumb/ethumb.rst
:titlesonly:
Edje
@ -91,29 +63,25 @@ DBus integration
.. toctree:: dbus/dbus
Tutorials
=========
.. toctree::
tutorials/01-window.rst
tutorials/02-sizehints.rst
Acknowledgements
================
:Copyright:
Python Bindings for EFL are Copyright (C) 2008-2015 Simon Busch
and various contributors (see AUTHORS).
2008-2022 The Python-EFL community (see AUTHORS)
:License:
Python Bindings for EFL are licensed LGPL-3 (see COPYING).
Python Bindings for EFL are licensed LGPL-3 (see COPYING)
: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>`_
:Contact:
`Enlightenment developer mailing list <mailto:enlightenment-devel@lists.sourceforge.net>`_
Indices and tables

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