Compare commits

..

1 Commits

Author SHA1 Message Date
Kai Huuhko 6404b05066 Add Python bindings for eet 2014-05-29 20:17:14 +03:00
707 changed files with 28613 additions and 37019 deletions

6
.gitignore vendored
View File

@ -1,6 +1,5 @@
*.py[co]
MANIFEST
installed_files-*.txt
# Packages
*.egg
@ -28,9 +27,4 @@ pip-log.txt
# Cython generated files
efl/*/*.c
efl/*/*.h
!efl/dbus_mainloop/e_dbus.*
efl/*/*.html
# Various editors trash
.idea/
.vscode/

View File

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

173
CODING
View File

@ -1,28 +1,3 @@
TODO
====
* Automatically build and publish binary wheels on pypi
- for py: 36,37,38,39,310
- for linux x86 and rpi
- see https://packaging.python.org/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows/
- see https://github.com/pypa/manylinux
- also include efl itsef in the wheels? PySide is doing this
* Drop python 2 compatibility
- Switch to cython3
- remove all the workarounds for py2 (see strings and enums)
* Improved editors support, at least on VSCode and PyCharm
* Try to implement better the elementary module, removing
the __init__ module hack (that create problems in the docs)
* Make the examples a first citizen!
- install them with python efl
- make them easily runnable
- show them in the docs
- show the code inside the examples themself?
- make the code editable on the fly?
Style
=====
@ -33,60 +8,6 @@ Style
* When comparing C pointers with NULL, use == and != instead of the python
operator "is". This makes a visual distinction between python and C code.
* For long lines that do not fit in the 80 cols please use only the first
raccomandation from PEP-8 (Aligned with opening delimiter). Example:
Yes:
foo = long_function_name(var_one, var_two,
var_three, var_four)
No:
foo = long_function_name(
var_one, var_two,
var_three, var_four)
This to keep new code consistent with the rest of the bindings and to
try to match the style of the C efl code style as much as possible.
...also because I found it more readable and I like it more :P -davemds-
Documentation cheatsheet
========================
* Links:
:class:`List` (for classes)
:func:`elm_list_go` (for functions)
:attr:`homogeneous` (for properties)
:ref:`Elm_List_Mode` (for enums)
:data:`ELM_LIST_LIMIT` (for enum values)
:func:`efl.evas.Object.delete` (for items not in current scope)
:func:`~efl.evas.Object.delete` (will show it short, just "delete")
* Formatting:
``ELM_LIST_SCROLL`` (for enum values, bools and None)
* Versions:
.. versionadded:: 1.15
.. versionchanged:: 1.15
Description of the change.
.. deprecated:: 1.15
Use the blah, blah way instead.
* Notes:
.. seealso:: :py:attr:`mode`
.. note:: Some text to be noted, blah, blah, blah,
some more information for this note, etc.
.. warning:: Same as note, but the box will be red
some more information for this warning, etc.
Design patterns
===============
@ -123,54 +44,62 @@ Tips
Release process instructions
============================
* use "api_coverage.py --python elementary" to see the missing bindings
* Announce at release@lists.enlightenment.org that you are planning for the
release
* Change versions in the top part of setup.py (ex: 1.9 and 1.9.0)
* Update the changes.html file
setup.py build_doc -b changes ...and manually merge
* Git push and wait jenkins to generate the 2 tarballs
* Test the generated tarballs
* scp tarballs to
download.enlightenment.org/srv/web/download.enlightenment.org/public_html/pre-releases
* Announce at release@lists.enlightenment.org that tarballs are ready for
testing
* 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
* Generate the source (tar) and binary (wheel) distributions:
- make maintainer-clean (just to be sure nothing is cached)
- make dist
* Test the generated tarball and wheel:
- the targz must work by extracting and running: python setup.py install [--user]
- the targz must be installable using: pip install python-efl-1.9.0.tar.gz
- the wheel must be installable using: pip install python_efl-1.9.0-xxxx.whl
* Publish the 2 tar archive on e.org:
- scp tarballs & md5sums to:
download.enlightenment.org:/srv/web/download.enlightenment.org/rel/bindings/python/
- update download link on the wiki (www.enlightenment.org/download)
* Publish the .tar.gz archive on pypi:
- twine upload python-efl-1.9.0.tar.gz [--repository testpypy]
- TODO: also upload binary wheels for linux py36,37,38,39,310 (see manylinux on pypa)
* Documentation:
- make doc (check that inheritance graphs are there)
- scp the generated html documentation to:
download.enlightenment.org:/srv/web/docs.enlightenment.org/python-efl/1.9.0/
- update the 'current' link on the server (ssh)
... wait 24 hours, fix any issues found. In the mean time you can prepare the
release announcement for phame/ml.
* ssh to dl.e.org and mv the tarballs to
/srv/web/download.enlightenment.org/rel/bindings/python
* Create and push the tag for the release
- git tag -a v1.9.0 && git push origin v1.9.0
git tag -a v1.9.0 && git push origin v1.9.0
* Create and push the branch for stable backporting
git branch python-efl-1.9 && git push origin python-efl-1.9
* Publish the blog post on phame (Official Announcements)
* Announce the release to announce@lists.enlightenment.org with cc to devel
etc.
* Update download link on website (clone website/www.git, edit, and use the
update link found in the url below)
* Change versions again in setup.py (ex: 1.10 and 1.9.99)
* Raise efl and elementary requirements in setup.py (to 1.9.99)
* 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)
for more info:
--------------
* packaging.python.org
* phab.enlightenment.org/w/release_procedure/
* phab.enlightenment.org/w/hosting/ssh/
more info at:
phab.enlightenment.org/w/release_procedure/
Discussion
==========
* Internal utility functions used in the bindings must start with an
underscore and must have the shortest name as possible.
^
This needs further discussion/expansion.
When we define a function with cdef it is not exposed to Python API.
This should be explicit enough to not need the underscore prefix, which
at best looks ugly, and at worst just plain confusing.
A function name should summarize its functionality in one clear text,
short sentence. We have both too long and too short names. And I admit to
being guilty of adding many of both.
Let's build up a short review so we can see where we stand with this and
make necessary corrections.
/ kuuko
The underscore usage is a coding standard in all the EFL, we should try
to follow the efl style also here (where is possible and make sense)
/ davemds

963
ChangeLog
View File

@ -1,963 +0,0 @@
===================
2023-10-08 v1.26.1
===================
Maintenance release:
* rebuilt using Cython 0.29.34 to fix install on python 3.11
===================
2022-02-27 v1.26.0
===================
Changes:
* Switched to setuptools for the build system (can now install from pip again)
* Dropped py2.6 support, minimum is now 2.7
* Deprecated python2 support, with a big-fat-slow warning
* Improved documentation
Fixes:
* Fixed a memory allocation error in EvasSmart
===================
2020-09-24 v1.25.0
===================
Changes:
* Switched to Cython 0.29.21 for the tarball generation
===================
2020-04-30 v1.24.0
===================
Changes:
* Switched to Cython 0.29.16 for the tarball generation
* No more pypi packages uploaded, you must install from tarball
===================
2019-10-06 v1.23.0
===================
Changes:
* Switched to Cython 0.29.13 for the tarball generation
===================
2019-04-23 v1.22.0
===================
Changes:
* Switched to Cython 0.29.7 for the tarball generation
===================
2018-08-24 v1.21.0
===================
BREAKS:
* systray.pxi do not work anymore as the widget has been removed from efl.
The widget has been completly removed and the function elm_need_systray
now always return False that means systray is not available.
Apologies for the inconvenient.
Changes:
* Switched to Cython 0.28.4 for the tarball generation, should fix build
issues with python3.7
Additions:
* ecore.ECORE_EXE_ISOLATE_IO
* edje.part_text_prediction_hint_hash_del
* edje.part_text_prediction_hint_hash_set
* elm.Entry.prediction_hint_hash_del
* elm.Entry.prediction_hint_hash_set
* elm.Ctxpopup.item_insert_after
* elm.Ctxpopup.item_insert_before
===================
2017-05-06 v1.20.0
===================
Fixes:
* ecore.input and ecore.x can now coexsist
Changes:
* ecore.Poller is no more an Eo object in C (nothing should be changed in py)
* removed edje.Object custom __repr__ implementation
* Use Cython 23.5 to generate the C source in dist tarball (see T5589)
Additions:
* elm.Entry.prediction_hint
* elm.Genlist.multi_select_mode
* elm.Menu.open()
* elm.Spinner.callback_max_reached_add()
* elm.Spinner.callback_max_reached_del()
* edje.part_text_prediction_hint_set()
* evas.Map.coords_get()
===================
2017-04-18 v1.19.0
===================
Fixes:
* Fixes for cython 0.25 compatibility
* elm.font_properties_get
* elm.Gengrid.item_insert_after now work as expected
Changes:
* Removed ecore warning about subprocess incompatibility, with test to prove it
* Emotion: changed default module_name to "gstreamer1"
* elm.font_properties_free: Changed to no-op as we now do the free
automatically when there are no more references to the FontProperties object
* elm.Panel.scrollable_content_size is now also readable
* EcoreConUrl is no more an Eo object in C
Additions:
* evas.Image.load_head_skip
* elm.ELM_INPUT_PANEL_LAYOUT_VOICE
* elm.ELM_CALENDAR_REVERSE_DAILY
* elm.Calendar.date_max
* elm.Calendar.date_min
* elm.GengridItem.custom_size
* elm.Image.async_open
* elm.Image.callback_load_cancel_add
* elm.Image.callback_load_error_add
* elm.Image.callback_load_open_add
* elm.Image.callback_load_ready_add
* elm.Naviframe.callback_item_activated_add
* elm.Panel.callback_toggled_add
* elm.Progressbar.is_pulsing
* elm.Spinner.callback_drag_start_add
* elm.Spinner.callback_drag_stop_add
===================
2016-08-22 v1.18.0
===================
Fixes:
* Fixed (workaround) dbus crash on python >= 3.5
* Fixed Logger module to not fail on unicode error messages
Changes:
* Changed enums implementation to gain compatibility with Cython > 0.22
* Docs: Allow to skip last_updated and sphinx_version
* elm.Combobox: The combobox widget has been deprecated.
* elm.Photo.editable property is now also readable
* elm.Photo.fill_inside property is now also readable
* elm.Photo.size property is now also readable
Additions:
* ecore.Exe.is_deleted
* ecore.FdHandler.is_deleted
* edje.Edje.part_box_insert_after
* elm.Configuration.accel_preference_override
* elm.Configuration.first_item_focus_on_first_focusin
* elm.Configuration.font_hint_type
* elm.Configuration.icon_theme
* elm.Configuration.popup_scrollable
* elm.Configuration.scroll_accel_factor
* elm.Configuration.scroll_animation_disabled
* elm.Configuration.vsync
* elm.Configuration.web_backend
* elm.Entry.file_text_format
* elm.Entry.select_allow
* elm.Entry.select_region
* elm.GengridItem.all_contents_unset
* elm.Genlist.filtered_items_count
* elm.GenlistItem.all_contents_unset
* elm.List.multi_select_mode (and the Elm_Object_Multi_Select_Mode enum)
* elm.Object.focus_move_policy_automatic
* elm.Popup.align
* elm.Popup.scrollable
* elm.Slider.range
* elm.Slider.range_enabled
* elm.Slider.indicator_show_on_focus
* elm.Transit.revert
* elm.Window.noblank
==================
2016-01-7 v1.17.0
==================
Fixes:
* Fixed compatibility with python 3.5 (utils.deprecated was broken)
* Various ref leaks fixed in elementary
* Multibuttonentry filter callback
Additions:
* ecore_input Module
* ecore_con Module
* ecore_con.Url Class
* ecore_con.Lookup Class
* evas.Object.paragraph_direction
* evas.EVAS_BIDI_DIRECTION_INHERIT
* edje.Edje.color_class_clear
* edje.Edje.size_class_del
* edje.Edje.size_class_get
* edje.Edje.size_class_set
* edje.Edje.text_class_del
* edje.size_class_del
* edje.size_class_get
* edje.size_class_list
* edje.size_class_set
* ethumb Module
* ethumb.Ethumb Class
* ethumb_client Module
* ethumb_client.EthumbClient Class
* elm.Combobox Class
* elm.Configuration.context_menu_disabled
* elm.Configuration.profile_derived_add
* elm.Configuration.profile_derived_del
* elm.Configuration.profile_exists
* elm.Configuration.profile_list_full
* elm.Configuration.profile_save
* elm.Ctxpopup.callback_geometry_update_add
* elm.ELM_GENGRID_ITEM_SCROLLTO_BOTTOM
* elm.Gengrid.drag_item_container_add
* elm.Gengrid.drag_item_container_del
* elm.Gengrid.drop_item_container_add
* elm.Gengrid.drop_item_container_del
* elm.ELM_GENLIST_ITEM_SCROLLTO_BOTTTOM
* elm.Genlist.callback_filter_done_add
* elm.Genlist.drag_item_container_add
* elm.Genlist.drag_item_container_del
* elm.Genlist.drop_item_container_add
* elm.Genlist.drop_item_container_del
* elm.Genlist.filter
* elm.MultiButtonEntry.filter_remove
* elm.Notify.callback_dismissed_add
* elm.Notify.dismiss
* elm.Object.callback_moved_add
* elm.Object.drag_action_set
* elm.Object.drag_start
* elm.Object.drop_target_add
* elm.Object.drop_target_del
* elm.Popup.callback_dismissed_add
* elm.Popup.dismiss
===================
2015-11-14 v1.16.0
===================
Additions:
* elm.Configuration.scroll_thumbscroll_smooth_amount
* elm.Configuration.scroll_thumbscroll_smooth_start
* elm.Configuration.scroll_thumbscroll_smooth_time_window
* elm.Genlist.callback_changed_add
* elm.GenlistItem.data is now also writable
* elm.Object.focus_next_item_get
* elm.Object.focus_next_item_set
* elm.Object.focus_region_show_mode
* elm.Object.tooltip_orient
* elm.ObjectItem.focus_next_item_get
* elm.ObjectItem.focus_next_item_set
* elm.ObjectItem.focus_next_object_get
* elm.ObjectItem.focus_next_object_set
===================
2015-08-05 v1.15.0
===================
Fixes:
* elm.Entry: Fixed name of the callback_rejected_del function
* Fixed build on OSX
* Fixed build when ecore-x is not available
* Fixed module init from embedded interpreter
Changes:
* Elm: Unify modules into a monolithic module
Additions:
* elm.Configuration.transition_duration_factor
* elm.Window.autohide
* elm.ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN
* elm.Entry.callback_context_open_add/del
* elm.ELM_FOCUS_MOVE_POLICY_KEY_ONLY
* elm.Object.focus_move_policy
* elm.Scrollable.wheel_disabled
* evas.Textblock.obstacle_add
* evas.Textblock.obstacle_del
* evas.Textblock.obstacles_update
* evas.EVAS_CALLBACK_CANVAS_VIEWPORT_RESIZE
===================
2015-05-07 v1.14.0
===================
Fixes:
* Fixed evas.Textgrid to not leak on cellrow_set()
Improvements:
* Re-added evas.SmartObject (with incompatible API compared to the earlier
incarnation) and made elm.Object inherit from it.
* Better init/shutdown management in all modules, no more need to
manually call those functions (no harm in doing it though).
Changes:
* elm.List.callback_highlighted_add: Added item param to func
* elm.List.callback_unhighlighted_add: Added item param to func
* elm.Toolbar.callback_clicked_add: Added item param to func
* elm.Toolbar.callback_longpressed_add: Added item param to func
* elm.Slideshow: item_data are now a single value, instead of args/kargs,
like is implemented in Gengrid/Genlist
Additions:
* evas.Smart
* evas.Image.orient
* edje.Edje.text_class_get
* edje.text_class_get
* elm.systray
* elm.Configuration.window_auto_focus_animate
* elm.Configuration.window_auto_focus_enable
* elm.Image.memfile_set
* elm.MultiButtonEntry.callback_item_longpressed_add
* elm.MultiButtonEntry.callback_item_longpressed_del
* elm.NaviframeItem.pop_cb_set
* elm.Photocam.image_orient
* elm.Scrollable.loop
* elm.Slider.indicator_visible_mode
* elm.Transit.go_in
* elm.on_config_all_changed
* elm.on_ethumb_connect
* elm.on_policy_changed
* elm.on_process_background
* elm.LayoutClass.file is now also readable
* elm.Video.file is now also readable
Deprecation:
* evas.Rect.intercepts: Use intersects() instead
===================
2015-02-09 v1.13.0
===================
Improvements:
* better docs for everything
* some new elm examples/tests
* new efl.utils.setup helper module to simplify user setup.py
* new uninstall setup.py command
* fixed elm.Entry.cursor_content_get() to not crash when called
Changes:
* raised cython requirements to 0.21
* ecore.x module renamed to ecore_x
* removed evas.SmartObject class, it was broken
Additions:
* efl.utils.setup module
* elm.Configuration.slider_indicator_visible_mode
* elm.Gengrid.callback_clicked_right_add
* elm.Genlist.callback_clicked_right_add
* elm.List.callback_clicked_right_add
* elm.Scrollable.step_size
* elm.Table.align
* elm.Theme.group_base_list_get
* elm.Transit.tween_mode_factor_n
* elm.ELM_TRANSIT_TWEEN_MODE_DIVISOR_INTERP
* elm.ELM_TRANSIT_TWEEN_MODE_BOUNCE
* elm.ELM_TRANSIT_TWEEN_MODE_SPRING
* elm.ELM_TRANSIT_TWEEN_MODE_BEZIER_CURVE
* elm.DialogWindow
* elm.Window.callback_theme_changed_add
* evas.Map.util_object_move_sync
* evas.Object.size_hint_expand
* evas.Object.size_hint_fill
* evas.EXPAND_BOTH
* evas.EXPAND_HORIZ
* evas.EXPAND_VERT
* evas.FILL_BOTH
* evas.FILL_HORIZ
* evas.FILL_VERT
Deprecation:
* elm.Configuration.engine
* elm.Configuration.preferred_engine
===================
2014-11-23 v1.12.0
===================
Additions:
* Edje.base_scale
* Edje.part_text_input_hint_get
* Edje.part_text_input_hint_set
* elm.ELM_PROCESS_STATE_FOREGROUND
* elm.ELM_PROCESS_STATE_BACKGROUND
* elm.process_state_get
* elm.ELM_INPUT_HINT_NONE
* elm.ELM_INPUT_HINT_AUTO_COMPLETE
* elm.ELM_INPUT_HINT_SENSITIVE_DATA
* elm.ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_NORMAL
* elm.ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_FILENAME
* elm.ELM_INPUT_PANEL_LAYOUT_NORMAL_VARIATION_PERSON_NAME
* elm.ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_NORMAL
* elm.ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED
* elm.ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_DECIMAL
* elm.ELM_INPUT_PANEL_LAYOUT_NUMBERONLY_VARIATION_SIGNED_AND_DECIMAL
* elm.ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NORMAL
* elm.ELM_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NUMBERONLY
* elm.Entry.input_hint
* elm.Fileselector.current_name
* elm.Panel.scrollable
* elm.Panel.scrollable_content_size
===================
2014-09-14 v1.11.0
===================
Additions:
* ecore.x.screensaver_blank_get
* ecore.x.screensaver_blank_set
* ecore.x.screensaver_custom_blanking_disable
* ecore.x.screensaver_custom_blanking_enable
* ecore.x.screensaver_event_available_get
* ecore.x.screensaver_event_listen_set
* ecore.x.screensaver_expose_get
* ecore.x.screensaver_expose_set
* ecore.x.screensaver_idle_time_get
* ecore.x.screensaver_interval_get
* ecore.x.screensaver_interval_set
* ecore.x.screensaver_resume
* ecore.x.screensaver_set
* ecore.x.screensaver_supend
* ecore.x.screensaver_timeout_get
* ecore.x.screensaver_timeout_set
* ELM_GLOB_MATCH_NO_ESCAPE
* ELM_GLOB_MATCH_PATH
* ELM_GLOB_MATCH_PERIOD
* ELM_GLOB_MATCH_NOCASE
* ELM_GENGRID_REORDER_TYPE_NORMAL
* ELM_GENGRID_REORDER_TYPE_SWAP
* elm.Gengrid.reorder_type
* elm.Gengrid.search_by_text_item_get
* elm.Genlist.search_by_text_item_get
* elm.Map.region_zoom_bring_in
* elm.Panes.content_left_min_relative_size
* elm.Panes.content_left_min_size
* elm.Panes.content_right_min_relative_size
* elm.Panes.content_right_min_size
* elm.Toolbar.callback_selected_add
* elm.Toolbar.callback_unselected_add
* Emotion.on_open_done_add
* Emotion.on_open_done_del
* Emotion.on_playback_started_add
* Emotion.on_playback_started_del
* Emotion.on_position_load_failed_add
* Emotion.on_position_load_failed_del
* Emotion.on_position_load_succeed_add
* Emotion.on_position_load_succeed_del
* Emotion.on_position_save_failed_add
* Emotion.on_position_save_failed_del
* Emotion.on_position_save_succeed_add
* Emotion.on_position_save_succeed_del
* Emotion.on_position_update_add
* Emotion.on_position_update_del
===================
2014-05-31 v1.10.0
===================
Additions:
* elm.Configuration.accel_preference
* elm.Configuration.atspi_mode
* elm.Configuration.audio_mute_get
* elm.Configuration.audio_mute_set
* elm.Configuration.color_classes_list
* elm.Configuration.color_overlay_apply
* elm.Configuration.color_overlay_list
* elm.Configuration.color_overlay_set
* elm.Configuration.color_overlay_unset
* elm.Configuration.focus_autoscroll_mode
* elm.Configuration.focus_highlight_clip_disabled
* elm.Configuration.focus_move_policy
* elm.Configuration.item_select_on_focus_disabled
* elm.Configuration.magnifier_enabled
* elm.Configuration.magnifier_scale
* elm.ELM_INPUT_PANEL_LAYOUT_DATETIME
* elm.ELM_INPUT_PANEL_LAYOUT_EMOTICON
* elm.ELM_INPUT_PANEL_RETURN_KEY_TYPE_SIGNIN
* elm.ELM_SYS_NOTIFY_CLOSED_EXPIRED
* elm.ELM_SYS_NOTIFY_CLOSED_DISMISSED
* elm.ELM_SYS_NOTIFY_CLOSED_REQUESTED
* elm.ELM_SYS_NOTIFY_CLOSED_UNDEFINED
* elm.ELM_SYS_NOTIFY_URGENCY_LOW
* elm.ELM_SYS_NOTIFY_URGENCY_NORMAL
* elm.ELM_SYS_NOTIFY_URGENCY_CRITICAL
* elm.sys_notify_close
* elm.sys_notify_send
* elm.ELM_OBJECT_MULTI_SELECT_MODE_DEFAULT
* elm.ELM_OBJECT_MULTI_SELECT_MODE_WITH_CONTROL
* elm.ELM_OBJECT_MULTI_SELECT_MODE_MAX
* elm.Gengrid.callback_item_focused_add
* elm.Gengrid.callback_item_reorder_anim_start_add
* elm.Gengrid.callback_item_reorder_anim_stop_add
* elm.Gengrid.callback_item_unfocused_add
* elm.Gengrid.multi_select_mode
* elm.Gengrid.page_relative
* elm.Gengrid.page_size
* elm.Gengrid.reorder_mode_start
* elm.Gengrid.reorder_mode_stop
* elm.Gengrid.wheel_disabled
* elm.Genlist.callback_item_focused_add
* elm.Genlist.callback_item_unfocused_add
* elm.Hoversel.callback_item_focused_add
* elm.Hoversel.callback_item_unfocused_add
* elm.List.callback_item_focused_add
* elm.List.callback_item_unfocused_add
* elm.ELM_FOCUS_MOVE_POLICY_CLICK
* elm.ELM_FOCUS_MOVE_POLICY_IN
* elm.ELM_FOCUS_AUTOSCROLL_MODE_SHOW
* elm.ELM_FOCUS_AUTOSCROLL_MODE_NONE
* elm.ELM_FOCUS_AUTOSCROLL_MODE_BRING_IN
* elm.Object.focused_item
* elm.Object.scroll_item_loop_enabled
* elm.ObjectItem.focus
* elm.ObjectItem.style
* elm.ObjectItem.track_count
* elm.ObjectItem.track_object
* elm.Popup.callback_item_focused_add
* elm.Popup.callback_item_unfocused_add
* elm.Toolbar.callback_item_focused_add
* elm.Toolbar.callback_item_unfocused_add
Deprecations:
* elm.Datetime.callback_languge_changed_add:
Use callback_language_changed_add instead.
==================
2014-03-05 v1.9.0
==================
Additions:
* elm.Clock.pause
* elm.Colorselector.palette_items_get
* elm.Colorselector.palette_selected_item_get
* elm.ColorselectorPaletteItem.selected
* elm.Ctxpopup.auto_hide_disabled
* elm.Entry.callback_rejected_add
* elm.Entry.input_panel_show_on_demand
* elm.ELM_FILESELECTOR_SORT_BY_FILENAME_ASC
* elm.ELM_FILESELECTOR_SORT_BY_FILENAME_DESC
* elm.ELM_FILESELECTOR_SORT_BY_TYPE_ASC
* elm.ELM_FILESELECTOR_SORT_BY_TYPE_DESC
* elm.ELM_FILESELECTOR_SORT_BY_SIZE_ASC
* elm.ELM_FILESELECTOR_SORT_BY_SIZE_DESC
* elm.ELM_FILESELECTOR_SORT_BY_MODIFIED_ASC
* elm.ELM_FILESELECTOR_SORT_BY_MODIFIED_DESC
* elm.Fileselector.custom_filter_append
* elm.Fileselector.sort_method
* elm.Fileselector.thumbnail_size
* elm.GenlistItem.subitems_count
* elm.GenlistItem.subitems_get
* elm.Hoversel.callback_expanded_add
* elm.Label.slide_speed
* elm.LayoutClass.content_swallow_list_get
* elm.Mapbuf.point_color_get
* elm.Mapbuf.point_color_set
* elm.MultiButtonEntry.format_function_set
* elm.NaviframeItem.title_enabled
* elm.NaviframeItem.title_enabled_get
* elm.NaviframeItem.title_enabled_set
* elm.Object.focus_highlight_style
* elm.Object.tooltip_move_freeze_get
* elm.Object.tooltip_move_freeze_pop
* elm.Object.tooltip_move_freeze_push
* elm.Window.wm_rotation_available_rotations
* elm.Window.wm_rotation_manual_done
* elm.Window.wm_rotation_manual_rotation_done
* elm.Window.wm_rotation_preferred_rotation
* elm.Window.wm_rotation_supported
Deprecations:
* elm.FileselectorButton.expandable: Combine with Fileselector class instead
* elm.FileselectorButton.folder_only: Combine with Fileselector class instead
* elm.FileselectorButton.is_save: Combine with Fileselector class instead
* elm.FileselectorButton.path: Combine with Fileselector class instead
* elm.FileselectorEntry.callback_activated_add: Combine with Fileselector class instead
* elm.FileselectorEntry.expandable: Combine with Fileselector class instead
* elm.FileselectorEntry.folder_only: Combine with Fileselector class instead
* elm.FileselectorEntry.is_save: Combine with Fileselector class instead
* elm.FileselectorEntry.path: Combine with Fileselector class instead
* elm.FileselectorEntry.selected: Combine with Fileselector class instead
* elm.NaviframeItem.title_visible: Use title_enabled instead.
==================
2014-12-08 v1.8.0
==================
Changes:
* ecore.file.Download => efl.ecore.FileDownload
* edje.edit.EdjeEdit => efl.edje_edit.EdjeEdit
* Emotion: Keyword argument module_filename was renamed to module_name
* elm.Calendar.selected_time: Returns None when the selected date cannot be fetched
* elm.Ctxpopup: Now inherits from LayoutClass
* elm.Datetime.value:
Returns None when the value cannot be fetched
raise RuntimeError when setting the value failed
* elm.Datetime.value_max:
Returns None when the max value cannot be fetched
raise RuntimeError when setting the max value failed
* elm.Datetime.value_min:
Returns None when the min value cannot be fetched
raise RuntimeError when setting the min value failed
* elm.Entry: Now inherits from LayoutClass
* elm.Entry.cursor_geometry_get: Returns None when the cursor geometry cannot be fetched.
* elm.Entry.file: Raise RuntimeError when setting the file fails, instead of returning a bool.
* elm.FileselectorEntry: Inherits from LayoutClass.
* elm.GestureLayer.attach: Raise RuntimeError on failure, instead of returning a bool
* elm.Icon.standard: Raises RuntimeWarning when setting the standard name fails, instead of returning a bool.
* elm.Image.file: Raises RuntimeError when setting the file fails, instead of returning a bool.
* elm.LayoutClass.box_append: Raises RuntimeError if adding the child fails
* elm.LayoutClass.box_insert_at: Raises RuntimeError if adding the child fails
* elm.LayoutClass.box_insert_before: Raises RuntimeError if adding the child fails
* elm.LayoutClass.box_prepend: Raises RuntimeError if adding the child fails
* elm.LayoutClass.box_remove_all: Raises RuntimeError if removing the children fails
* elm.LayoutClass.content_set: Raises RuntimeError if setting the content fails.
* elm.LayoutClass.file: Raises RuntimeError if setting the file fails
* elm.LayoutClass.part_cursor_engine_only_set: Raises RuntimeError if setting the value fails
* elm.LayoutClass.part_cursor_set: Raises RuntimeError if setting the cursor fails
* elm.LayoutClass.part_cursor_style_set: Raises RuntimeError if setting the cursor style fails
* elm.LayoutClass.part_cursor_unset: Raises RuntimeError if unsetting the cursor fails
* elm.LayoutClass.table_clear: Raises RuntimeError if clearing the table fails
* elm.LayoutClass.table_pack: Raises RuntimeError if adding the child fails
* elm.LayoutClass.text_set: Raises RuntimeError if setting the text fails
* elm.LayoutClass.theme: Raises RuntimeError if setting the theme fails
* elm.Panel: Inherits from LayoutClass.
* elm.Photo.file: Raises RuntimeError if setting the file fails
* elm.Plug.connect: Raises RuntimeError if adding the child fails
* elm.Popup: Inherits from LayoutClass.
* elm.Thumb.editable: Raises RuntimeError if cannot be set as editable
* elm.Toolbar: Inherits from LayoutClass.
* elm.Video.file: Raises RuntimeError if setting the file/uri fails
* elm.Window.socket_listen: Raises RuntimeError if creating a socket fails
* elm.MenuItem.subitems: Calling del on this property clears the subitems
Deprecations:
* elm.Diskselector.bounce: You should combine with Scrollable class instead
* elm.Diskselector.scroller_policy: You should combine with Scrollable class instead
* elm.Entry.bounce: You should combine with Scrollable class instead
* elm.Entry.markup_to_utf8: Use the module level markup_to_utf8() method instead
* elm.Entry.scrollbar_policy: You should combine with Scrollable class instead
* elm.Entry.utf8_to_markup: Use the module level utf8_to_markup() method instead
* elm.Entry_markup_to_utf8: Use markup_to_utf8() instead
* elm.Entry_utf8_to_markup: Use utf8_to_markup() instead
* elm.Gengrid.bounce: You should combine with Scrollable class instead
* elm.Gengrid.scroller_policy: You should combine with Scrollable class instead
* elm.GengridItem.item_tooltip_unset: Use tooltip_unset() instea
* elm.Genlist.bounce: You should combine with Scrollable class instead
* elm.Genlist.scroller_policy: You should combine with Scrollable class instead
* elm.Index.item_find: Broken, don't use
* elm.Label.slide: Use slide_mode instead
* elm.Label.slide_get: Use slide_mode instead
* elm.Label.slide_set: Use slide_mode instead
* elm.List.bounce: You should combine with Scrollable class instead
* elm.List.scroller_policy: You should combine with Scrollable class instead
* elm.Map.bounce: You should combine with Scrollable class instead
* elm.Map.scroller_policy: You should combine with Scrollable class instead
* elm.NaviframeItem.item_pop_to: Use pop_to() instead
* elm.NaviframeItem.item_promote: Use promote() instead
* elm.need_e_dbus: Use need_eldbus() for eldbus (v2) support. Old API is deprecated
* elm.Notify.orient_get: Use align instead
* elm.Notify.orient_set: Use align instead
* elm.Object.domain_translatable_text_part_set: Use domain_translatable_part_text_set() instead
* elm.Object.translatable_text_part_get: Use translatable_part_text_get() instead
* elm.Object.widget_check: Use type(obj) instead
* elm.ObjectItem.data_get: Use the data attribute (dict) instead
* elm.ObjectItem.data_set: Use the data attribute (dict) instead
* elm.Photocam.bounce: You should combine with Scrollable class instead
* elm.Photocam.scroller_policy: You should combine with Scrollable class instead
* elm.Radio.value_pointer_set: Don't use this, only works in C
* elm.Scrollable.custom_widget_base_theme_set: Use theme instead
* elm.Toolbar.bounce: You should combine with Scrollable class instead
* elm.Toolbar.scroller_policy: You should combine with Scrollable class instead
* elm.Web.uri: Use property "url" instead
Additions:
* efl container package
* Loggers
* Using keyword arguments to set properties
* ecore.FileDownload
* ecore.FileMonitor
* ecore.Poller
* ecore.Timer.delay
* ecore.Timer.pending
* ecore.Timer.reset
* Edje.mirrored
* Edje.preload
* Edje.scale
* Edje.size_min_restricted_calc
* Edje.update_hints
* evas.Image.source_events
* evas.Image.source_visible
* evas.Textgrid
* evas.TextgridCell
* Emotion.bg_color
* Emotion.border
* Emotion.image_get
* Emotion.keep_aspect
* Emotion.last_position_load
* Emotion.last_position_save
* Emotion.play_speed
* Emotion.priority
* Emotion.suspend
* Emotion.video_subtitle_file
* elm.Popup.callback_language_changed_add
* elm.Bubble.callback_focused_add
* elm.Bubble.callback_unfocused_add
* elm.Button.callback_focused_add
* elm.Button.callback_unfocused_add
* elm.Calendar.callback_focused_add
* elm.Calendar.callback_unfocused_add
* elm.Calendar.displayed_time
* elm.Calendar.selectable
* elm.Check.callback_focused_add
* elm.Check.callback_unfocused_add
* elm.Clock.callback_focused_add
* elm.Clock.callback_unfocused_add
* elm.Colorselector.callback_focused_add
* elm.Colorselector.callback_unfocused_add
* elm.Configuration.clouseau_enabled
* elm.Configuration.glayer_double_tap_timeout
* elm.Configuration.glayer_long_tap_start_timeout
* elm.Configuration.indicator_service_get
* elm.Configuration.scroll_thumbscroll_acceleration_threshold
* elm.Configuration.scroll_thumbscroll_acceleration_time_limit
* elm.Configuration.scroll_thumbscroll_acceleration_weight
* elm.Configuration.scroll_thumbscroll_border_friction
* elm.Configuration.scroll_thumbscroll_flick_distance_tolerance
* elm.Configuration.scroll_thumbscroll_hold_threshold
* elm.Configuration.scroll_thumbscroll_min_friction
* elm.Configuration.selection_unfocused_clear
* elm.Configuration.softcursor_mode
* elm.Conformant.callback_clipboard_state_off_add
* elm.Conformant.callback_clipboard_state_on_add
* elm.Conformant.callback_virtualkeypad_state_off_add
* elm.Conformant.callback_virtualkeypad_state_on_add
* elm.Ctxpopup.callback_focused_add
* elm.Ctxpopup.callback_unfocused_add
* elm.Datetime.callback_focused_add
* elm.Datetime.callback_unfocused_add
* elm.Dayselector.weekdays_names
* elm.Diskselector.callback_focused_add
* elm.Diskselector.callback_unfocused_add
* elm.Entry.autocapital_type
* elm.Entry.context_menu_item_add
* elm.Entry.end_visible
* elm.Entry.input_panel_layout_variation
* elm.Entry.markup_filter_append
* elm.Entry.markup_filter_prepend
* elm.Entry.markup_filter_remove
* elm.Entry.text_style_user_peek
* elm.Entry.text_style_user_pop
* elm.Entry.text_style_user_push
* elm.EntryContextMenuItem
* elm.EntryContextMenuItem.icon
* elm.EntryContextMenuItem.label
* elm.Fileselector.filters_clear
* elm.Fileselector.hidden_visible
* elm.Fileselector.mime_types_filter_append
* elm.Fileselector.multi_select
* elm.Fileselector.selected_paths
* elm.Flip.flip_go_to
* elm.FlipSelector.callback_focused_add
* elm.FlipSelector.callback_unfocused_add
* elm.cache_all_flush
* elm.font_fontconfig_name_get
* elm.font_properties_free
* elm.font_properties_get
* elm.object_tree_dot_dump
* elm.object_tree_dump
* elm.Gengrid.at_xy_item_get
* elm.Gengrid.callback_focused_add
* elm.Gengrid.callback_unfocused_add
* elm.Gengrid.nth_item_get
* elm.GengridItem.append_to
* elm.GengridItem.insert_after
* elm.GengridItem.insert_before
* elm.GengridItem.prepend_to
* elm.GengridItem.sorted_insert
* elm.GengridItemClass.free
* elm.GengridItemClass.ref
* elm.GengridItemClass.unref
* elm.Genlist.callback_focused_add
* elm.Genlist.callback_unfocused_add
* elm.Genlist.focus_on_selection
* elm.Genlist.nth_item_get
* elm.GenlistItemClass.free
* elm.GenlistItemClass.ref
* elm.GenlistItemClass.unref
* elm.GestureLayer.continues_enable
* elm.GestureLayer.double_tap_timeout
* elm.GestureLayer.flick_time_limit_ms
* elm.GestureLayer.line_angular_tolerance
* elm.GestureLayer.line_distance_tolerance
* elm.GestureLayer.line_min_length
* elm.GestureLayer.long_tap_start_timeout
* elm.GestureLayer.rotate_angular_tolerance
* elm.GestureLayer.tap_finger_size
* elm.GestureLayer.zoom_distance_tolerance
* elm.GestureLayer.zoom_finger_factor
* elm.GestureLayer.zoom_wheel_factor
* elm.Hover.callback_focused_add
* elm.Hover.callback_unfocused_add
* elm.ImageErrorInfo
* elm.ImageProgressInfo
* elm.Index.callback_focused_add
* elm.Index.callback_unfocused_add
* elm.Index.delay_change_time
* elm.Index.omit_enabled
* elm.Label.slide_go
* elm.Label.slide_mode
* elm.LayoutClass.edje_object_can_access
* elm.LayoutClass.freeze
* elm.LayoutClass.thaw
* elm.List.at_xy_item_get
* elm.List.callback_focused_add
* elm.List.callback_unfocused_add
* elm.List.focus_on_selection
* elm.Map.callback_focused_add
* elm.Map.callback_unfocused_add
* elm.Mapbuf.auto
* elm.Menu.callback_dismissed_add
* elm.MultiButtonEntry.editable
* elm.Naviframe.callback_focused_add
* elm.Naviframe.callback_unfocused_add
* elm.need_eldbus
* elm.need_elocation
* elm.need_sys_notify
* elm.need_systray
* elm.ELM_NOTIFY_ALIGN_FILL
* elm.Notify.align
* elm.Object.domain_part_text_translatable_set
* elm.Object.domain_translatable_part_text_set
* elm.Object.focus_next_object_get
* elm.Object.focus_next_object_set
* elm.Object.focused_object
* elm.Object.orientation_mode_disabled
* elm.Object.scroll_freeze
* elm.Object.scroll_hold
* elm.Object.translatable_part_text_get
* elm.SelectionData.action
* elm.ObjectItem.domain_part_text_translatable_set
* elm.ObjectItem.domain_translatable_part_text_set
* elm.ObjectItem.translatable_part_text_get
* elm.Panel.callback_focused_add
* elm.Panel.callback_unfocused_add
* elm.Photocam.callback_focused_add
* elm.Photocam.callback_unfocused_add
* elm.PhotocamErrorInfo
* elm.PhotocamProgressInfo
* elm.Popup.callback_focused_add
* elm.Popup.callback_unfocused_add
* elm.Progressbar.callback_focused_add
* elm.Progressbar.callback_unfocused_add
* elm.Progressbar.part_value_get
* elm.Progressbar.part_value_set
* elm.Radio.callback_focused_add
* elm.Radio.callback_unfocused_add
* elm.Scrollable.callback_focused_add
* elm.Scrollable.callback_unfocused_add
* elm.Scrollable.movement_block
* elm.Scrollable.page_scroll_limit
* elm.Scrollable.page_size Getter for this property
* elm.Scrollable.page_snap
* elm.Scrollable.single_direction
* elm.Slider.callback_focused_add
* elm.Slider.callback_unfocused_add
* elm.Slider.step
* elm.Slideshow.callback_focused_add
* elm.Slideshow.callback_unfocused_add
* elm.Spinner.callback_focused_add
* elm.Spinner.callback_unfocused_add
* elm.Spinner.special_value_del
* elm.Spinner.special_value_get
* elm.Table.child_get
* elm.Thumb.aspect
* elm.Thumb.compress
* elm.Thumb.crop_align
* elm.Thumb.fdo_size
* elm.Thumb.format
* elm.Thumb.orientation
* elm.Thumb.quality
* elm.Thumb.size
* elm.Toolbar.callback_focused_add
* elm.Toolbar.callback_unfocused_add
* elm.Toolbar.reorder_mode
* elm.Toolbar.transverse_expanded
* elm.ToolbarItem.bring_in
* elm.ToolbarItem.show
* elm.Transit.smooth
* elm.Transit.tween_mode_factor
* elm.Player.callback_focused_add
* elm.Player.callback_unfocused_add
* elm.Video.callback_focused_add
* elm.Video.callback_unfocused_add
* elm.Web.callback_focused_add
* elm.Web.callback_unfocused_add
* elm.Web.url
* elm.Window.available_profiles
* elm.Window.callback_focused_add
* elm.Window.callback_unfocused_add
* elm.Window.floating_mode
* elm.Window.focus_highlight_animate
* elm.Window.main_menu
* elm.Window.norender
* elm.Window.norender_pop
* elm.Window.norender_push
* elm.Window.profile
* elm.Window.render
* elm.Window.screen_dpi

107
INSTALL
View File

@ -1,75 +1,59 @@
1. REQUIREMENTS
===============
1. REQUIREMENTS:
----------------
* Python 2.6 or higher, 3.2 or higher (http://www.python.org/)
- Tested with Python 3.8
* Python 2.6 or higher (http://www.python.org/)
- Tested with Python 2.6 / 2.7 / 3.2 / 3.3
* Cython 0.21 or higher (http://cython.org/)
- Tested with Cython 0.29.16
* Cython 0.19 or higher (http://cython.org/)
- Tested with Cython 0.19.1
* EFL must be the same minor version of the bindings,
es. python-efl 1.24 need efl 1.24
* EFL core library
- eo, evas, ecore, edje, emotion and elementary
* pkg-config (http://www.freedesktop.org/wiki/Software/pkg-config)
- Windows executable (and GLib dependency) can be downloaded from
http://www.gtk.org/download/win32.php
* To build the DOCS you will also need:
- python-sphinx
- [optional] graphviz
* At least 4GB of free RAM to build
- [optional] youtube module from the sphinx contrib repository.
2. BUILDING PYTHON-EFL
======================
2. BUILDING PYTHON-EFL:
-----------------------
Once EFL is built and installed in your desired destination, proceed with
building the wrapper using:
building the wrapper. The setup script can be forced to use purely C
sources by setting the environment variable DISABLE_CYTHON to 1.
* BUILDING WITH GCC/G++ (Linux, OS X, etc.)
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.
* BUILDING WITH Visual Studio (Windows)
python setup.py build
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
variables: DISABLE_CYTHON or ENABLE_CYTHON
* BUILDING WITH MINGW (Windows)
python setup.py build -c mingw32
* FORCE C SOURCES FOR BUILD
* FORCING C SOURCES FOR BUILD
env DISABLE_CYTHON=1 python setup.py build
* FORCE THE USAGE OF CYTHON
env ENABLE_CYTHON=1 python setup.py build
3. CLEANUP
==========
* For cleaning up:
python setup.py clean --all
* To also remove all the C/HTML files generated by Cython:
python setup.py clean_generated_files
WARNING: you will need cython to regenerate the C files, do not use this
in distribution tarballs, unless you know what are you doing.
4. INSTALLATION
===============
3. INSTALLATION:
----------------
* For system-wide installation (needs administrator privileges):
(sudo) python setup.py install
python setup.py install
* For user installation:
@ -77,19 +61,16 @@
* To install for python3:
(sudo) python3 setup.py install (also cython need to be installed with py3)
python3 setup.py install (also cython need to be installed with py3)
* Install with a custom prefix:
(sudo) python setup.py install --prefix=/MY_PREFIX
* You can also uninstall using:
(sudo) python setup.py uninstall
python setup.py install --prefix=/MY_PREFIX
5. DOCUMENTATION
================
4. DOCUMENTATION:
-----------------
To build the docs for the bindings you need to have Sphinx installed, for
(optional) graphs you need Graphviz, for (optional) Youtube demonstration
@ -97,8 +78,7 @@
packages: python-sphinx, graphviz, python-pygraphviz, libgv-python
To build the docs just run:
python setup.py build_doc
python setup.py build_doc
You will find the generated html docs under the folder:
build/sphinx/html
@ -107,15 +87,26 @@
up with empty documentation.
6. TESTS and EXAMPLES
=====================
5. TESTS and EXAMPLES:
----------------------
The tests/ folder contains all the unit tests available, you can run individual
tests or use the 00_run_all_tests.py in each folder or even in the tests/ base
dir to run all the tests at once.
Python 2.7 / 3.2 or greater is required for running the tests.
Python 2.7 is required for running the tests.
The scripts in examples/ folder must be run by the user as they require
user interaction.
6. UNINSTALL:
-------------
Unfortunately setup.py does not provide a way to remove the installed packages,
To completely remove the installed stuff just remove the 'efl' folder in
your python installation, usually /usr/(local/)lib/pythonX.X/dist-packages/efl

View File

@ -1,5 +1,5 @@
include README INSTALL COPYING COPYING.LESSER AUTHORS ChangeLog
recursive-include efl *.c *.h *.pyx *.pxi *.pxd
include README.rst INSTALL COPYING COPYING.LESSER AUTHORS changes.html
recursive-include efl *.c *.h *.pyx *.pxi
graft include
graft tests
recursive-exclude tests *.pyc

View File

@ -5,10 +5,6 @@
# want to type less or do not want to learn the python
# setup syntax.
#
# NOTE: This file is also used to discriminate when we are building from
# stable tarballs (in this case we disable cython by default) or from git
# sources as the Makefile is not distributed.
#
# Usage:
#
# make <cmd> to build using the default python interpreter
@ -16,7 +12,7 @@
#
PY = python3
PY = python
.PHONY: build
@ -29,19 +25,14 @@ install:
$(PY) setup.py install
.PHONY: uninstall
uninstall:
$(PY) setup.py uninstall
.PHONY: doc
doc:
$(PY) setup.py build build_doc
.PHONY: test
test:
$(PY) setup.py test
.PHONY: tests
tests:
$(PY) tests/00_run_all_tests.py
.PHONY: clean
@ -49,20 +40,12 @@ clean:
$(PY) setup.py clean --all
.PHONY: maintainer-clean
maintainer-clean:
.PHONY: maintaner-clean
maintaner-clean:
$(PY) setup.py clean --all clean_generated_files
rm -rf build/
rm -rf dist/
rm -rf python_efl.egg-info/
rm -f installed_files-*.txt
.PHONY: dist
dist:
$(PY) setup.py sdist --formats=gztar,xztar
$(PY) setup.py bdist_wheel
@cd dist/; for f in `ls *.tar.*` ; do \
echo Generating sha256 for: $$f ; \
sha256sum $$f > $$f.sha256; \
done
$(PY) setup.py sdist --formats=gztar,bztar

View File

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

84
README.rst Normal file
View File

@ -0,0 +1,84 @@
-----------------
PYTHON-EFL 1.10.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 EFL and Elementary.
INSTALL
=======
For installation instruction see the INSTALL file.
CHANGES FROM 1.9 to 1.10
========================
Deprecated in 1.10
------------------
CHANGES FROM 1.8 to 1.9
=======================
Deprecated in 1.9
-----------------
CHANGES FROM 1.7 to 1.8
=======================
* added efl container package
* ecore.file.Download => efl.ecore.FileDownload
* edje.edit.EdjeEdit => efl.edje_edit.EdjeEdit
* Emotion(module_filename="xxx") => Emotion(module_name="xxx")
* elm.ObjectItem.data changed to a dict (previously held args & kwargs)
* Many _set functions that would previously return status now instead raise
an exception when the underlying C function returns failure:
- efl.elementary.entry.Entry.file_set
- efl.elementary.fileselector.Fileselector.selected_set
- efl.elementary.genlist.GenlistItem.tooltip_window_mode_set
- efl.elementary.image.Image.file_set
- efl.elementary.layout_class.LayoutClass.file_set
- efl.elementary.layout_class.LayoutClass.theme_set
- efl.elementary.layout_class.LayoutClass.box_append
- efl.elementary.layout_class.LayoutClass.box_prepend
- efl.elementary.layout_class.LayoutClass.box_insert_before
- efl.elementary.layout_class.LayoutClass.box_insert_at
- efl.elementary.layout_class.LayoutClass.box_remove_all
- efl.elementary.layout_class.LayoutClass.table_pack
- efl.elementary.layout_class.LayoutClass.table_clear
- efl.elementary.layout_class.LayoutClass.part_cursor_set
- efl.elementary.layout_class.LayoutClass.part_cursor_unset
- efl.elementary.layout_class.LayoutClass.part_cursor_style_set
- efl.elementary.layout_class.LayoutClass.part_cursor_engine_only_set
- efl.elementary.photo.Photo.file_set
- efl.elementary.photocam.Photocam.file_set
- efl.elementary.video.Video.file_set
This also applies when assigning the relevant properties.
* This list of stuff will not be ported to the 1.8 tree. Because they are old,
not portable, or just because no one used and seem not usefull:
- EcoreEvas
- EcoreImf
- EcoreX
- EcoreWin32
- python-evas/evas/utils.py
- python-evas/evas/decorators.py
- python-evas/evas/debug.py
- python-evas old hack to rotate objects
Deprecated in 1.8
-----------------
* elm.Scroller.custom_widget_base_theme_set => elm.Layout.theme_set
* elm.notify.orient_set/get/prop removed => align
* elementary.need_e_dbus => elementary.need_edbus
* elm.domain_translatable_text_part_set => elm.domain_translatable_part_text_set

46
TODO Normal file
View File

@ -0,0 +1,46 @@
BUGS
====
* EdjeEdit: PartState API does not work
* Elm.Map: overlays_show segfaults, scrollers in examples are jumpy
* Elementary: when we use custom function callbacks we usually leak some
reference around, some examples:
- Entry.markup_filter_append()
- Fileselector.custom_filter_append()
- Multibuttonentry.format_function_set()
- Multibuttonentry.filter_append()
- Multibuttonentry.filterprepend()
Failing unit tests
------------------
* tests.edje.test_04_edit: testPartEffect (marked as known failure)
* tests.edje.test_04_edit: testGroupDel (skipped, segfault)
* tests.edje.test_04_edit: testExternal (skipped, TODO)
TODO
====
* update links and text on:
http://www.freedesktop.org/wiki/Software/DBusBindings
(requires fd.org shell account?)
* Review the internal functions and name them consistently
* Evas: SmartObject needs testing, work. Make it inheritable by extension
classes?
* Improve ethumb
* edje: complete the unit tests
* Initial Evas GL support (for Elm)
* Add more documentation for callbacks, events, etc.
* Check for missing Eo type mappings
Elm
---
* Drag-n-Drop
* Automate compilation of the example edje files.
* Add more examples
* Prefs
* GLView
* Unit tests
* Images missing in the documentation:
- datetime
- video
- web
- window ?

View File

@ -24,12 +24,6 @@ c_exclude_list = [
"elm_access", # Access disabled until 1.9
"elm_config_access", # Access disabled until 1.9
"elm_object_item_access", # Access disabled until 1.9
"elm_systray", # We currently have this in using Eo API
"elm_code_", # The code widget is still in beta
"elm_need_e_dbus", # has been deprecated long time ago
"elm_check_selected_get", # We already provide state_get
"elm_check_selected_set", # We already provide state_set
]
c_excludes = "|".join(c_exclude_list)
@ -61,6 +55,8 @@ params = {
"elementary": ("efl/elementary", "Elementary", "elm"),
}
EFL_MIN_VERSION = "1.9.99"
parser = argparse.ArgumentParser(
description="Reports EFL vs. Python-EFL API functions coverage"
)
@ -78,7 +74,7 @@ api_group.add_argument(
parser.add_argument(
"libs",
nargs="*",
choices=(list(params.keys()) + ["all"]),
choices=(params.keys() + ["all"]),
default="all"
)
args = parser.parse_args()
@ -169,9 +165,7 @@ def get_pyapis(pxd_path, header_name, prefix):
for path, dirs, files in os.walk(pxd_path):
for f in files:
# if not f.endswith(".pxd"):
# continue
if f.endswith(".pyc"):
if not f.endswith(".pxd"):
continue
open_args = (os.path.join(path, f),)