Compare commits

...

164 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
299 changed files with 7317 additions and 5828 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,

118
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
=====
@ -98,65 +123,54 @@ Tips
Release process instructions
============================
* Announce at enlightenment-release@lists.sourceforge.net and
enlightenment-devel@lists.sourceforge.net that you are planning for the release
* Change versions in efl/__init__.py (ex: 1.9.0)
* 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 and
enlightenment-devel@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:
- first upload the PKG-INFO file from the "edit" section on pypi
- then upload the tarball from the "files" section
* Create and push the tag for the release
git tag -a v1.9.0 && git push origin v1.9.0
- git tag -a v1.9.0 && git push origin v1.9.0
* Create and push the branch for stable backporting
git branch python-efl-1.9 && git push origin python-efl-1.9
* scp the generated html documentation to:
download.enlightenment.org:/srv/web/docs.enlightenment.org/public_html/python-efl/1.XX.0/
and update the 'current' link on the server (ssh)
* Update download link on the wiki (www.enlightenment.org/download)
* Publish the blog post on phame (Official Announcements)
* Announce the release to release@lists.enlightenment.org
* 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

182
ChangeLog
View File

@ -1,3 +1,185 @@
===================
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

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.

37
TODO
View File

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

View File

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

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

@ -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

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

@ -71,6 +71,12 @@ Calendar mark repeat types
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:

View File

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

View File

@ -408,6 +408,12 @@ Input panel layouts
.. 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:

View File

@ -73,6 +73,7 @@ Available item styles
- ``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

View File

@ -38,6 +38,13 @@ Emitted signals
- ``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

View File

@ -65,6 +65,7 @@ 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:

View File

@ -14,6 +14,11 @@ 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
====================

View File

@ -31,6 +31,10 @@ Emitted signals
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

View File

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

View File

@ -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

@ -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
===
@ -92,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

View File

@ -1,190 +0,0 @@
@ECHO OFF
REM Command file for Sphinx documentation
if "%SPHINXBUILD%" == "" (
set SPHINXBUILD=sphinx-build
)
set BUILDDIR=_build
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% .
set I18NSPHINXOPTS=%SPHINXOPTS% .
if NOT "%PAPER%" == "" (
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
)
if "%1" == "" goto help
if "%1" == "help" (
:help
echo.Please use `make ^<target^>` where ^<target^> is one of
echo. html to make standalone HTML files
echo. dirhtml to make HTML files named index.html in directories
echo. singlehtml to make a single large HTML file
echo. pickle to make pickle files
echo. json to make JSON files
echo. htmlhelp to make HTML files and a HTML help project
echo. qthelp to make HTML files and a qthelp project
echo. devhelp to make HTML files and a Devhelp project
echo. epub to make an epub
echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
echo. text to make text files
echo. man to make manual pages
echo. texinfo to make Texinfo files
echo. gettext to make PO message catalogs
echo. changes to make an overview over all changed/added/deprecated items
echo. linkcheck to check all external links for integrity
echo. doctest to run all doctests embedded in the documentation if enabled
goto end
)
if "%1" == "clean" (
for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i
del /q /s %BUILDDIR%\*
goto end
)
if "%1" == "html" (
%SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/html.
goto end
)
if "%1" == "dirhtml" (
%SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml.
goto end
)
if "%1" == "singlehtml" (
%SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml.
goto end
)
if "%1" == "pickle" (
%SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the pickle files.
goto end
)
if "%1" == "json" (
%SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can process the JSON files.
goto end
)
if "%1" == "htmlhelp" (
%SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run HTML Help Workshop with the ^
.hhp project file in %BUILDDIR%/htmlhelp.
goto end
)
if "%1" == "qthelp" (
%SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished; now you can run "qcollectiongenerator" with the ^
.qhcp project file in %BUILDDIR%/qthelp, like this:
echo.^> qcollectiongenerator %BUILDDIR%\qthelp\PythonBindingsforEnlightenmentFoundationLibraries.qhcp
echo.To view the help file:
echo.^> assistant -collectionFile %BUILDDIR%\qthelp\PythonBindingsforEnlightenmentFoundationLibraries.ghc
goto end
)
if "%1" == "devhelp" (
%SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp
if errorlevel 1 exit /b 1
echo.
echo.Build finished.
goto end
)
if "%1" == "epub" (
%SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The epub file is in %BUILDDIR%/epub.
goto end
)
if "%1" == "latex" (
%SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex
if errorlevel 1 exit /b 1
echo.
echo.Build finished; the LaTeX files are in %BUILDDIR%/latex.
goto end
)
if "%1" == "text" (
%SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The text files are in %BUILDDIR%/text.
goto end
)
if "%1" == "man" (
%SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The manual pages are in %BUILDDIR%/man.
goto end
)
if "%1" == "texinfo" (
%SPHINXBUILD% -b texinfo %ALLSPHINXOPTS% %BUILDDIR%/texinfo
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The Texinfo files are in %BUILDDIR%/texinfo.
goto end
)
if "%1" == "gettext" (
%SPHINXBUILD% -b gettext %I18NSPHINXOPTS% %BUILDDIR%/locale
if errorlevel 1 exit /b 1
echo.
echo.Build finished. The message catalogs are in %BUILDDIR%/locale.
goto end
)
if "%1" == "changes" (
%SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes
if errorlevel 1 exit /b 1
echo.
echo.The overview file is in %BUILDDIR%/changes.
goto end
)
if "%1" == "linkcheck" (
%SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck
if errorlevel 1 exit /b 1
echo.
echo.Link check complete; look for any errors in the above output ^
or in %BUILDDIR%/linkcheck/output.txt.
goto end
)
if "%1" == "doctest" (
%SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest
if errorlevel 1 exit /b 1
echo.
echo.Testing of doctests in the sources finished, look at the ^
results in %BUILDDIR%/doctest/output.txt.
goto end
)
:end

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -114,6 +114,8 @@ Flags for executing a child with its stdin and/or stdout piped back.
Makes child receive SIGTERM when parent dies
.. _Ecore_Callback_Returns:
Callback return values
----------------------
@ -126,6 +128,8 @@ Callback return values
Return value to keep a callback
.. _Ecore_Event_Returns:
Event return values
-------------------
@ -253,6 +257,80 @@ from cpython cimport Py_INCREF, Py_DECREF
import traceback
import atexit
cimport efl.ecore.enums as enums
ECORE_EVENT_NONE = enums.ECORE_EVENT_NONE
ECORE_EVENT_SIGNAL_USER = enums.ECORE_EVENT_SIGNAL_USER
ECORE_EVENT_SIGNAL_HUP = enums.ECORE_EVENT_SIGNAL_HUP
ECORE_EVENT_SIGNAL_EXIT = enums.ECORE_EVENT_SIGNAL_EXIT
ECORE_EVENT_SIGNAL_POWER = enums.ECORE_EVENT_SIGNAL_POWER
ECORE_EVENT_SIGNAL_REALTIME = enums.ECORE_EVENT_SIGNAL_REALTIME
ECORE_EVENT_MEMORY_STATE = enums.ECORE_EVENT_MEMORY_STATE
ECORE_EVENT_POWER_STATE = enums.ECORE_EVENT_POWER_STATE
ECORE_EVENT_LOCALE_CHANGED = enums.ECORE_EVENT_LOCALE_CHANGED
ECORE_EVENT_HOSTNAME_CHANGED = enums.ECORE_EVENT_HOSTNAME_CHANGED
ECORE_EVENT_SYSTEM_TIMEDATE_CHANGED = enums.ECORE_EVENT_SYSTEM_TIMEDATE_CHANGED
ECORE_EVENT_COUNT = enums.ECORE_EVENT_COUNT
ECORE_CALLBACK_CANCEL = enums.ECORE_CALLBACK_CANCEL
ECORE_CALLBACK_RENEW = enums.ECORE_CALLBACK_RENEW
ECORE_CALLBACK_PASS_ON = enums.ECORE_CALLBACK_PASS_ON
ECORE_CALLBACK_DONE = enums.ECORE_CALLBACK_DONE
ECORE_EXE_PRIORITY_INHERIT = enums.ECORE_EXE_PRIORITY_INHERIT
ECORE_EXE_EVENT_ADD = enums.ECORE_EXE_EVENT_ADD
ECORE_EXE_EVENT_DEL = enums.ECORE_EXE_EVENT_DEL
ECORE_EXE_EVENT_DATA = enums.ECORE_EXE_EVENT_DATA
ECORE_EXE_EVENT_ERROR = enums.ECORE_EXE_EVENT_ERROR
ECORE_FD_READ = enums.ECORE_FD_READ
ECORE_FD_WRITE = enums.ECORE_FD_WRITE
ECORE_FD_ERROR = enums.ECORE_FD_ERROR
ECORE_EXE_NONE = enums.ECORE_EXE_NONE
ECORE_EXE_PIPE_READ = enums.ECORE_EXE_PIPE_READ
ECORE_EXE_PIPE_WRITE = enums.ECORE_EXE_PIPE_WRITE
ECORE_EXE_PIPE_ERROR = enums.ECORE_EXE_PIPE_ERROR
ECORE_EXE_PIPE_READ_LINE_BUFFERED = enums.ECORE_EXE_PIPE_READ_LINE_BUFFERED
ECORE_EXE_PIPE_ERROR_LINE_BUFFERED = enums.ECORE_EXE_PIPE_ERROR_LINE_BUFFERED
ECORE_EXE_PIPE_AUTO = enums.ECORE_EXE_PIPE_AUTO
ECORE_EXE_RESPAWN = enums.ECORE_EXE_RESPAWN
ECORE_EXE_USE_SH = enums.ECORE_EXE_USE_SH
ECORE_EXE_NOT_LEADER = enums.ECORE_EXE_NOT_LEADER
ECORE_EXE_TERM_WITH_PARENT = enums.ECORE_EXE_TERM_WITH_PARENT
ECORE_POS_MAP_LINEAR = enums.ECORE_POS_MAP_LINEAR
ECORE_POS_MAP_ACCELERATE = enums.ECORE_POS_MAP_ACCELERATE
ECORE_POS_MAP_DECELERATE = enums.ECORE_POS_MAP_DECELERATE
ECORE_POS_MAP_SINUSOIDAL = enums.ECORE_POS_MAP_SINUSOIDAL
ECORE_POS_MAP_ACCELERATE_FACTOR = enums.ECORE_POS_MAP_ACCELERATE_FACTOR
ECORE_POS_MAP_DECELERATE_FACTOR = enums.ECORE_POS_MAP_DECELERATE_FACTOR
ECORE_POS_MAP_SINUSOIDAL_FACTOR = enums.ECORE_POS_MAP_SINUSOIDAL_FACTOR
ECORE_POS_MAP_DIVISOR_INTERP = enums.ECORE_POS_MAP_DIVISOR_INTERP
ECORE_POS_MAP_BOUNCE = enums.ECORE_POS_MAP_BOUNCE
ECORE_POS_MAP_SPRING = enums.ECORE_POS_MAP_SPRING
ECORE_POS_MAP_CUBIC_BEZIER = enums.ECORE_POS_MAP_CUBIC_BEZIER
ECORE_ANIMATOR_SOURCE_TIMER = enums.ECORE_ANIMATOR_SOURCE_TIMER
ECORE_ANIMATOR_SOURCE_CUSTOM = enums.ECORE_ANIMATOR_SOURCE_CUSTOM
ECORE_POLLER_CORE = enums.ECORE_POLLER_CORE
ECORE_FILE_EVENT_NONE = enums.ECORE_FILE_EVENT_NONE
ECORE_FILE_EVENT_CREATED_FILE = enums.ECORE_FILE_EVENT_CREATED_FILE
ECORE_FILE_EVENT_CREATED_DIRECTORY = enums.ECORE_FILE_EVENT_CREATED_DIRECTORY
ECORE_FILE_EVENT_DELETED_FILE = enums.ECORE_FILE_EVENT_DELETED_FILE
ECORE_FILE_EVENT_DELETED_DIRECTORY = enums.ECORE_FILE_EVENT_DELETED_DIRECTORY
ECORE_FILE_EVENT_DELETED_SELF = enums.ECORE_FILE_EVENT_DELETED_SELF
ECORE_FILE_EVENT_MODIFIED = enums.ECORE_FILE_EVENT_MODIFIED
ECORE_FILE_EVENT_CLOSED = enums.ECORE_FILE_EVENT_CLOSED
ECORE_FILE_PROGRESS_CONTINUE = enums.ECORE_FILE_PROGRESS_CONTINUE
ECORE_FILE_PROGRESS_ABORT = enums.ECORE_FILE_PROGRESS_ABORT
cdef Eina_Bool _ecore_task_cb(void *data) with gil:
cdef:
@ -284,15 +362,15 @@ def init():
global _event_type_mapping
_event_type_mapping = {
ECORE_EVENT_SIGNAL_USER: EventSignalUser,
ECORE_EVENT_SIGNAL_HUP: EventSignalHup,
ECORE_EVENT_SIGNAL_EXIT: EventSignalExit,
ECORE_EVENT_SIGNAL_POWER: EventSignalPower,
ECORE_EVENT_SIGNAL_REALTIME: EventSignalRealtime,
ECORE_EXE_EVENT_ADD: EventExeAdd,
ECORE_EXE_EVENT_DEL: EventExeDel,
ECORE_EXE_EVENT_DATA: EventExeData,
ECORE_EXE_EVENT_ERROR: EventExeData,
enums.ECORE_EVENT_SIGNAL_USER: EventSignalUser,
enums.ECORE_EVENT_SIGNAL_HUP: EventSignalHup,
enums.ECORE_EVENT_SIGNAL_EXIT: EventSignalExit,
enums.ECORE_EVENT_SIGNAL_POWER: EventSignalPower,
enums.ECORE_EVENT_SIGNAL_REALTIME: EventSignalRealtime,
enums.ECORE_EXE_EVENT_ADD: EventExeAdd,
enums.ECORE_EXE_EVENT_DEL: EventExeDel,
enums.ECORE_EXE_EVENT_DATA: EventExeData,
enums.ECORE_EXE_EVENT_ERROR: EventExeData,
}
ecore_file_init()
@ -347,28 +425,30 @@ init()
atexit.register(shutdown)
#---------------------------------------------------------------------------
# This conflict seems to not exists anymore, see tests/ecore/test_08_exe.py
#---------------------------------------------------------------------------
# let's try to warn users that ecore conflicts with subprocess module
import subprocess
_orig_subprocess = None
def subprocess_warning(*a, **ka):
print(""" DEVELOPER WARNING:
Using subprocess (Popen and derivatives) with Ecore is a bad idea.
Ecore will set some signal handlers subprocess module depends and this
may cause this module to operate unexpectedly.
Instead of using subprocess.Popen(), please consider using Ecore's
Exe() class.
""")
traceback.print_stack()
return _orig_subprocess(*a, **ka)
if subprocess.Popen is not subprocess_warning:
_orig_subprocess = subprocess.Popen
subprocess.Popen = subprocess_warning
# import subprocess
#
# _orig_subprocess = None
#
# def subprocess_warning(*a, **ka):
# print(""" DEVELOPER WARNING:
# Using subprocess (Popen and derivatives) with Ecore is a bad idea.
#
# Ecore will set some signal handlers subprocess module depends and this
# may cause this module to operate unexpectedly.
#
# Instead of using subprocess.Popen(), please consider using Ecore's
# Exe() class.
# """)
# traceback.print_stack()
# return _orig_subprocess(*a, **ka)
#
# if subprocess.Popen is not subprocess_warning:
# _orig_subprocess = subprocess.Popen
# subprocess.Popen = subprocess_warning
#---------------------------------------------------------------------------

