From: Enlightenment C. <no...@cv...> - 2007-08-09 13:47:39
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-evas/evas Modified Files: evas.c_evas_object_smart.pxi Log Message: Show traceback on SmartObject user-defined method exceptions. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object_smart.pxi,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- evas.c_evas_object_smart.pxi 19 Jul 2007 15:06:44 -0000 1.9 +++ evas.c_evas_object_smart.pxi 9 Aug 2007 13:47:33 -0000 1.10 @@ -26,35 +26,55 @@ cdef SmartObject obj obj = <SmartObject>Object_from_instance(o) if obj._m_move is not None: - obj._m_move(obj, x, y) + try: + obj._m_move(obj, x, y) + except Exception, e: + import traceback + traceback.print_exc() cdef void _smart_object_resize(Evas_Object *o, Evas_Coord w, Evas_Coord h): cdef SmartObject obj obj = <SmartObject>Object_from_instance(o) if obj._m_resize is not None: - obj._m_resize(obj, w, h) + try: + obj._m_resize(obj, w, h) + except Exception, e: + import traceback + traceback.print_exc() cdef void _smart_object_show(Evas_Object *o): cdef SmartObject obj obj = <SmartObject>Object_from_instance(o) if obj._m_show is not None: - obj._m_show(obj) + try: + obj._m_show(obj) + except Exception, e: + import traceback + traceback.print_exc() cdef void _smart_object_hide(Evas_Object *o): cdef SmartObject obj obj = <SmartObject>Object_from_instance(o) if obj._m_hide is not None: - obj._m_hide(obj) + try: + obj._m_hide(obj) + except Exception, e: + import traceback + traceback.print_exc() cdef void _smart_object_color_set(Evas_Object *o, int r, int g, int b, int a): cdef SmartObject obj obj = <SmartObject>Object_from_instance(o) if obj._m_color_set is not None: - obj._m_color_set(obj, r, g, b, a) + try: + obj._m_color_set(obj, r, g, b, a) + except Exception, e: + import traceback + traceback.print_exc() cdef void _smart_object_clip_set(Evas_Object *o, Evas_Object *clip): @@ -63,14 +83,22 @@ obj = <SmartObject>Object_from_instance(o) other = Object_from_instance(clip) if obj._m_clip_set is not None: - obj._m_clip_set(obj, other) + try: + obj._m_clip_set(obj, other) + except Exception, e: + import traceback + traceback.print_exc() cdef void _smart_object_clip_unset(Evas_Object *o): cdef SmartObject obj obj = <SmartObject>Object_from_instance(o) if obj._m_clip_unset is not None: - obj._m_clip_unset(obj) + try: + obj._m_clip_unset(obj) + except Exception, e: + import traceback + traceback.print_exc() cdef void _smart_callback(void *data, Evas_Object *o, void *event_info): |
From: Enlightenment C. <no...@cv...> - 2007-08-09 15:59:33
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-evas/evas Modified Files: evas.c_evas_object_smart.pxi Log Message: Remove bad 'default' implementation for SmartObject, they were causing more troubles than saving time. Too bad. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object_smart.pxi,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- evas.c_evas_object_smart.pxi 9 Aug 2007 13:47:33 -0000 1.10 +++ evas.c_evas_object_smart.pxi 9 Aug 2007 15:59:28 -0000 1.11 @@ -184,19 +184,15 @@ and move registered children by it. * resize(): called in order to resize object. No default implementation. * show(): called in order to show the given element. Usually you call - the same function on children. Default implementation calls show() - on registered children. + the same function on children. No default implementation. * hide(): called in order to hide the given element. Usually you call - the same function on children. Default implementation calls hide() - on registered children. + the same function on children. No default implementation. * color_set(): called in order to change object color. No default implementation. * clip_set(): called in order to limit object's visible area. - Default implementation calls clip_set() on every registered - children. + No default implementation. * clip_unset(): called in order to unlimit object's visible area. - Default implementation calls clip_unset() on every registered - children. + No default implementation. Notes: * If you redefine object's __init__(), you MUST call your parent! @@ -323,59 +319,6 @@ itr = itr.next evas_list_free(lst) - def show(self): - cdef Evas_List *lst, *itr - lst = evas_object_smart_members_get(self.obj) - itr = lst - while itr: - evas_object_show(<Evas_Object*>itr.data) - itr = itr.next - evas_list_free(lst) - - def hide(self): - cdef Evas_List *lst, *itr - lst = evas_object_smart_members_get(self.obj) - itr = lst - while itr: - evas_object_hide(<Evas_Object*>itr.data) - itr = itr.next - evas_list_free(lst) - - def color_set(self, int r, int g, int b, int a): - cdef Evas_List *lst, *itr - lst = evas_object_smart_members_get(self.obj) - itr = lst - while itr: - evas_object_color_set(<Evas_Object*>itr.data, r, g, b, a) - itr = itr.next - evas_list_free(lst) - - def clip_set(self, obj): - cdef Evas_List *lst, *itr - cdef Object o - cdef Evas_Object *clip - if obj is None: - clip = NULL - elif isinstance(obj, Object): - o = <Object>obj - clip = o.obj - else: - raise ValueError("clip must be instance of evas.Object or None.") - lst = evas_object_smart_members_get(self.obj) - itr = lst - while itr: - evas_object_clip_set(<Evas_Object*>itr.data, clip) - itr = itr.next - evas_list_free(lst) - - def clip_unset(self): - cdef Evas_List *lst, *itr - lst = evas_object_smart_members_get(self.obj) - itr = lst - while itr: - evas_object_clip_unset(<Evas_Object*>itr.data) - itr = itr.next - evas_list_free(lst) # Factory def Rectangle(self, size=None, pos=None, geometry=None, color=None, |
From: Enlightenment C. <no...@cv...> - 2007-08-15 13:55:03
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-edje/examples/evas-demo/03-kinetic_list Added Files: .cvsignore Log Message: cvsignore++ |
From: Enlightenment C. <no...@cv...> - 2007-08-15 14:01:55
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-evas/evas Modified Files: __init__.py Log Message: Minor cosmetical fixes. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/__init__.py,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- __init__.py 24 Jul 2007 14:20:07 -0000 1.11 +++ __init__.py 15 Aug 2007 14:01:54 -0000 1.12 @@ -100,7 +100,7 @@ class Rectangle(c_evas.Rectangle): def __init__(self, canvas, size=None, pos=None, geometry=None, color=None, - name=None): + name=None): c_evas.Rectangle.__init__(self, canvas) self._new_obj() self._set_common_params(size=size, pos=pos, geometry=geometry, @@ -109,7 +109,7 @@ class Line(c_evas.Line): def __init__(self, canvas, start=None, end=None, size=None, pos=None, - geometry=None, color=None, name=None): + geometry=None, color=None, name=None): c_evas.Line.__init__(self, canvas) self._new_obj() self._set_common_params(start=start, end=end, size=size, pos=pos, @@ -119,8 +119,6 @@ class Image(c_evas.Image): def __init__(self, canvas, file=None, size=None, pos=None, geometry=None, color=None, name=None): - if not isinstance(canvas, c_evas.Canvas): - raise TypeError("First argument must be evas.Canvas") c_evas.Image.__init__(self, canvas) self._new_obj() self._set_common_params(file=file, size=size, pos=pos, @@ -129,7 +127,7 @@ class Gradient(c_evas.Gradient): def __init__(self, canvas, size=None, pos=None, geometry=None, color=None, - name=None): + name=None): c_evas.Gradient.__init__(self, canvas) self._new_obj() self._set_common_params(size=size, pos=pos, geometry=geometry, |
From: Enlightenment C. <no...@cv...> - 2007-08-15 14:03:36
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-evas/tests Added Files: 11-decorators.py Log Message: Decorators to make development easier, less error prone and more consistent. |
From: Enlightenment C. <no...@cv...> - 2007-08-15 14:04:07
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-evas/evas Modified Files: evas.c_evas_object.pxi Added Files: decorators.py Log Message: Decorators to make development easier, less error prone and more consistent. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object.pxi,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- evas.c_evas_object.pxi 24 Jul 2007 14:20:07 -0000 1.8 +++ evas.c_evas_object.pxi 15 Aug 2007 14:03:34 -0000 1.9 @@ -8,6 +8,14 @@ python.Py_DECREF(self) +cdef _register_decorated_callbacks(obj): + for attr_name in dir(obj): + attr_value = getattr(obj, attr_name) + if callable(attr_value) and hasattr(attr_value, "evas_event_callback"): + t = getattr(attr_value, "evas_event_callback") + obj.event_callback_add(t, attr_value) + + cdef public class Object [object PyEvasObject, type PyEvasObject_Type]: def __new__(self, *a, **ka): self.obj = NULL @@ -41,6 +49,7 @@ evas_object_data_set(obj, "python-evas", <void *>self) evas_object_event_callback_add(obj, EVAS_CALLBACK_FREE, obj_free_cb, <void *>self) + _register_decorated_callbacks(self) return 1 def __dealloc__(self): |
From: Enlightenment C. <no...@cv...> - 2007-08-15 15:09:13
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-edje/tests Modified Files: theme.edc theme.edj Added Files: 02-decorators.py Log Message: Decorators to make development easier, less error prone and more consistent. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-edje/tests/theme.edc,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- theme.edc 3 May 2007 21:56:06 -0000 1.1.1.1 +++ theme.edc 15 Aug 2007 15:09:10 -0000 1.2 @@ -39,6 +39,30 @@ } } } + part { + name: "label"; + type: TEXT; + description { + state: "default" 0.0; + rel1 { + relative: 0.0 0.0; + offset: 0 0; + } + rel2 { + relative: 1.0 1.0; + offset: -1 -1; + } + } + } + programs { + program { + name: "emit_back_message"; + signal: "emit,message"; + script { + send_message(MSG_INT, 1, 1); + } + } + } } } } =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-edje/tests/theme.edj,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 Binary files /tmp/cvsa6t3c3 and /tmp/cvs6S05jy differ |
From: Enlightenment C. <no...@cv...> - 2007-08-15 15:09:42
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-edje/examples/evas-demo/02-vkbd Modified Files: 02-vkbd.py Log Message: Decorators to make development easier, less error prone and more consistent. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-edje/examples/evas-demo/02-vkbd/02-vkbd.py,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- 02-vkbd.py 25 Jul 2007 15:39:31 -0000 1.1 +++ 02-vkbd.py 15 Aug 2007 15:09:10 -0000 1.2 @@ -9,7 +9,9 @@ import os import sys import evas +import evas.decorators import edje +import edje.decorators import ecore import ecore.evas @@ -43,25 +45,8 @@ self.pressed_keys = {} self.is_shift_down = False self.is_mouse_down = False - self._setup_events() self.press_shift() - def _setup_events(self): - self.signal_callback_add("key_down", "*", self.on_edje_signal_key_down) - self.signal_callback_add("mouse_over_key", "*", - self.on_edje_signal_mouse_over_key) - self.signal_callback_add("mouse_out_key", "*", - self.on_edje_signal_mouse_out_key) - self.signal_callback_add("mouse,down,1", "*", - self.on_edje_signal_mouse_down_key) - self.signal_callback_add("mouse,down,1,*", "*", - self.on_edje_signal_mouse_down_key) - self.signal_callback_add("mouse,up,1", "*", - self.on_edje_signal_mouse_up_key) - self.on_mouse_down_add(self.on_mouse_down) - self.on_mouse_up_add(self.on_mouse_up) - self.on_key_down_add(self.on_key_down) - def press_shift(self): self.obj["alpha"].signal_emit("press_shift", "") self.is_shift_down = True @@ -76,7 +61,7 @@ else: self.press_shift() - @staticmethod + @edje.decorators.signal_callback("key_down", "*") def on_edje_signal_key_down(self, emission, source): if ':' in source: key = source.split(":", 1)[1] @@ -111,7 +96,7 @@ self.text += key self.part_text_set("field", "".join(self.text)) - @staticmethod + @edje.decorators.signal_callback("mouse_over_key", "*") def on_edje_signal_mouse_over_key(self, emission, source): if not self.is_mouse_down: return @@ -129,7 +114,7 @@ self.pressed_keys[subpart] = subpart o.signal_emit("press_key", subpart) - @staticmethod + @edje.decorators.signal_callback("mouse_out_key", "*") def on_edje_signal_mouse_out_key(self, emission, source): if not self.is_mouse_down: return @@ -142,7 +127,8 @@ del self.pressed_keys[subpart] o.signal_emit("release_key", subpart) - @staticmethod + + @edje.decorators.signal_callback("mouse,down,1", "*") def on_edje_signal_mouse_down_key(self, emission, source): if ':' not in source: return @@ -159,7 +145,11 @@ self.pressed_keys[subpart] = subpart o.signal_emit("press_key", subpart) - @staticmethod + @edje.decorators.signal_callback("mouse,down,1,*", "*") + def on_edje_signal_mouse_down_multiple_key(self, emission, source): + self.on_edje_signal_mouse_down_key(emission, source) + + @edje.decorators.signal_callback("mouse,up,1", "*") def on_edje_signal_mouse_up_key(self, emission, source): if ':' not in source: return @@ -171,19 +161,19 @@ o.signal_emit("release_key", subpart) o.signal_emit("activated_key", subpart) - @staticmethod + @evas.decorators.mouse_down_callback def on_mouse_down(self, event): if event.button != 1: return self.is_mouse_down = True - @staticmethod + @evas.decorators.mouse_up_callback def on_mouse_up(self, event): if event.button != 1: return self.is_mouse_down = False - @staticmethod + @evas.decorators.key_down_callback def on_key_down(self, event): k = event.keyname.lower() if k == "return": |
From: Enlightenment C. <no...@cv...> - 2007-08-15 15:09:42
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-edje/edje Modified Files: edje.c_edje_object.pxi Added Files: decorators.py Log Message: Decorators to make development easier, less error prone and more consistent. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-edje/edje/edje.c_edje_object.pxi,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- edje.c_edje_object.pxi 19 Jul 2007 15:06:44 -0000 1.12 +++ edje.c_edje_object.pxi 15 Aug 2007 15:09:09 -0000 1.13 @@ -40,6 +40,19 @@ traceback.print_exc() +cdef _register_decorated_callbacks(obj): + for attr_name in dir(obj): + attr_value = getattr(obj, attr_name) + if callable(attr_value): + if hasattr(attr_value, "edje_signal_callback"): + emission, source = getattr(attr_value, "edje_signal_callback") + obj.signal_callback_add(emission, source, attr_value) + elif hasattr(attr_value, "edje_text_change_callback"): + obj.text_change_cb_set(attr_value) + elif hasattr(attr_value, "edje_message_handler"): + obj.message_handler_set(attr_value) + + class EdjeLoadError(Exception): def __init__(self, int code): if code == EDJE_LOAD_ERROR_NONE: @@ -70,6 +83,7 @@ def _new_obj(self): if self.obj == NULL: self._set_obj(edje_object_add(self._evas.obj)) + _register_decorated_callbacks(self) def _set_common_params(self, file=None, group=None, size=None, pos=None, geometry=None, color=None, name=None): |
From: Enlightenment C. <no...@cv...> - 2007-08-15 15:31:51
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-ecore/ecore/evas Modified Files: ecore.evas.c_ecore_evas_base.pxi Log Message: Show traceback on exceptions, helps a lot. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/evas/ecore.evas.c_ecore_evas_base.pxi,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ecore.evas.c_ecore_evas_base.pxi 6 May 2007 17:39:48 -0000 1.2 +++ ecore.evas.c_ecore_evas_base.pxi 15 Aug 2007 15:31:47 -0000 1.3 @@ -9,72 +9,128 @@ cdef void resize_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._resize_cb(self) + try: + self._resize_cb(self) + except Exception, e: + import traceback + traceback.print_exc() cdef void move_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._move_cb(self) + try: + self._move_cb(self) + except Exception, e: + import traceback + traceback.print_exc() cdef void show_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._show_cb(self) + try: + self._show_cb(self) + except Exception, e: + import traceback + traceback.print_exc() cdef void hide_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._hide_cb(self) + try: + self._hide_cb(self) + except Exception, e: + import traceback + traceback.print_exc() cdef void delete_request_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._delete_request_cb(self) + try: + self._delete_request_cb(self) + except Exception, e: + import traceback + traceback.print_exc() cdef void destroy_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._destroy_cb(self) + try: + self._destroy_cb(self) + except Exception, e: + import traceback + traceback.print_exc() cdef void focus_in_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._focus_in_cb(self) + try: + self._focus_in_cb(self) + except Exception, e: + import traceback + traceback.print_exc() cdef void focus_out_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._focus_out_cb(self) + try: + self._focus_out_cb(self) + except Exception, e: + import traceback + traceback.print_exc() cdef void sticky_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._sticky_cb(self) + try: + self._sticky_cb(self) + except Exception, e: + import traceback + traceback.print_exc() cdef void unsticky_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._unsticky_cb(self) + try: + self._unsticky_cb(self) + except Exception, e: + import traceback + traceback.print_exc() cdef void mouse_in_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._mouse_in_cb(self) + try: + self._mouse_in_cb(self) + except Exception, e: + import traceback + traceback.print_exc() cdef void mouse_out_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._mouse_out_cb(self) + try: + self._mouse_out_cb(self) + except Exception, e: + import traceback + traceback.print_exc() cdef void pre_render_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._pre_render_cb(self) + try: + self._pre_render_cb(self) + except Exception, e: + import traceback + traceback.print_exc() cdef void post_render_cb(Ecore_Evas *ee): cdef EcoreEvas self self = EcoreEvas_from_instance(ee) - self._post_render_cb(self) + try: + self._post_render_cb(self) + except Exception, e: + import traceback + traceback.print_exc() |
From: Enlightenment C. <no...@cv...> - 2007-08-15 17:20:01
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-ecore/ecore/evas Added Files: utils.py Log Message: Utilities to easy callback connections |
From: Enlightenment C. <no...@cv...> - 2007-08-15 17:32:45
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-evas/evas Added Files: utils.py Log Message: Utilities to easy callback connections |
From: Enlightenment C. <no...@cv...> - 2007-08-22 14:12:46
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-evas Modified Files: setup.py Log Message: Install evas.c_evas.h so one can write extensions in pure-C =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/setup.py,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- setup.py 24 Jul 2007 14:42:04 -0000 1.13 +++ setup.py 22 Aug 2007 14:12:36 -0000 1.14 @@ -40,6 +40,7 @@ **pkgconfig('"evas >= 0.9.9.040"')) headers = ['evas/evas.c_evas.pxd', + 'evas/evas.c_evas.h', 'evas/python_evas_utils.h', ] |
From: Enlightenment C. <no...@cv...> - 2007-08-22 14:29:57
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-evas/evas Modified Files: evas.c_evas.pxd evas.c_evas_object_smart.pxi Log Message: Fix circular reference, have Factory to add Text as member =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas.pxd,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- evas.c_evas.pxd 24 Jul 2007 14:20:07 -0000 1.10 +++ evas.c_evas.pxd 22 Aug 2007 14:29:54 -0000 1.11 @@ -624,14 +624,6 @@ cdef object _m_color_set cdef object _m_clip_set cdef object _m_clip_unset - cdef object _m_old_delete - cdef object _m_old_move - cdef object _m_old_resize - cdef object _m_old_show - cdef object _m_old_hide - cdef object _m_old_color_set - cdef object _m_old_clip_set - cdef object _m_old_clip_unset cdef class Rectangle(Object): =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object_smart.pxi,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- evas.c_evas_object_smart.pxi 9 Aug 2007 15:59:28 -0000 1.11 +++ evas.c_evas_object_smart.pxi 22 Aug 2007 14:29:54 -0000 1.12 @@ -10,16 +10,30 @@ cdef SmartObject obj obj = <SmartObject>Object_from_instance(o) if obj._m_delete is not None: - obj._m_delete(obj) + try: + obj._m_delete(obj) + except Exception, e: + import traceback + traceback.print_exc() + + del obj.delete + del obj.move + del obj.resize + del obj.show + del obj.hide + del obj.color_set + del obj.clip_set + del obj.clip_unset + obj._smart_callbacks = None - obj.delete = obj._m_old_delete - obj.move = obj._m_old_move - obj.resize = obj._m_old_resize - obj.show = obj._m_old_show - obj.hide = obj._m_old_hide - obj.color_set = obj._m_old_color_set - obj.clip_set = obj._m_old_clip_set - obj.clip_unset = obj._m_old_clip_unset + obj._m_delete = None + obj._m_move = None + obj._m_resize = None + obj._m_show = None + obj._m_hide = None + obj._m_color_set = None + obj._m_clip_set = None + obj._m_clip_unset = None cdef void _smart_object_move(Evas_Object *o, Evas_Coord x, Evas_Coord y): @@ -207,35 +221,27 @@ def __new__(self, *a, **ka): self._smart_callbacks = dict() cls = self.__class__ - self._m_old_delete = self.delete self._m_delete = _smart_class_get_impl_method(cls, "delete") if self._m_delete is not None: self.delete = python.PyMethod_New(Object.delete, self, cls) - self._m_old_move = self.move self._m_move = _smart_class_get_impl_method(cls, "move") if self._m_move is not None: self.move = python.PyMethod_New(Object.move, self, cls) - self._m_old_resize = self.resize self._m_resize = _smart_class_get_impl_method(cls, "resize") if self._m_resize is not None: self.resize = python.PyMethod_New(Object.resize, self, cls) - self._m_old_show = self.show self._m_show = _smart_class_get_impl_method(cls, "show") if self._m_show is not None: self.show = python.PyMethod_New(Object.show, self, cls) - self._m_old_hide = self.hide self._m_hide = _smart_class_get_impl_method(cls, "hide") if self._m_hide is not None: self.hide = python.PyMethod_New(Object.hide, self, cls) - self._m_old_color_set = self.color_set self._m_color_set = _smart_class_get_impl_method(cls, "color_set") if self._m_color_set is not None: self.color_set = python.PyMethod_New(Object.color_set, self, cls) - self._m_old_clip_set = self.clip_set self._m_clip_set = _smart_class_get_impl_method(cls, "clip_set") if self._m_clip_set is not None: self.clip_set = python.PyMethod_New(Object.clip_set, self, cls) - self._m_old_clip_unset = self.clip_unset self._m_clip_unset = _smart_class_get_impl_method(cls, "clip_unset") if self._m_clip_unset is not None: self.clip_unset = python.PyMethod_New(Object.clip_unset, self, cls) @@ -378,4 +384,5 @@ glow_color=glow_color, glow2_color=glow2_color, outline_color=outline_color, size=size, pos=pos, geometry=geometry, color=color, name=name) + self.member_add(obj) return obj |
From: Enlightenment C. <no...@cv...> - 2007-08-22 14:54:16
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-evas/evas Modified Files: evas.c_evas_object_smart.pxi Log Message: Oops, should check if object provides custom implementation =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object_smart.pxi,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- evas.c_evas_object_smart.pxi 22 Aug 2007 14:29:54 -0000 1.12 +++ evas.c_evas_object_smart.pxi 22 Aug 2007 14:54:13 -0000 1.13 @@ -16,14 +16,38 @@ import traceback traceback.print_exc() - del obj.delete - del obj.move - del obj.resize - del obj.show - del obj.hide - del obj.color_set - del obj.clip_set - del obj.clip_unset + try: + del obj.delete + except AttributeError, e: + pass + try: + del obj.move + except AttributeError, e: + pass + try: + del obj.resize + except AttributeError, e: + pass + try: + del obj.show + except AttributeError, e: + pass + try: + del obj.hide + except AttributeError, e: + pass + try: + del obj.color_set + except AttributeError, e: + pass + try: + del obj.clip_set + except AttributeError, e: + pass + try: + del obj.clip_unset + except AttributeError, e: + pass obj._smart_callbacks = None obj._m_delete = None |
From: Enlightenment C. <no...@cv...> - 2007-08-22 15:44:19
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-evas/evas Modified Files: evas.c_evas_object.pxi Log Message: Fix free callback, it need to be handled specially. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object.pxi,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- evas.c_evas_object.pxi 15 Aug 2007 14:03:34 -0000 1.9 +++ evas.c_evas_object.pxi 22 Aug 2007 15:44:16 -0000 1.10 @@ -5,6 +5,16 @@ self = <Object>data self.obj = NULL self._evas = <Canvas>None + + if self._callbacks[EVAS_CALLBACK_FREE] is not None: + lst = self._callbacks[EVAS_CALLBACK_FREE] + for func, args, kargs in lst: + try: + func(self, *args, **kargs) + except Exception, e: + import traceback + traceback.print_exc() + python.Py_DECREF(self) @@ -16,6 +26,41 @@ obj.event_callback_add(t, attr_value) +cdef _add_callback_to_list(Object obj, int type, func, args, kargs): + if type < 0 or type >= evas_event_callbacks_len: + raise ValueError("Invalid callback type") + + r = (func, args, kargs) + lst = obj._callbacks[type] + if lst is not None: + lst.append(r) + return False + else: + obj._callbacks[type] = [r] + return True + + +cdef _del_callback_from_list(Object obj, int type, func): + if type < 0 or type >= evas_event_callbacks_len: + raise ValueError("Invalid callback type") + + lst = obj._callbacks[type] + if not lst: + raise ValueError("Callback %s was not registered with type %d" % + (func, type)) + + i = None + for i, r in enumerate(lst): + if func == r[0]: + break + else: + raise ValueError("Callback %s was not registered with type %d" % + (func, type)) + + del lst[i] + return len(lst) == 0 + + cdef public class Object [object PyEvasObject, type PyEvasObject_Type]: def __new__(self, *a, **ka): self.obj = NULL @@ -513,15 +558,7 @@ def event_callback_add(self, int type, func, *args, **kargs): cdef evas_event_callback_t cb - if type < 0 or type >= evas_event_callbacks_len: - raise ValueError("Invalid callback type") - - r = (func, args, kargs) - lst = self._callbacks[type] - if lst is not None: - lst.append(r) - else: - self._callbacks[type] = [r] + if _add_callback_to_list(self, type, func, args, kargs): cb = evas_event_callbacks[type] evas_object_event_callback_add(self.obj, <Evas_Callback_Type>type, @@ -529,24 +566,7 @@ def event_callback_del(self, int type, func): cdef evas_event_callback_t cb - if type < 0 or type >= evas_event_callbacks_len: - raise ValueError("Invalid callback type") - - lst = self._callbacks[type] - if not lst: - raise ValueError("Callback %s was not registered with type %d" % - (func, type)) - - i = None - for i, r in enumerate(lst): - if func == r[0]: - break - else: - raise ValueError("Callback %s was not registered with type %d" % - (func, type)) - - del lst[i] - if len(lst) == 0: + if _del_callback_from_list(self, type, func): self._callbacks[type] = None cb = evas_event_callbacks[type] evas_object_event_callback_del(self.obj, @@ -589,10 +609,10 @@ self.event_callback_del(EVAS_CALLBACK_MOUSE_WHEEL, func) def on_free_add(self, func, *a, **k): - self.event_callback_add(EVAS_CALLBACK_FREE, func, *a, **k) + _add_callback_to_list(self, EVAS_CALLBACK_FREE, func, a, k) def on_free_del(self, func): - self.event_callback_del(EVAS_CALLBACK_FREE, func) + _del_callback_from_list(self, EVAS_CALLBACK_FREE, func) def on_key_down_add(self, func, *a, **k): self.event_callback_add(EVAS_CALLBACK_KEY_DOWN, func, *a, **k) |
From: Enlightenment C. <no...@cv...> - 2007-08-22 19:04:58
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-evas/evas Modified Files: evas.c_evas_object_text.pxi Log Message: Reorder font_source_set and font_set :-) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object_text.pxi,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- evas.c_evas_object_text.pxi 11 May 2007 01:47:03 -0000 1.1 +++ evas.c_evas_object_text.pxi 22 Aug 2007 19:04:55 -0000 1.2 @@ -13,12 +13,12 @@ color=color, name=name) if text is not None: self.text_set(text) + if font_source: + self.font_source_set(font_source) if font: if not isinstance(font, (tuple, list)): font = (font,) self.font_set(*font) - if font_source: - self.font_source_set(font_source) if style is not None: self.style_set(style) if shadow_color is not None: |
From: Enlightenment C. <no...@cv...> - 2007-08-27 00:21:19
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-edje/examples/evas-demo/02-vkbd Modified Files: 02-vkbd.py Log Message: Fix bug introduced with change to decorators. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-edje/examples/evas-demo/02-vkbd/02-vkbd.py,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- 02-vkbd.py 15 Aug 2007 15:09:10 -0000 1.2 +++ 02-vkbd.py 27 Aug 2007 00:21:15 -0000 1.3 @@ -147,7 +147,7 @@ @edje.decorators.signal_callback("mouse,down,1,*", "*") def on_edje_signal_mouse_down_multiple_key(self, emission, source): - self.on_edje_signal_mouse_down_key(emission, source) + self.on_edje_signal_mouse_down_key(self, emission, source) @edje.decorators.signal_callback("mouse,up,1", "*") def on_edje_signal_mouse_up_key(self, emission, source): |
From: Enlightenment C. <no...@cv...> - 2007-09-01 15:59:33
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-evas/evas Modified Files: __init__.py evas.c_evas.pyx evas.c_evas_canvas.pxi evas.c_evas_object.pxi evas.c_evas_object_gradient.pxi evas.c_evas_object_image.pxi evas.c_evas_object_line.pxi evas.c_evas_object_polygon.pxi evas.c_evas_object_rectangle.pxi evas.c_evas_object_smart.pxi evas.c_evas_object_text.pxi Log Message: Cleanup: simplify construction of wrappers for already existent objects. Before I had one class redefinition in __init__.py for each used class, this was used to have an end-user constructor that would call evas to create new objects, while the base class would start shallow and would accept Evas_Object with _set_obj(). Caio noticed that we should instead have end-user constructor in the base class and use Class.__new__() to avoid calling it when we require, like Object_from_instance(). Patch by Caio Marcelo with minor adjustments. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/__init__.py,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- __init__.py 15 Aug 2007 14:01:54 -0000 1.12 +++ __init__.py 1 Sep 2007 15:59:30 -0000 1.13 @@ -2,13 +2,12 @@ import c_evas -shutdown = c_evas.shutdown -render_method_lookup = c_evas.render_method_lookup -render_method_list = c_evas.render_method_list -color_argb_premul = c_evas.color_argb_premul -color_argb_unpremul = c_evas.color_argb_unpremul -color_rgb_to_hsv = c_evas.color_rgb_to_hsv -color_hsv_to_rgb = c_evas.color_hsv_to_rgb +from c_evas import Canvas, SmartObject, Rectangle, Line, Image, \ + Gradient, Polygon, Text, Rect, EvasLoadError, \ + shutdown, render_method_lookup, render_method_list, \ + color_argb_premul, color_argb_unpremul, \ + color_rgb_to_hsv, color_hsv_to_rgb + EVAS_CALLBACK_MOUSE_IN = 0 EVAS_CALLBACK_MOUSE_OUT = 1 @@ -72,89 +71,5 @@ EVAS_OBJECT_POINTER_MODE_AUTOGRAB = 0 EVAS_OBJECT_POINTER_MODE_NOGRAB = 1 -EvasLoadError = c_evas.EvasLoadError -Rect = c_evas.Rect - -class Canvas(c_evas.Canvas): - def __init__(self, method=None, size=None, viewport=None): - c_evas.Canvas.__init__(self) - self._new_evas() - if method: - self.output_method_set(method) - if size: - self.size_set(*size) - if viewport: - self.viewport_set(*viewport) - - -class SmartObject(c_evas.SmartObject): - def __init__(self, canvas, size=None, pos=None, geometry=None, color=None, - name=None): - if type(self) is SmartObject or type(self) is c_evas.SmartObject: - raise TypeError("Must not instantiate SmartObject, but subclasses") - c_evas.SmartObject.__init__(self, canvas) - self._new_obj() - self._set_common_params(size=size, pos=pos, geometry=geometry, - color=color, name=name) - - -class Rectangle(c_evas.Rectangle): - def __init__(self, canvas, size=None, pos=None, geometry=None, color=None, - name=None): - c_evas.Rectangle.__init__(self, canvas) - self._new_obj() - self._set_common_params(size=size, pos=pos, geometry=geometry, - color=color, name=name) - - -class Line(c_evas.Line): - def __init__(self, canvas, start=None, end=None, size=None, pos=None, - geometry=None, color=None, name=None): - c_evas.Line.__init__(self, canvas) - self._new_obj() - self._set_common_params(start=start, end=end, size=size, pos=pos, - geometry=geometry, color=color, name=name) - - -class Image(c_evas.Image): - def __init__(self, canvas, file=None, size=None, pos=None, geometry=None, - color=None, name=None): - c_evas.Image.__init__(self, canvas) - self._new_obj() - self._set_common_params(file=file, size=size, pos=pos, - geometry=geometry, color=color, name=name) - - -class Gradient(c_evas.Gradient): - def __init__(self, canvas, size=None, pos=None, geometry=None, color=None, - name=None): - c_evas.Gradient.__init__(self, canvas) - self._new_obj() - self._set_common_params(size=size, pos=pos, geometry=geometry, - color=color, name=name) - - -class Polygon(c_evas.Polygon): - def __init__(self, canvas, points=None, size=None, pos=None, geometry=None, - color=None, name=None): - c_evas.Polygon.__init__(self, canvas) - self._new_obj() - self._set_common_params(points=points, size=size, pos=pos, - geometry=geometry, color=color, name=name) - - -class Text(c_evas.Text): - def __init__(self, canvas, text=None, font=None, font_source=None, - style=None, shadow_color=None, glow_color=None, - glow2_color=None, outline_color=None, size=None, pos=None, - geometry=None, color=None, name=None): - c_evas.Text.__init__(self, canvas) - self._new_obj() - self._set_common_params(text=text, font=font, font_source=font_source, - style=style, shadow_color=shadow_color, - glow_color=glow_color, glow2_color=glow2_color, - outline_color=outline_color, size=size, - pos=pos, geometry=geometry, color=color, - name=name) c_evas.init() =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas.pyx,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- evas.c_evas.pyx 12 Jul 2007 19:11:53 -0000 1.8 +++ evas.c_evas.pyx 1 Sep 2007 15:59:30 -0000 1.9 @@ -34,7 +34,7 @@ if evas == NULL: return None - c = Canvas() + c = Canvas.__new__(Canvas) c._set_obj(evas) return c @@ -84,7 +84,8 @@ t = evas_object_type_get(obj) c = Canvas_from_instance(evas_object_evas_get(obj)) cls = object_mapping.get(t, Object) - o = cls(c) + o = cls.__new__(cls) + o._set_evas(c) o._set_obj(obj) return o =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_canvas.pxi,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- evas.c_evas_canvas.pxi 1 Aug 2007 13:19:42 -0000 1.9 +++ evas.c_evas_canvas.pxi 1 Sep 2007 15:59:30 -0000 1.10 @@ -4,6 +4,15 @@ def __new__(self, *a, **ka): self.obj = NULL + def __init__(self, method=None, size=None, viewport=None): + self._new_evas() + if method: + self.output_method_set(method) + if size: + self.size_set(*size) + if viewport: + self.viewport_set(*viewport) + def __dealloc__(self): if self.obj: evas_free(self.obj) @@ -341,56 +350,20 @@ return evas_event_freeze_get(self.obj) # Factory - def Rectangle(self, size=None, pos=None, geometry=None, color=None, - name=None): - obj = Rectangle(self) - obj._new_obj() - obj._set_common_params(size=size, pos=pos, geometry=geometry, - color=color, name=name) - return obj - - def Line(self, start=None, end=None, size=None, pos=None, - geometry=None, color=None, name=None): - obj = Line(self) - obj._new_obj() - obj._set_common_params(start=start, end=end, size=size, pos=pos, - geometry=geometry, color=color, name=name) - return obj - - - def Image(self, file=None, size=None, pos=None, geometry=None, - color=None, name=None): - obj = Image(self) - obj._new_obj() - obj._set_common_params(file=file, size=size, pos=pos, - geometry=geometry, color=color, name=name) - return obj - - def Gradient(self, size=None, pos=None, geometry=None, color=None, - name=None): - obj = Gradient(self) - obj._new_obj() - obj._set_common_params(size=size, pos=pos, geometry=geometry, - color=color, name=name) - return obj - - def Polygon(self, points=None, size=None, pos=None, geometry=None, - color=None, name=None): - obj = Polygon(self) - obj._new_obj() - obj._set_common_params(points=points, size=size, pos=pos, - geometry=geometry, color=color, name=name) - return obj - - def Text(self, text=None, font=None, font_source=None, style=None, - shadow_color=None, glow_color=None, glow2_color=None, - outline_color=None, size=None, pos=None, geometry=None, - color=None, name=None): - obj = Text(self) - obj._new_obj() - obj._set_common_params(text=text, font=font, font_source=font_source, - style=style, shadow_color=shadow_color, - glow_color=glow_color, glow2_color=glow2_color, - outline_color=outline_color, size=size, pos=pos, - geometry=geometry, color=color, name=name) - return obj + def Rectangle(self, **kargs): + return Rectangle(self, **kargs) + + def Line(self, **kargs): + return Line(self, **kargs) + + def Image(self, **kargs): + return Image(self, **kargs) + + def Gradient(self, **kargs): + return Gradient(self, **kargs) + + def Polygon(self, **kargs): + return Polygon(self, **kargs) + + def Text(self, **kargs): + return Text(self, **kargs) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object.pxi,v retrieving revision 1.10 retrieving revision 1.11 diff -u -3 -r1.10 -r1.11 --- evas.c_evas_object.pxi 22 Aug 2007 15:44:16 -0000 1.10 +++ evas.c_evas_object.pxi 1 Sep 2007 15:59:30 -0000 1.11 @@ -97,6 +97,9 @@ _register_decorated_callbacks(self) return 1 + def _set_evas(self, Canvas evas not None): + self._evas = evas + def __dealloc__(self): cdef void *data cdef Evas_Object *obj =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object_gradient.pxi,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- evas.c_evas_object_gradient.pxi 11 May 2007 01:43:32 -0000 1.1 +++ evas.c_evas_object_gradient.pxi 1 Sep 2007 15:59:30 -0000 1.2 @@ -1,9 +1,11 @@ # This file is included verbatim by c_evas.pyx cdef class Gradient(Object): - def _new_obj(self): + def __init__(self, Canvas canvas not None, **kargs): + Object.__init__(self, canvas) if self.obj == NULL: self._set_obj(evas_object_gradient_add(self._evas.obj)) + self._set_common_params(**kargs) def color_stop_add(self, int r, int g, int b, int a, int delta): """Adds a color stop to the given evas gradient object. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object_image.pxi,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- evas.c_evas_object_image.pxi 6 May 2007 17:28:10 -0000 1.4 +++ evas.c_evas_object_image.pxi 1 Sep 2007 15:59:30 -0000 1.5 @@ -1,18 +1,18 @@ # This file is included verbatim by c_evas.pyx cdef class Image(Object): - def _new_obj(self): + def __init__(self, Canvas canvas not None, **kargs): + Object.__init__(self, canvas) if self.obj == NULL: self._set_obj(evas_object_image_add(self._evas.obj)) + self._set_common_params(**kargs) - def _set_common_params(self, file=None, size=None, pos=None, geometry=None, - color=None, name=None): + def _set_common_params(self, file=None, **kargs): if file: if isinstance(file, basestring): file = (file, None) self.file_set(*file) - Object._set_common_params(self, size=size, pos=pos, geometry=geometry, - color=color, name=name) + Object._set_common_params(self, **kargs) def file_set(self, char *filename, key=None): cdef char *k =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object_line.pxi,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- evas.c_evas_object_line.pxi 5 May 2007 05:51:47 -0000 1.2 +++ evas.c_evas_object_line.pxi 1 Sep 2007 15:59:30 -0000 1.3 @@ -1,12 +1,13 @@ # This file is included verbatim by c_evas.pyx cdef class Line(Object): - def _new_obj(self): + def __init__(self, Canvas canvas not None, **kargs): + Object.__init__(self, canvas) if self.obj == NULL: self._set_obj(evas_object_line_add(self._evas.obj)) + self._set_common_params(**kargs) - def _set_common_params(self, start=None, end=None, size=None, pos=None, - geometry=None, color=None, name=None): + def _set_common_params(self, start=None, end=None, geometry=None, size=None, pos=None, **kargs): if start and end: x1 = start[0] y1 = start[1] @@ -39,8 +40,7 @@ self.start_set(*start) elif end: self.end_set(*end) - Object._set_common_params(self, size=size, pos=pos, geometry=geometry, - color=color, name=name) + Object._set_common_params(self, geometry=geometry, size=size, pos=pos, **kargs) def xy_set(self, int x1, int y1, int x2, int y2): evas_object_line_xy_set(self.obj, x1, y1, x2, y2) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object_polygon.pxi,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- evas.c_evas_object_polygon.pxi 11 May 2007 01:45:07 -0000 1.1 +++ evas.c_evas_object_polygon.pxi 1 Sep 2007 15:59:30 -0000 1.2 @@ -1,14 +1,14 @@ # This file is included verbatim by c_evas.pyx cdef class Polygon(Object): - def _new_obj(self): + def __init__(self, Canvas canvas not None, **kargs): + Object.__init__(self, canvas) if self.obj == NULL: self._set_obj(evas_object_polygon_add(self._evas.obj)) + self._set_common_params(**kargs) - def _set_common_params(self, points=None, size=None, pos=None, - geometry=None, color=None, name=None): - Object._set_common_params(self, size=size, pos=pos, geometry=geometry, - color=color, name=name) + def _set_common_params(self, points=None, **kargs): + Object._set_common_params(self, **kargs) if points: for x, y in points: self.point_add(x, y) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object_rectangle.pxi,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- evas.c_evas_object_rectangle.pxi 3 May 2007 14:29:22 -0000 1.1 +++ evas.c_evas_object_rectangle.pxi 1 Sep 2007 15:59:30 -0000 1.2 @@ -1,6 +1,8 @@ # This file is included verbatim by c_evas.pyx cdef class Rectangle(Object): - def _new_obj(self): + def __init__(self, Canvas canvas not None, **kargs): + Object.__init__(self, canvas) if self.obj == NULL: self._set_obj(evas_object_rectangle_add(self._evas.obj)) + self._set_common_params(**kargs) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object_smart.pxi,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- evas.c_evas_object_smart.pxi 22 Aug 2007 14:54:13 -0000 1.13 +++ evas.c_evas_object_smart.pxi 1 Sep 2007 15:59:30 -0000 1.14 @@ -273,11 +273,15 @@ def __dealloc__(self): self._smart_callbacks = None - def _new_obj(self): + def __init__(self, Canvas canvas not None, **kargs): cdef Evas_Smart *cls + if type(self) is SmartObject: + raise TypeError("Must not instantiate SmartObject, but subclasses") + Object.__init__(self, canvas) if self.obj == NULL: cls = _smart_class_from_name(self.__class__.__name__) self._set_obj(evas_object_smart_add(self._evas.obj, cls)) + self._set_common_params(**kargs) def member_add(self, Object child): evas_object_smart_member_add(child.obj, self.obj) @@ -351,62 +355,32 @@ # Factory - def Rectangle(self, size=None, pos=None, geometry=None, color=None, - name=None): - obj = Rectangle(self.evas) - obj._new_obj() - obj._set_common_params(size=size, pos=pos, geometry=geometry, - color=color, name=name) + def Rectangle(self, **kargs): + obj = Rectangle(self.evas, **kargs) self.member_add(obj) return obj - def Line(self, start=None, end=None, size=None, pos=None, - geometry=None, color=None, name=None): - obj = Line(self.evas) - obj._new_obj() - obj._set_common_params(start=start, end=end, size=size, pos=pos, - geometry=geometry, color=color, name=name) + def Line(self, **kargs): + obj = Line(self.evas, **kargs) self.member_add(obj) return obj - - def Image(self, file=None, size=None, pos=None, geometry=None, - color=None, name=None): - obj = Image(self.evas) - obj._new_obj() - obj._set_common_params(file=file, size=size, pos=pos, - geometry=geometry, color=color, name=name) + def Image(self, **kargs): + obj = Image(self.evas, **kargs) self.member_add(obj) return obj - def Gradient(self, size=None, pos=None, geometry=None, color=None, - name=None): - obj = Gradient(self.evas) - obj._new_obj() - obj._set_common_params(size=size, pos=pos, geometry=geometry, - color=color, name=name) + def Gradient(self, **kargs): + obj = Gradient(self.evas, **kargs) self.member_add(obj) return obj - def Polygon(self, points=None, size=None, pos=None, geometry=None, - color=None, name=None): - obj = Polygon(self.evas) - obj._new_obj() - obj._set_common_params(points=points, size=size, pos=pos, - geometry=geometry, color=color, name=name) + def Polygon(self, **kargs): + obj = Polygon(self.evas, **kargs) self.member_add(obj) return obj - def Text(self, text=None, font=None, font_source=None, style=None, - shadow_color=None, glow_color=None, glow2_color=None, - outline_color=None, size=None, pos=None, geometry=None, - color=None, name=None): - obj = Text(self.evas) - obj._new_obj() - obj._set_common_params(text=text, font=font, font_source=font_source, - style=style, shadow_color=shadow_color, - glow_color=glow_color, glow2_color=glow2_color, - outline_color=outline_color, size=size, pos=pos, - geometry=geometry, color=color, name=name) + def Text(self, **kargs): + obj = Text(self.evas, **kargs) self.member_add(obj) return obj =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-evas/evas/evas.c_evas_object_text.pxi,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- evas.c_evas_object_text.pxi 22 Aug 2007 19:04:55 -0000 1.2 +++ evas.c_evas_object_text.pxi 1 Sep 2007 15:59:30 -0000 1.3 @@ -1,16 +1,16 @@ # This file is included verbatim by c_evas.pyx cdef class Text(Object): - def _new_obj(self): + def __init__(self, Canvas canvas not None, **kargs): + Object.__init__(self, canvas) if self.obj == NULL: self._set_obj(evas_object_text_add(self._evas.obj)) + self._set_common_params(**kargs) def _set_common_params(self, text=None, font=None, font_source=None, style=None, shadow_color=None, glow_color=None, - glow2_color=None, outline_color=None, size=None, - pos=None, geometry=None, color=None, name=None): - Object._set_common_params(self, size=size, pos=pos, geometry=geometry, - color=color, name=name) + glow2_color=None, outline_color=None, **kargs): + Object._set_common_params(self, **kargs) if text is not None: self.text_set(text) if font_source: |
From: Enlightenment C. <no...@cv...> - 2007-09-01 16:00:02
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-edje/edje Modified Files: __init__.py edje.c_edje_object.pxi Log Message: Cleanup: simplify construction of wrappers for already existent objects. Before I had one class redefinition in __init__.py for each used class, this was used to have an end-user constructor that would call evas to create new objects, while the base class would start shallow and would accept Evas_Object with _set_obj(). Caio noticed that we should instead have end-user constructor in the base class and use Class.__new__() to avoid calling it when we require, like Object_from_instance(). Patch by Caio Marcelo with minor adjustments. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-edje/edje/__init__.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- __init__.py 19 Jul 2007 16:07:06 -0000 1.4 +++ __init__.py 1 Sep 2007 15:59:30 -0000 1.5 @@ -2,62 +2,16 @@ import c_edje -shutdown = c_edje.shutdown - -frametime_set = c_edje.frametime_set -frametime_get = c_edje.frametime_get - -freeze = c_edje.freeze -thaw = c_edje.thaw - -fontset_append_get = c_edje.fontset_append_get -fontset_append_set = c_edje.fontset_append_set - -file_collection_list = c_edje.file_collection_list -file_group_exists = c_edje.file_group_exists - -file_data_get = c_edje.file_data_get - -file_cache_set = c_edje.file_cache_set -file_cache_get = c_edje.file_cache_get -file_cache_flush = c_edje.file_cache_flush - -collection_cache_set = c_edje.collection_cache_set -collection_cache_get = c_edje.collection_cache_get -collection_cache_flush = c_edje.collection_cache_flush - -color_class_set = c_edje.color_class_set -color_class_del = c_edje.color_class_del -color_class_list = c_edje.color_class_list - -text_class_set = c_edje.text_class_set -text_class_del = c_edje.text_class_del -text_class_list = c_edje.text_class_list - -message_signal_process = c_edje.message_signal_process - -EdjeLoadError = c_edje.EdjeLoadError - -Message = c_edje.Message -MessageSignal = c_edje.MessageSignal -MessageString = c_edje.MessageString -MessageInt = c_edje.MessageInt -MessageFloat = c_edje.MessageFloat -MessageStringSet = c_edje.MessageStringSet -MessageIntSet = c_edje.MessageIntSet -MessageFloatSet = c_edje.MessageFloatSet -MessageStringInt = c_edje.MessageStringInt -MessageStringFloat = c_edje.MessageStringFloat -MessageStringIntSet = c_edje.MessageStringIntSet -MessageStringFloatSet = c_edje.MessageStringFloatSet - - -class Edje(c_edje.Edje): - def __init__(self, canvas, file=None, group=None, - size=None, pos=None, geometry=None, color=None, name=None): - c_edje.Edje.__init__(self, canvas) - self._new_obj() - self._set_common_params(file=file, group=group, size=size, pos=pos, - geometry=geometry, color=color, name=name) +from c_edje import Edje, shutdown, frametime_set, frametime_get, \ + freeze, thaw, fontset_append_get, fontset_append_set, \ + file_collection_list, file_group_exists, \ + file_data_get, file_cache_set, file_cache_get, file_cache_flush, \ + collection_cache_set, collection_cache_get, collection_cache_flush, \ + color_class_set, color_class_del, color_class_list, \ + text_class_set, text_class_del, text_class_list, \ + message_signal_process, EdjeLoadError, \ + Message, MessageSignal, MessageString, MessageInt, MessageFloat, \ + MessageStringSet, MessageIntSet, MessageFloatSet, MessageStringInt, \ + MessageStringFloat, MessageStringIntSet, MessageStringFloatSet c_edje.init() =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-edje/edje/edje.c_edje_object.pxi,v retrieving revision 1.13 retrieving revision 1.14 diff -u -3 -r1.13 -r1.14 --- edje.c_edje_object.pxi 15 Aug 2007 15:09:09 -0000 1.13 +++ edje.c_edje_object.pxi 1 Sep 2007 15:59:30 -0000 1.14 @@ -80,10 +80,12 @@ def __new__(self, *a, **ka): self._signal_callbacks = {} - def _new_obj(self): + def __init__(self, evas.c_evas.Canvas canvas not None, **kargs): + evas.c_evas.Object.__init__(self, canvas) if self.obj == NULL: self._set_obj(edje_object_add(self._evas.obj)) _register_decorated_callbacks(self) + self._set_common_params(**kargs) def _set_common_params(self, file=None, group=None, size=None, pos=None, geometry=None, color=None, name=None): |
From: Enlightenment C. <no...@cv...> - 2007-09-01 16:00:02
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-emotion/emotion Modified Files: __init__.py emotion.c_emotion.pyx Log Message: Cleanup: simplify construction of wrappers for already existent objects. Before I had one class redefinition in __init__.py for each used class, this was used to have an end-user constructor that would call evas to create new objects, while the base class would start shallow and would accept Evas_Object with _set_obj(). Caio noticed that we should instead have end-user constructor in the base class and use Class.__new__() to avoid calling it when we require, like Object_from_instance(). Patch by Caio Marcelo with minor adjustments. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-emotion/emotion/__init__.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- __init__.py 19 Jul 2007 16:05:25 -0000 1.3 +++ __init__.py 1 Sep 2007 15:59:30 -0000 1.4 @@ -2,6 +2,8 @@ import c_emotion +from c_emotion import Emotion, EmotionModuleInitError + EMOTION_EVENT_MENU1 = 0 EMOTION_EVENT_MENU2 = 1 EMOTION_EVENT_MENU3 = 2 @@ -30,16 +32,3 @@ EMOTION_EVENT_8 = 25 EMOTION_EVENT_9 = 26 EMOTION_EVENT_10 = 27 - -EmotionModuleInitError = c_emotion.EmotionModuleInitError - -class Emotion(c_emotion.Emotion): - def __init__(self, canvas, module_filename="emotion_decoder_xine.so", - module_params=None, size=None, pos=None, geometry=None, - color=None, name=None): - c_emotion.Emotion.__init__(self, canvas) - self._new_obj() - self._set_common_params(module_filename=module_filename, - module_params=module_params, - size=size, pos=pos, geometry=geometry, - color=color, name=name) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-emotion/emotion/emotion.c_emotion.pyx,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- emotion.c_emotion.pyx 19 Jul 2007 15:06:44 -0000 1.4 +++ emotion.c_emotion.pyx 1 Sep 2007 15:59:30 -0000 1.5 @@ -22,11 +22,14 @@ def __new__(self, *a, **ka): self._emotion_callbacks = {} - def _new_obj(self): + def __init__(self, evas.c_evas.Canvas canvas not None, **kargs): + evas.c_evas.Object.__init__(self, canvas) if self.obj == NULL: self._set_obj(emotion_object_add(self._evas.obj)) + self._set_common_params(**kargs) - def _set_common_params(self, char *module_filename, + def _set_common_params(self, + char *module_filename="emotion_decoder_xine.so", module_params=None, size=None, pos=None, geometry=None, color=None, name=None): evas.c_evas.Object._set_common_params(self, size=size, pos=pos, |
From: Enlightenment C. <no...@cv...> - 2007-09-01 16:10:19
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-emotion/examples Modified Files: emotion_test.py Log Message: Fix Emotion example, it was broken by removal of SmartObject default implementations. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-emotion/examples/emotion_test.py,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- emotion_test.py 19 Jul 2007 16:07:07 -0000 1.2 +++ emotion_test.py 1 Sep 2007 16:10:17 -0000 1.3 @@ -35,12 +35,31 @@ self.frame.data["resizing"] = False self.frame.part_drag_value_set("video_speed", 0.0, 1.0) self.frame.part_text_set("video_speed_txt", "1.0") + self.vid.show() evas.SmartObject.__init__(self, canvas) self._setup_signals() def show(self): - evas.SmartObject.show(self) + self.frame.show() + + def hide(self): + self.frame.hide() + + def move(self, x, y): + self.frame.move(x, y) + + def resize(self, w, h): + self.frame.resize(w, h) + + def clip_set(self, o): + self.frame.clip_set(o) + + def clip_unset(self): + self.frame.clip_unset() + + def color_set(self, r, g, b, a): + self.frame.color_set(r, g, b, a) def play_get(self): return self.vid.play |
From: Enlightenment C. <no...@cv...> - 2007-09-02 15:45:30
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-ecore/ecore/evas Modified Files: __init__.py ecore.evas.c_ecore_evas.pxd ecore.evas.c_ecore_evas_base.pxi Log Message: Remove dependency on Numeric/array.h, improved __str__ and __repr__ and simplified ecore classes. * Numeric/array.h was just required to print reference count, this macro is now in python_evas_utils.h and we're clean. * __str__ was too verbose and not informative, it was improved with other attributes like color, geometry, name, clip and layer, but reference count and wrapped pointer are not there anymore, they made into new __repr__. * Following previous patch from Caio, this version remove class redefinition in ecore/__init__.py, also these classes were redone to work better, and the results are good, with less lines of code and better consistency. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/evas/__init__.py,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- __init__.py 19 Jul 2007 16:07:06 -0000 1.3 +++ __init__.py 2 Sep 2007 15:11:54 -0000 1.4 @@ -2,18 +2,8 @@ import c_ecore_evas -shutdown = c_ecore_evas.shutdown - -engine_type_supported_get = c_ecore_evas.engine_type_supported_get -engine_type_from_name = c_ecore_evas.engine_type_from_name -engine_name_from_type = c_ecore_evas.engine_name_from_type - -SoftwareX11 = c_ecore_evas.SoftwareX11 -GLX11 = c_ecore_evas.GLX11 -XRenderX11 = c_ecore_evas.XRenderX11 -FB = c_ecore_evas.FB -DirectFB = c_ecore_evas.DirectFB -Buffer = c_ecore_evas.Buffer -SoftwareX11_16 = c_ecore_evas.SoftwareX11_16 +from c_ecore_evas import shutdown, engine_type_supported_get, \ + engine_type_from_name, engine_name_from_type, SoftwareX11, \ + GLX11, XRenderX11, FB, DirectFB, Buffer, SoftwareX11_16 c_ecore_evas.init() =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/evas/ecore.evas.c_ecore_evas.pxd,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- ecore.evas.c_ecore_evas.pxd 22 Jun 2007 21:05:07 -0000 1.2 +++ ecore.evas.c_ecore_evas.pxd 2 Sep 2007 15:11:54 -0000 1.3 @@ -1,3 +1,7 @@ +cdef extern from "python_evas_utils.h": + int PY_REFCOUNT(object) + + cdef extern from "Evas.h": ctypedef struct Evas =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/evas/ecore.evas.c_ecore_evas_base.pxi,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore.evas.c_ecore_evas_base.pxi 15 Aug 2007 15:31:47 -0000 1.3 +++ ecore.evas.c_ecore_evas_base.pxi 2 Sep 2007 15:11:54 -0000 1.4 @@ -163,9 +163,12 @@ return 1 def __str__(self): - return "%s(0x%x, refcount=%d, Ecore_Evas=0x%x, Evas=%s)" % \ + return "%s(Evas=%s)" % (self.__class__.__name__, self._evas) + + def __repr__(self): + return "%s(0x%x, refcount=%d, Ecore_Evas=0x%x, Evas=%r)" % \ (self.__class__.__name__, <unsigned long>self, - python.REFCOUNT(self), <unsigned long>self.obj, + PY_REFCOUNT(self), <unsigned long>self.obj, self._evas) def evas_get(self): |
From: Enlightenment C. <no...@cv...> - 2007-09-02 15:45:30
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-edje/edje Modified Files: edje.c_edje.pxd edje.c_edje_object.pxi python.pxd Log Message: Remove dependency on Numeric/array.h, improved __str__ and __repr__ and simplified ecore classes. * Numeric/array.h was just required to print reference count, this macro is now in python_evas_utils.h and we're clean. * __str__ was too verbose and not informative, it was improved with other attributes like color, geometry, name, clip and layer, but reference count and wrapped pointer are not there anymore, they made into new __repr__. * Following previous patch from Caio, this version remove class redefinition in ecore/__init__.py, also these classes were redone to work better, and the results are good, with less lines of code and better consistency. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-edje/edje/edje.c_edje.pxd,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- edje.c_edje.pxd 7 Jul 2007 00:42:01 -0000 1.3 +++ edje.c_edje.pxd 2 Sep 2007 15:11:54 -0000 1.4 @@ -1,6 +1,10 @@ cimport evas.c_evas import evas.c_evas +cdef extern from "python_evas_utils.h": + int PY_REFCOUNT(object) + + cdef extern from "Edje.h": #################################################################### # Enumerations =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-edje/edje/edje.c_edje_object.pxi,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- edje.c_edje_object.pxi 1 Sep 2007 15:59:30 -0000 1.14 +++ edje.c_edje_object.pxi 2 Sep 2007 15:11:54 -0000 1.15 @@ -98,6 +98,33 @@ w, h = self.size_min_get() self.size_set(w, h) + def __str__(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 = "" + return ("%s(%sfile=%r, group=%r, geometry=(%d, %d, %d, %d), " + "color=(%d, %d, %d, %d), layer=%s, clip=%s, visible=%s)") % \ + (self.__class__.__name__, name_str, file, group, x, y, w, h, + r, g, b, a, self.layer_get(), self.clip_get(), + self.visible_get()) + + def __repr__(self): + x, y, w, h = self.geometry_get() + r, g, b, a = self.color_get() + file, group = self.file_get() + return ("%s(0x%x, type=%r, refcount=%d, Evas_Object=0x%x, name=%r, " + "file=%r, group=%r, geometry=(%d, %d, %d, %d), " + "color=(%d, %d, %d, %d), layer=%s, clip=%r, visible=%s)") % \ + (self.__class__.__name__, <unsigned long>self, + self.type_get(), PY_REFCOUNT(self), <unsigned long>self.obj, + self.name_get(), file, group, x, y, w, h, r, g, b, a, + self.layer_get(), self.clip_get(), self.visible_get()) + def data_get(self, char *key): cdef char *s s = edje_object_data_get(self.obj, key) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-edje/edje/python.pxd,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -u -3 -r1.1.1.1 -r1.2 --- python.pxd 3 May 2007 21:56:06 -0000 1.1.1.1 +++ python.pxd 2 Sep 2007 15:11:54 -0000 1.2 @@ -77,8 +77,3 @@ int PyObject_CheckReadBuffer(obj) int PyObject_AsReadBuffer(obj, void **buffer, Py_ssize_t *buffer_len) except -1 int PyObject_AsWriteBuffer(obj, void **buffer, Py_ssize_t *buffer_len) except -1 - - - -cdef extern from "Numeric/arrayobject.h": - int REFCOUNT(object) |
From: Enlightenment C. <no...@cv...> - 2007-09-02 15:45:31
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : proto/python-efl Dir : e17/proto/python-efl/python-ecore/ecore Modified Files: __init__.py ecore.c_ecore.pxd ecore.c_ecore_animator.pxi ecore.c_ecore_fd_handler.pxi ecore.c_ecore_idle_enterer.pxi ecore.c_ecore_idle_exiter.pxi ecore.c_ecore_idler.pxi ecore.c_ecore_timer.pxi python.pxd Log Message: Remove dependency on Numeric/array.h, improved __str__ and __repr__ and simplified ecore classes. * Numeric/array.h was just required to print reference count, this macro is now in python_evas_utils.h and we're clean. * __str__ was too verbose and not informative, it was improved with other attributes like color, geometry, name, clip and layer, but reference count and wrapped pointer are not there anymore, they made into new __repr__. * Following previous patch from Caio, this version remove class redefinition in ecore/__init__.py, also these classes were redone to work better, and the results are good, with less lines of code and better consistency. =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/__init__.py,v retrieving revision 1.4 retrieving revision 1.5 diff -u -3 -r1.4 -r1.5 --- __init__.py 19 Jul 2007 16:07:06 -0000 1.4 +++ __init__.py 2 Sep 2007 15:11:54 -0000 1.5 @@ -2,29 +2,18 @@ import c_ecore -shutdown = c_ecore.shutdown +from c_ecore import shutdown, time_get, timer_add, \ + main_loop_begin, main_loop_quit, main_loop_iterate, \ + animator_add, animator_frametime_set, animator_frametime_get, \ + idler_add, idle_enterer_add, idle_exiter_add, fd_handler_add, \ + Animator, Timer, Idler, IdleExiter, IdleEnterer, FdHandler -main_loop_begin = c_ecore.main_loop_begin -main_loop_quit = c_ecore.main_loop_quit -main_loop_iterate = c_ecore.main_loop_iterate - -time_get = c_ecore.time_get -timer_add = c_ecore.timer_add - -animator_add = c_ecore.animator_add -animator_frametime_set = c_ecore.animator_frametime_set -animator_frametime_get = c_ecore.animator_frametime_get - -idler_add = c_ecore.idler_add -idle_enterer_add = c_ecore.idle_enterer_add -idle_exiter_add = c_ecore.idle_exiter_add ECORE_FD_NONE = 0 ECORE_FD_READ = 1 ECORE_FD_WRITE = 2 ECORE_FD_ERROR = 4 ECORE_FD_ALL = 7 -fd_handler_add = c_ecore.fd_handler_add class MainLoop(object): @@ -39,41 +28,5 @@ @staticmethod def iterate(): main_loop_iterate() - - -class Timer(c_ecore.Timer): - def __new__(type, timeout, func, *args, **kargs): - obj = timer_add(timeout, func, *args, **kargs) - return obj - - -class Animator(c_ecore.Animator): - def __new__(type, func, *args, **kargs): - obj = animator_add(func, *args, **kargs) - return obj - - -class Idler(c_ecore.Idler): - def __new__(type, func, *args, **kargs): - obj = idler_add(func, *args, **kargs) - return obj - - -class IdleEnterer(c_ecore.IdleEnterer): - def __new__(type, func, *args, **kargs): - obj = idle_enterer_add(func, *args, **kargs) - return obj - - -class IdleExiter(c_ecore.IdleExiter): - def __new__(type, func, *args, **kargs): - obj = idle_exiter_add(func, *args, **kargs) - return obj - - -class FdHandler(c_ecore.FdHandler): - def __new__(type, fd, flags, func, *args, **kargs): - obj = fd_handler_add(fd, flags, func, *args, **kargs) - return obj c_ecore.init() =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore.pxd,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore.c_ecore.pxd 13 May 2007 20:51:38 -0000 1.3 +++ ecore.c_ecore.pxd 2 Sep 2007 15:11:54 -0000 1.4 @@ -1,3 +1,7 @@ +cdef extern from "python_evas_utils.h": + int PY_REFCOUNT(object) + + cdef extern from "Ecore.h": ctypedef enum Ecore_Fd_Handler_Flags: ECORE_FD_READ = 1 @@ -54,7 +58,7 @@ cdef object args cdef object kargs - cdef int _set_obj(self, Ecore_Timer *obj) except 0 + cdef object _exec(self) cdef class Animator: @@ -63,7 +67,7 @@ cdef object args cdef object kargs - cdef int _set_obj(self, Ecore_Animator *obj) except 0 + cdef object _exec(self) cdef class Idler: @@ -72,7 +76,7 @@ cdef object args cdef object kargs - cdef int _set_obj(self, Ecore_Idler *obj) except 0 + cdef object _exec(self) cdef class IdleEnterer: @@ -81,7 +85,7 @@ cdef object args cdef object kargs - cdef int _set_obj(self, Ecore_Idle_Enterer *obj) except 0 + cdef object _exec(self) cdef class IdleExiter: @@ -90,7 +94,7 @@ cdef object args cdef object kargs - cdef int _set_obj(self, Ecore_Idle_Exiter *obj) except 0 + cdef object _exec(self) cdef class FdHandler: @@ -100,4 +104,4 @@ cdef object kargs cdef object _prepare_callback - cdef int _set_obj(self, Ecore_Fd_Handler *obj) except 0 + cdef object _exec(self) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore_animator.pxi,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore.c_ecore_animator.pxi 19 Jul 2007 15:06:44 -0000 1.3 +++ ecore.c_ecore_animator.pxi 2 Sep 2007 15:11:54 -0000 1.4 @@ -1,18 +1,44 @@ # This file is included verbatim by c_ecore.pyx +cdef int animator_cb(void *_td): + cdef Animator obj + cdef int r + + obj = <Animator>_td + + try: + r = bool(obj._exec()) + except Exception, e: + import traceback + traceback.print_exc() + r = 0 + + if not r: + obj.delete() + return r + + cdef class Animator: - def __init__(self, func, args, kargs): + def __init__(self, func, *args, **kargs): + if not callable(func): + raise TypeError("Parameter 'func' must be callable") self.func = func self.args = args self.kargs = kargs - self.obj = NULL + if self.obj == NULL: + self.obj = ecore_animator_add(animator_cb, <void *>self) + python.Py_INCREF(self) def __str__(self): + return "%s(func=%s, args=%s, kargs=%s)" % \ + (self.__class__.__name__, self.func, self.args, self.kargs) + + def __repr__(self): return ("%s(0x%x, func=%s, args=%s, kargs=%s, Ecore_Animator=0x%x, " "refcount=%d)") % \ (self.__class__.__name__, <unsigned long>self, self.func, self.args, self.kargs, - <unsigned long>self.obj, python.REFCOUNT(self)) + <unsigned long>self.obj, PY_REFCOUNT(self)) def __dealloc__(self): if self.obj != NULL: @@ -22,13 +48,7 @@ self.args = None self.kargs = None - cdef int _set_obj(self, Ecore_Animator *obj) except 0: - assert self.obj == NULL, "Object must be clean" - self.obj = obj - python.Py_INCREF(self) - return 1 - - def _exec(self): + cdef _exec(self): return self.func(*self.args, **self.kargs) def delete(self): @@ -41,32 +61,5 @@ self.delete() -cdef int animator_cb(void *_td): - cdef int r - - obj = <Animator>_td - - try: - r = bool(obj._exec()) - except Exception, e: - import traceback - traceback.print_exc() - r = 0 - - if not r: - obj.delete() - return r - - def animator_add(func, *args, **kargs): - cdef Ecore_Animator *h - cdef Animator obj - - if not callable(func): - raise TypeError("Parameter 'func' must be callable") - - obj = Animator(func, args, kargs) - - h = ecore_animator_add(animator_cb, <void *>obj) - obj._set_obj(h) - return obj + return Animator(func, *args, **kargs) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore_fd_handler.pxi,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore.c_ecore_fd_handler.pxi 19 Jul 2007 15:06:44 -0000 1.3 +++ ecore.c_ecore_fd_handler.pxi 2 Sep 2007 15:11:54 -0000 1.4 @@ -1,8 +1,8 @@ # This file is included verbatim by c_ecore.pyx cdef void fd_handler_prepare_cb(void *_td, Ecore_Fd_Handler *fdh): - cdef int r cdef FdHandler obj + cdef int r obj = <FdHandler>_td if obj._prepare_callback is None: @@ -15,13 +15,55 @@ traceback.print_exc() +cdef flags2str(int value): + flags = [] + if value & <int>ECORE_FD_READ: + flags.append("READ") + if value & <int>ECORE_FD_WRITE: + flags.append("WRITE") + if value & <int>ECORE_FD_ERROR: + flags.append("ERROR") + return ", ".join(flags) + + +cdef int fd_handler_cb(void *_td, Ecore_Fd_Handler *fdh): + cdef FdHandler obj + cdef int r + + obj = <FdHandler>_td + + try: + r = bool(obj._exec()) + except Exception, e: + import traceback + traceback.print_exc() + r = 0 + + if not r: + obj.delete() + return r + + cdef class FdHandler: - def __init__(self, func, args, kargs): + def __init__(self, fd, int flags, func, *args, **kargs): + if not callable(func): + raise TypeError("Parameter 'func' must be callable") self.func = func self.args = args self.kargs = kargs - self.obj = NULL self._prepare_callback = None + if self.obj == NULL: + if not isinstance(fd, (int, long)): + try: + fd = fd.fileno() + except AttributeError, e: + raise ValueError("fd must be integer or have fileno()") + + self.obj = ecore_main_fd_handler_add(fd, + <Ecore_Fd_Handler_Flags>flags, + fd_handler_cb, <void *>self, + NULL, NULL) + python.Py_INCREF(self) def __str__(self): if self.obj == NULL: @@ -29,20 +71,23 @@ flags = "" else: fd = self.fd_get() - v = self.active_get(7) - flags = [] - if v & ECORE_FD_READ: - flags.append("READ") - if v & ECORE_FD_WRITE: - flags.append("WRITE") - if v & ECORE_FD_ERROR: - flags.append("ERROR") - flags = ", ".join(flags) + flags = flags2str(self.active_get(7)) + return "%s(func=%s, args=%s, kargs=%s, fd=%s, flags=[%s])" % \ + (self.__class__.__name__, self.func, self.args, self.kargs, + fd, flags) + + def __repr__(self): + if self.obj == NULL: + fd = None + flags = "" + else: + fd = self.fd_get() + flags = flags2str(self.active_get(7)) return ("%s(0x%x, func=%s, args=%s, kargs=%s, fd=%s, flags=[%s], " "Ecore_Fd_Handler=0x%x, refcount=%d)") % \ (self.__class__.__name__, <unsigned long>self, self.func, self.args, self.kargs, fd, flags, - <unsigned long>self.obj, python.REFCOUNT(self)) + <unsigned long>self.obj, PY_REFCOUNT(self)) def __dealloc__(self): if self.obj != NULL: @@ -52,13 +97,7 @@ self.args = None self.kargs = None - cdef int _set_obj(self, Ecore_Fd_Handler *obj) except 0: - assert self.obj == NULL, "Object must be clean" - self.obj = obj - python.Py_INCREF(self) - return 1 - - def _exec(self): + cdef object _exec(self): return self.func(self, *self.args, **self.kargs) def delete(self): @@ -110,35 +149,5 @@ raise TypeError("Parameter 'func' must be callable") -cdef int fd_handler_cb(void *_td, Ecore_Fd_Handler *fdh): - cdef int r - - obj = <FdHandler>_td - - try: - r = bool(obj._exec()) - except Exception, e: - import traceback - traceback.print_exc() - r = 0 - - if not r: - obj.delete() - return r - - -def fd_handler_add(int fd, int flags, func, *args, **kargs): - cdef Ecore_Fd_Handler *h - cdef Ecore_Fd_Handler_Flags v - cdef FdHandler obj - - if not callable(func): - raise TypeError("Parameter 'func' must be callable") - - obj = FdHandler(func, args, kargs) - - v = <Ecore_Fd_Handler_Flags>flags - h = ecore_main_fd_handler_add(fd, v, fd_handler_cb, <void *>obj, - NULL, NULL) - obj._set_obj(h) - return obj +def fd_handler_add(fd, int flags, func, *args, **kargs): + return FdHandler(fd, flags, func, *args, **kargs) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore_idle_enterer.pxi,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore.c_ecore_idle_enterer.pxi 19 Jul 2007 15:06:44 -0000 1.3 +++ ecore.c_ecore_idle_enterer.pxi 2 Sep 2007 15:11:54 -0000 1.4 @@ -1,18 +1,44 @@ # This file is included verbatim by c_ecore.pyx +cdef int idle_enterer_cb(void *_td): + cdef IdleEnterer obj + cdef int r + + obj = <IdleEnterer>_td + + try: + r = bool(obj._exec()) + except Exception, e: + import traceback + traceback.print_exc() + r = 0 + + if not r: + obj.delete() + return r + + cdef class IdleEnterer: - def __init__(self, func, args, kargs): + def __init__(self, func, *args, **kargs): + if not callable(func): + raise TypeError("Parameter 'func' must be callable") self.func = func self.args = args self.kargs = kargs - self.obj = NULL + if self.obj == NULL: + self.obj = ecore_idle_enterer_add(idle_enterer_cb, <void *>self) + python.Py_INCREF(self) def __str__(self): + return "%s(func=%s, args=%s, kargs=%s)" % \ + (self.__class__.__name__, self.func, self.args, self.kargs) + + def __repr__(self): return ("%s(0x%x, func=%s, args=%s, kargs=%s, " "Ecore_Idle_Enterer=0x%x, refcount=%d)") % \ (self.__class__.__name__, <unsigned long>self, self.func, self.args, self.kargs, - <unsigned long>self.obj, python.REFCOUNT(self)) + <unsigned long>self.obj, PY_REFCOUNT(self)) def __dealloc__(self): if self.obj != NULL: @@ -22,13 +48,7 @@ self.args = None self.kargs = None - cdef int _set_obj(self, Ecore_Idle_Enterer *obj) except 0: - assert self.obj == NULL, "Object must be clean" - self.obj = obj - python.Py_INCREF(self) - return 1 - - def _exec(self): + cdef object _exec(self): return self.func(*self.args, **self.kargs) def delete(self): @@ -41,32 +61,5 @@ self.delete() -cdef int idle_enterer_cb(void *_td): - cdef int r - - obj = <IdleEnterer>_td - - try: - r = bool(obj._exec()) - except Exception, e: - import traceback - traceback.print_exc() - r = 0 - - if not r: - obj.delete() - return r - - def idle_enterer_add(func, *args, **kargs): - cdef Ecore_Idle_Enterer *h - cdef IdleEnterer obj - - if not callable(func): - raise TypeError("Parameter 'func' must be callable") - - obj = IdleEnterer(func, args, kargs) - - h = ecore_idle_enterer_add(idle_enterer_cb, <void *>obj) - obj._set_obj(h) - return obj + return IdleEnterer(func, *args, **kargs) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore_idle_exiter.pxi,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore.c_ecore_idle_exiter.pxi 19 Jul 2007 15:06:44 -0000 1.3 +++ ecore.c_ecore_idle_exiter.pxi 2 Sep 2007 15:11:54 -0000 1.4 @@ -1,18 +1,44 @@ # This file is included verbatim by c_ecore.pyx +cdef int idle_exiter_cb(void *_td): + cdef IdleExiter obj + cdef int r + + obj = <IdleExiter>_td + + try: + r = bool(obj._exec()) + except Exception, e: + import traceback + traceback.print_exc() + r = 0 + + if not r: + obj.delete() + return r + + cdef class IdleExiter: - def __init__(self, func, args, kargs): + def __init__(self, func, *args, **kargs): + if not callable(func): + raise TypeError("Parameter 'func' must be callable") self.func = func self.args = args self.kargs = kargs - self.obj = NULL + if self.obj == NULL: + self.obj = ecore_idle_exiter_add(idle_exiter_cb, <void *>self) + python.Py_INCREF(self) def __str__(self): + return "%s(func=%s, args=%s, kargs=%s)" % \ + (self.__class__.__name__, self.func, self.args, self.kargs) + + def __repr__(self): return ("%s(0x%x, func=%s, args=%s, kargs=%s, Ecore_Idle_Exiter=0x%x, " "refcount=%d)") % \ (self.__class__.__name__, <unsigned long>self, self.func, self.args, self.kargs, - <unsigned long>self.obj, python.REFCOUNT(self)) + <unsigned long>self.obj, PY_REFCOUNT(self)) def __dealloc__(self): if self.obj != NULL: @@ -22,13 +48,7 @@ self.args = None self.kargs = None - cdef int _set_obj(self, Ecore_Idle_Exiter *obj) except 0: - assert self.obj == NULL, "Object must be clean" - self.obj = obj - python.Py_INCREF(self) - return 1 - - def _exec(self): + cdef object _exec(self): return self.func(*self.args, **self.kargs) def delete(self): @@ -41,32 +61,5 @@ self.delete() -cdef int idle_exiter_cb(void *_td): - cdef int r - - obj = <IdleExiter>_td - - try: - r = bool(obj._exec()) - except Exception, e: - import traceback - traceback.print_exc() - r = 0 - - if not r: - obj.delete() - return r - - def idle_exiter_add(func, *args, **kargs): - cdef Ecore_Idle_Exiter *h - cdef IdleExiter obj - - if not callable(func): - raise TypeError("Parameter 'func' must be callable") - - obj = IdleExiter(func, args, kargs) - - h = ecore_idle_exiter_add(idle_exiter_cb, <void *>obj) - obj._set_obj(h) - return obj + return IdleExiter(func, *args, **kargs) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore_idler.pxi,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore.c_ecore_idler.pxi 19 Jul 2007 15:06:44 -0000 1.3 +++ ecore.c_ecore_idler.pxi 2 Sep 2007 15:11:54 -0000 1.4 @@ -1,18 +1,42 @@ # This file is included verbatim by c_ecore.pyx +cdef int idler_cb(void *_td): + cdef Idler obj + cdef int r + + obj = <Idler>_td + + try: + r = bool(obj._exec()) + except Exception, e: + import traceback + traceback.print_exc() + r = 0 + + if not r: + obj.delete() + return r + + cdef class Idler: - def __init__(self, func, args, kargs): + def __init__(self, func, *args, **kargs): self.func = func self.args = args self.kargs = kargs - self.obj = NULL + if self.obj == NULL: + self.obj = ecore_idler_add(idler_cb, <void *>self) + python.Py_INCREF(self) def __str__(self): + return "%s(func=%s, args=%s, kargs=%s)" % \ + (self.__class__.__name__, self.func, self.args, self.kargs) + + def __repr__(self): return ("%s(0x%x, func=%s, args=%s, kargs=%s, Ecore_Idler=0x%x, " "refcount=%d)") % \ (self.__class__.__name__, <unsigned long>self, self.func, self.args, self.kargs, - <unsigned long>self.obj, python.REFCOUNT(self)) + <unsigned long>self.obj, PY_REFCOUNT(self)) def __dealloc__(self): if self.obj != NULL: @@ -22,13 +46,7 @@ self.args = None self.kargs = None - cdef int _set_obj(self, Ecore_Idler *obj) except 0: - assert self.obj == NULL, "Object must be clean" - self.obj = obj - python.Py_INCREF(self) - return 1 - - def _exec(self): + cdef object _exec(self): return self.func(*self.args, **self.kargs) def delete(self): @@ -41,32 +59,5 @@ self.delete() -cdef int idler_cb(void *_td): - cdef int r - - obj = <Idler>_td - - try: - r = bool(obj._exec()) - except Exception, e: - import traceback - traceback.print_exc() - r = 0 - - if not r: - obj.delete() - return r - - def idler_add(func, *args, **kargs): - cdef Ecore_Idler *h - cdef Idler obj - - if not callable(func): - raise TypeError("Parameter 'func' must be callable") - - obj = Idler(func, args, kargs) - - h = ecore_idler_add(idler_cb, <void *>obj) - obj._set_obj(h) - return obj + return Idler(func, *args, **kargs) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/ecore.c_ecore_timer.pxi,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- ecore.c_ecore_timer.pxi 19 Jul 2007 15:06:44 -0000 1.3 +++ ecore.c_ecore_timer.pxi 2 Sep 2007 15:11:54 -0000 1.4 @@ -1,19 +1,46 @@ # This file is included verbatim by c_ecore.pyx +cdef int timer_cb(void *_td): + cdef Timer obj + cdef int r + + obj = <Timer>_td + + try: + r = bool(obj._exec()) + except Exception, e: + import traceback + traceback.print_exc() + r = 0 + + if not r: + obj.delete() + return r + + cdef class Timer: - def __init__(self, double interval, func, args, kargs): + def __init__(self, double interval, func, *args, **kargs): + if not callable(func): + raise TypeError("Parameter 'func' must be callable") self._interval = interval self.func = func self.args = args self.kargs = kargs - self.obj = NULL + if self.obj == NULL: + self.obj = ecore_timer_add(interval, timer_cb, <void *>self) + python.Py_INCREF(self) def __str__(self): + return "%s(interval=%f, func=%s, args=%s, kargs=%s)" % \ + (self.__class__.__name__, self._interval, + self.func, self.args, self.kargs) + + def __repr__(self): return ("%s(0x%x, interval=%f, func=%s, args=%s, kargs=%s, " "Ecore_Timer=0x%x, refcount=%d)") % \ (self.__class__.__name__, <unsigned long>self, self._interval, self.func, self.args, self.kargs, - <unsigned long>self.obj, python.REFCOUNT(self)) + <unsigned long>self.obj, PY_REFCOUNT(self)) def __dealloc__(self): if self.obj != NULL: @@ -23,13 +50,7 @@ self.args = None self.kargs = None - cdef int _set_obj(self, Ecore_Timer *obj) except 0: - assert self.obj == NULL, "Object must be clean" - self.obj = obj - python.Py_INCREF(self) - return 1 - - def _exec(self): + cdef object _exec(self): return self.func(*self.args, **self.kargs) def delete(self): @@ -57,32 +78,5 @@ ecore_timer_interval_set(self.obj, t) -cdef int timer_cb(void *_td): - cdef int r - - obj = <Timer>_td - - try: - r = bool(obj._exec()) - except Exception, e: - import traceback - traceback.print_exc() - r = 0 - - if not r: - obj.delete() - return r - - def timer_add(double t, func, *args, **kargs): - cdef Ecore_Timer *h - cdef Timer obj - - if not callable(func): - raise TypeError("Parameter 'func' must be callable") - - obj = Timer(t, func, args, kargs) - - h = ecore_timer_add(t, timer_cb, <void *>obj) - obj._set_obj(h) - return obj + return Timer(t, func, *args, **kargs) =================================================================== RCS file: /cvs/e/e17/proto/python-efl/python-ecore/ecore/python.pxd,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- python.pxd 30 Apr 2007 20:17:47 -0000 1.1 +++ python.pxd 2 Sep 2007 15:11:54 -0000 1.2 @@ -81,8 +81,3 @@ object PyBuffer_FromMemory(void *ptr, int size) object PyBuffer_FromReadWriteMemory(void *ptr, int size) object PyBuffer_New(int size) - - - -cdef extern from "Numeric/arrayobject.h": - int REFCOUNT(object) |