View File

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

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -81,7 +81,7 @@ cdef class EventHandler(object):
raise TypeError("Parameter 'func' must be callable")
event_cls = _event_type_mapping.get(type, None)
if event_cls is None:
raise ValueError("Unknow Ecore_Event type %d" % type)
raise ValueError("Unknown Ecore_Event type %d" % type)
self.type = type
self.event_cls = event_cls
self.func = func
@ -174,7 +174,7 @@ cdef class EventSignalUser2(EventSignalUser):
cdef class EventHandlerSignalUser(EventHandler):
def __init__(self, func, *args, **kargs):
EventHandler.__init__(self, ECORE_EVENT_SIGNAL_USER,
EventHandler.__init__(self, enums.ECORE_EVENT_SIGNAL_USER,
func, *args, **kargs)
cdef Eina_Bool _exec(self, void *event) except 2:
@ -206,7 +206,7 @@ cdef class EventSignalHup(Event):
def on_signal_hup(func, *args, **kargs):
return EventHandler(ECORE_EVENT_SIGNAL_HUP, func, *args, **kargs)
return EventHandler(enums.ECORE_EVENT_SIGNAL_HUP, func, *args, **kargs)
cdef class EventSignalExit(Event):
@ -253,7 +253,7 @@ cdef class EventSignalTerminate(EventSignalExit):
cdef class EventHandlerSignalExit(EventHandler):
def __init__(self, func, *args, **kargs):
EventHandler.__init__(self, ECORE_EVENT_SIGNAL_EXIT,
EventHandler.__init__(self, enums.ECORE_EVENT_SIGNAL_EXIT,
func, *args, **kargs)
cdef Eina_Bool _exec(self, void *event) except 2:
@ -287,7 +287,7 @@ cdef class EventSignalPower(Event):
def on_signal_power(func, *args, **kargs):
return EventHandler(ECORE_EVENT_SIGNAL_POWER, func, *args, **kargs)
return EventHandler(enums.ECORE_EVENT_SIGNAL_POWER, func, *args, **kargs)
cdef class EventSignalRealtime(Event):
@ -305,7 +305,7 @@ cdef class EventSignalRealtime(Event):
def on_signal_realtime(func, *args, **kargs):
return EventHandler(ECORE_EVENT_SIGNAL_REALTIME, func, *args, **kargs)
return EventHandler(enums.ECORE_EVENT_SIGNAL_REALTIME, func, *args, **kargs)
cdef class CustomEvent(Event):

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -25,26 +25,28 @@ cdef extern from "Python.h":
cdef exe_flags2str(int value):
flags = []
if value & ECORE_EXE_PIPE_READ:
if value & enums.ECORE_EXE_PIPE_READ:
flags.append("PIPE_READ")
if value & ECORE_EXE_PIPE_WRITE:
if value & enums.ECORE_EXE_PIPE_WRITE:
flags.append("PIPE_WRITE")
if value & ECORE_EXE_PIPE_ERROR:
if value & enums.ECORE_EXE_PIPE_ERROR:
flags.append("PIPE_ERROR")
if value & ECORE_EXE_PIPE_READ_LINE_BUFFERED:
if value & enums.ECORE_EXE_PIPE_READ_LINE_BUFFERED:
flags.append("PIPE_READ_LINE_BUFFERED")
if value & ECORE_EXE_PIPE_ERROR_LINE_BUFFERED:
if value & enums.ECORE_EXE_PIPE_ERROR_LINE_BUFFERED:
flags.append("PIPE_ERROR_LINE_BUFFERED")
if value & ECORE_EXE_PIPE_AUTO:
if value & enums.ECORE_EXE_PIPE_AUTO:
flags.append("PIPE_AUTO")
if value & ECORE_EXE_RESPAWN:
if value & enums.ECORE_EXE_RESPAWN:
flags.append("RESPAWN")
if value & ECORE_EXE_USE_SH:
if value & enums.ECORE_EXE_USE_SH:
flags.append("USE_SH")
if value & ECORE_EXE_NOT_LEADER:
if value & enums.ECORE_EXE_NOT_LEADER:
flags.append("NOT_LEADER")
if value & ECORE_EXE_TERM_WITH_PARENT:
if value & enums.ECORE_EXE_TERM_WITH_PARENT:
flags.append("ECORE_EXE_TERM_WITH_PARENT")
if value & enums.ECORE_EXE_ISOLATE_IO:
flags.append("ECORE_EXE_ISOLATE_IO")
return ", ".join(flags)
@ -60,17 +62,17 @@ cdef Eina_Bool _exe_event_filter_cb(void *data, int type, void *event) with gil:
try:
assert self.event_type == type, "event is not what we asked? impossible"
if type == ECORE_EXE_EVENT_ADD:
if type == enums.ECORE_EXE_EVENT_ADD:
e_add = <Ecore_Exe_Event_Add *>event
if e_add.exe != self.exe:
return 1
e = EventExeAdd()
elif type == ECORE_EXE_EVENT_DEL:
elif type == enums.ECORE_EXE_EVENT_DEL:
e_del = <Ecore_Exe_Event_Del *>event
if e_del.exe != self.exe:
return 1
e = EventExeDel()
elif type == ECORE_EXE_EVENT_DATA or type == ECORE_EXE_EVENT_ERROR:
elif type == enums.ECORE_EXE_EVENT_DATA or type == enums.ECORE_EXE_EVENT_ERROR:
e_data = <Ecore_Exe_Event_Data *>event
if e_data.exe != self.exe:
return 1
@ -303,6 +305,10 @@ cdef class Exe(object):
ECORE_EXE_TERM_WITH_PARENT
Makes child receive SIGTERM when parent dies
ECORE_EXE_ISOLATE_IO
Try and isolate stdin/out and err of the process so it isn't
shared with the parent. Since 1.21
:type flags: int
:param data: extra data to be associated and available with ``data_get()``
@ -368,6 +374,17 @@ cdef class Exe(object):
<uintptr_t>self.exe, PY_REFCOUNT(self),
pid, cmd, flags, data)
def is_deleted(self):
"""Check if the object has been deleted thus leaving the object shallow.
:return: True if the object has been deleted yet, False otherwise.
:rtype: bool
.. versionadded:: 1.18
"""
return bool(self.exe == NULL)
def delete(self):
"""Forcefully frees the given process handle.
@ -541,6 +558,10 @@ cdef class Exe(object):
- ECORE_EXE_USE_SH: Use /bin/sh to run the command.
- ECORE_EXE_NOT_LEADER Do not use setsid() to have the
executed process be its own session leader
- ECORE_EXE_TERM_WITH_PARENT Makes child receive SIGTERM when
parent dies
- ECORE_EXE_ISOLATE_IO Try and isolate stdin/out and err of the
process so it isn't shared with the parent
:return: set of masks, ORed.
@ -637,10 +658,10 @@ cdef class Exe(object):
:see: on_exe_add_event_add()
"""
filter = self.__callbacks.get(ECORE_EXE_EVENT_ADD)
filter = self.__callbacks.get(enums.ECORE_EXE_EVENT_ADD)
if filter is None:
filter = ExeEventFilter(self, ECORE_EXE_EVENT_ADD)
self.__callbacks[ECORE_EXE_EVENT_ADD] = filter
filter = ExeEventFilter(self, enums.ECORE_EXE_EVENT_ADD)
self.__callbacks[enums.ECORE_EXE_EVENT_ADD] = filter
filter.callback_add(func, args, kargs)
def on_add_event_del(self, func, *args, **kargs):
@ -651,7 +672,7 @@ cdef class Exe(object):
:raise ValueError: if parameters don't match an already
registered callback.
"""
filter = self.__callbacks.get(ECORE_EXE_EVENT_ADD)
filter = self.__callbacks.get(enums.ECORE_EXE_EVENT_ADD)
if filter is None:
raise ValueError("callback not registered %s, args=%s, kargs=%s" %
(func, args, kargs))
@ -673,10 +694,10 @@ cdef class Exe(object):
:see: on_del_event_del()
:see: on_exe_del_event_add()
"""
filter = self.__callbacks.get(ECORE_EXE_EVENT_DEL)
filter = self.__callbacks.get(enums.ECORE_EXE_EVENT_DEL)
if filter is None:
filter = ExeEventFilter(self, ECORE_EXE_EVENT_DEL)
self.__callbacks[ECORE_EXE_EVENT_DEL] = filter
filter = ExeEventFilter(self, enums.ECORE_EXE_EVENT_DEL)
self.__callbacks[enums.ECORE_EXE_EVENT_DEL] = filter
filter.callback_add(func, args, kargs)
def on_del_event_del(self, func, *args, **kargs):
@ -687,7 +708,7 @@ cdef class Exe(object):
:raise ValueError: if parameters don't match an already
registered callback.
"""
filter = self.__callbacks.get(ECORE_EXE_EVENT_DEL)
filter = self.__callbacks.get(enums.ECORE_EXE_EVENT_DEL)
if filter is None:
raise ValueError("callback not registered %s, args=%s, kargs=%s" %
(func, args, kargs))
@ -709,10 +730,10 @@ cdef class Exe(object):
:see: on_data_event_del()
:see: on_exe_data_event_add()
"""
filter = self.__callbacks.get(ECORE_EXE_EVENT_DATA)
filter = self.__callbacks.get(enums.ECORE_EXE_EVENT_DATA)
if filter is None:
filter = ExeEventFilter(self, ECORE_EXE_EVENT_DATA)
self.__callbacks[ECORE_EXE_EVENT_DATA] = filter
filter = ExeEventFilter(self, enums.ECORE_EXE_EVENT_DATA)
self.__callbacks[enums.ECORE_EXE_EVENT_DATA] = filter
filter.callback_add(func, args, kargs)
def on_data_event_del(self, func, *args, **kargs):
@ -723,7 +744,7 @@ cdef class Exe(object):
:raise ValueError: if parameters don't match an already
registered callback.
"""
filter = self.__callbacks.get(ECORE_EXE_EVENT_DATA)
filter = self.__callbacks.get(enums.ECORE_EXE_EVENT_DATA)
if filter is None:
raise ValueError("callback not registered %s, args=%s, kargs=%s" %
(func, args, kargs))
@ -745,10 +766,10 @@ cdef class Exe(object):
:see: on_error_event_del()
:see: on_exe_error_event_add()
"""
filter = self.__callbacks.get(ECORE_EXE_EVENT_ERROR)
filter = self.__callbacks.get(enums.ECORE_EXE_EVENT_ERROR)
if filter is None:
filter = ExeEventFilter(self, ECORE_EXE_EVENT_ERROR)
self.__callbacks[ECORE_EXE_EVENT_ERROR] = filter
filter = ExeEventFilter(self, enums.ECORE_EXE_EVENT_ERROR)
self.__callbacks[enums.ECORE_EXE_EVENT_ERROR] = filter
filter.callback_add(func, args, kargs)
def on_error_event_del(self, func, *args, **kargs):
@ -759,7 +780,7 @@ cdef class Exe(object):
:raise ValueError: if parameters don't match an already
registered callback.
"""
filter = self.__callbacks.get(ECORE_EXE_EVENT_ERROR)
filter = self.__callbacks.get(enums.ECORE_EXE_EVENT_ERROR)
if filter is None:
raise ValueError("callback not registered %s, args=%s, kargs=%s" %
(func, args, kargs))
@ -888,7 +909,7 @@ def on_exe_add_event_add(func, *args, **kargs):
:see: EventHandler
:see: EventHandlerExe
"""
return EventHandlerExe(ECORE_EXE_EVENT_ADD, func, *args, **kargs)
return EventHandlerExe(enums.ECORE_EXE_EVENT_ADD, func, *args, **kargs)
def on_exe_del_event_add(func, *args, **kargs):
@ -897,7 +918,7 @@ def on_exe_del_event_add(func, *args, **kargs):
:see: EventHandler
:see: EventHandlerExe
"""
return EventHandlerExe(ECORE_EXE_EVENT_DEL, func, *args, **kargs)
return EventHandlerExe(enums.ECORE_EXE_EVENT_DEL, func, *args, **kargs)
def on_exe_data_event_add(func, *args, **kargs):
@ -906,7 +927,7 @@ def on_exe_data_event_add(func, *args, **kargs):
:see: EventHandler
:see: EventHandlerExe
"""
return EventHandlerExe(ECORE_EXE_EVENT_DATA, func, *args, **kargs)
return EventHandlerExe(enums.ECORE_EXE_EVENT_DATA, func, *args, **kargs)
def on_exe_error_event_add(func, *args, **kargs):
@ -915,4 +936,4 @@ def on_exe_error_event_add(func, *args, **kargs):
:see: :py:class:`EventHandler`
:see: :py:class:`EventHandlerExe`
"""
return EventHandlerExe(ECORE_EXE_EVENT_ERROR, func, *args, **kargs)
return EventHandlerExe(enums.ECORE_EXE_EVENT_ERROR, func, *args, **kargs)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -31,11 +31,11 @@ cdef void fd_handler_prepare_cb(void *data, Ecore_Fd_Handler *fdh) with gil:
cdef flags2str(int value):
flags = []
if value & <int>ECORE_FD_READ:
if value & <int>enums.ECORE_FD_READ:
flags.append("READ")
if value & <int>ECORE_FD_WRITE:
if value & <int>enums.ECORE_FD_WRITE:
flags.append("WRITE")
if value & <int>ECORE_FD_ERROR:
if value & <int>enums.ECORE_FD_ERROR:
flags.append("ERROR")
return ", ".join(flags)
@ -78,7 +78,7 @@ cdef class FdHandler(object):
"""
def __init__(self, fd, int flags, func, *args, **kargs):
"""FdHandler(...)
"""
:param fd: file descriptor or object with fileno() method.
:param flags: bitwise OR of ECORE_FD_READ, ECORE_FD_WRITE...
@ -144,6 +144,17 @@ cdef class FdHandler(object):
cdef object _exec(self):
return self.func(self, *self.args, **self.kargs)
def is_deleted(self):
"""Check if the object has been deleted thus leaving the object shallow.
:return: True if the object has been deleted yet, False otherwise.
:rtype: bool
.. versionadded:: 1.18
"""
return bool(self.obj == NULL)
def delete(self):
"""Stop callback emission and free internal resources."""
if self.obj != NULL:
@ -193,15 +204,15 @@ cdef class FdHandler(object):
def can_read(self):
""":rtype: bool"""
return bool(ecore_main_fd_handler_active_get(self.obj, ECORE_FD_READ))
return bool(ecore_main_fd_handler_active_get(self.obj, enums.ECORE_FD_READ))
def can_write(self):
""":rtype: bool"""
return bool(ecore_main_fd_handler_active_get(self.obj, ECORE_FD_WRITE))
return bool(ecore_main_fd_handler_active_get(self.obj, enums.ECORE_FD_WRITE))
def has_error(self):
""":rtype: bool"""
return bool(ecore_main_fd_handler_active_get(self.obj, ECORE_FD_ERROR))
return bool(ecore_main_fd_handler_active_get(self.obj, enums.ECORE_FD_ERROR))
def prepare_callback_set(self, func, *args, **kargs):
"""Set a function to call before doing the select() on the fd.

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -36,9 +36,13 @@ cdef class Timer(Eo):
returning *False* from ``func``, otherwise they'll continue alive, even
if the current python context delete it's reference to it.
For convenience and readability callback can also return one of the
:ref:`Ecore_Callback_Returns`. That is ``ECORE_CALLBACK_RENEW`` (like
returning True) or ``ECORE_CALLBACK_CANCEL`` (like returning False).
"""
def __init__(self, double interval, func, *args, **kargs):
"""Timer(...)
"""
:param interval: interval in seconds.
:type interval: float

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -127,7 +127,7 @@ that headers such as "If-Modified-Since" are used.
.. data:: ECORE_CON_URL_TIME_NONE
Do not place time restrictions on the HTTP requests.
Do not place time restrictions on the HTTP requests.
.. data:: ECORE_CON_URL_TIME_IFMODSINCE
@ -173,6 +173,32 @@ import atexit
from efl.ecore cimport _event_mapping_register, _event_mapping_get, \
ecore_event_handler_add, ecore_event_handler_del
cimport efl.ecore_con.enums as enums
ECORE_CON_LOCAL_USER = enums.ECORE_CON_LOCAL_USER
ECORE_CON_LOCAL_SYSTEM = enums.ECORE_CON_LOCAL_SYSTEM
ECORE_CON_LOCAL_ABSTRACT = enums.ECORE_CON_LOCAL_ABSTRACT
ECORE_CON_REMOTE_TCP = enums.ECORE_CON_REMOTE_TCP
ECORE_CON_REMOTE_MCAST = enums.ECORE_CON_REMOTE_MCAST
ECORE_CON_REMOTE_UDP = enums.ECORE_CON_REMOTE_UDP
ECORE_CON_REMOTE_BROADCAST = enums.ECORE_CON_REMOTE_BROADCAST
ECORE_CON_REMOTE_NODELAY = enums.ECORE_CON_REMOTE_NODELAY
ECORE_CON_REMOTE_CORK = enums.ECORE_CON_REMOTE_CORK
ECORE_CON_USE_SSL2 = enums.ECORE_CON_USE_SSL2
ECORE_CON_USE_SSL3 = enums.ECORE_CON_USE_SSL3
ECORE_CON_USE_TLS = enums.ECORE_CON_USE_TLS
ECORE_CON_USE_MIXED = enums.ECORE_CON_USE_MIXED
ECORE_CON_LOAD_CERT = enums.ECORE_CON_LOAD_CERT
ECORE_CON_NO_PROXY = enums.ECORE_CON_NO_PROXY
ECORE_CON_SOCKET_ACTIVATE = enums.ECORE_CON_SOCKET_ACTIVATE
ECORE_CON_URL_TIME_NONE = enums.ECORE_CON_URL_TIME_NONE
ECORE_CON_URL_TIME_IFMODSINCE = enums.ECORE_CON_URL_TIME_IFMODSINCE
ECORE_CON_URL_TIME_IFUNMODSINCE = enums.ECORE_CON_URL_TIME_IFUNMODSINCE
ECORE_CON_URL_HTTP_VERSION_1_0 = enums.ECORE_CON_URL_HTTP_VERSION_1_0
ECORE_CON_URL_HTTP_VERSION_1_1 = enums.ECORE_CON_URL_HTTP_VERSION_1_1
cdef int _con_events_registered = 0

View File

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

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -37,7 +37,7 @@ cdef class EventUrlProgress(Event):
cdef Ecore_Con_Event_Url_Progress *event
event = <Ecore_Con_Event_Url_Progress*>ev
self.url = object_from_instance(event.url_con)
self.url = <Url>ecore_con_url_data_get(event.url_con)
self.down_total = event.down.total
self.down_now = event.down.now
self.up_total = event.up.total
@ -61,7 +61,7 @@ cdef class EventUrlComplete(Event):
cdef Ecore_Con_Event_Url_Complete *event
event = <Ecore_Con_Event_Url_Complete*>ev
self.url = object_from_instance(event.url_con)
self.url = <Url>ecore_con_url_data_get(event.url_con)
self.status = event.status
return 1
@ -87,7 +87,7 @@ cdef class EventUrlData(Event):
cdef Ecore_Con_Event_Url_Data *event
event = <Ecore_Con_Event_Url_Data*>ev
self.url = object_from_instance(event.url_con)
self.url = <Url>ecore_con_url_data_get(event.url_con)
self.size = event.size
self.data = event.data[:event.size] #raw string copy
return 1
@ -196,7 +196,7 @@ cdef class Url(Eo):
"""
def __init__(self, url, custom_request=None, **kargs):
"""Url(...)
"""
:param url: URL that will receive requests.
:type url: string
@ -211,15 +211,22 @@ cdef class Url(Eo):
"""
if isinstance(url, unicode): url = PyUnicode_AsUTF8String(url)
if custom_request is None:
self._set_obj(ecore_con_url_new(
<const char *>url if url is not None else NULL))
# From efl 1.19 url are no more Eo objects in C, thus
# we cannot use Eo.obj and _set_obj() anymore :(
# self._set_obj(ecore_con_url_new(
# <const char *>url if url is not None else NULL))
self.obj2 = ecore_con_url_new(
<const char *>url if url is not None else NULL)
else:
if isinstance(custom_request, unicode):
custom_request = PyUnicode_AsUTF8String(custom_request)
self._set_obj(ecore_con_url_custom_new(
self.obj2 = ecore_con_url_custom_new(
<const char *>url if url is not None else NULL,
<const char *>custom_request if custom_request is not None else NULL))
<const char *>custom_request if custom_request is not None else NULL)
ecore_con_url_data_set(self.obj2, <void *>self)
Py_INCREF(self)
self._set_properties_from_keyword_args(kargs)
def __repr__(self):
@ -235,7 +242,18 @@ cdef class Url(Eo):
"""
GEF.callback_del_full(self)
ecore_con_url_free(self.obj)
ecore_con_url_free(self.obj2)
self.obj2 = NULL
Py_DECREF(self)
def is_deleted(self):
"""Check if the object has been deleted thus leaving the object shallow.
:return: True if the object has been deleted yet, False otherwise.
:rtype: bool
"""
return bool(self.obj2 == NULL)
property fd:
"""Set up a file to have response data written into.
@ -254,7 +272,7 @@ cdef class Url(Eo):
"""
def __set__(self, int fd):
ecore_con_url_fd_set(self.obj, fd)
ecore_con_url_fd_set(self.obj2, fd)
def get(self):
"""Send a GET request.
@ -266,7 +284,7 @@ cdef class Url(Eo):
:return: ``True`` on success, ``False`` on error.
"""
return bool(ecore_con_url_get(self.obj))
return bool(ecore_con_url_get(self.obj2))
def head(self):
"""Send a HEAD request.
@ -278,7 +296,7 @@ cdef class Url(Eo):
:return: ``True`` on success, ``False`` on error.
"""
return bool(ecore_con_url_head(self.obj))
return bool(ecore_con_url_head(self.obj2))
def post(self, bytes data, content_type):
"""Send a post request.
@ -298,7 +316,7 @@ cdef class Url(Eo):
"""
if isinstance(content_type, unicode):
content_type = PyUnicode_AsUTF8String(content_type)
return bool(ecore_con_url_post(self.obj,
return bool(ecore_con_url_post(self.obj2,
<const void*><const char *>data if data is not None else NULL,
len(data),
<const char *>content_type if content_type is not None else NULL))
@ -317,7 +335,7 @@ cdef class Url(Eo):
:type timestamp: double
"""
ecore_con_url_time(self.obj, time_condition, timestamp)
ecore_con_url_time(self.obj2, time_condition, timestamp)
def ftp_upload(self, filename, user, passwd, upload_dir):
"""Upload a file to an ftp site.
@ -335,7 +353,7 @@ cdef class Url(Eo):
if isinstance(user, unicode): user = PyUnicode_AsUTF8String(user)
if isinstance(passwd, unicode): passwd = PyUnicode_AsUTF8String(passwd)
if isinstance(upload_dir, unicode): upload_dir = PyUnicode_AsUTF8String(upload_dir)
return bool(ecore_con_url_ftp_upload(self.obj,
return bool(ecore_con_url_ftp_upload(self.obj2,
<const char *>filename if filename is not None else NULL,
<const char *>user if user is not None else NULL,
<const char *>passwd if passwd is not None else NULL,
@ -348,7 +366,7 @@ cdef class Url(Eo):
"""
def __set__(self, bint use_epsv):
ecore_con_url_ftp_use_epsv_set(self.obj, use_epsv)
ecore_con_url_ftp_use_epsv_set(self.obj2, use_epsv)
def cookies_init(self):
"""Enable the cookie engine for subsequent HTTP requests.
@ -358,7 +376,7 @@ cdef class Url(Eo):
in new HTTP requests.
"""
ecore_con_url_cookies_init(self.obj)
ecore_con_url_cookies_init(self.obj2)
def cookies_clear(self):
"""Clear currently loaded cookies.
@ -380,7 +398,7 @@ cdef class Url(Eo):
this handler.
"""
ecore_con_url_cookies_clear(self.obj)
ecore_con_url_cookies_clear(self.obj2)
def cookies_session_clear(self):
"""Clear currently loaded session cookies.
@ -407,7 +425,7 @@ cdef class Url(Eo):
:attr:`cookies_ignore_old_session`.
"""
ecore_con_url_cookies_session_clear(self.obj)
ecore_con_url_cookies_session_clear(self.obj2)
def cookies_file_add(self, file_name):
"""Add a file to the list of files from which to load cookies.
@ -435,7 +453,7 @@ cdef class Url(Eo):
"""
if isinstance(file_name, unicode):
file_name = PyUnicode_AsUTF8String(file_name)
ecore_con_url_cookies_file_add(self.obj,
ecore_con_url_cookies_file_add(self.obj2,
<const char *>file_name if file_name is not None else NULL)
property cookies_jar_file:
@ -460,11 +478,11 @@ cdef class Url(Eo):
def __set__(self, cookiejar_file):
if isinstance(cookiejar_file, unicode):
cookiejar_file = PyUnicode_AsUTF8String(cookiejar_file)
ecore_con_url_cookies_jar_file_set(self.obj,
ecore_con_url_cookies_jar_file_set(self.obj2,
<const char *>cookiejar_file if cookiejar_file is not None else NULL)
if isinstance(cookiejar_file, unicode):
cookiejar_file = PyUnicode_AsUTF8String(cookiejar_file)
ecore_con_url_cookies_jar_file_set(self.obj,
ecore_con_url_cookies_jar_file_set(self.obj2,
<const char *>cookiejar_file if cookiejar_file is not None else NULL)
def cookies_jar_write(self):
@ -480,7 +498,7 @@ cdef class Url(Eo):
.. seealso:: :attr:`cookies_jar_file`
"""
ecore_con_url_cookies_jar_write(self.obj)
ecore_con_url_cookies_jar_write(self.obj2)
property cookies_ignore_old_session:
"""Control whether session cookies from previous sessions shall be loaded.
@ -500,7 +518,7 @@ cdef class Url(Eo):
"""
def __set__(self, bint ignore):
ecore_con_url_cookies_ignore_old_session_set(self.obj, ignore)
ecore_con_url_cookies_ignore_old_session_set(self.obj2, ignore)
property ssl_verify_peer:
"""Toggle libcurl's verify peer's certificate option.
@ -513,7 +531,7 @@ cdef class Url(Eo):
"""
def __set__(self, bint verify):
ecore_con_url_ssl_verify_peer_set(self.obj, verify)
ecore_con_url_ssl_verify_peer_set(self.obj2, verify)
property ssl_ca:
"""Set a custom CA to trust for SSL/TLS connections.
@ -532,7 +550,7 @@ cdef class Url(Eo):
def __set__(self, ca_path):
if isinstance(ca_path, unicode):
ca_path = PyUnicode_AsUTF8String(ca_path)
ecore_con_url_ssl_ca_set(self.obj,
ecore_con_url_ssl_ca_set(self.obj2,
<const char *>ca_path if ca_path is not None else NULL)
property proxy:
@ -552,7 +570,7 @@ cdef class Url(Eo):
"""
def __set__(self, proxy):
if isinstance(proxy, unicode): proxy = PyUnicode_AsUTF8String(proxy)
ecore_con_url_proxy_set(self.obj,
ecore_con_url_proxy_set(self.obj2,
<const char *>proxy if proxy is not None else NULL)
property proxy_username:
@ -566,7 +584,7 @@ cdef class Url(Eo):
"""
def __set__(self, user):
if isinstance(user, unicode): user = PyUnicode_AsUTF8String(user)
ecore_con_url_proxy_username_set(self.obj,
ecore_con_url_proxy_username_set(self.obj2,
<const char *>user if user is not None else NULL)
property proxy_password:
@ -580,7 +598,7 @@ cdef class Url(Eo):
"""
def __set__(self, passwd):
if isinstance(passwd, unicode): passwd = PyUnicode_AsUTF8String(passwd)
ecore_con_url_proxy_username_set(self.obj,
ecore_con_url_proxy_username_set(self.obj2,
<const char *>passwd if passwd is not None else NULL)
property timeout:
@ -595,7 +613,7 @@ cdef class Url(Eo):
"""
def __set__(self, double timeout):
ecore_con_url_timeout_set(self.obj, timeout)
ecore_con_url_timeout_set(self.obj2, timeout)
property http_version:
"""The HTTP version used for the request.
@ -607,7 +625,7 @@ cdef class Url(Eo):
"""
def __set__(self, Ecore_Con_Url_Http_Version version):
ecore_con_url_http_version_set(self.obj, version)
ecore_con_url_http_version_set(self.obj2, version)
property status_code:
"""The returned HTTP STATUS code.
@ -619,7 +637,7 @@ cdef class Url(Eo):
"""
def __get__(self):
return ecore_con_url_status_code_get(self.obj)
return ecore_con_url_status_code_get(self.obj2)
property url:
"""Controls the URL to send the request to.
@ -628,11 +646,11 @@ cdef class Url(Eo):
"""
def __get__(self):
return _ctouni(ecore_con_url_url_get(self.obj))
return _ctouni(ecore_con_url_url_get(self.obj2))
def __set__(self, url):
if isinstance(url, unicode): url = PyUnicode_AsUTF8String(url)
ecore_con_url_url_set(self.obj, <const char *>url if url is not None else NULL)
ecore_con_url_url_set(self.obj2, <const char *>url if url is not None else NULL)
property verbose:
"""Toggle libcurl's verbose output.
@ -645,7 +663,7 @@ cdef class Url(Eo):
"""
def __set__(self, bint verbose):
ecore_con_url_verbose_set(self.obj, verbose)
ecore_con_url_verbose_set(self.obj2, verbose)
def additional_header_add(self, key, value):
"""Add an additional header to the request connection object.
@ -662,7 +680,7 @@ cdef class Url(Eo):
"""
if isinstance(key, unicode): key = PyUnicode_AsUTF8String(key)
if isinstance(value, unicode): value = PyUnicode_AsUTF8String(value)
ecore_con_url_additional_header_add(self.obj,
ecore_con_url_additional_header_add(self.obj2,
<const char *>key if key is not None else NULL,
<const char *>value if value is not None else NULL)
@ -673,7 +691,7 @@ cdef class Url(Eo):
(previously added with :func:additional_header_add`).
"""
ecore_con_url_additional_headers_clear(self.obj)
ecore_con_url_additional_headers_clear(self.obj2)
property response_headers:
"""The headers from last request sent.
@ -687,7 +705,7 @@ cdef class Url(Eo):
"""
def __get__(self):
return eina_list_strings_to_python_list(
ecore_con_url_response_headers_get(self.obj))
ecore_con_url_response_headers_get(self.obj2))
property received_bytes:
"""The number of bytes received.
@ -699,7 +717,7 @@ cdef class Url(Eo):
"""
def __get__(self):
return ecore_con_url_received_bytes_get(self.obj)
return ecore_con_url_received_bytes_get(self.obj2)
def httpauth_set(self, username, password, bint safe):
"""Set to use http auth, with given username and password
@ -719,7 +737,7 @@ cdef class Url(Eo):
username = PyUnicode_AsUTF8String(username)
if isinstance(password, unicode):
password = PyUnicode_AsUTF8String(password)
return bool(ecore_con_url_httpauth_set(self.obj,
return bool(ecore_con_url_httpauth_set(self.obj2,
<const char *>username if username is not None else NULL,
<const char *>password if password is not None else NULL,
safe))

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -55,27 +55,27 @@ Ecore_Event_Modifier
.. data:: ECORE_EVENT_MODIFIER_SHIFT
.. data:: ECORE_EVENT_MODIFIER_CTRL
.. data:: ECORE_EVENT_MODIFIER_CTRL
.. data:: ECORE_EVENT_MODIFIER_ALT
.. data:: ECORE_EVENT_MODIFIER_ALT
.. data:: ECORE_EVENT_MODIFIER_WIN
.. data:: ECORE_EVENT_MODIFIER_WIN
.. data:: ECORE_EVENT_MODIFIER_SCROLL
.. data:: ECORE_EVENT_MODIFIER_SCROLL
.. data:: ECORE_EVENT_MODIFIER_NUM
.. data:: ECORE_EVENT_MODIFIER_NUM
.. data:: ECORE_EVENT_MODIFIER_CAPS
.. data:: ECORE_EVENT_MODIFIER_CAPS
.. data:: ECORE_EVENT_LOCK_SCROLL
.. data:: ECORE_EVENT_LOCK_SCROLL
.. data:: ECORE_EVENT_LOCK_NUM
.. data:: ECORE_EVENT_LOCK_NUM
.. data:: ECORE_EVENT_LOCK_CAPS
.. data:: ECORE_EVENT_LOCK_CAPS
.. data:: ECORE_EVENT_LOCK_SHIFT
.. data:: ECORE_EVENT_LOCK_SHIFT
.. data:: ECORE_EVENT_MODIFIER_ALTGR
.. data:: ECORE_EVENT_MODIFIER_ALTGR
Classes and Functions
@ -87,6 +87,7 @@ Classes and Functions
import atexit
import traceback
cimport efl.ecore_input.enums as enums
def init():
""" Initialize the Ecore Input library

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -17,25 +17,41 @@
from efl.utils.conversions cimport _ctouni
from efl.ecore cimport _event_mapping_register, _event_mapping_get
cdef int _input_events_registered = 0
ECORE_EVENT_MODIFIER_SHIFT = enums.ECORE_EVENT_MODIFIER_SHIFT
ECORE_EVENT_MODIFIER_CTRL = enums.ECORE_EVENT_MODIFIER_CTRL
ECORE_EVENT_MODIFIER_ALT = enums.ECORE_EVENT_MODIFIER_ALT
ECORE_EVENT_MODIFIER_WIN = enums.ECORE_EVENT_MODIFIER_WIN
ECORE_EVENT_MODIFIER_SCROLL = enums.ECORE_EVENT_MODIFIER_SCROLL
ECORE_EVENT_MODIFIER_NUM = enums.ECORE_EVENT_MODIFIER_NUM
ECORE_EVENT_MODIFIER_CAPS = enums.ECORE_EVENT_MODIFIER_CAPS
ECORE_EVENT_LOCK_SCROLL = enums.ECORE_EVENT_LOCK_SCROLL
ECORE_EVENT_LOCK_NUM = enums.ECORE_EVENT_LOCK_NUM
ECORE_EVENT_LOCK_CAPS = enums.ECORE_EVENT_LOCK_CAPS
ECORE_EVENT_LOCK_SHIFT = enums.ECORE_EVENT_LOCK_SHIFT
ECORE_EVENT_MODIFIER_ALTGR = enums.ECORE_EVENT_MODIFIER_ALTGR
# NOTE: Cannot use ecore._event_mapping_register helper here
# because ECORE_EVENT_* are already registered by ecore.x
# Thus we need a separate mapping to not conflict.
cdef object _input_event_type_mapping = None
cdef int _ecore_input_events_register() except 0:
global _input_events_registered
global _input_event_type_mapping
if _input_events_registered == 0:
_event_mapping_register(ECORE_EVENT_KEY_DOWN, EventKey)
_event_mapping_register(ECORE_EVENT_KEY_UP, EventKey)
_event_mapping_register(ECORE_EVENT_MOUSE_BUTTON_DOWN, EventMouseButton)
_event_mapping_register(ECORE_EVENT_MOUSE_BUTTON_UP, EventMouseButton)
_event_mapping_register(ECORE_EVENT_MOUSE_MOVE, EventMouseMove)
_event_mapping_register(ECORE_EVENT_MOUSE_IN, EventMouseIO)
_event_mapping_register(ECORE_EVENT_MOUSE_OUT, EventMouseIO)
_event_mapping_register(ECORE_EVENT_MOUSE_WHEEL, EventMouseWheel)
_input_events_registered = 1
if not _input_event_type_mapping:
_input_event_type_mapping = {
ECORE_EVENT_KEY_DOWN: EventKey,
ECORE_EVENT_KEY_UP: EventKey,
ECORE_EVENT_MOUSE_BUTTON_DOWN: EventMouseButton,
ECORE_EVENT_MOUSE_BUTTON_UP: EventMouseButton,
ECORE_EVENT_MOUSE_MOVE: EventMouseMove,
ECORE_EVENT_MOUSE_IN: EventMouseIO,
ECORE_EVENT_MOUSE_OUT: EventMouseIO,
ECORE_EVENT_MOUSE_WHEEL: EventMouseWheel,
}
return 1
@ -70,7 +86,7 @@ cdef class InputEventHandler(EventHandler):
if not callable(func):
raise TypeError("Parameter 'func' must be callable")
event_cls = _event_mapping_get(type)
event_cls = _input_event_type_mapping.get(type)
if event_cls is None:
raise ValueError("Unknow Ecore_Event type %d" % type)
@ -93,7 +109,7 @@ cdef class EventKey(Event):
:ivar str keyname: The key name
:ivar str key: The key symbol
:ivar str string:
:ivar int compose: Final string corresponding to the key symbol composed
:ivar int compose: Final string corresponding to the key symbol composed
:ivar int timestamp: Time when the event occurred.
:ivar int modifiers: :ref:`Ecore_Event_Modifier` The OR combination of modifiers key
:ivar bool same_screen: Same screen flag
@ -130,18 +146,19 @@ cdef class EventPoint:
def __repr__(self):
return "<EventPoint x=%d y=%d>" % (self.x, self.y)
cdef class EventMulti:
"""
:ivar int device: 0 if normal mouse, 1+ for other mouse-devices (eg multi-touch - other fingers)
:ivar double radius: radius of press point - radius_x and y if its an ellipse (radius is the average of the 2)
:ivar double radius_x:
:ivar double radius_y:
:ivar double pressure: 1.0 == normal, > 1.0 == more, 0.0 == none
:ivar double angle: relative to perpendicular (0.0 == perpendicular), in degrees
:ivar double x: with sub-pixel precision, if available
:ivar double y: with sub-pixel precision, if available
:ivar double root_x: with sub-pixel precision, if available
:ivar double root_y: with sub-pixel precision, if available
:ivar int device: 0 if normal mouse, 1+ for other mouse-devices (eg multi-touch - other fingers)
:ivar double radius: radius of press point - radius_x and y if its an ellipse (radius is the average of the 2)
:ivar double radius_x:
:ivar double radius_y:
:ivar double pressure: 1.0 == normal, > 1.0 == more, 0.0 == none
:ivar double angle: relative to perpendicular (0.0 == perpendicular), in degrees
:ivar double x: with sub-pixel precision, if available
:ivar double y: with sub-pixel precision, if available
:ivar double root_x: with sub-pixel precision, if available
:ivar double root_y: with sub-pixel precision, if available
"""
def __init__(self, int device, double radius, double radius_x, double radius_y,
double pressure, double angle, double x, double y,
@ -173,9 +190,9 @@ cdef class EventMouseButton(Event):
:ivar int buttons: The button that was used
:ivar bool double_click: Double click event
:ivar bool triple_click: Triple click event
:ivar bool same_screen: Same screen flag
:ivar int x: x coordinate relative to window where event happened
:ivar int y: y coordinate relative to window where event happened
:ivar bool same_screen: Same screen flag
:ivar int x: x coordinate relative to window where event happened
:ivar int y: y coordinate relative to window where event happened
:ivar EventPoint root: :class:`EventPoint` Coordinates relative to root window
"""
@ -211,9 +228,9 @@ cdef class EventMouseMove(Event):
:ivar int timestamp: Time when the event occurred
:ivar int modifiers: :ref:`Ecore_Event_Modifier` The OR combination of modifiers key
:ivar bool same_screen: Same screen flag
:ivar int x: x coordinate relative to window where event happened
:ivar int y: y coordinate relative to window where event happened
:ivar bool same_screen: Same screen flag
:ivar int x: x coordinate relative to window where event happened
:ivar int y: y coordinate relative to window where event happened
:ivar EventPoint root: Coordinates relative to root window
"""
@ -246,8 +263,8 @@ cdef class EventMouseIO(Event):
:ivar int timestamp: Time when the event occurred
:ivar int modifiers: :ref:`Ecore_Event_Modifier` The OR combination of modifiers key
:ivar int x: x coordinate relative to window where event happened
:ivar int y: y coordinate relative to window where event happened
:ivar int x: x coordinate relative to window where event happened
:ivar int y: y coordinate relative to window where event happened
"""
cdef int _set_obj(self, void *o) except 0:
@ -271,12 +288,12 @@ cdef class EventMouseWheel(Event):
:ivar int timestamp: Time when the event occurred
:ivar int modifiers: :ref:`Ecore_Event_Modifier` The OR combination of modifiers key
:ivar bool same_screen: Same screen flag
:ivar int direction: Orientation of the wheel (horizontal/vertical)
:ivar int z: Value of the wheel event (+1/-1)
:ivar int x: x coordinate relative to window where event happened
:ivar int y: y coordinate relative to window where event happened
:ivar EventPoint root: Coordinates relative to root window.
:ivar bool same_screen: Same screen flag
:ivar int direction: Orientation of the wheel (horizontal/vertical)
:ivar int z: Value of the wheel event (+1/-1)
:ivar int x: x coordinate relative to window where event happened
:ivar int y: y coordinate relative to window where event happened
:ivar EventPoint root: Coordinates relative to root window.
"""
cdef int _set_obj(self, void *o) except 0:

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -17,7 +17,7 @@
#from cpython cimport PyObject, Py_INCREF, Py_DECREF
from cpython cimport PyMem_Malloc, PyMem_Free, PyUnicode_AsUTF8String
from efl.utils.deprecated cimport DEPRECATED
from efl.utils.deprecated import DEPRECATED
import atexit

View File

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

View File

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

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -45,13 +45,142 @@ import traceback
import warnings
import atexit
cimport efl.edje.enums as enums
EDJE_MESSAGE_NONE = enums.EDJE_MESSAGE_NONE
EDJE_MESSAGE_SIGNAL = enums.EDJE_MESSAGE_SIGNAL
EDJE_MESSAGE_STRING = enums.EDJE_MESSAGE_STRING
EDJE_MESSAGE_INT = enums.EDJE_MESSAGE_INT
EDJE_MESSAGE_FLOAT = enums.EDJE_MESSAGE_FLOAT
EDJE_MESSAGE_STRING_SET = enums.EDJE_MESSAGE_STRING_SET
EDJE_MESSAGE_INT_SET = enums.EDJE_MESSAGE_INT_SET
EDJE_MESSAGE_FLOAT_SET = enums.EDJE_MESSAGE_FLOAT_SET
EDJE_MESSAGE_STRING_INT = enums.EDJE_MESSAGE_STRING_INT
EDJE_MESSAGE_STRING_FLOAT = enums.EDJE_MESSAGE_STRING_FLOAT
EDJE_MESSAGE_STRING_INT_SET = enums.EDJE_MESSAGE_STRING_INT_SET
EDJE_MESSAGE_STRING_FLOAT_SET = enums.EDJE_MESSAGE_STRING_FLOAT_SET
EDJE_ASPECT_CONTROL_NONE = enums.EDJE_ASPECT_CONTROL_NONE
EDJE_ASPECT_CONTROL_NEITHER = enums.EDJE_ASPECT_CONTROL_NEITHER
EDJE_ASPECT_CONTROL_HORIZONTAL = enums.EDJE_ASPECT_CONTROL_HORIZONTAL
EDJE_ASPECT_CONTROL_VERTICAL = enums.EDJE_ASPECT_CONTROL_VERTICAL
EDJE_ASPECT_CONTROL_BOTH = enums.EDJE_ASPECT_CONTROL_BOTH
EDJE_DRAG_DIR_NONE = enums.EDJE_DRAG_DIR_NONE
EDJE_DRAG_DIR_X = enums.EDJE_DRAG_DIR_X
EDJE_DRAG_DIR_Y = enums.EDJE_DRAG_DIR_Y
EDJE_DRAG_DIR_XY = enums.EDJE_DRAG_DIR_XY
EDJE_LOAD_ERROR_NONE = enums.EDJE_LOAD_ERROR_NONE
EDJE_LOAD_ERROR_GENERIC = enums.EDJE_LOAD_ERROR_GENERIC
EDJE_LOAD_ERROR_DOES_NOT_EXIST = enums.EDJE_LOAD_ERROR_DOES_NOT_EXIST
EDJE_LOAD_ERROR_PERMISSION_DENIED = enums.EDJE_LOAD_ERROR_PERMISSION_DENIED
EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED = enums.EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED
EDJE_LOAD_ERROR_CORRUPT_FILE = enums.EDJE_LOAD_ERROR_CORRUPT_FILE
EDJE_LOAD_ERROR_UNKNOWN_FORMAT = enums.EDJE_LOAD_ERROR_UNKNOWN_FORMAT
EDJE_LOAD_ERROR_INCOMPATIBLE_FILE = enums.EDJE_LOAD_ERROR_INCOMPATIBLE_FILE
EDJE_LOAD_ERROR_UNKNOWN_COLLECTION = enums.EDJE_LOAD_ERROR_UNKNOWN_COLLECTION
EDJE_LOAD_ERROR_RECURSIVE_REFERENCE = enums.EDJE_LOAD_ERROR_RECURSIVE_REFERENCE
EDJE_PART_TYPE_NONE = enums.EDJE_PART_TYPE_NONE
EDJE_PART_TYPE_RECTANGLE = enums.EDJE_PART_TYPE_RECTANGLE
EDJE_PART_TYPE_TEXT = enums.EDJE_PART_TYPE_TEXT
EDJE_PART_TYPE_IMAGE = enums.EDJE_PART_TYPE_IMAGE
EDJE_PART_TYPE_SWALLOW = enums.EDJE_PART_TYPE_SWALLOW
EDJE_PART_TYPE_TEXTBLOCK = enums.EDJE_PART_TYPE_TEXTBLOCK
EDJE_PART_TYPE_GRADIENT = enums.EDJE_PART_TYPE_GRADIENT
EDJE_PART_TYPE_GROUP = enums.EDJE_PART_TYPE_GROUP
EDJE_PART_TYPE_BOX = enums.EDJE_PART_TYPE_BOX
EDJE_PART_TYPE_TABLE = enums.EDJE_PART_TYPE_TABLE
EDJE_PART_TYPE_EXTERNAL = enums.EDJE_PART_TYPE_EXTERNAL
EDJE_PART_TYPE_SPACER = enums.EDJE_PART_TYPE_SPACER
EDJE_PART_TYPE_MESH_NODE = enums.EDJE_PART_TYPE_MESH_NODE
EDJE_PART_TYPE_LIGHT = enums.EDJE_PART_TYPE_LIGHT
EDJE_PART_TYPE_CAMERA = enums.EDJE_PART_TYPE_CAMERA
EDJE_PART_TYPE_LAST = enums.EDJE_PART_TYPE_LAST
EDJE_TEXT_EFFECT_NONE = enums.EDJE_TEXT_EFFECT_NONE
EDJE_TEXT_EFFECT_PLAIN = enums.EDJE_TEXT_EFFECT_PLAIN
EDJE_TEXT_EFFECT_OUTLINE = enums.EDJE_TEXT_EFFECT_OUTLINE
EDJE_TEXT_EFFECT_SOFT_OUTLINE = enums.EDJE_TEXT_EFFECT_SOFT_OUTLINE
EDJE_TEXT_EFFECT_SHADOW = enums.EDJE_TEXT_EFFECT_SHADOW
EDJE_TEXT_EFFECT_SOFT_SHADOW = enums.EDJE_TEXT_EFFECT_SOFT_SHADOW
EDJE_TEXT_EFFECT_OUTLINE_SHADOW = enums.EDJE_TEXT_EFFECT_OUTLINE_SHADOW
EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW = enums.EDJE_TEXT_EFFECT_OUTLINE_SOFT_SHADOW
EDJE_TEXT_EFFECT_FAR_SHADOW = enums.EDJE_TEXT_EFFECT_FAR_SHADOW
EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW = enums.EDJE_TEXT_EFFECT_FAR_SOFT_SHADOW
EDJE_TEXT_EFFECT_GLOW = enums.EDJE_TEXT_EFFECT_GLOW
EDJE_TEXT_EFFECT_LAST = enums.EDJE_TEXT_EFFECT_LAST
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT = enums.EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_RIGHT
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM = enums.EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT = enums.EDJE_TEXT_EFFECT_SHADOW_DIRECTION_BOTTOM_LEFT
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT = enums.EDJE_TEXT_EFFECT_SHADOW_DIRECTION_LEFT
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT = enums.EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_LEFT
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP = enums.EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT = enums.EDJE_TEXT_EFFECT_SHADOW_DIRECTION_TOP_RIGHT
EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT = enums.EDJE_TEXT_EFFECT_SHADOW_DIRECTION_RIGHT
EDJE_ACTION_TYPE_NONE = enums.EDJE_ACTION_TYPE_NONE
EDJE_ACTION_TYPE_STATE_SET = enums.EDJE_ACTION_TYPE_STATE_SET
EDJE_ACTION_TYPE_ACTION_STOP = enums.EDJE_ACTION_TYPE_ACTION_STOP
EDJE_ACTION_TYPE_SIGNAL_EMIT = enums.EDJE_ACTION_TYPE_SIGNAL_EMIT
EDJE_ACTION_TYPE_DRAG_VAL_SET = enums.EDJE_ACTION_TYPE_DRAG_VAL_SET
EDJE_ACTION_TYPE_DRAG_VAL_STEP = enums.EDJE_ACTION_TYPE_DRAG_VAL_STEP
EDJE_ACTION_TYPE_DRAG_VAL_PAGE = enums.EDJE_ACTION_TYPE_DRAG_VAL_PAGE
EDJE_ACTION_TYPE_SCRIPT = enums.EDJE_ACTION_TYPE_SCRIPT
EDJE_ACTION_TYPE_FOCUS_SET = enums.EDJE_ACTION_TYPE_FOCUS_SET
EDJE_ACTION_TYPE_RESERVED00 = enums.EDJE_ACTION_TYPE_RESERVED00
EDJE_ACTION_TYPE_FOCUS_OBJECT = enums.EDJE_ACTION_TYPE_FOCUS_OBJECT
EDJE_ACTION_TYPE_PARAM_COPY = enums.EDJE_ACTION_TYPE_PARAM_COPY
EDJE_ACTION_TYPE_PARAM_SET = enums.EDJE_ACTION_TYPE_PARAM_SET
EDJE_ACTION_TYPE_SOUND_SAMPLE = enums.EDJE_ACTION_TYPE_SOUND_SAMPLE
EDJE_ACTION_TYPE_SOUND_TONE = enums.EDJE_ACTION_TYPE_SOUND_TONE
EDJE_ACTION_TYPE_PHYSICS_IMPULSE = enums.EDJE_ACTION_TYPE_PHYSICS_IMPULSE
EDJE_ACTION_TYPE_PHYSICS_TORQUE_IMPULSE = enums.EDJE_ACTION_TYPE_PHYSICS_TORQUE_IMPULSE
EDJE_ACTION_TYPE_PHYSICS_FORCE = enums.EDJE_ACTION_TYPE_PHYSICS_FORCE
EDJE_ACTION_TYPE_PHYSICS_TORQUE = enums.EDJE_ACTION_TYPE_PHYSICS_TORQUE
EDJE_ACTION_TYPE_PHYSICS_FORCES_CLEAR = enums.EDJE_ACTION_TYPE_PHYSICS_FORCES_CLEAR
EDJE_ACTION_TYPE_PHYSICS_VEL_SET = enums.EDJE_ACTION_TYPE_PHYSICS_VEL_SET
EDJE_ACTION_TYPE_PHYSICS_ANG_VEL_SET = enums.EDJE_ACTION_TYPE_PHYSICS_ANG_VEL_SET
EDJE_ACTION_TYPE_PHYSICS_STOP = enums.EDJE_ACTION_TYPE_PHYSICS_STOP
EDJE_ACTION_TYPE_PHYSICS_ROT_SET = enums.EDJE_ACTION_TYPE_PHYSICS_ROT_SET
EDJE_ACTION_TYPE_VIBRATION_SAMPLE = enums.EDJE_ACTION_TYPE_VIBRATION_SAMPLE
EDJE_ACTION_TYPE_LAST = enums.EDJE_ACTION_TYPE_LAST
EDJE_TWEEN_MODE_NONE = enums.EDJE_TWEEN_MODE_NONE
EDJE_TWEEN_MODE_LINEAR = enums.EDJE_TWEEN_MODE_LINEAR
EDJE_TWEEN_MODE_SINUSOIDAL = enums.EDJE_TWEEN_MODE_SINUSOIDAL
EDJE_TWEEN_MODE_ACCELERATE = enums.EDJE_TWEEN_MODE_ACCELERATE
EDJE_TWEEN_MODE_DECELERATE = enums.EDJE_TWEEN_MODE_DECELERATE
EDJE_TWEEN_MODE_ACCELERATE_FACTOR = enums.EDJE_TWEEN_MODE_ACCELERATE_FACTOR
EDJE_TWEEN_MODE_DECELERATE_FACTOR = enums.EDJE_TWEEN_MODE_DECELERATE_FACTOR
EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR = enums.EDJE_TWEEN_MODE_SINUSOIDAL_FACTOR
EDJE_TWEEN_MODE_DIVISOR_INTERP = enums.EDJE_TWEEN_MODE_DIVISOR_INTERP
EDJE_TWEEN_MODE_BOUNCE = enums.EDJE_TWEEN_MODE_BOUNCE
EDJE_TWEEN_MODE_SPRING = enums.EDJE_TWEEN_MODE_SPRING
EDJE_TWEEN_MODE_CUBIC_BEZIER = enums.EDJE_TWEEN_MODE_CUBIC_BEZIER
EDJE_TWEEN_MODE_LAST = enums.EDJE_TWEEN_MODE_LAST
EDJE_TWEEN_MODE_MASK = enums.EDJE_TWEEN_MODE_MASK
EDJE_TWEEN_MODE_OPT_FROM_CURRENT = enums.EDJE_TWEEN_MODE_OPT_FROM_CURRENT
EDJE_EXTERNAL_PARAM_TYPE_INT = enums.EDJE_EXTERNAL_PARAM_TYPE_INT
EDJE_EXTERNAL_PARAM_TYPE_DOUBLE = enums.EDJE_EXTERNAL_PARAM_TYPE_DOUBLE
EDJE_EXTERNAL_PARAM_TYPE_STRING = enums.EDJE_EXTERNAL_PARAM_TYPE_STRING
EDJE_EXTERNAL_PARAM_TYPE_BOOL = enums.EDJE_EXTERNAL_PARAM_TYPE_BOOL
EDJE_EXTERNAL_PARAM_TYPE_CHOICE = enums.EDJE_EXTERNAL_PARAM_TYPE_CHOICE
EDJE_EXTERNAL_PARAM_TYPE_MAX = enums.EDJE_EXTERNAL_PARAM_TYPE_MAX
EDJE_INPUT_HINT_NONE = enums.EDJE_INPUT_HINT_NONE
EDJE_INPUT_HINT_AUTO_COMPLETE = enums.EDJE_INPUT_HINT_AUTO_COMPLETE
EDJE_INPUT_HINT_SENSITIVE_DATA = enums.EDJE_INPUT_HINT_SENSITIVE_DATA
def init():
cdef int r = edje_init()
if edje_external_type_abi_version_get() != EDJE_EXTERNAL_TYPE_ABI_VERSION:
raise TypeError("python-edje Edje_External_Type abi_version differs "
"from libedje.so. Recompile python-edje!")
"from libedje.so. Recompile python-efl!")
return r

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -60,15 +60,15 @@ cdef class ExternalParam:
def __get__(self):
if self.obj == NULL:
raise ValueError("Object uninitialized")
if self.obj.type == <int>EDJE_EXTERNAL_PARAM_TYPE_INT:
if self.obj.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_INT:
return self.obj.i
elif self.obj.type == <int>EDJE_EXTERNAL_PARAM_TYPE_DOUBLE:
elif self.obj.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_DOUBLE:
return self.obj.d
elif self.obj.type == <int>EDJE_EXTERNAL_PARAM_TYPE_STRING or \
self.obj.type == <int>EDJE_EXTERNAL_PARAM_TYPE_CHOICE:
elif self.obj.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_STRING or \
self.obj.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_CHOICE:
if self.obj.s != NULL:
return self.obj.s
elif self.obj.type == <int>EDJE_EXTERNAL_PARAM_TYPE_BOOL:
elif self.obj.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_BOOL:
return bool(self.obj.i)
@ -292,7 +292,7 @@ cdef class ExternalParamInfoChoice(ExternalParamInfo):
property translated_choices:
def __get__(self):
cdef const char *t
cdef const char *trans
if self._external_type_obj == NULL or \
self._external_type_obj.translate == NULL:
return self.choices
@ -308,15 +308,15 @@ cdef class ExternalParamInfoChoice(ExternalParamInfo):
cdef ExternalParamInfo ExternalParamInfo_from_ptr(type, Edje_External_Param_Info *ptr):
cdef ExternalParamInfo p
if ptr.type == <int>EDJE_EXTERNAL_PARAM_TYPE_INT:
if ptr.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_INT:
p = ExternalParamInfoInt()
elif ptr.type == <int>EDJE_EXTERNAL_PARAM_TYPE_DOUBLE:
elif ptr.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_DOUBLE:
p = ExternalParamInfoDouble()
elif ptr.type == <int>EDJE_EXTERNAL_PARAM_TYPE_STRING:
elif ptr.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_STRING:
p = ExternalParamInfoString()
elif ptr.type == <int>EDJE_EXTERNAL_PARAM_TYPE_BOOL:
elif ptr.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_BOOL:
p = ExternalParamInfoBool()
elif ptr.type == <int>EDJE_EXTERNAL_PARAM_TYPE_CHOICE:
elif ptr.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_CHOICE:
p = ExternalParamInfoChoice()
else:
msg = "Don't know how to convert parameter %s of type %s" % \

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -345,29 +345,29 @@ cdef Message MessageStringFloatSet_from_ptr(void *msg):
cdef Message Message_from_type(Edje_Message_Type type, int id, void *msg):
cdef Message m
if type == <int>EDJE_MESSAGE_NONE:
if type == <int>enums.EDJE_MESSAGE_NONE:
return None
elif type == <int>EDJE_MESSAGE_SIGNAL:
elif type == <int>enums.EDJE_MESSAGE_SIGNAL:
m = MessageSignal()
elif type == <int>EDJE_MESSAGE_STRING:
elif type == <int>enums.EDJE_MESSAGE_STRING:
m = MessageString_from_ptr(msg)
elif type == <int>EDJE_MESSAGE_INT:
elif type == <int>enums.EDJE_MESSAGE_INT:
m = MessageInt_from_ptr(msg)
elif type == <int>EDJE_MESSAGE_FLOAT:
elif type == <int>enums.EDJE_MESSAGE_FLOAT:
m = MessageFloat_from_ptr(msg)
elif type == <int>EDJE_MESSAGE_STRING_SET:
elif type == <int>enums.EDJE_MESSAGE_STRING_SET:
m = MessageStringSet_from_ptr(msg)
elif type == <int>EDJE_MESSAGE_INT_SET:
elif type == <int>enums.EDJE_MESSAGE_INT_SET:
m = MessageIntSet_from_ptr(msg)
elif type == <int>EDJE_MESSAGE_FLOAT_SET:
elif type == <int>enums.EDJE_MESSAGE_FLOAT_SET:
m = MessageFloatSet_from_ptr(msg)
elif type == <int>EDJE_MESSAGE_STRING_INT:
elif type == <int>enums.EDJE_MESSAGE_STRING_INT:
m = MessageStringInt_from_ptr(msg)
elif type == <int>EDJE_MESSAGE_STRING_FLOAT:
elif type == <int>enums.EDJE_MESSAGE_STRING_FLOAT:
m = MessageStringFloat_from_ptr(msg)
elif type == <int>EDJE_MESSAGE_STRING_INT_SET :
elif type == <int>enums.EDJE_MESSAGE_STRING_INT_SET :
m = MessageStringIntSet_from_ptr(msg)
elif type == <int>EDJE_MESSAGE_STRING_FLOAT_SET :
elif type == <int>enums.EDJE_MESSAGE_STRING_FLOAT_SET :
m = MessageStringFloatSet_from_ptr(msg)
m._type = type

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -60,23 +60,23 @@ cdef void signal_cb(void *data, Evas_Object *obj,
class EdjeLoadError(Exception):
def __init__(self, int code, char *file, char *group):
if code == EDJE_LOAD_ERROR_NONE:
if code == enums.EDJE_LOAD_ERROR_NONE:
msg = "No error"
elif code == EDJE_LOAD_ERROR_GENERIC:
elif code == enums.EDJE_LOAD_ERROR_GENERIC:
msg = "Generic error"
elif code == EDJE_LOAD_ERROR_DOES_NOT_EXIST:
elif code == enums.EDJE_LOAD_ERROR_DOES_NOT_EXIST:
msg = "Does not exist"
elif code == EDJE_LOAD_ERROR_PERMISSION_DENIED:
elif code == enums.EDJE_LOAD_ERROR_PERMISSION_DENIED:
msg = "Permission denied"
elif code == EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED:
elif code == enums.EDJE_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED:
msg = "Resource allocation failed"
elif code == EDJE_LOAD_ERROR_CORRUPT_FILE:
elif code == enums.EDJE_LOAD_ERROR_CORRUPT_FILE:
msg = "Corrupt file"
elif code == EDJE_LOAD_ERROR_UNKNOWN_FORMAT:
elif code == enums.EDJE_LOAD_ERROR_UNKNOWN_FORMAT:
msg = "Unknown format"
elif code == EDJE_LOAD_ERROR_INCOMPATIBLE_FILE:
elif code == enums.EDJE_LOAD_ERROR_INCOMPATIBLE_FILE:
msg = "Incompatible file"
elif code == EDJE_LOAD_ERROR_UNKNOWN_COLLECTION:
elif code == enums.EDJE_LOAD_ERROR_UNKNOWN_COLLECTION:
msg = "Unknown collection"
self.code = code
@ -106,7 +106,7 @@ cdef class Edje(Object):
def __init__(self, Canvas canvas not None, file=None, group=None, size=None,
geometry=None, **kwargs):
"""Edje(...)
"""
:param canvas: Evas canvas for this object
:type canvas: :py:class:`~efl.evas.Canvas`
@ -137,22 +137,6 @@ cdef class Edje(Object):
self._text_change_cb = None
self._message_handler_cb = None
def __repr__(self):
x, y, w, h = self.geometry_get()
r, g, b, a = self.color_get()
file, group = self.file_get()
name = self.name_get()
if name:
name_str = "name=%r, "
else:
name_str = ""
clip = bool(self.clip_get() is not None)
return ("<%s(%sfile=%r, group=%r, geometry=(%d, %d, %d, %d), "
"color=(%d, %d, %d, %d), layer=%s, clip=%r, visible=%s)>") % \
(self.__class__.__name__, name_str, file, group,
x, y, w, h, r, g, b, a,
self.layer_get(), clip, self.visible_get())
def data_get(self, key):
"""Get data from Edje data collection (defined in .edj).
@ -400,7 +384,7 @@ cdef class Edje(Object):
text_class = PyUnicode_AsUTF8String(text_class)
edje_object_text_class_del(self.obj,
<const char *>text_class if text_class is not None else NULL)
def size_class_set(self, size_class, int minw, int minh, int maxw, int maxh):
"""Sets the object size class.
@ -419,7 +403,7 @@ cdef class Edje(Object):
:rtype: bool
.. versionadded:: 1.17
"""
if isinstance(size_class, unicode):
size_class = PyUnicode_AsUTF8String(size_class)
@ -783,6 +767,70 @@ cdef class Edje(Object):
return edje_object_part_text_input_hint_get(self.obj,
<const char *>part if part is not None else NULL)
def part_text_prediction_hint_set(self, part, hint):
"""Sets the prediction hint to use an intelligent reply suggestion
service.
:param part: the part name
:type part: str
:param hint: the prediction hint text
:type hint: str
.. versionadded:: 1.20
"""
if isinstance(part, unicode): part = PyUnicode_AsUTF8String(part)
if isinstance(hint, unicode): hint = PyUnicode_AsUTF8String(hint)
edje_object_part_text_prediction_hint_set(self.obj,
<const char *>part if part is not None else NULL,
<const char *>hint if hint is not None else NULL)
def part_text_prediction_hint_hash_set(self, part, key, value):
"""Sets the prediction hint data at the specified key
:param part: the part name
:type part: str
:param key: the key of the prediction hint
:type key: str
:param value: the data to replace
:type value: str
:return bool: `True` on success, `False` otherwise
.. versionadded:: 1.21
"""
if isinstance(part, unicode): part = PyUnicode_AsUTF8String(part)
if isinstance(key, unicode): key = PyUnicode_AsUTF8String(key)
if isinstance(value, unicode): value = PyUnicode_AsUTF8String(value)
edje_object_part_text_prediction_hint_hash_set(self.obj,
<const char *>part if part is not None else NULL,
<const char *>key if key is not None else NULL,
<const char *>value if value is not None else NULL)
def part_text_prediction_hint_hash_del(self, part, key):
"""Removes the prediction hint data identified by a key
:param part: the part name
:type part: str
:param key: the key of the prediction hint
:type key: str
:return bool: `True` on success, `False` otherwise
.. versionadded:: 1.21
"""
if isinstance(part, unicode): part = PyUnicode_AsUTF8String(part)
if isinstance(key, unicode): key = PyUnicode_AsUTF8String(key)
edje_object_part_text_prediction_hint_hash_del(self.obj,
<const char *>part if part is not None else NULL,
<const char *>key if key is not None else NULL)
def part_swallow(self, part, Object obj):
"""Swallows an object into the edje
@ -852,13 +900,13 @@ cdef class Edje(Object):
p.name = c_param
if isinstance(value, bool): # bool is int, so keep it before!
p.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL
p.type = enums.EDJE_EXTERNAL_PARAM_TYPE_BOOL
p.i = value
elif isinstance(value, int):
p.type = EDJE_EXTERNAL_PARAM_TYPE_INT
p.type = enums.EDJE_EXTERNAL_PARAM_TYPE_INT
p.i = value
elif isinstance(value, float):
p.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE
p.type = enums.EDJE_EXTERNAL_PARAM_TYPE_DOUBLE
p.d = value
elif isinstance(value, (str, unicode)):
# may be STRING or CHOICE
@ -904,19 +952,19 @@ cdef class Edje(Object):
p.name = c_param
p.type = edje_object_part_external_param_type_get(self.obj, c_part, c_param)
if p.type >= <int>EDJE_EXTERNAL_PARAM_TYPE_MAX:
if p.type >= <int>enums.EDJE_EXTERNAL_PARAM_TYPE_MAX:
return None
if not edje_object_part_external_param_get(self.obj, c_part, &p):
return None
if p.type == <int>EDJE_EXTERNAL_PARAM_TYPE_BOOL:
if p.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_BOOL:
return bool(p.i)
elif p.type == <int>EDJE_EXTERNAL_PARAM_TYPE_INT:
elif p.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_INT:
return p.i
elif p.type == <int>EDJE_EXTERNAL_PARAM_TYPE_DOUBLE:
elif p.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_DOUBLE:
return p.d
elif p.type == <int>EDJE_EXTERNAL_PARAM_TYPE_STRING or \
p.type == <int>EDJE_EXTERNAL_PARAM_TYPE_CHOICE:
elif p.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_STRING or \
p.type == <int>enums.EDJE_EXTERNAL_PARAM_TYPE_CHOICE:
return _ctouni(p.s)
def part_box_append(self, part, Object obj):
@ -1199,18 +1247,18 @@ cdef class Edje(Object):
cdef void message_send_int(self, int id, int data):
cdef Edje_Message_Int m
m.val = data
edje_object_message_send(self.obj, EDJE_MESSAGE_INT, id, <void*>&m)
edje_object_message_send(self.obj, enums.EDJE_MESSAGE_INT, id, <void*>&m)
cdef void message_send_float(self, int id, float data):
cdef Edje_Message_Float m
m.val = data
edje_object_message_send(self.obj, EDJE_MESSAGE_FLOAT, id, <void*>&m)
edje_object_message_send(self.obj, enums.EDJE_MESSAGE_FLOAT, id, <void*>&m)
cdef void message_send_str(self, int id, data):
cdef Edje_Message_String m
if isinstance(data, unicode): data = PyUnicode_AsUTF8String(data)
m.str = <char *>data if data is not None else NULL
edje_object_message_send(self.obj, EDJE_MESSAGE_STRING, id, <void*>&m)
edje_object_message_send(self.obj, enums.EDJE_MESSAGE_STRING, id, <void*>&m)
cdef void message_send_str_set(self, int id, data):
cdef int count, i
@ -1226,7 +1274,7 @@ cdef class Edje(Object):
m.str[i] = s
i += 1
edje_object_message_send(self.obj, EDJE_MESSAGE_STRING_SET, id,
edje_object_message_send(self.obj, enums.EDJE_MESSAGE_STRING_SET, id,
<void*>m)
PyMem_Free(m)
@ -1235,7 +1283,7 @@ cdef class Edje(Object):
if isinstance(s, unicode): s = PyUnicode_AsUTF8String(s)
m.str = <char *>s if s is not None else NULL
m.val = i
edje_object_message_send(self.obj, EDJE_MESSAGE_STRING_INT, id,
edje_object_message_send(self.obj, enums.EDJE_MESSAGE_STRING_INT, id,
<void*>&m)
cdef void message_send_str_float(self, int id, s, float f):
@ -1243,7 +1291,7 @@ cdef class Edje(Object):
if isinstance(s, unicode): s = PyUnicode_AsUTF8String(s)
m.str = <char *>s if s is not None else NULL
m.val = f
edje_object_message_send(self.obj, EDJE_MESSAGE_STRING_FLOAT, id,
edje_object_message_send(self.obj, enums.EDJE_MESSAGE_STRING_FLOAT, id,
<void*>&m)
cdef void message_send_str_int_set(self, int id, s, data):
@ -1262,7 +1310,7 @@ cdef class Edje(Object):
m.val[i] = f
i += 1
edje_object_message_send(self.obj, EDJE_MESSAGE_STRING_INT_SET, id,
edje_object_message_send(self.obj, enums.EDJE_MESSAGE_STRING_INT_SET, id,
<void*>m)
PyMem_Free(m)
@ -1283,7 +1331,7 @@ cdef class Edje(Object):
m.val[i] = f
i += 1
edje_object_message_send(self.obj, EDJE_MESSAGE_STRING_FLOAT_SET, id,
edje_object_message_send(self.obj, enums.EDJE_MESSAGE_STRING_FLOAT_SET, id,
<void*>m)
PyMem_Free(m)
@ -1301,7 +1349,7 @@ cdef class Edje(Object):
m.val[i] = f
i += 1
edje_object_message_send(self.obj, EDJE_MESSAGE_INT_SET, id,
edje_object_message_send(self.obj, enums.EDJE_MESSAGE_INT_SET, id,
<void*>m)
PyMem_Free(m)
@ -1319,7 +1367,7 @@ cdef class Edje(Object):
m.val[i] = f
i += 1
edje_object_message_send(self.obj, EDJE_MESSAGE_FLOAT_SET, id,
edje_object_message_send(self.obj, enums.EDJE_MESSAGE_FLOAT_SET, id,
<void*>m)
PyMem_Free(m)
@ -1506,4 +1554,4 @@ def on_text_change(func):
return func
_object_mapping_register("Edje_Object", Edje)
_object_mapping_register("Efl.Canvas.Layout", Edje)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -26,6 +26,12 @@ from efl.evas cimport Canvas
from efl.edje cimport Edje_Part_Type, Edje, ExternalParam_from_ptr
from efl.edje import EDJE_PART_TYPE_EXTERNAL
cimport efl.edje_edit.enums as enums
EDJE_EDIT_IMAGE_COMP_RAW = enums.EDJE_EDIT_IMAGE_COMP_RAW
EDJE_EDIT_IMAGE_COMP_USER = enums.EDJE_EDIT_IMAGE_COMP_USER
EDJE_EDIT_IMAGE_COMP_COMP = enums.EDJE_EDIT_IMAGE_COMP_COMP
EDJE_EDIT_IMAGE_COMP_LOSSY = enums.EDJE_EDIT_IMAGE_COMP_LOSSY
cdef class EdjeEdit(Edje):

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -39,9 +39,603 @@ import traceback
import atexit
include "elementary_cdef.pxi"
cimport efl.elementary.enums as enums
EDJE_CHANNEL_EFFECT = enums.EDJE_CHANNEL_EFFECT
EDJE_CHANNEL_BACKGROUND = enums.EDJE_CHANNEL_BACKGROUND
EDJE_CHANNEL_MUSIC = enums.EDJE_CHANNEL_MUSIC
EDJE_CHANNEL_FOREGROUND = enums.EDJE_CHANNEL_FOREGROUND
EDJE_CHANNEL_INTERFACE = enums.EDJE_CHANNEL_INTERFACE
EDJE_CHANNEL_INPUT = enums.EDJE_CHANNEL_INPUT
EDJE_CHANNEL_ALERT = enums.EDJE_CHANNEL_ALERT
EDJE_CHANNEL_ALL = enums.EDJE_CHANNEL_ALL
ELM_EVENT_CONFIG_ALL_CHANGED = enums.ELM_EVENT_CONFIG_ALL_CHANGED
ELM_EVENT_POLICY_CHANGED = enums.ELM_EVENT_POLICY_CHANGED
ELM_EVENT_PROCESS_BACKGROUND = enums.ELM_EVENT_PROCESS_BACKGROUND
ELM_EVENT_PROCESS_FOREGROUND = enums.ELM_EVENT_PROCESS_FOREGROUND
ELM_ECORE_EVENT_ETHUMB_CONNECT = enums.ELM_ECORE_EVENT_ETHUMB_CONNECT
ELM_EVENT_SYS_NOTIFY_NOTIFICATION_CLOSED = enums.ELM_EVENT_SYS_NOTIFY_NOTIFICATION_CLOSED
ELM_EVENT_SYS_NOTIFY_ACTION_INVOKED = enums.ELM_EVENT_SYS_NOTIFY_ACTION_INVOKED
ELM_FOCUS_PREVIOUS = enums.ELM_FOCUS_PREVIOUS
ELM_FOCUS_NEXT = enums.ELM_FOCUS_NEXT
ELM_FOCUS_UP = enums.ELM_FOCUS_UP
ELM_FOCUS_DOWN = enums.ELM_FOCUS_DOWN
ELM_FOCUS_RIGHT = enums.ELM_FOCUS_RIGHT
ELM_FOCUS_LEFT = enums.ELM_FOCUS_LEFT
ELM_FOCUS_MOVE_POLICY_CLICK = enums.ELM_FOCUS_MOVE_POLICY_CLICK
ELM_FOCUS_MOVE_POLICY_IN = enums.ELM_FOCUS_MOVE_POLICY_IN
ELM_FOCUS_MOVE_POLICY_KEY_ONLY = enums.ELM_FOCUS_MOVE_POLICY_KEY_ONLY
ELM_FOCUS_REGION_SHOW_WIDGET = enums.ELM_FOCUS_REGION_SHOW_WIDGET
ELM_FOCUS_REGION_SHOW_ITEM = enums.ELM_FOCUS_REGION_SHOW_ITEM
ELM_FOCUS_AUTOSCROLL_MODE_SHOW = enums.ELM_FOCUS_AUTOSCROLL_MODE_SHOW
ELM_FOCUS_AUTOSCROLL_MODE_NONE = enums.ELM_FOCUS_AUTOSCROLL_MODE_NONE
ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN = enums.ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN
ELM_SEL_TYPE_PRIMARY = enums.ELM_SEL_TYPE_PRIMARY
ELM_SEL_TYPE_SECONDARY = enums.ELM_SEL_TYPE_SECONDARY
ELM_SEL_TYPE_XDND = enums.ELM_SEL_TYPE_XDND
ELM_SEL_TYPE_CLIPBOARD = enums.ELM_SEL_TYPE_CLIPBOARD
ELM_SEL_FORMAT_TARGETS = enums.ELM_SEL_FORMAT_TARGETS
ELM_SEL_FORMAT_NONE = enums.ELM_SEL_FORMAT_NONE
ELM_SEL_FORMAT_TEXT = enums.ELM_SEL_FORMAT_TEXT
ELM_SEL_FORMAT_MARKUP = enums.ELM_SEL_FORMAT_MARKUP
ELM_SEL_FORMAT_IMAGE = enums.ELM_SEL_FORMAT_IMAGE
ELM_SEL_FORMAT_VCARD = enums.ELM_SEL_FORMAT_VCARD
ELM_SEL_FORMAT_HTML = enums.ELM_SEL_FORMAT_HTML
ELM_XDND_ACTION_UNKNOWN = enums.ELM_XDND_ACTION_UNKNOWN
ELM_XDND_ACTION_COPY = enums.ELM_XDND_ACTION_COPY
ELM_XDND_ACTION_MOVE = enums.ELM_XDND_ACTION_MOVE
ELM_XDND_ACTION_PRIVATE = enums.ELM_XDND_ACTION_PRIVATE
ELM_XDND_ACTION_ASK = enums.ELM_XDND_ACTION_ASK
ELM_XDND_ACTION_LIST = enums.ELM_XDND_ACTION_LIST
ELM_XDND_ACTION_LINK = enums.ELM_XDND_ACTION_LINK
ELM_XDND_ACTION_DESCRIPTION = enums.ELM_XDND_ACTION_DESCRIPTION
ELM_TOOLTIP_ORIENT_NONE = enums.ELM_TOOLTIP_ORIENT_NONE
ELM_TOOLTIP_ORIENT_TOP_LEFT = enums.ELM_TOOLTIP_ORIENT_TOP_LEFT
ELM_TOOLTIP_ORIENT_TOP = enums.ELM_TOOLTIP_ORIENT_TOP
ELM_TOOLTIP_ORIENT_TOP_RIGHT = enums.ELM_TOOLTIP_ORIENT_TOP_RIGHT
ELM_TOOLTIP_ORIENT_LEFT = enums.ELM_TOOLTIP_ORIENT_LEFT
ELM_TOOLTIP_ORIENT_CENTER = enums.ELM_TOOLTIP_ORIENT_CENTER
ELM_TOOLTIP_ORIENT_RIGHT = enums.ELM_TOOLTIP_ORIENT_RIGHT
ELM_TOOLTIP_ORIENT_BOTTOM_LEFT = enums.ELM_TOOLTIP_ORIENT_BOTTOM_LEFT
ELM_TOOLTIP_ORIENT_BOTTOM = enums.ELM_TOOLTIP_ORIENT_BOTTOM
ELM_TOOLTIP_ORIENT_BOTTOM_RIGHT = enums.ELM_TOOLTIP_ORIENT_BOTTOM_RIGHT
ELM_TOOLTIP_ORIENT_LAST = enums.ELM_TOOLTIP_ORIENT_LAST
ELM_POLICY_QUIT = enums.ELM_POLICY_QUIT
ELM_POLICY_EXIT = enums.ELM_POLICY_EXIT
ELM_POLICY_THROTTLE = enums.ELM_POLICY_THROTTLE
ELM_POLICY_LAST = enums.ELM_POLICY_LAST
ELM_POLICY_QUIT_NONE = enums.ELM_POLICY_QUIT_NONE
ELM_POLICY_QUIT_LAST_WINDOW_CLOSED = enums.ELM_POLICY_QUIT_LAST_WINDOW_CLOSED
ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN = enums.ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN
ELM_POLICY_EXIT_NONE = enums.ELM_POLICY_EXIT_NONE
ELM_POLICY_EXIT_WINDOWS_DEL = enums.ELM_POLICY_EXIT_WINDOWS_DEL
ELM_POLICY_THROTTLE_CONFIG = enums.ELM_POLICY_THROTTLE_CONFIG
ELM_POLICY_THROTTLE_HIDDEN_ALWAYS = enums.ELM_POLICY_THROTTLE_HIDDEN_ALWAYS
ELM_POLICY_THROTTLE_NEVER = enums.ELM_POLICY_THROTTLE_NEVER
ELM_SYS_NOTIFY_URGENCY_LOW = enums.ELM_SYS_NOTIFY_URGENCY_LOW
ELM_SYS_NOTIFY_URGENCY_NORMAL = enums.ELM_SYS_NOTIFY_URGENCY_NORMAL
ELM_SYS_NOTIFY_URGENCY_CRITICAL = enums.ELM_SYS_NOTIFY_URGENCY_CRITICAL
ELM_GLOB_MATCH_NO_ESCAPE = enums.ELM_GLOB_MATCH_NO_ESCAPE
ELM_GLOB_MATCH_PATH = enums.ELM_GLOB_MATCH_PATH
ELM_GLOB_MATCH_PERIOD = enums.ELM_GLOB_MATCH_PERIOD
ELM_GLOB_MATCH_NOCASE = enums.ELM_GLOB_MATCH_NOCASE
ELM_PROCESS_STATE_FOREGROUND = enums.ELM_PROCESS_STATE_FOREGROUND
ELM_PROCESS_STATE_BACKGROUND = enums.ELM_PROCESS_STATE_BACKGROUND
ELM_SYS_NOTIFY_URGENCY_LOW = enums.ELM_SYS_NOTIFY_URGENCY_LOW
ELM_SYS_NOTIFY_URGENCY_NORMAL = enums.ELM_SYS_NOTIFY_URGENCY_NORMAL
ELM_SYS_NOTIFY_URGENCY_CRITICAL = enums.ELM_SYS_NOTIFY_URGENCY_CRITICAL
ELM_ACTIONSLIDER_NONE = enums.ELM_ACTIONSLIDER_NONE
ELM_ACTIONSLIDER_LEFT = enums.ELM_ACTIONSLIDER_LEFT
ELM_ACTIONSLIDER_CENTER = enums.ELM_ACTIONSLIDER_CENTER
ELM_ACTIONSLIDER_RIGHT = enums.ELM_ACTIONSLIDER_RIGHT
ELM_ACTIONSLIDER_ALL = enums.ELM_ACTIONSLIDER_ALL
ELM_BG_OPTION_CENTER = enums.ELM_BG_OPTION_CENTER
ELM_BG_OPTION_SCALE = enums.ELM_BG_OPTION_SCALE
ELM_BG_OPTION_STRETCH = enums.ELM_BG_OPTION_STRETCH
ELM_BG_OPTION_TILE = enums.ELM_BG_OPTION_TILE
ELM_BG_OPTION_LAST = enums.ELM_BG_OPTION_LAST
ELM_BUBBLE_POS_TOP_LEFT = enums.ELM_BUBBLE_POS_TOP_LEFT
ELM_BUBBLE_POS_TOP_RIGHT = enums.ELM_BUBBLE_POS_TOP_RIGHT
ELM_BUBBLE_POS_BOTTOM_LEFT = enums.ELM_BUBBLE_POS_BOTTOM_LEFT
ELM_BUBBLE_POS_BOTTOM_RIGHT = enums.ELM_BUBBLE_POS_BOTTOM_RIGHT
ELM_CALENDAR_UNIQUE = enums.ELM_CALENDAR_UNIQUE
ELM_CALENDAR_DAILY = enums.ELM_CALENDAR_DAILY
ELM_CALENDAR_WEEKLY = enums.ELM_CALENDAR_WEEKLY
ELM_CALENDAR_MONTHLY = enums.ELM_CALENDAR_MONTHLY
ELM_CALENDAR_ANNUALLY = enums.ELM_CALENDAR_ANNUALLY
ELM_CALENDAR_LAST_DAY_OF_MONTH = enums.ELM_CALENDAR_LAST_DAY_OF_MONTH
ELM_CALENDAR_REVERSE_DAILY = enums.ELM_CALENDAR_REVERSE_DAILY
ELM_CALENDAR_SELECT_MODE_DEFAULT = enums.ELM_CALENDAR_SELECT_MODE_DEFAULT
ELM_CALENDAR_SELECT_MODE_ALWAYS = enums.ELM_CALENDAR_SELECT_MODE_ALWAYS
ELM_CALENDAR_SELECT_MODE_NONE = enums.ELM_CALENDAR_SELECT_MODE_NONE
ELM_CALENDAR_SELECT_MODE_ONDEMAND = enums.ELM_CALENDAR_SELECT_MODE_ONDEMAND
ELM_CALENDAR_SELECTABLE_NONE = enums.ELM_CALENDAR_SELECTABLE_NONE
ELM_CALENDAR_SELECTABLE_YEAR = enums.ELM_CALENDAR_SELECTABLE_YEAR
ELM_CALENDAR_SELECTABLE_MONTH = enums.ELM_CALENDAR_SELECTABLE_MONTH
ELM_CALENDAR_SELECTABLE_DAY = enums.ELM_CALENDAR_SELECTABLE_DAY
ELM_DAY_SUNDAY = enums.ELM_DAY_SUNDAY
ELM_DAY_MONDAY = enums.ELM_DAY_MONDAY
ELM_DAY_TUESDAY = enums.ELM_DAY_TUESDAY
ELM_DAY_WEDNESDAY = enums.ELM_DAY_WEDNESDAY
ELM_DAY_THURSDAY = enums.ELM_DAY_THURSDAY
ELM_DAY_FRIDAY = enums.ELM_DAY_FRIDAY
ELM_DAY_SATURDAY = enums.ELM_DAY_SATURDAY
ELM_DAY_LAST = enums.ELM_DAY_LAST
ELM_CLOCK_EDIT_DEFAULT = enums.ELM_CLOCK_EDIT_DEFAULT
ELM_CLOCK_EDIT_HOUR_DECIMAL = enums.ELM_CLOCK_EDIT_HOUR_DECIMAL
ELM_CLOCK_EDIT_HOUR_UNIT = enums.ELM_CLOCK_EDIT_HOUR_UNIT
ELM_CLOCK_EDIT_MIN_DECIMAL = enums.ELM_CLOCK_EDIT_MIN_DECIMAL
ELM_CLOCK_EDIT_MIN_UNIT = enums.ELM_CLOCK_EDIT_MIN_UNIT
ELM_CLOCK_EDIT_SEC_DECIMAL = enums.ELM_CLOCK_EDIT_SEC_DECIMAL
ELM_CLOCK_EDIT_SEC_UNIT = enums.ELM_CLOCK_EDIT_SEC_UNIT
ELM_CLOCK_EDIT_ALL = enums.ELM_CLOCK_EDIT_ALL
ELM_COLORSELECTOR_PALETTE = enums.ELM_COLORSELECTOR_PALETTE
ELM_COLORSELECTOR_COMPONENTS = enums.ELM_COLORSELECTOR_COMPONENTS
ELM_COLORSELECTOR_BOTH = enums.ELM_COLORSELECTOR_BOTH
ELM_SOFTCURSOR_MODE_AUTO = enums.ELM_SOFTCURSOR_MODE_AUTO
ELM_SOFTCURSOR_MODE_ON = enums.ELM_SOFTCURSOR_MODE_ON
ELM_SOFTCURSOR_MODE_OFF = enums.ELM_SOFTCURSOR_MODE_OFF
ELM_SLIDER_INDICATOR_VISIBLE_MODE_DEFAULT = enums.ELM_SLIDER_INDICATOR_VISIBLE_MODE_DEFAULT
ELM_SLIDER_INDICATOR_VISIBLE_MODE_ALWAYS = enums.ELM_SLIDER_INDICATOR_VISIBLE_MODE_ALWAYS
ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS = enums.ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS
ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE = enums.ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE
ELM_CTXPOPUP_DIRECTION_DOWN = enums.ELM_CTXPOPUP_DIRECTION_DOWN
ELM_CTXPOPUP_DIRECTION_RIGHT = enums.ELM_CTXPOPUP_DIRECTION_RIGHT
ELM_CTXPOPUP_DIRECTION_LEFT = enums.ELM_CTXPOPUP_DIRECTION_LEFT
ELM_CTXPOPUP_DIRECTION_UP = enums.ELM_CTXPOPUP_DIRECTION_UP
ELM_CTXPOPUP_DIRECTION_UNKNOWN = enums.ELM_CTXPOPUP_DIRECTION_UNKNOWN
ELM_DATETIME_YEAR = enums.ELM_DATETIME_YEAR
ELM_DATETIME_MONTH = enums.ELM_DATETIME_MONTH
ELM_DATETIME_DATE = enums.ELM_DATETIME_DATE
ELM_DATETIME_HOUR = enums.ELM_DATETIME_HOUR
ELM_DATETIME_MINUTE = enums.ELM_DATETIME_MINUTE
ELM_DATETIME_AMPM = enums.ELM_DATETIME_AMPM
ELM_DAYSELECTOR_SUN = enums.ELM_DAYSELECTOR_SUN
ELM_DAYSELECTOR_MON = enums.ELM_DAYSELECTOR_MON
ELM_DAYSELECTOR_TUE = enums.ELM_DAYSELECTOR_TUE
ELM_DAYSELECTOR_WED = enums.ELM_DAYSELECTOR_WED
ELM_DAYSELECTOR_THU = enums.ELM_DAYSELECTOR_THU
ELM_DAYSELECTOR_FRI = enums.ELM_DAYSELECTOR_FRI
ELM_DAYSELECTOR_SAT = enums.ELM_DAYSELECTOR_SAT
ELM_DAYSELECTOR_MAX = enums.ELM_DAYSELECTOR_MAX
ELM_AUTOCAPITAL_TYPE_NONE = enums.ELM_AUTOCAPITAL_TYPE_NONE
ELM_AUTOCAPITAL_TYPE_WORD = enums.ELM_AUTOCAPITAL_TYPE_WORD
ELM_AUTOCAPITAL_TYPE_SENTENCE = enums.ELM_AUTOCAPITAL_TYPE_SENTENCE
ELM_AUTOCAPITAL_TYPE_ALLCHARACTER = enums.ELM_AUTOCAPITAL_TYPE_ALLCHARACTER
ELM_CNP_MODE_MARKUP = enums.ELM_CNP_MODE_MARKUP
ELM_CNP_MODE_NO_IMAGE = enums.ELM_CNP_MODE_NO_IMAGE
ELM_CNP_MODE_PLAINTEXT = enums.ELM_CNP_MODE_PLAINTEXT
ELM_INPUT_HINT_NONE = enums.ELM_INPUT_HINT_NONE
ELM_INPUT_HINT_AUTO_COMPLETE = enums.ELM_INPUT_HINT_AUTO_COMPLETE
ELM_INPUT_HINT_SENSITIVE_DATA = enums.ELM_INPUT_HINT_SENSITIVE_DATA
ELM_INPUT_PANEL_LANG_AUTOMATIC = enums.ELM_INPUT_PANEL_LANG_AUTOMATIC
ELM_INPUT_PANEL_LANG_ALPHABET = enums.ELM_INPUT_PANEL_LANG_ALPHABET
ELM_INPUT_PANEL_LAYOUT_NORMAL = enums.ELM_INPUT_PANEL_LAYOUT_NORMAL
ELM_INPUT_PANEL_LAYOUT_NUMBER = enums.ELM_INPUT_PANEL_LAYOUT_NUMBER
ELM_INPUT_PANEL_LAYOUT_EMAIL = enums.ELM_INPUT_PANEL_LAYOUT_EMAIL
ELM_INPUT_PANEL_LAYOUT_URL = enums.ELM_INPUT_PANEL_LAYOUT_URL
ELM_INPUT_PANEL_LAYOUT_PHONENUMBER = enums.ELM_INPUT_PANEL_LAYOUT_PHONENUMBER
ELM_INPUT_PANEL_LAYOUT_IP = enums.ELM_INPUT_PANEL_LAYOUT_IP
ELM_INPUT_PANEL_LAYOUT_MONTH = enums.ELM_INPUT_PANEL_LAYOUT_MONTH
ELM_INPUT_PANEL_LAYOUT_NUMBERONLY = enums.ELM_INPUT_PANEL_LAYOUT_NUMBERONLY
ELM_INPUT_PANEL_LAYOUT_INVALID = enums.ELM_INPUT_PANEL_LAYOUT_INVALID
ELM_INPUT_PANEL_LAYOUT_HEX = enums.ELM_INPUT_PANEL_LAYOUT_HEX
ELM_INPUT_PANEL_LAYOUT_TERMINAL = enums.ELM_INPUT_PANEL_LAYOUT_TERMINAL
ELM_INPUT_PANEL_LAYOUT_PASSWORD = enums.ELM_INPUT_PANEL_LAYOUT_PASSWORD
ELM_INPUT_PANEL_LAYOUT_DATETIME = enums.ELM_INPUT_PANEL_LAYOUT_DATETIME
ELM_INPUT_PANEL_LAYOUT_EMOTICON = enums.ELM_INPUT_PANEL_LAYOUT_EMOTICON
ELM_INPUT_PANEL_LAYOUT_VOICE = enums.ELM_INPUT_PANEL_LAYOUT_VOICE
ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_NORMAL = enums.ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_NORMAL
ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_FILENAME = enums.ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_FILENAME
ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_PERSON_NAME = enums.ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_PERSON_NAME
ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_NORMAL = enums.ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_NORMAL
ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED = enums.ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED
ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_DECIMAL = enums.ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_DECIMAL
ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED_AND_DECIMAL = enums.ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED_AND_DECIMAL
ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NORMAL = enums.ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NORMAL
ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NUMBERONLY = enums.ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NUMBERONLY
ELM_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT = enums.ELM_INPUT_PANEL_RETURN_KEY_TYPE_DEFAULT
ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE = enums.ELM_INPUT_PANEL_RETURN_KEY_TYPE_DONE
ELM_INPUT_PANEL_RETURN_KEY_TYPE_GO = enums.ELM_INPUT_PANEL_RETURN_KEY_TYPE_GO
ELM_INPUT_PANEL_RETURN_KEY_TYPE_JOIN = enums.ELM_INPUT_PANEL_RETURN_KEY_TYPE_JOIN
ELM_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN = enums.ELM_INPUT_PANEL_RETURN_KEY_TYPE_LOGIN
ELM_INPUT_PANEL_RETURN_KEY_TYPE_NEXT = enums.ELM_INPUT_PANEL_RETURN_KEY_TYPE_NEXT
ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH = enums.ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEARCH
ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEND = enums.ELM_INPUT_PANEL_RETURN_KEY_TYPE_SEND
ELM_INPUT_PANEL_RETURN_KEY_TYPE_SIGNIN = enums.ELM_INPUT_PANEL_RETURN_KEY_TYPE_SIGNIN
ELM_TEXT_FORMAT_PLAIN_UTF8 = enums.ELM_TEXT_FORMAT_PLAIN_UTF8
ELM_TEXT_FORMAT_MARKUP_UTF8 = enums.ELM_TEXT_FORMAT_MARKUP_UTF8
ELM_WRAP_NONE = enums.ELM_WRAP_NONE
ELM_WRAP_CHAR = enums.ELM_WRAP_CHAR
ELM_WRAP_WORD = enums.ELM_WRAP_WORD
ELM_WRAP_MIXED = enums.ELM_WRAP_MIXED
ELM_FILESELECTOR_LIST = enums.ELM_FILESELECTOR_LIST
ELM_FILESELECTOR_GRID = enums.ELM_FILESELECTOR_GRID
ELM_FILESELECTOR_SORT_BY_FILENAME_ASC = enums.ELM_FILESELECTOR_SORT_BY_FILENAME_ASC
ELM_FILESELECTOR_SORT_BY_FILENAME_DESC = enums.ELM_FILESELECTOR_SORT_BY_FILENAME_DESC
ELM_FILESELECTOR_SORT_BY_TYPE_ASC = enums.ELM_FILESELECTOR_SORT_BY_TYPE_ASC
ELM_FILESELECTOR_SORT_BY_TYPE_DESC = enums.ELM_FILESELECTOR_SORT_BY_TYPE_DESC
ELM_FILESELECTOR_SORT_BY_SIZE_ASC = enums.ELM_FILESELECTOR_SORT_BY_SIZE_ASC
ELM_FILESELECTOR_SORT_BY_SIZE_DESC = enums.ELM_FILESELECTOR_SORT_BY_SIZE_DESC
ELM_FILESELECTOR_SORT_BY_MODIFIED_ASC = enums.ELM_FILESELECTOR_SORT_BY_MODIFIED_ASC
ELM_FILESELECTOR_SORT_BY_MODIFIED_DESC = enums.ELM_FILESELECTOR_SORT_BY_MODIFIED_DESC
ELM_FILESELECTOR_SORT_LAST = enums.ELM_FILESELECTOR_SORT_LAST
ELM_FLIP_DIRECTION_UP = enums.ELM_FLIP_DIRECTION_UP
ELM_FLIP_DIRECTION_DOWN = enums.ELM_FLIP_DIRECTION_DOWN
ELM_FLIP_DIRECTION_LEFT = enums.ELM_FLIP_DIRECTION_LEFT
ELM_FLIP_DIRECTION_RIGHT = enums.ELM_FLIP_DIRECTION_RIGHT
ELM_FLIP_INTERACTION_NONE = enums.ELM_FLIP_INTERACTION_NONE
ELM_FLIP_INTERACTION_ROTATE = enums.ELM_FLIP_INTERACTION_ROTATE
ELM_FLIP_INTERACTION_CUBE = enums.ELM_FLIP_INTERACTION_CUBE
ELM_FLIP_INTERACTION_PAGE = enums.ELM_FLIP_INTERACTION_PAGE
ELM_FLIP_ROTATE_Y_CENTER_AXIS = enums.ELM_FLIP_ROTATE_Y_CENTER_AXIS
ELM_FLIP_ROTATE_X_CENTER_AXIS = enums.ELM_FLIP_ROTATE_X_CENTER_AXIS
ELM_FLIP_ROTATE_XZ_CENTER_AXIS = enums.ELM_FLIP_ROTATE_XZ_CENTER_AXIS
ELM_FLIP_ROTATE_YZ_CENTER_AXIS = enums.ELM_FLIP_ROTATE_YZ_CENTER_AXIS
ELM_FLIP_CUBE_LEFT = enums.ELM_FLIP_CUBE_LEFT
ELM_FLIP_CUBE_RIGHT = enums.ELM_FLIP_CUBE_RIGHT
ELM_FLIP_CUBE_UP = enums.ELM_FLIP_CUBE_UP
ELM_FLIP_CUBE_DOWN = enums.ELM_FLIP_CUBE_DOWN
ELM_FLIP_PAGE_LEFT = enums.ELM_FLIP_PAGE_LEFT
ELM_FLIP_PAGE_RIGHT = enums.ELM_FLIP_PAGE_RIGHT
ELM_FLIP_PAGE_UP = enums.ELM_FLIP_PAGE_UP
ELM_FLIP_PAGE_DOWN = enums.ELM_FLIP_PAGE_DOWN
ELM_GENGRID_ITEM_SCROLLTO_NONE = enums.ELM_GENGRID_ITEM_SCROLLTO_NONE
ELM_GENGRID_ITEM_SCROLLTO_IN = enums.ELM_GENGRID_ITEM_SCROLLTO_IN
ELM_GENGRID_ITEM_SCROLLTO_TOP = enums.ELM_GENGRID_ITEM_SCROLLTO_TOP
ELM_GENGRID_ITEM_SCROLLTO_MIDDLE = enums.ELM_GENGRID_ITEM_SCROLLTO_MIDDLE
ELM_GENGRID_ITEM_SCROLLTO_BOTTOM = enums.ELM_GENGRID_ITEM_SCROLLTO_BOTTOM
ELM_GENGRID_REORDER_TYPE_NORMAL = enums.ELM_GENGRID_REORDER_TYPE_NORMAL
ELM_GENGRID_REORDER_TYPE_SWAP = enums.ELM_GENGRID_REORDER_TYPE_SWAP
ELM_GENLIST_ITEM_NONE = enums.ELM_GENLIST_ITEM_NONE
ELM_GENLIST_ITEM_TREE = enums.ELM_GENLIST_ITEM_TREE
ELM_GENLIST_ITEM_GROUP = enums.ELM_GENLIST_ITEM_GROUP
ELM_GENLIST_ITEM_MAX = enums.ELM_GENLIST_ITEM_MAX
ELM_GENLIST_ITEM_FIELD_ALL = enums.ELM_GENLIST_ITEM_FIELD_ALL
ELM_GENLIST_ITEM_FIELD_TEXT = enums.ELM_GENLIST_ITEM_FIELD_TEXT
ELM_GENLIST_ITEM_FIELD_CONTENT = enums.ELM_GENLIST_ITEM_FIELD_CONTENT
ELM_GENLIST_ITEM_FIELD_STATE = enums.ELM_GENLIST_ITEM_FIELD_STATE
ELM_GENLIST_ITEM_SCROLLTO_NONE = enums.ELM_GENLIST_ITEM_SCROLLTO_NONE
ELM_GENLIST_ITEM_SCROLLTO_IN = enums.ELM_GENLIST_ITEM_SCROLLTO_IN
ELM_GENLIST_ITEM_SCROLLTO_TOP = enums.ELM_GENLIST_ITEM_SCROLLTO_TOP
ELM_GENLIST_ITEM_SCROLLTO_MIDDLE = enums.ELM_GENLIST_ITEM_SCROLLTO_MIDDLE
ELM_GENLIST_ITEM_SCROLLTO_BOTTOM = enums.ELM_GENLIST_ITEM_SCROLLTO_BOTTOM
ELM_GESTURE_STATE_UNDEFINED = enums.ELM_GESTURE_STATE_UNDEFINED
ELM_GESTURE_STATE_START = enums.ELM_GESTURE_STATE_START
ELM_GESTURE_STATE_MOVE = enums.ELM_GESTURE_STATE_MOVE
ELM_GESTURE_STATE_END = enums.ELM_GESTURE_STATE_END
ELM_GESTURE_STATE_ABORT = enums.ELM_GESTURE_STATE_ABORT
ELM_GESTURE_FIRST = enums.ELM_GESTURE_FIRST
ELM_GESTURE_N_TAPS = enums.ELM_GESTURE_N_TAPS
ELM_GESTURE_N_LONG_TAPS = enums.ELM_GESTURE_N_LONG_TAPS
ELM_GESTURE_N_DOUBLE_TAPS = enums.ELM_GESTURE_N_DOUBLE_TAPS
ELM_GESTURE_N_TRIPLE_TAPS = enums.ELM_GESTURE_N_TRIPLE_TAPS
ELM_GESTURE_MOMENTUM = enums.ELM_GESTURE_MOMENTUM
ELM_GESTURE_N_LINES = enums.ELM_GESTURE_N_LINES
ELM_GESTURE_N_FLICKS = enums.ELM_GESTURE_N_FLICKS
ELM_GESTURE_ZOOM = enums.ELM_GESTURE_ZOOM
ELM_GESTURE_ROTATE = enums.ELM_GESTURE_ROTATE
ELM_GESTURE_LAST = enums.ELM_GESTURE_LAST
ELM_HOVER_AXIS_NONE = enums.ELM_HOVER_AXIS_NONE
ELM_HOVER_AXIS_HORIZONTAL = enums.ELM_HOVER_AXIS_HORIZONTAL
ELM_HOVER_AXIS_VERTICAL = enums.ELM_HOVER_AXIS_VERTICAL
ELM_HOVER_AXIS_BOTH = enums.ELM_HOVER_AXIS_BOTH
ELM_ICON_LOOKUP_FDO_THEME = enums.ELM_ICON_LOOKUP_FDO_THEME
ELM_ICON_LOOKUP_THEME_FDO = enums.ELM_ICON_LOOKUP_THEME_FDO
ELM_ICON_LOOKUP_FDO = enums.ELM_ICON_LOOKUP_FDO
ELM_ICON_LOOKUP_THEME = enums.ELM_ICON_LOOKUP_THEME
ELM_ICON_NONE = enums.ELM_ICON_NONE
ELM_ICON_FILE = enums.ELM_ICON_FILE
ELM_ICON_STANDARD = enums.ELM_ICON_STANDARD
ELM_IMAGE_ORIENT_NONE = enums.ELM_IMAGE_ORIENT_NONE
ELM_IMAGE_ORIENT_0 = enums.ELM_IMAGE_ORIENT_0
ELM_IMAGE_ROTATE_90 = enums.ELM_IMAGE_ROTATE_90
ELM_IMAGE_ROTATE_180 = enums.ELM_IMAGE_ROTATE_180
ELM_IMAGE_ROTATE_270 = enums.ELM_IMAGE_ROTATE_270
ELM_IMAGE_FLIP_HORIZONTAL = enums.ELM_IMAGE_FLIP_HORIZONTAL
ELM_IMAGE_FLIP_VERTICAL = enums.ELM_IMAGE_FLIP_VERTICAL
ELM_IMAGE_FLIP_TRANSPOSE = enums.ELM_IMAGE_FLIP_TRANSPOSE
ELM_IMAGE_FLIP_TRANSVERSE = enums.ELM_IMAGE_FLIP_TRANSVERSE
ELM_WRAP_NONE = enums.ELM_WRAP_NONE
ELM_WRAP_CHAR = enums.ELM_WRAP_CHAR
ELM_WRAP_WORD = enums.ELM_WRAP_WORD
ELM_WRAP_MIXED = enums.ELM_WRAP_MIXED
ELM_LABEL_SLIDE_MODE_NONE = enums.ELM_LABEL_SLIDE_MODE_NONE
ELM_LABEL_SLIDE_MODE_AUTO = enums.ELM_LABEL_SLIDE_MODE_AUTO
ELM_LABEL_SLIDE_MODE_ALWAYS = enums.ELM_LABEL_SLIDE_MODE_ALWAYS
ELM_LIST_COMPRESS = enums.ELM_LIST_COMPRESS
ELM_LIST_SCROLL = enums.ELM_LIST_SCROLL
ELM_LIST_LIMIT = enums.ELM_LIST_LIMIT
ELM_LIST_EXPAND = enums.ELM_LIST_EXPAND
ELM_MAP_OVERLAY_TYPE_NONE = enums.ELM_MAP_OVERLAY_TYPE_NONE
ELM_MAP_OVERLAY_TYPE_DEFAULT = enums.ELM_MAP_OVERLAY_TYPE_DEFAULT
ELM_MAP_OVERLAY_TYPE_CLASS = enums.ELM_MAP_OVERLAY_TYPE_CLASS
ELM_MAP_OVERLAY_TYPE_GROUP = enums.ELM_MAP_OVERLAY_TYPE_GROUP
ELM_MAP_OVERLAY_TYPE_BUBBLE = enums.ELM_MAP_OVERLAY_TYPE_BUBBLE
ELM_MAP_OVERLAY_TYPE_ROUTE = enums.ELM_MAP_OVERLAY_TYPE_ROUTE
ELM_MAP_OVERLAY_TYPE_LINE = enums.ELM_MAP_OVERLAY_TYPE_LINE
ELM_MAP_OVERLAY_TYPE_POLYGON = enums.ELM_MAP_OVERLAY_TYPE_POLYGON
ELM_MAP_OVERLAY_TYPE_CIRCLE = enums.ELM_MAP_OVERLAY_TYPE_CIRCLE
ELM_MAP_OVERLAY_TYPE_SCALE = enums.ELM_MAP_OVERLAY_TYPE_SCALE
ELM_MAP_ROUTE_METHOD_FASTEST = enums.ELM_MAP_ROUTE_METHOD_FASTEST
ELM_MAP_ROUTE_METHOD_SHORTEST = enums.ELM_MAP_ROUTE_METHOD_SHORTEST
ELM_MAP_ROUTE_METHOD_LAST = enums.ELM_MAP_ROUTE_METHOD_LAST
ELM_MAP_ROUTE_TYPE_MOTOCAR = enums.ELM_MAP_ROUTE_TYPE_MOTOCAR
ELM_MAP_ROUTE_TYPE_BICYCLE = enums.ELM_MAP_ROUTE_TYPE_BICYCLE
ELM_MAP_ROUTE_TYPE_FOOT = enums.ELM_MAP_ROUTE_TYPE_FOOT
ELM_MAP_ROUTE_TYPE_LAST = enums.ELM_MAP_ROUTE_TYPE_LAST
ELM_MAP_SOURCE_TYPE_TILE = enums.ELM_MAP_SOURCE_TYPE_TILE
ELM_MAP_SOURCE_TYPE_ROUTE = enums.ELM_MAP_SOURCE_TYPE_ROUTE
ELM_MAP_SOURCE_TYPE_NAME = enums.ELM_MAP_SOURCE_TYPE_NAME
ELM_MAP_SOURCE_TYPE_LAST = enums.ELM_MAP_SOURCE_TYPE_LAST
ELM_MAP_ZOOM_MODE_MANUAL = enums.ELM_MAP_ZOOM_MODE_MANUAL
ELM_MAP_ZOOM_MODE_AUTO_FIT = enums.ELM_MAP_ZOOM_MODE_AUTO_FIT
ELM_MAP_ZOOM_MODE_AUTO_FILL = enums.ELM_MAP_ZOOM_MODE_AUTO_FILL
ELM_MAP_ZOOM_MODE_LAST = enums.ELM_MAP_ZOOM_MODE_LAST
ELM_SYS_NOTIFY_CLOSED_EXPIRED = enums.ELM_SYS_NOTIFY_CLOSED_EXPIRED
ELM_SYS_NOTIFY_CLOSED_DISMISSED = enums.ELM_SYS_NOTIFY_CLOSED_DISMISSED
ELM_SYS_NOTIFY_CLOSED_REQUESTED = enums.ELM_SYS_NOTIFY_CLOSED_REQUESTED
ELM_SYS_NOTIFY_CLOSED_UNDEFINED = enums.ELM_SYS_NOTIFY_CLOSED_UNDEFINED
ELM_NOTIFY_ORIENT_TOP = enums.ELM_NOTIFY_ORIENT_TOP
ELM_NOTIFY_ORIENT_CENTER = enums.ELM_NOTIFY_ORIENT_CENTER
ELM_NOTIFY_ORIENT_BOTTOM = enums.ELM_NOTIFY_ORIENT_BOTTOM
ELM_NOTIFY_ORIENT_LEFT = enums.ELM_NOTIFY_ORIENT_LEFT
ELM_NOTIFY_ORIENT_RIGHT = enums.ELM_NOTIFY_ORIENT_RIGHT
ELM_NOTIFY_ORIENT_TOP_LEFT = enums.ELM_NOTIFY_ORIENT_TOP_LEFT
ELM_NOTIFY_ORIENT_TOP_RIGHT = enums.ELM_NOTIFY_ORIENT_TOP_RIGHT
ELM_NOTIFY_ORIENT_BOTTOM_LEFT = enums.ELM_NOTIFY_ORIENT_BOTTOM_LEFT
ELM_NOTIFY_ORIENT_BOTTOM_RIGHT = enums.ELM_NOTIFY_ORIENT_BOTTOM_RIGHT
ELM_NOTIFY_ORIENT_LAST = enums.ELM_NOTIFY_ORIENT_LAST
ELM_OBJECT_SELECT_MODE_DEFAULT = enums.ELM_OBJECT_SELECT_MODE_DEFAULT
ELM_OBJECT_SELECT_MODE_ALWAYS = enums.ELM_OBJECT_SELECT_MODE_ALWAYS
ELM_OBJECT_SELECT_MODE_NONE = enums.ELM_OBJECT_SELECT_MODE_NONE
ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY = enums.ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY
ELM_OBJECT_SELECT_MODE_MAX = enums.ELM_OBJECT_SELECT_MODE_MAX
ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT = enums.ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT
ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL = enums.ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL
ELM_OBJECT_MULTI_SELECT_MODE_MAX = enums.ELM_OBJECT_MULTI_SELECT_MODE_MAX
ELM_OBJECT_LAYER_BACKGROUND = enums.ELM_OBJECT_LAYER_BACKGROUND
ELM_OBJECT_LAYER_DEFAULT = enums.ELM_OBJECT_LAYER_DEFAULT
ELM_OBJECT_LAYER_FOCUS = enums.ELM_OBJECT_LAYER_FOCUS
ELM_OBJECT_LAYER_TOOLTIP = enums.ELM_OBJECT_LAYER_TOOLTIP
ELM_OBJECT_LAYER_CURSOR = enums.ELM_OBJECT_LAYER_CURSOR
ELM_OBJECT_LAYER_LAST = enums.ELM_OBJECT_LAYER_LAST
ELM_PANEL_ORIENT_TOP = enums.ELM_PANEL_ORIENT_TOP
ELM_PANEL_ORIENT_BOTTOM = enums.ELM_PANEL_ORIENT_BOTTOM
ELM_PANEL_ORIENT_LEFT = enums.ELM_PANEL_ORIENT_LEFT
ELM_PANEL_ORIENT_RIGHT = enums.ELM_PANEL_ORIENT_RIGHT
ELM_PHOTOCAM_ZOOM_MODE_MANUAL = enums.ELM_PHOTOCAM_ZOOM_MODE_MANUAL
ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT = enums.ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT
ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL = enums.ELM_PHOTOCAM_ZOOM_MODE_AUTO_FILL
ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT_IN = enums.ELM_PHOTOCAM_ZOOM_MODE_AUTO_FIT_IN
ELM_PHOTOCAM_ZOOM_MODE_LAST = enums.ELM_PHOTOCAM_ZOOM_MODE_LAST
ELM_POPUP_ORIENT_TOP = enums.ELM_POPUP_ORIENT_TOP
ELM_POPUP_ORIENT_CENTER = enums.ELM_POPUP_ORIENT_CENTER
ELM_POPUP_ORIENT_BOTTOM = enums.ELM_POPUP_ORIENT_BOTTOM
ELM_POPUP_ORIENT_LEFT = enums.ELM_POPUP_ORIENT_LEFT
ELM_POPUP_ORIENT_RIGHT = enums.ELM_POPUP_ORIENT_RIGHT
ELM_POPUP_ORIENT_TOP_LEFT = enums.ELM_POPUP_ORIENT_TOP_LEFT
ELM_POPUP_ORIENT_TOP_RIGHT = enums.ELM_POPUP_ORIENT_TOP_RIGHT
ELM_POPUP_ORIENT_BOTTOM_LEFT = enums.ELM_POPUP_ORIENT_BOTTOM_LEFT
ELM_POPUP_ORIENT_BOTTOM_RIGHT = enums.ELM_POPUP_ORIENT_BOTTOM_RIGHT
ELM_POPUP_ORIENT_LAST = enums.ELM_POPUP_ORIENT_LAST
ELM_SCROLLER_POLICY_AUTO = enums.ELM_SCROLLER_POLICY_AUTO
ELM_SCROLLER_POLICY_ON = enums.ELM_SCROLLER_POLICY_ON
ELM_SCROLLER_POLICY_OFF = enums.ELM_SCROLLER_POLICY_OFF
ELM_SCROLLER_SINGLE_DIRECTION_NONE = enums.ELM_SCROLLER_SINGLE_DIRECTION_NONE
ELM_SCROLLER_SINGLE_DIRECTION_SOFT = enums.ELM_SCROLLER_SINGLE_DIRECTION_SOFT
ELM_SCROLLER_SINGLE_DIRECTION_HARD = enums.ELM_SCROLLER_SINGLE_DIRECTION_HARD
ELM_SCROLLER_SINGLE_DIRECTION_LAST = enums.ELM_SCROLLER_SINGLE_DIRECTION_LAST
ELM_SCROLLER_MOVEMENT_NO_BLOCK = enums.ELM_SCROLLER_MOVEMENT_NO_BLOCK
ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL = enums.ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL
ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL = enums.ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL
ELM_SLIDER_INDICATOR_VISIBLE_MODE_DEFAULT = enums.ELM_SLIDER_INDICATOR_VISIBLE_MODE_DEFAULT
ELM_SLIDER_INDICATOR_VISIBLE_MODE_ALWAYS = enums.ELM_SLIDER_INDICATOR_VISIBLE_MODE_ALWAYS
ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS = enums.ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS
ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE = enums.ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE
ELM_THUMB_ANIMATION_START = enums.ELM_THUMB_ANIMATION_START
ELM_THUMB_ANIMATION_LOOP = enums.ELM_THUMB_ANIMATION_LOOP
ELM_THUMB_ANIMATION_STOP = enums.ELM_THUMB_ANIMATION_STOP
ELM_THUMB_ANIMATION_LAST = enums.ELM_THUMB_ANIMATION_LAST
ETHUMB_THUMB_NORMAL = enums.ETHUMB_THUMB_NORMAL
ETHUMB_THUMB_LARGE = enums.ETHUMB_THUMB_LARGE
ETHUMB_THUMB_FDO = enums.ETHUMB_THUMB_FDO
ETHUMB_THUMB_JPEG = enums.ETHUMB_THUMB_JPEG
ETHUMB_THUMB_EET = enums.ETHUMB_THUMB_EET
ETHUMB_THUMB_KEEP_ASPECT = enums.ETHUMB_THUMB_KEEP_ASPECT
ETHUMB_THUMB_IGNORE_ASPECT = enums.ETHUMB_THUMB_IGNORE_ASPECT
ETHUMB_THUMB_CROP = enums.ETHUMB_THUMB_CROP
ETHUMB_THUMB_ORIENT_NONE = enums.ETHUMB_THUMB_ORIENT_NONE
ETHUMB_THUMB_ROTATE_90_CW = enums.ETHUMB_THUMB_ROTATE_90_CW
ETHUMB_THUMB_ROTATE_180 = enums.ETHUMB_THUMB_ROTATE_180
ETHUMB_THUMB_ROTATE_90_CCW = enums.ETHUMB_THUMB_ROTATE_90_CCW
ETHUMB_THUMB_FLIP_HORIZONTAL = enums.ETHUMB_THUMB_FLIP_HORIZONTAL
ETHUMB_THUMB_FLIP_VERTICAL = enums.ETHUMB_THUMB_FLIP_VERTICAL
ETHUMB_THUMB_FLIP_TRANSPOSE = enums.ETHUMB_THUMB_FLIP_TRANSPOSE
ETHUMB_THUMB_FLIP_TRANSVERSE = enums.ETHUMB_THUMB_FLIP_TRANSVERSE
ETHUMB_THUMB_ORIENT_ORIGINAL = enums.ETHUMB_THUMB_ORIENT_ORIGINAL
ELM_TOOLBAR_ITEM_SCROLLTO_NONE = enums.ELM_TOOLBAR_ITEM_SCROLLTO_NONE
ELM_TOOLBAR_ITEM_SCROLLTO_IN = enums.ELM_TOOLBAR_ITEM_SCROLLTO_IN
ELM_TOOLBAR_ITEM_SCROLLTO_FIRST = enums.ELM_TOOLBAR_ITEM_SCROLLTO_FIRST
ELM_TOOLBAR_ITEM_SCROLLTO_MIDDLE = enums.ELM_TOOLBAR_ITEM_SCROLLTO_MIDDLE
ELM_TOOLBAR_ITEM_SCROLLTO_LAST = enums.ELM_TOOLBAR_ITEM_SCROLLTO_LAST
ELM_TOOLBAR_SHRINK_NONE = enums.ELM_TOOLBAR_SHRINK_NONE
ELM_TOOLBAR_SHRINK_HIDE = enums.ELM_TOOLBAR_SHRINK_HIDE
ELM_TOOLBAR_SHRINK_SCROLL = enums.ELM_TOOLBAR_SHRINK_SCROLL
ELM_TOOLBAR_SHRINK_MENU = enums.ELM_TOOLBAR_SHRINK_MENU
ELM_TOOLBAR_SHRINK_EXPAND = enums.ELM_TOOLBAR_SHRINK_EXPAND
ELM_TOOLBAR_SHRINK_LAST = enums.ELM_TOOLBAR_SHRINK_LAST
ELM_TRANSIT_EFFECT_FLIP_AXIS_X = enums.ELM_TRANSIT_EFFECT_FLIP_AXIS_X
ELM_TRANSIT_EFFECT_FLIP_AXIS_Y = enums.ELM_TRANSIT_EFFECT_FLIP_AXIS_Y
ELM_TRANSIT_EFFECT_WIPE_DIR_LEFT = enums.ELM_TRANSIT_EFFECT_WIPE_DIR_LEFT
ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT = enums.ELM_TRANSIT_EFFECT_WIPE_DIR_RIGHT
ELM_TRANSIT_EFFECT_WIPE_DIR_UP = enums.ELM_TRANSIT_EFFECT_WIPE_DIR_UP
ELM_TRANSIT_EFFECT_WIPE_DIR_DOWN = enums.ELM_TRANSIT_EFFECT_WIPE_DIR_DOWN
ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE = enums.ELM_TRANSIT_EFFECT_WIPE_TYPE_HIDE
ELM_TRANSIT_EFFECT_WIPE_TYPE_SHOW = enums.ELM_TRANSIT_EFFECT_WIPE_TYPE_SHOW
ELM_TRANSIT_TWEEN_MODE_LINEAR = enums.ELM_TRANSIT_TWEEN_MODE_LINEAR
ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL = enums.ELM_TRANSIT_TWEEN_MODE_SINUSOIDAL
ELM_TRANSIT_TWEEN_MODE_DECELERATE = enums.ELM_TRANSIT_TWEEN_MODE_DECELERATE
ELM_TRANSIT_TWEEN_MODE_ACCELERATE = enums.ELM_TRANSIT_TWEEN_MODE_ACCELERATE
ELM_TRANSIT_TWEEN_MODE_DIVISOR_INTERP = enums.ELM_TRANSIT_TWEEN_MODE_DIVISOR_INTERP
ELM_TRANSIT_TWEEN_MODE_BOUNCE = enums.ELM_TRANSIT_TWEEN_MODE_BOUNCE
ELM_TRANSIT_TWEEN_MODE_SPRING = enums.ELM_TRANSIT_TWEEN_MODE_SPRING
ELM_TRANSIT_TWEEN_MODE_BEZIER_CURVE = enums.ELM_TRANSIT_TWEEN_MODE_BEZIER_CURVE
ELM_WEB_WINDOW_FEATURE_TOOLBAR = enums.ELM_WEB_WINDOW_FEATURE_TOOLBAR
ELM_WEB_WINDOW_FEATURE_STATUSBAR = enums.ELM_WEB_WINDOW_FEATURE_STATUSBAR
ELM_WEB_WINDOW_FEATURE_SCROLLBARS = enums.ELM_WEB_WINDOW_FEATURE_SCROLLBARS
ELM_WEB_WINDOW_FEATURE_MENUBAR = enums.ELM_WEB_WINDOW_FEATURE_MENUBAR
ELM_WEB_WINDOW_FEATURE_LOCATIONBAR = enums.ELM_WEB_WINDOW_FEATURE_LOCATIONBAR
ELM_WEB_WINDOW_FEATURE_FULLSCREEN = enums.ELM_WEB_WINDOW_FEATURE_FULLSCREEN
ELM_WEB_ZOOM_MODE_MANUAL = enums.ELM_WEB_ZOOM_MODE_MANUAL
ELM_WEB_ZOOM_MODE_AUTO_FIT = enums.ELM_WEB_ZOOM_MODE_AUTO_FIT
ELM_WEB_ZOOM_MODE_AUTO_FILL = enums.ELM_WEB_ZOOM_MODE_AUTO_FILL
ELM_WIN_UNKNOWN = enums.ELM_WIN_UNKNOWN
ELM_WIN_BASIC = enums.ELM_WIN_BASIC
ELM_WIN_DIALOG_BASIC = enums.ELM_WIN_DIALOG_BASIC
ELM_WIN_DESKTOP = enums.ELM_WIN_DESKTOP
ELM_WIN_DOCK = enums.ELM_WIN_DOCK
ELM_WIN_TOOLBAR = enums.ELM_WIN_TOOLBAR
ELM_WIN_MENU = enums.ELM_WIN_MENU
ELM_WIN_UTILITY = enums.ELM_WIN_UTILITY
ELM_WIN_SPLASH = enums.ELM_WIN_SPLASH
ELM_WIN_DROPDOWN_MENU = enums.ELM_WIN_DROPDOWN_MENU
ELM_WIN_POPUP_MENU = enums.ELM_WIN_POPUP_MENU
ELM_WIN_TOOLTIP = enums.ELM_WIN_TOOLTIP
ELM_WIN_NOTIFICATION = enums.ELM_WIN_NOTIFICATION
ELM_WIN_COMBO = enums.ELM_WIN_COMBO
ELM_WIN_DND = enums.ELM_WIN_DND
ELM_WIN_INLINED_IMAGE = enums.ELM_WIN_INLINED_IMAGE
ELM_WIN_SOCKET_IMAGE = enums.ELM_WIN_SOCKET_IMAGE
ELM_WIN_INDICATOR_UNKNOWN = enums.ELM_WIN_INDICATOR_UNKNOWN
ELM_WIN_INDICATOR_HIDE = enums.ELM_WIN_INDICATOR_HIDE
ELM_WIN_INDICATOR_SHOW = enums.ELM_WIN_INDICATOR_SHOW
ELM_WIN_INDICATOR_OPACITY_UNKNOWN = enums.ELM_WIN_INDICATOR_OPACITY_UNKNOWN
ELM_WIN_INDICATOR_OPAQUE = enums.ELM_WIN_INDICATOR_OPAQUE
ELM_WIN_INDICATOR_TRANSLUCENT = enums.ELM_WIN_INDICATOR_TRANSLUCENT
ELM_WIN_INDICATOR_TRANSPARENT = enums.ELM_WIN_INDICATOR_TRANSPARENT
ELM_WIN_KEYBOARD_UNKNOWN = enums.ELM_WIN_KEYBOARD_UNKNOWN
ELM_WIN_KEYBOARD_OFF = enums.ELM_WIN_KEYBOARD_OFF
ELM_WIN_KEYBOARD_ON = enums.ELM_WIN_KEYBOARD_ON
ELM_WIN_KEYBOARD_ALPHA = enums.ELM_WIN_KEYBOARD_ALPHA
ELM_WIN_KEYBOARD_NUMERIC = enums.ELM_WIN_KEYBOARD_NUMERIC
ELM_WIN_KEYBOARD_PIN = enums.ELM_WIN_KEYBOARD_PIN
ELM_WIN_KEYBOARD_PHONE_NUMBER = enums.ELM_WIN_KEYBOARD_PHONE_NUMBER
ELM_WIN_KEYBOARD_HEX = enums.ELM_WIN_KEYBOARD_HEX
ELM_WIN_KEYBOARD_TERMINAL = enums.ELM_WIN_KEYBOARD_TERMINAL
ELM_WIN_KEYBOARD_PASSWORD = enums.ELM_WIN_KEYBOARD_PASSWORD
ELM_WIN_KEYBOARD_IP = enums.ELM_WIN_KEYBOARD_IP
ELM_WIN_KEYBOARD_HOST = enums.ELM_WIN_KEYBOARD_HOST
ELM_WIN_KEYBOARD_FILE = enums.ELM_WIN_KEYBOARD_FILE
ELM_WIN_KEYBOARD_URL = enums.ELM_WIN_KEYBOARD_URL
ELM_WIN_KEYBOARD_KEYPAD = enums.ELM_WIN_KEYBOARD_KEYPAD
ELM_WIN_KEYBOARD_J2ME = enums.ELM_WIN_KEYBOARD_J2ME
ELM_ILLUME_COMMAND_FOCUS_BACK = enums.ELM_ILLUME_COMMAND_FOCUS_BACK
ELM_ILLUME_COMMAND_FOCUS_FORWARD = enums.ELM_ILLUME_COMMAND_FOCUS_FORWARD
ELM_ILLUME_COMMAND_FOCUS_HOME = enums.ELM_ILLUME_COMMAND_FOCUS_HOME
ELM_ILLUME_COMMAND_CLOSE = enums.ELM_ILLUME_COMMAND_CLOSE
include "elementary_cdef.pxi"
elm_log = add_logger("efl.elementary")
cdef int PY_EFL_ELM_LOG_DOMAIN = elm_log.eina_log_domain
@ -107,8 +701,12 @@ def init():
not carry any penalty though.
"""
EINA_LOG_DOM_INFO(PY_EFL_ELM_LOG_DOMAIN,
"Initializing efl.elementary", NULL)
EINA_LOG_DOM_INFO(PY_EFL_ELM_LOG_DOMAIN, "Initializing efl.elementary")
# Force Edje object type to be always available, since we cannot
# anticipate when Elementary is going to return a pointer to one.
import efl.edje
# argc and argv are currently used by EFL to support app restart
# and binary relocation. These are probably not useful to us but we
@ -155,18 +753,17 @@ def shutdown():
not carry any penalty though.
"""
EINA_LOG_DOM_INFO(PY_EFL_ELM_LOG_DOMAIN,
"Shutting down efl.elementary", NULL)
EINA_LOG_DOM_INFO(PY_EFL_ELM_LOG_DOMAIN, "Shutting down efl.elementary")
return elm_shutdown()
init()
atexit.register(shutdown)
_event_mapping_register(ELM_EVENT_CONFIG_ALL_CHANGED, ConfigAllChanged)
_event_mapping_register(ELM_EVENT_POLICY_CHANGED, PolicyChanged)
_event_mapping_register(ELM_EVENT_PROCESS_BACKGROUND, ProcessBackground)
_event_mapping_register(ELM_EVENT_PROCESS_FOREGROUND, ProcessForeground)
_event_mapping_register(enums.ELM_EVENT_CONFIG_ALL_CHANGED, ConfigAllChanged)
_event_mapping_register(enums.ELM_EVENT_POLICY_CHANGED, PolicyChanged)
_event_mapping_register(enums.ELM_EVENT_PROCESS_BACKGROUND, ProcessBackground)
_event_mapping_register(enums.ELM_EVENT_PROCESS_FOREGROUND, ProcessForeground)
cdef void py_elm_sys_notify_send_cb(void *data, unsigned int id):
@ -184,7 +781,7 @@ def on_ethumb_connect(func, *args, **kwargs):
.. versionadded:: 1.14
"""
return EventHandler(ELM_ECORE_EVENT_ETHUMB_CONNECT, func, *args, **kwargs)
return EventHandler(enums.ELM_ECORE_EVENT_ETHUMB_CONNECT, func, *args, **kwargs)
def on_config_all_changed(func, *args, **kwargs):
@ -195,7 +792,7 @@ def on_config_all_changed(func, *args, **kwargs):
.. versionadded:: 1.14
"""
return EventHandler(ELM_EVENT_CONFIG_ALL_CHANGED, func, *args, **kwargs)
return EventHandler(enums.ELM_EVENT_CONFIG_ALL_CHANGED, func, *args, **kwargs)
def on_policy_changed(func, *args, **kwargs):
@ -205,7 +802,7 @@ def on_policy_changed(func, *args, **kwargs):
.. versionadded:: 1.14
"""
return EventHandler(ELM_EVENT_POLICY_CHANGED, func, *args, **kwargs)
return EventHandler(enums.ELM_EVENT_POLICY_CHANGED, func, *args, **kwargs)
def on_process_background(func, *args, **kwargs):
@ -216,7 +813,7 @@ def on_process_background(func, *args, **kwargs):
.. versionadded:: 1.14
"""
return EventHandler(ELM_EVENT_PROCESS_BACKGROUND, func, *args, **kwargs)
return EventHandler(enums.ELM_EVENT_PROCESS_BACKGROUND, func, *args, **kwargs)
def on_process_foreground(func, *args, **kwargs):
@ -227,18 +824,18 @@ def on_process_foreground(func, *args, **kwargs):
.. versionadded:: 1.14
"""
return EventHandler(ELM_EVENT_PROCESS_FOREGROUND, func, *args, **kwargs)
return EventHandler(enums.ELM_EVENT_PROCESS_FOREGROUND, func, *args, **kwargs)
def on_sys_notify_notification_closed(func, *args, **kargs):
return EventHandler(
ELM_EVENT_SYS_NOTIFY_NOTIFICATION_CLOSED, func, *args, **kargs
enums.ELM_EVENT_SYS_NOTIFY_NOTIFICATION_CLOSED, func, *args, **kargs
)
def on_sys_notify_action_invoked(func, *args, **kargs):
return EventHandler(
ELM_EVENT_SYS_NOTIFY_ACTION_INVOKED, func, *args, **kargs
enums.ELM_EVENT_SYS_NOTIFY_ACTION_INVOKED, func, *args, **kargs
)
@ -248,6 +845,10 @@ cdef class FontProperties(object):
cdef Elm_Font_Properties *efp
def __dealloc__(self):
elm_font_properties_free(self.efp)
self.efp = NULL
property name:
""":type: unicode"""
def __set__(self, value):
@ -274,8 +875,7 @@ def run():
running the main (event/processing) loop for Elementary.
"""
EINA_LOG_DOM_DBG(PY_EFL_ELM_LOG_DOMAIN,
"Starting up main loop.", NULL)
EINA_LOG_DOM_DBG(PY_EFL_ELM_LOG_DOMAIN, "Starting up main loop.")
with nogil:
elm_run()
@ -295,8 +895,7 @@ def exit():
for you.
"""
EINA_LOG_DOM_DBG(PY_EFL_ELM_LOG_DOMAIN,
"Ending main loop.", NULL)
EINA_LOG_DOM_DBG(PY_EFL_ELM_LOG_DOMAIN, "Ending main loop.")
elm_exit()
def policy_set(Elm_Policy policy, value):
@ -428,7 +1027,7 @@ def font_properties_get(font not None):
"""
if isinstance(font, unicode): font = PyUnicode_AsUTF8String(font)
cdef FontProperties ret = FontProperties.__new__()
cdef FontProperties ret = FontProperties.__new__(FontProperties)
ret.efp = elm_font_properties_get(<const char *>font)
@ -441,9 +1040,13 @@ def font_properties_free(FontProperties fp):
.. versionadded:: 1.8
.. versionchanged:: 1.19
Changed to no-op as we now do the free automatically when there are
no more references to the FontProperties object
"""
elm_font_properties_free(fp.efp)
Py_DECREF(fp)
pass
def font_fontconfig_name_get(font_name, style = None):
"""Translate a font name, bound to a style, into fontconfig's font names
@ -543,7 +1146,7 @@ def sys_notify_close(unsigned int id):
def sys_notify_send(
unsigned int replaces_id=0,
icon=None, summary=None, body=None,
Elm_Sys_Notify_Urgency urgency=ELM_SYS_NOTIFY_URGENCY_NORMAL,
Elm_Sys_Notify_Urgency urgency=enums.ELM_SYS_NOTIFY_URGENCY_NORMAL,
int timeout=-1, cb=None, cb_data=None
):
"""Sends a notification to the notification server.
@ -585,7 +1188,7 @@ def sys_notify_send(
from cpython cimport PyObject_GetBuffer, PyBuffer_Release, PyBUF_SIMPLE, \
PyObject_CheckBuffer
from efl.utils.deprecated cimport DEPRECATED
from efl.utils.deprecated import DEPRECATED
from efl.utils.conversions cimport *
from efl.eo cimport Eo, object_from_instance
from efl.evas cimport SmartObject, EventKeyDown, EventKeyUp, EventMouseWheel
@ -668,7 +1271,6 @@ include "slider.pxi"
include "slideshow.pxi"
include "spinner.pxi"
#include "store.pxi"
include "systray.pxi"
include "table.pxi"
include "theme.pxi"
include "thumb.pxi"

View File

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

View File

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

View File

@ -1,15 +1,6 @@
from efl.elementary.enums cimport Elm_Actionslider_Pos
cdef extern from "Elementary.h":
cpdef enum Elm_Actionslider_Pos:
ELM_ACTIONSLIDER_NONE
ELM_ACTIONSLIDER_LEFT
ELM_ACTIONSLIDER_CENTER
ELM_ACTIONSLIDER_RIGHT
ELM_ACTIONSLIDER_ALL
ctypedef enum Elm_Actionslider_Pos:
pass
Evas_Object *elm_actionslider_add(Evas_Object *parent)
const char *elm_actionslider_selected_label_get(const Evas_Object *obj)
void elm_actionslider_indicator_pos_set(Evas_Object *obj, Elm_Actionslider_Pos pos)

View File

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

View File

@ -1,15 +1,6 @@
from efl.elementary.enums cimport Elm_Bg_Option
cdef extern from "Elementary.h":
cpdef enum Elm_Bg_Option:
ELM_BG_OPTION_CENTER
ELM_BG_OPTION_SCALE
ELM_BG_OPTION_STRETCH
ELM_BG_OPTION_TILE
ELM_BG_OPTION_LAST
ctypedef enum Elm_Bg_Option:
pass
Evas_Object *elm_bg_add(Evas_Object *parent)
Eina_Bool elm_bg_file_set(Evas_Object *obj, const char *file, const char *group)
void elm_bg_file_get(const Evas_Object *obj, const char **file, const char **group)

View File

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

View File

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

View File

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

View File

@ -1,14 +1,6 @@
from efl.elementary.enums cimport Elm_Bubble_Pos
cdef extern from "Elementary.h":
cpdef enum Elm_Bubble_Pos:
ELM_BUBBLE_POS_TOP_LEFT
ELM_BUBBLE_POS_TOP_RIGHT
ELM_BUBBLE_POS_BOTTOM_LEFT
ELM_BUBBLE_POS_BOTTOM_RIGHT
ctypedef enum Elm_Bubble_Pos:
pass
Evas_Object *elm_bubble_add(Evas_Object *parent)
void elm_bubble_pos_set(Evas_Object *obj, Elm_Bubble_Pos pos)
Elm_Bubble_Pos elm_bubble_pos_get(const Evas_Object *obj)

View File

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

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -53,7 +53,7 @@ cdef class CalendarMark(object):
def __init__(self, evasObject cal, mark_type, mark_time,
Elm_Calendar_Mark_Repeat_Type repeat):
"""CalendarMark(...)
"""
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`
@ -109,7 +109,7 @@ cdef class Calendar(LayoutClass):
"""
def __init__(self, evasObject parent, *args, **kwargs):
"""Calendar(..)
"""
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`
@ -216,6 +216,73 @@ cdef class Calendar(LayoutClass):
time.tm_isdst = tmtup.tm_isdst
elm_calendar_selected_time_set(self.obj, &time)
property date_min:
""" Minimum date on calendar.
:type: datetime.date
.. versionadded:: 1.19
"""
def __get__(self):
cdef const tm *time
time = elm_calendar_date_min_get(self.obj)
if time == NULL:
return None
return date(time.tm_year + 1900,
time.tm_mon + 1,
time.tm_mday)
def __set__(self, min_date):
cdef tm time
tmtup = min_date.timetuple()
time.tm_mday = tmtup.tm_mday
time.tm_mon = tmtup.tm_mon - 1
time.tm_year = tmtup.tm_year - 1900
time.tm_wday = tmtup.tm_wday
time.tm_yday = tmtup.tm_yday
time.tm_isdst = tmtup.tm_isdst
elm_calendar_date_min_set(self.obj, &time)
def date_min_get(self):
return self.date_min
def date_min_set(self, min_date):
self.date_min = min_date
property date_max:
""" Maximum date on calendar.
:type: datetime.date
.. versionadded:: 1.19
"""
def __get__(self):
cdef const tm *time
time = elm_calendar_date_max_get(self.obj)
if time == NULL:
return None
return date(time.tm_year + 1900,
time.tm_mon + 1,
time.tm_mday)
def __set__(self, max_date):
cdef tm time
tmtup = max_date.timetuple()
time.tm_mday = tmtup.tm_mday
time.tm_mon = tmtup.tm_mon - 1
time.tm_year = tmtup.tm_year - 1900
time.tm_wday = tmtup.tm_wday
time.tm_yday = tmtup.tm_yday
time.tm_isdst = tmtup.tm_isdst
elm_calendar_date_max_set(self.obj, &time)
def date_max_get(self):
return self.date_max
def date_max_set(self, max_date):
self.date_max = max_date
# TODO:
# property format_function:
# """Set a function to format the string that will be used to display
@ -391,4 +458,4 @@ cdef class Calendar(LayoutClass):
self._callback_del("display,changed", func)
_object_mapping_register("Elm_Calendar", Calendar)
_object_mapping_register("Elm.Calendar", Calendar)

View File

@ -1,3 +1,6 @@
from efl.elementary.enums cimport Elm_Calendar_Mark_Repeat_Type, \
Elm_Calendar_Select_Mode, Elm_Calendar_Selectable, Elm_Calendar_Weekday
cdef extern from "time.h":
struct tm:
int tm_sec
@ -14,46 +17,6 @@ cdef extern from "time.h":
const char *tm_zone
cdef extern from "Elementary.h":
cpdef enum Elm_Calendar_Mark_Repeat_Type:
ELM_CALENDAR_UNIQUE
ELM_CALENDAR_DAILY
ELM_CALENDAR_WEEKLY
ELM_CALENDAR_MONTHLY
ELM_CALENDAR_ANNUALLY
ELM_CALENDAR_LAST_DAY_OF_MONTH
ctypedef enum Elm_Calendar_Mark_Repeat_Type:
pass
cpdef enum Elm_Calendar_Select_Mode:
ELM_CALENDAR_SELECT_MODE_DEFAULT
ELM_CALENDAR_SELECT_MODE_ALWAYS
ELM_CALENDAR_SELECT_MODE_NONE
ELM_CALENDAR_SELECT_MODE_ONDEMAND
ctypedef enum Elm_Calendar_Select_Mode:
pass
cpdef enum Elm_Calendar_Selectable:
ELM_CALENDAR_SELECTABLE_NONE
ELM_CALENDAR_SELECTABLE_YEAR
ELM_CALENDAR_SELECTABLE_MONTH
ELM_CALENDAR_SELECTABLE_DAY
ctypedef enum Elm_Calendar_Selectable:
pass
cpdef enum Elm_Calendar_Weekday:
ELM_DAY_SUNDAY
ELM_DAY_MONDAY
ELM_DAY_TUESDAY
ELM_DAY_WEDNESDAY
ELM_DAY_THURSDAY
ELM_DAY_FRIDAY
ELM_DAY_SATURDAY
ELM_DAY_LAST
ctypedef enum Elm_Calendar_Weekday:
pass
ctypedef char *(*Elm_Calendar_Format_Cb) (tm *stime)
@ -83,4 +46,7 @@ cdef extern from "Elementary.h":
void elm_calendar_selectable_set(Evas_Object *obj, Elm_Calendar_Selectable selectable)
Elm_Calendar_Selectable elm_calendar_selectable_get(const Evas_Object *obj)
Eina_Bool elm_calendar_displayed_time_get(const Evas_Object *obj, tm *displayed_time)
const tm * elm_calendar_date_min_get(const Evas_Object *obj)
void elm_calendar_date_min_set(Evas_Object *obj, const tm *min)
const tm * elm_calendar_date_max_get(const Evas_Object *obj)
void elm_calendar_date_max_set(Evas_Object *obj, const tm *max)

View File

@ -6,6 +6,7 @@ from . import ELM_CALENDAR_WEEKLY
from . import ELM_CALENDAR_MONTHLY
from . import ELM_CALENDAR_ANNUALLY
from . import ELM_CALENDAR_LAST_DAY_OF_MONTH
from . import ELM_CALENDAR_REVERSE_DAILY
from . import ELM_CALENDAR_SELECT_MODE_DEFAULT
from . import ELM_CALENDAR_SELECT_MODE_ALWAYS

View File

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

View File

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

View File

@ -1,18 +1,6 @@
from efl.elementary.enums cimport Elm_Clock_Edit_Mode
cdef extern from "Elementary.h":
cpdef enum Elm_Clock_Edit_Mode:
ELM_CLOCK_EDIT_DEFAULT
ELM_CLOCK_EDIT_HOUR_DECIMAL
ELM_CLOCK_EDIT_HOUR_UNIT
ELM_CLOCK_EDIT_MIN_DECIMAL
ELM_CLOCK_EDIT_MIN_UNIT
ELM_CLOCK_EDIT_SEC_DECIMAL
ELM_CLOCK_EDIT_SEC_UNIT
ELM_CLOCK_EDIT_ALL
ctypedef enum Elm_Clock_Edit_Mode:
pass
Evas_Object *elm_clock_add(Evas_Object *parent)
void elm_clock_time_set(Evas_Object *obj, int hrs, int min, int sec)
void elm_clock_time_get(const Evas_Object *obj, int *hrs, int *min, int *sec)

View File

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

View File

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

View File

@ -1,13 +1,6 @@
from efl.elementary.enums cimport Elm_Colorselector_Mode
cdef extern from "Elementary.h":
cpdef enum Elm_Colorselector_Mode:
ELM_COLORSELECTOR_PALETTE
ELM_COLORSELECTOR_COMPONENTS
ELM_COLORSELECTOR_BOTH
ctypedef enum Elm_Colorselector_Mode:
pass
Evas_Object * elm_colorselector_add(Evas_Object *parent)
void elm_colorselector_color_set(Evas_Object *obj, int r, int g, int b, int a)
void elm_colorselector_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a)

View File

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

View File

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

View File

@ -1,35 +1,8 @@
cdef extern from "Edje.h":
cpdef enum Edje_Channel:
EDJE_CHANNEL_EFFECT
EDJE_CHANNEL_BACKGROUND
EDJE_CHANNEL_MUSIC
EDJE_CHANNEL_FOREGROUND
EDJE_CHANNEL_INTERFACE
EDJE_CHANNEL_INPUT
EDJE_CHANNEL_ALERT
EDJE_CHANNEL_ALL
ctypedef enum Edje_Channel:
pass
from efl.elementary.enums cimport Elm_Softcursor_Mode, \
Elm_Slider_Indicator_Visible_Mode, Elm_Focus_Move_Policy, \
Elm_Focus_Autoscroll_Mode, Edje_Channel
cdef extern from "Elementary.h":
cpdef enum Elm_Softcursor_Mode:
ELM_SOFTCURSOR_MODE_AUTO
ELM_SOFTCURSOR_MODE_ON
ELM_SOFTCURSOR_MODE_OFF
ctypedef enum Elm_Softcursor_Mode:
pass
cpdef enum Elm_Slider_Indicator_Visible_Mode:
ELM_SLIDER_INDICATOR_VISIBLE_MODE_DEFAULT
ELM_SLIDER_INDICATOR_VISIBLE_MODE_ALWAYS
ELM_SLIDER_INDICATOR_VISIBLE_MODE_ON_FOCUS
ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE
ctypedef enum Elm_Slider_Indicator_Visible_Mode:
pass
ctypedef struct Elm_Font_Overlay:
const char *text_class
const char *font
@ -193,7 +166,7 @@ cdef extern from "Elementary.h":
Eina_Bool elm_config_vsync_get()
void elm_config_vsync_set(Eina_Bool enabled)
Elm_Focus_Autoscroll_Mode elm_config_focus_autoscroll_mode_get()
void elm_config_focus_autoscroll_mode_set(Elm_Focus_Autoscroll_Mode mode)
Eina_Bool elm_config_window_auto_focus_enable_get()

View File

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

View File

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

View File

@ -1,15 +1,6 @@
from efl.elementary.enums cimport Elm_Ctxpopup_Direction
cdef extern from "Elementary.h":
cpdef enum Elm_Ctxpopup_Direction:
ELM_CTXPOPUP_DIRECTION_DOWN
ELM_CTXPOPUP_DIRECTION_RIGHT
ELM_CTXPOPUP_DIRECTION_LEFT
ELM_CTXPOPUP_DIRECTION_UP
ELM_CTXPOPUP_DIRECTION_UNKNOWN
ctypedef enum Elm_Ctxpopup_Direction:
pass
Evas_Object *elm_ctxpopup_add(Evas_Object *parent)
void elm_ctxpopup_hover_parent_set(Evas_Object *obj, Evas_Object *parent)
Evas_Object *elm_ctxpopup_hover_parent_get(const Evas_Object *obj)
@ -29,3 +20,5 @@ cdef extern from "Elementary.h":
Elm_Object_Item *elm_ctxpopup_last_item_get(const Evas_Object *obj)
Elm_Object_Item *elm_ctxpopup_item_prev_get(const Elm_Object_Item *it)
Elm_Object_Item *elm_ctxpopup_item_next_get(const Elm_Object_Item *it)
Elm_Object_Item *elm_ctxpopup_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data)
Elm_Object_Item *elm_ctxpopup_item_insert_after(Evas_Object *obj, Elm_Object_Item *before, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data)

View File

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

View File

@ -1,16 +1,6 @@
from efl.elementary.enums cimport Elm_Datetime_Field_Type
cdef extern from "Elementary.h":
cpdef enum Elm_Datetime_Field_Type:
ELM_DATETIME_YEAR
ELM_DATETIME_MONTH
ELM_DATETIME_DATE
ELM_DATETIME_HOUR
ELM_DATETIME_MINUTE
ELM_DATETIME_AMPM
ctypedef enum Elm_Datetime_Field_Type:
pass
Evas_Object * elm_datetime_add(Evas_Object *parent)
const char * elm_datetime_format_get(const Evas_Object *obj)
void elm_datetime_format_set(Evas_Object *obj, const char *fmt)

View File

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

View File

@ -1,18 +1,6 @@
from efl.elementary.enums cimport Elm_Dayselector_Day
cdef extern from "Elementary.h":
cpdef enum Elm_Dayselector_Day:
ELM_DAYSELECTOR_SUN
ELM_DAYSELECTOR_MON
ELM_DAYSELECTOR_TUE
ELM_DAYSELECTOR_WED
ELM_DAYSELECTOR_THU
ELM_DAYSELECTOR_FRI
ELM_DAYSELECTOR_SAT
ELM_DAYSELECTOR_MAX
ctypedef enum Elm_Dayselector_Day:
pass
Evas_Object *elm_dayselector_add(Evas_Object *parent)
void elm_dayselector_day_selected_set(Evas_Object *obj, Elm_Dayselector_Day day, Eina_Bool selected)
Eina_Bool elm_dayselector_day_selected_get(const Evas_Object *obj, Elm_Dayselector_Day day)

View File

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

View File

@ -1,14 +1,19 @@
from efl.c_eo cimport Eo as cEo, Eo_Class, eo_add
from efl.c_eo cimport Eo as cEo, Efl_Class, efl_add
from efl.eina cimport Eina_Rectangle, Eina_Compare_Cb, \
eina_list_free, eina_list_append, eina_stringshare_del
from efl.evas cimport Eina_List, Eina_Bool, Evas_Object, Evas_Font_Size, \
Evas_Coord, Evas_Callback_Type, Evas_Smart_Cb, Evas_Event_Flags, \
Evas_Load_Error, Evas_Image_Orient, EVAS_EVENT_FLAG_NONE, \
evas_object_smart_callback_add, EVAS_CALLBACK_KEY_DOWN, \
Evas_Load_Error, Evas_Image_Orient, \
evas_object_smart_callback_add
from efl.evas.enums cimport EVAS_EVENT_FLAG_NONE, EVAS_CALLBACK_KEY_DOWN, \
EVAS_CALLBACK_KEY_UP, EVAS_CALLBACK_MOUSE_WHEEL
from efl.ecore cimport Ecore_Pos_Map
from efl.elementary.enums cimport Elm_Process_State, Elm_Sys_Notify_Urgency, \
Elm_Policy, Elm_Policy_Quit, Elm_Policy_Exit, Elm_Policy_Throttle, \
Elm_Sel_Format, Elm_Xdnd_Action
cdef extern from "time.h":
struct tm:
@ -32,85 +37,6 @@ cdef extern from "Edje.h":
ctypedef void (*Edje_Signal_Cb)(void *data, Evas_Object *obj, const char *emission, const char *source)
cdef extern from "Elementary.h":
#define
cpdef enum:
ELM_ECORE_EVENT_ETHUMB_CONNECT
ELM_EVENT_CONFIG_ALL_CHANGED
ELM_EVENT_POLICY_CHANGED
ELM_EVENT_PROCESS_BACKGROUND
ELM_EVENT_PROCESS_FOREGROUND
ELM_EVENT_SYS_NOTIFY_NOTIFICATION_CLOSED
ELM_EVENT_SYS_NOTIFY_ACTION_INVOKED
ELM_EVENT_SYSTRAY_READY
#enums
cpdef enum Elm_Object_Layer:
ELM_OBJECT_LAYER_BACKGROUND # where to place backgrounds
ELM_OBJECT_LAYER_DEFAULT # Evas_Object default layer (and thus for Elementary)
ELM_OBJECT_LAYER_FOCUS # where focus object visualization is
ELM_OBJECT_LAYER_TOOLTIP # where to show tooltips
ELM_OBJECT_LAYER_CURSOR # where to show cursors
ELM_OBJECT_LAYER_LAST # last layer known by Elementary
ctypedef enum Elm_Object_Layer:
pass
cpdef enum Elm_Policy:
ELM_POLICY_QUIT
ELM_POLICY_EXIT
ELM_POLICY_THROTTLE
ELM_POLICY_LAST
ctypedef enum Elm_Policy:
pass
cpdef enum Elm_Policy_Quit:
ELM_POLICY_QUIT_NONE
ELM_POLICY_QUIT_LAST_WINDOW_CLOSED
ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN
ctypedef enum Elm_Policy_Quit:
pass
cpdef enum Elm_Policy_Exit:
ELM_POLICY_EXIT_NONE
ELM_POLICY_EXIT_WINDOWS_DEL
ctypedef enum Elm_Policy_Exit:
pass
cpdef enum Elm_Policy_Throttle:
ELM_POLICY_THROTTLE_CONFIG
ELM_POLICY_THROTTLE_HIDDEN_ALWAYS
ELM_POLICY_THROTTLE_NEVER
ctypedef enum Elm_Policy_Throttle:
pass
cpdef enum Elm_Object_Multi_Select_Mode:
ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT
ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL
ELM_OBJECT_MULTI_SELECT_MODE_MAX
ctypedef enum Elm_Object_Multi_Select_Mode:
pass
cpdef enum Elm_Sys_Notify_Urgency:
ELM_SYS_NOTIFY_URGENCY_LOW
ELM_SYS_NOTIFY_URGENCY_NORMAL
ELM_SYS_NOTIFY_URGENCY_CRITICAL
ctypedef enum Elm_Sys_Notify_Urgency:
pass
cpdef enum Elm_Glob_Match_Flags:
ELM_GLOB_MATCH_NO_ESCAPE
ELM_GLOB_MATCH_PATH
ELM_GLOB_MATCH_PERIOD
ELM_GLOB_MATCH_NOCASE
ctypedef enum Elm_Glob_Match_Flags:
pass
cpdef enum Elm_Process_State:
ELM_PROCESS_STATE_FOREGROUND
ELM_PROCESS_STATE_BACKGROUND
ctypedef enum Elm_Process_State:
pass
#colors
ctypedef struct Elm_Color_RGBA:
unsigned int r
@ -122,6 +48,14 @@ cdef extern from "Elementary.h":
const char *palette_name
Eina_List *color_list
#selection
ctypedef struct Elm_Selection_Data:
Evas_Coord x, y
Elm_Sel_Format format
void *data
size_t len
Elm_Xdnd_Action action
#event
ctypedef Eina_Bool (*Elm_Event_Cb) (void *data, Evas_Object *obj, Evas_Object *src, Evas_Callback_Type t, void *event_info)

View File

@ -1,4 +1,4 @@
# Copyright (C) 2007-2016 various contributors (see AUTHORS)
# Copyright (C) 2007-2022 various contributors (see AUTHORS)
#
# This file is part of Python-EFL.
#
@ -49,7 +49,7 @@ def utf8_to_markup(string):
<const char *>string if string is not None else NULL))
cdef class EntryContextMenuItem(object):
"""EntryContextMenuItem(...)
"""
Type of contextual item that can be added in to long press menu.
@ -192,7 +192,7 @@ cdef void py_elm_entry_filter_cb(void *data, Evas_Object *entry, char **text) wi
cdef class EntryAnchorInfo(object):
"""EntryAnchorInfo(...)
"""
The info sent in the callback for the ``anchor,clicked`` signals emitted
by entries.
@ -254,7 +254,7 @@ cdef object _entryanchor_conv(void *addr):
cdef class EntryAnchorHoverInfo(object):
"""EntryAnchorHoverInfo(...)
"""
The info sent in the callback for ``anchor,hover,opened`` signals emitted
by the entries.
@ -348,7 +348,7 @@ cdef class Entry(LayoutClass):
self.markup_filters = []
def __init__(self, evasObject parent, *args, **kwargs):
"""Entry(...)
"""
:param parent: The parent object
:type parent: :py:class:`efl.evas.Object`
@ -650,7 +650,7 @@ cdef class Entry(LayoutClass):
:type: 2 ints tuple (start, end)
.. versionadded: 1.18
.. versionadded:: 1.18
"""
def __get__(self):
@ -670,7 +670,7 @@ cdef class Entry(LayoutClass):
:param end: The ending position
:type end: int
.. versionadded: 1.9
.. versionadded:: 1.9
"""
elm_entry_select_region_set(self.obj, start, end)
@ -680,7 +680,7 @@ cdef class Entry(LayoutClass):
:return: the 2 ints tuple (start, end)
:rtype: tuple
.. versionadded: 1.18
.. versionadded:: 1.18
"""
cdef int start, end
@ -871,7 +871,7 @@ cdef class Entry(LayoutClass):
"""
elm_entry_context_menu_clear(self.obj)
def context_menu_item_add(self, label = None, icon_file = None, Elm_Icon_Type icon_type = ELM_ICON_NONE, func = None, *args, **kwargs):
def context_menu_item_add(self, label = None, icon_file = None, Elm_Icon_Type icon_type = enums.ELM_ICON_NONE, func = None, *args, **kwargs):
"""This adds an item to the entry's contextual menu.
A longpress on an entry will make the contextual menu show up, if this
@ -1096,7 +1096,7 @@ cdef class Entry(LayoutClass):
if isinstance(a1, unicode): a1 = PyUnicode_AsUTF8String(a1)
if not elm_entry_file_set(self.obj,
<const char *>a1 if a1 is not None else NULL,
a2 if a2 is not None else ELM_TEXT_FORMAT_PLAIN_UTF8):
a2 if a2 is not None else enums.ELM_TEXT_FORMAT_PLAIN_UTF8):
raise RuntimeError("Could not set file")
def file_set(self, file_name, file_format):
@ -1105,7 +1105,7 @@ cdef class Entry(LayoutClass):
if isinstance(a1, unicode): a1 = PyUnicode_AsUTF8String(a1)
if not elm_entry_file_set(self.obj,
<const char *>a1 if a1 is not None else NULL,
a2 if a2 is not None else ELM_TEXT_FORMAT_PLAIN_UTF8):
a2 if a2 is not None else enums.ELM_TEXT_FORMAT_PLAIN_UTF8):
raise RuntimeError("Could not set file")
def file_get(self):
cdef const char *file
@ -1128,7 +1128,7 @@ cdef class Entry(LayoutClass):
Default is ``ELM_TEXT_FORMAT_PLAIN_UTF8``, if you want to use
``ELM_TEXT_FORMAT_MARKUP_UTF8`` then you need to set the text format
before calling :attr:`file` or :func:`file_set`.
You could also set it before a call to :func:`file_save` in order to
save with the given format.
@ -1472,6 +1472,58 @@ cdef class Entry(LayoutClass):
def prediction_allow_get(self):
return elm_entry_prediction_allow_get(self.obj)
property prediction_hint:
"""The prediction hint to use an intelligent reply suggestion service.
:type: string (**writeonly**)
.. versionadded:: 1.20
"""
def __set__(self, string):
if isinstance(string, unicode): string = PyUnicode_AsUTF8String(string)
elm_entry_prediction_hint_set(self.obj,
<const char *>string if string is not None else NULL)
def prediction_hint_set(self, string):
if isinstance(string, unicode): string = PyUnicode_AsUTF8String(string)
elm_entry_prediction_hint_set(self.obj,
<const char *>string if string is not None else NULL)
def prediction_hint_hash_set(self, key, value):
"""Sets the prediction hint data at the specified key.
:param key: The key of the prediction hint
:type key: string
:param value: The data to replace
:type value: string
:return bool: `True` on success, `False` otherwise
.. versionadded:: 1.21
"""
if isinstance(key, unicode): key = PyUnicode_AsUTF8String(key)
if isinstance(value, unicode): value = PyUnicode_AsUTF8String(value)
return bool(elm_entry_prediction_hint_hash_set(self.obj,
<const char *>key if key is not None else NULL,
<const char *>value if value is not None else NULL))
def prediction_hint_hash_del(self, key):
"""Removes the prediction hint data identified by a key.
:param key: The key of the prediction hint
:type key: string
:return bool: `True` on success, `False` otherwise
.. versionadded:: 1.21
"""
if isinstance(key, unicode): key = PyUnicode_AsUTF8String(key)
return bool(elm_entry_prediction_hint_hash_del(self.obj,
<const char *>key if key is not None else NULL))
# TODO:
# def filter_limit_size(self, data, text):
# """Filter inserted text based on user defined character and byte limits
@ -1912,4 +1964,4 @@ cdef class Entry(LayoutClass):
return (h, v)
_object_mapping_register("Elm_Entry", Entry)
_object_mapping_register("Elm.Entry", Entry)

View File

@ -31,6 +31,7 @@ from . import ELM_INPUT_PANEL_LAYOUT_TERMINAL
from . import ELM_INPUT_PANEL_LAYOUT_PASSWORD
from . import ELM_INPUT_PANEL_LAYOUT_DATETIME
from . import ELM_INPUT_PANEL_LAYOUT_EMOTICON
from . import ELM_INPUT_PANEL_LAYOUT_VOICE
from . import ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_NORMAL
from . import ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_FILENAME

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