davemds pushed a commit to branch master.
commit 0fae488f776c2d3d0eea06f3d9990f62164fe5b5
Author: davemds <[email protected]>
Date: Sun Apr 14 14:24:44 2013 +0200
Python-EFL: EdjeEdit, manage the various class 'name' prop in a saner way
Instead of keeping a py object now keep a stringshared char*, so that we can
pass it directly to the C API without messing with conversions.
---
efl/edje/efl.edje_edit.pyx | 78 ++++++++------
efl/edje/efl.edje_edit_group.pxi | 5 +-
efl/edje/efl.edje_edit_part.pxi | 188 +++++++++++++---------------------
efl/edje/efl.edje_edit_part_state.pxi | 29 ++++--
efl/edje/efl.edje_edit_program.pxi | 132 +++++++++---------------
include/efl.pxd | 1 +
tests/edje/test_04_edit.py | 2 -
7 files changed, 184 insertions(+), 251 deletions(-)
diff --git a/efl/edje/efl.edje_edit.pyx b/efl/edje/efl.edje_edit.pyx
index 224f12a..20532c2 100644
--- a/efl/edje/efl.edje_edit.pyx
+++ b/efl/edje/efl.edje_edit.pyx
@@ -383,52 +383,70 @@ cdef class EdjeEdit(Edje):
cdef class Text_Style(object):
cdef EdjeEdit edje
- cdef object name
+ cdef const_char *name
- def __init__(self, EdjeEdit e, name):
+ def __init__(self, EdjeEdit e not None, name not None):
if isinstance(name, unicode): name = name.encode("UTF-8")
self.edje = e
- self.name = name
+ self.name = eina_stringshare_add(name)
+
+ def __dealloc__(self):
+ eina_stringshare_del(self.name)
property tags:
def __get__(self):
cdef Eina_List *lst
- lst = edje_edit_style_tags_list_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ lst = edje_edit_style_tags_list_get(self.edje.obj, self.name)
ret = convert_eina_list_strings_to_python_list(lst)
edje_edit_string_list_free(lst)
return ret
- def tag_get(self, name):
+ def tag_get(self, name not None):
return Text_Style_Tag(self, name)
- def tag_add(self, name):
+ def tag_add(self, name not None):
if isinstance(name, unicode): name = name.encode("UTF-8")
return bool(edje_edit_style_tag_add(self.edje.obj, self.name,
- <const_char *>name if name is not None else
NULL))
+ <const_char *>name))
- def tag_del(self, name):
+ def tag_del(self, name not None):
if isinstance(name, unicode): name = name.encode("UTF-8")
- edje_edit_style_tag_del(self.edje.obj, self.name,
- <const_char *>name if name is not None else
NULL)
+ edje_edit_style_tag_del(self.edje.obj, self.name, <const_char *>name)
return True
cdef class Text_Style_Tag(object):
cdef Text_Style text_style
- cdef object name
+ cdef const_char *name
- def __init__(self, Text_Style text_style, name):
+ def __init__(self, Text_Style text_style not None, name not None):
if isinstance(name, unicode): name = name.encode("UTF-8")
self.text_style = text_style
- self.name = name
+ self.name = eina_stringshare_add(name)
+
+ def __dealloc__(self):
+ eina_stringshare_del(self.name)
+
+ property name:
+ def __get__(self):
+ return _ctouni(self.name)
+
+ def __set__(self, newname):
+ self.rename(newname)
+
+ def rename(self, newname not None):
+ if isinstance(newname, unicode): newname = newname.encode("UTF-8")
+ edje_edit_style_tag_name_set(self.text_style.edje.obj,
+ self.text_style.name, self.name,
+ <const_char *>newname)
+ eina_stringshare_replace(&self.name, <const_char *>newname)
+ return True
property value:
def __get__(self):
cdef const_char *val
val = edje_edit_style_tag_value_get(self.text_style.edje.obj,
- self.text_style.name,
- <const_char *>self.name if self.name is not None else NULL)
+ self.text_style.name,
self.name)
ret = _ctouni(val)
edje_edit_string_free(val)
return ret
@@ -438,41 +456,35 @@ cdef class Text_Style_Tag(object):
self.text_style.name, self.name,
<const_char *>value if value is not None else NULL)
- def rename(self, newname):
- if isinstance(newname, unicode): newname = newname.encode("UTF-8")
- edje_edit_style_tag_name_set(self.text_style.edje.obj,
- self.text_style.name,
- <const_char *>self.name if self.name is not None else
NULL,
- <const_char *>newname if newname is not None else NULL)
- self.name = <const_char *>newname if newname is not None else NULL
- return True
cdef class Color_Class(object):
cdef EdjeEdit edje
- cdef object name
+ cdef const_char *name
- def __init__(self, EdjeEdit e, name):
+ def __init__(self, EdjeEdit e not None, name not None):
if isinstance(name, unicode): name = name.encode("UTF-8")
self.edje = e
- self.name = name
+ self.name = eina_stringshare_add(name)
+
+ def __dealloc__(self):
+ eina_stringshare_del(self.name)
property name:
def __get__(self):
- return self.name.decode('UTF-8', 'strict')
+ return _ctouni(self.name)
def __set__(self, newname):
self.rename(newname)
- def rename(self, newname):
+ def rename(self, newname not None):
cdef Eina_Bool ret
if isinstance(newname, unicode): newname = newname.encode("UTF-8")
- ret = edje_edit_color_class_name_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else
NULL,
- <const_char *>newname if newname is not None else NULL)
+ ret = edje_edit_color_class_name_set(self.edje.obj, self.name,
+ <const_char *>newname)
if ret == 0:
return False
- self.name = newname
+ eina_stringshare_replace(&self.name, <const_char *>newname)
return True
def colors_get(self):
diff --git a/efl/edje/efl.edje_edit_group.pxi b/efl/edje/efl.edje_edit_group.pxi
index 60eb4b0..9a49dec 100644
--- a/efl/edje/efl.edje_edit_group.pxi
+++ b/efl/edje/efl.edje_edit_group.pxi
@@ -49,8 +49,7 @@ cdef class Group(object):
def __set__(self, value):
edje_edit_group_max_h_set(self.edje.obj, value)
- def rename(self, name):
+ def rename(self, name not None):
if isinstance(name, unicode): name = name.encode("UTF-8")
- return bool(edje_edit_group_name_set(self.edje.obj,
- <const_char *>name if name is not None else NULL))
+ return bool(edje_edit_group_name_set(self.edje.obj, <const_char
*>name))
diff --git a/efl/edje/efl.edje_edit_part.pxi b/efl/edje/efl.edje_edit_part.pxi
index 8332cfb..20b6a16 100644
--- a/efl/edje/efl.edje_edit_part.pxi
+++ b/efl/edje/efl.edje_edit_part.pxi
@@ -18,36 +18,37 @@
cdef class Part(object):
cdef EdjeEdit edje
- cdef object name
+ cdef const_char *name
- def __init__(self, EdjeEdit e, name):
+ def __init__(self, EdjeEdit e not None, name not None):
if isinstance(name, unicode): name = name.encode("UTF-8")
self.edje = e
- self.name = name
+ self.name = eina_stringshare_add(name)
+
+ def __dealloc__(self):
+ eina_stringshare_del(self.name)
property name:
def __get__(self):
- return self.name.decode('UTF-8', 'strict')
+ return _ctouni(self.name)
def __set__(self, name):
self.rename(name)
- def rename(self, newname):
+ def rename(self, newname not None):
cdef Eina_Bool ret
if isinstance(newname, unicode): newname = newname.encode("UTF-8")
- ret = edje_edit_part_name_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ ret = edje_edit_part_name_set(self.edje.obj, self.name,
<const_char *>newname if newname is not None else NULL)
if ret == 0:
return False
- self.name = newname
+ eina_stringshare_replace(&self.name, <const_char *>newname)
return True
def above_get(self):
cdef:
const_char *part
object ret
- part = edje_edit_part_above_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ part = edje_edit_part_above_get(self.edje.obj, self.name)
ret = _ctouni(part)
edje_edit_string_free(part)
return ret
@@ -56,31 +57,26 @@ cdef class Part(object):
cdef:
const_char *part
object ret
- part = edje_edit_part_below_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ part = edje_edit_part_below_get(self.edje.obj, self.name)
ret = _ctouni(part)
edje_edit_string_free(part)
return ret
def restack_below(self):
- return bool(edje_edit_part_restack_below(self.edje.obj,
- <const_char *>self.name if self.name is not None else
NULL))
+ return bool(edje_edit_part_restack_below(self.edje.obj, self.name))
def restack_above(self):
- return bool(edje_edit_part_restack_above(self.edje.obj,
- <const_char *>self.name if self.name is not None else
NULL))
+ return bool(edje_edit_part_restack_above(self.edje.obj, self.name))
property type:
def __get__(self):
- return edje_edit_part_type_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ return edje_edit_part_type_get(self.edje.obj, self.name)
property states:
def __get__(self):
cdef Eina_List *lst
- lst = edje_edit_part_states_list_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ lst = edje_edit_part_states_list_get(self.edje.obj, self.name)
ret = convert_eina_list_strings_to_python_list(lst)
edje_edit_string_list_free(lst)
return ret
@@ -91,38 +87,33 @@ cdef class Part(object):
def state_add(self, sname, double value=0.0):
if isinstance(sname, unicode): sname = sname.encode("UTF-8")
- return bool(edje_edit_state_add(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ return bool(edje_edit_state_add(self.edje.obj, self.name,
<const_char *>sname if sname is not None else NULL,
value))
def state_del(self, sname, double value=0.0):
if isinstance(sname, unicode): sname = sname.encode("UTF-8")
- return bool(edje_edit_state_del(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ return bool(edje_edit_state_del(self.edje.obj, self.name,
<const_char *>sname if sname is not None else NULL,
value))
def state_exist(self, sname, double value=0.0):
if isinstance(sname, unicode): sname = sname.encode("UTF-8")
- return bool(edje_edit_state_exist(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ return bool(edje_edit_state_exist(self.edje.obj, self.name,
<const_char *>sname if sname is not None else NULL,
value))
def state_copy(self, sfrom, double vfrom, sto, double vto):
if isinstance(sfrom, unicode): sfrom = sfrom.encode("UTF-8")
if isinstance(sto, unicode): sto = sto.encode("UTF-8")
- return bool(edje_edit_state_copy(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ return bool(edje_edit_state_copy(self.edje.obj, self.name,
<const_char *>sfrom if sfrom is not None else NULL, vfrom,
<const_char *>sto if sto is not None else NULL, vto))
def state_selected_get(self):
cdef const_char *sel
cdef double val
- sel = edje_edit_part_selected_state_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
&val)
+ sel = edje_edit_part_selected_state_get(self.edje.obj, self.name, &val)
if sel == NULL: return None
r = _ctouni(sel)
v = val
@@ -131,191 +122,152 @@ cdef class Part(object):
def state_selected_set(self, state, double value=0.0):
if isinstance(state, unicode): state = state.encode("UTF-8")
- edje_edit_part_selected_state_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ edje_edit_part_selected_state_set(self.edje.obj, self.name,
<const_char *>state if state is not None else NULL,
value)
property clip_to:
def __get__(self):
cdef const_char *clipper
- clipper = edje_edit_part_clip_to_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ clipper = edje_edit_part_clip_to_get(self.edje.obj, self.name)
ret = _ctouni(clipper)
edje_edit_string_free(clipper)
return ret
def __set__(self, clipper):
if isinstance(clipper, unicode): clipper = clipper.encode("UTF-8")
- edje_edit_part_clip_to_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ edje_edit_part_clip_to_set(self.edje.obj, self.name,
<const_char *>clipper if clipper is not None else NULL)
def __del__(self):
- edje_edit_part_clip_to_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
- NULL)
+ edje_edit_part_clip_to_set(self.edje.obj, self.name, NULL)
property source:
def __get__(self):
cdef const_char *source
- source = edje_edit_part_source_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ source = edje_edit_part_source_get(self.edje.obj, self.name)
ret = _ctouni(source)
edje_edit_string_free(source)
return ret
def __set__(self, source):
if isinstance(source, unicode): source = source.encode("UTF-8")
- edje_edit_part_source_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
- <const_char *>source if source is not None else NULL)
+ edje_edit_part_source_set(self.edje.obj, self.name,
+ <const_char *>source if source is not None else NULL)
def __del__(self):
- edje_edit_part_source_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
- NULL)
+ edje_edit_part_source_set(self.edje.obj, self.name, NULL)
property mouse_events:
def __get__(self):
- return bool(edje_edit_part_mouse_events_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else
NULL))
+ return bool(edje_edit_part_mouse_events_get(self.edje.obj,
self.name))
def __set__(self, me):
- edje_edit_part_mouse_events_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
- 1 if me else 0)
+ edje_edit_part_mouse_events_set(self.edje.obj, self.name,
+ 1 if me else 0)
property repeat_events:
def __get__(self):
- return bool(edje_edit_part_repeat_events_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else
NULL))
+ return bool(edje_edit_part_repeat_events_get(self.edje.obj,
self.name))
def __set__(self, re):
- edje_edit_part_repeat_events_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
- 1 if re else 0)
+ edje_edit_part_repeat_events_set(self.edje.obj, self.name,
+ 1 if re else 0)
property effect:
def __get__(self):
- return edje_edit_part_effect_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ return edje_edit_part_effect_get(self.edje.obj, self.name)
def __set__(self, effect):
- edje_edit_part_effect_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
- effect)
+ edje_edit_part_effect_set(self.edje.obj, self.name, effect)
property ignore_flags:
def __get__(self):
- return edje_edit_part_ignore_flags_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ return edje_edit_part_ignore_flags_get(self.edje.obj, self.name)
def __set__(self, flags):
- edje_edit_part_ignore_flags_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
- flags)
+ edje_edit_part_ignore_flags_set(self.edje.obj, self.name, flags)
property scale:
def __get__(self):
- return bool(edje_edit_part_scale_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else
NULL))
+ return bool(edje_edit_part_scale_get(self.edje.obj, self.name))
def __set__(self, scale):
- edje_edit_part_scale_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
- 1 if scale else 0)
+ edje_edit_part_scale_set(self.edje.obj, self.name,
+ 1 if scale else 0)
property drag:
def __get__(self):
cdef int x, y
- x = edje_edit_part_drag_x_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
- y = edje_edit_part_drag_y_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ x = edje_edit_part_drag_x_get(self.edje.obj, self.name)
+ y = edje_edit_part_drag_y_get(self.edje.obj, self.name)
return (x, y)
def __set__(self, val):
x, y = val
- edje_edit_part_drag_x_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL, x)
- edje_edit_part_drag_y_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL, y)
+ edje_edit_part_drag_x_set(self.edje.obj, self.name, x)
+ edje_edit_part_drag_y_set(self.edje.obj, self.name, y)
property drag_step:
def __get__(self):
cdef int x, y
- x = edje_edit_part_drag_step_x_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
- y = edje_edit_part_drag_step_y_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ x = edje_edit_part_drag_step_x_get(self.edje.obj, self.name)
+ y = edje_edit_part_drag_step_y_get(self.edje.obj, self.name)
return (x, y)
def __set__(self, val):
x, y = val
- edje_edit_part_drag_step_x_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL, x)
- edje_edit_part_drag_step_y_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL, y)
+ edje_edit_part_drag_step_x_set(self.edje.obj, self.name, x)
+ edje_edit_part_drag_step_y_set(self.edje.obj, self.name, y)
property drag_count:
def __get__(self):
cdef int x, y
- x = edje_edit_part_drag_count_x_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
- y = edje_edit_part_drag_count_y_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ x = edje_edit_part_drag_count_x_get(self.edje.obj, self.name)
+ y = edje_edit_part_drag_count_y_get(self.edje.obj, self.name)
return (x, y)
def __set__(self, val):
x, y = val
- edje_edit_part_drag_count_x_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL, x)
- edje_edit_part_drag_count_y_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL, y)
+ edje_edit_part_drag_count_x_set(self.edje.obj, self.name, x)
+ edje_edit_part_drag_count_y_set(self.edje.obj, self.name, y)
property drag_confine:
def __get__(self):
cdef const_char *confine
- confine = edje_edit_part_drag_confine_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ confine = edje_edit_part_drag_confine_get(self.edje.obj, self.name)
ret = _ctouni(confine)
edje_edit_string_free(confine)
return ret
def __set__(self, confine):
if isinstance(confine, unicode): confine = confine.encode("UTF-8")
- edje_edit_part_drag_confine_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
- <const_char *>confine if confine is not None else NULL)
+ edje_edit_part_drag_confine_set(self.edje.obj, self.name,
+ <const_char *>confine if confine is not None else NULL)
property drag_event:
def __get__(self):
cdef const_char *event
- event = edje_edit_part_drag_event_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ event = edje_edit_part_drag_event_get(self.edje.obj, self.name)
ret = _ctouni(event)
edje_edit_string_free(event)
return ret
def __set__(self, event):
if isinstance(event, unicode): event = event.encode("UTF-8")
- edje_edit_part_drag_event_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
- <const_char *>event if event is not None else NULL)
+ edje_edit_part_drag_event_set(self.edje.obj, self.name,
+ <const_char *>event if event is not None else NULL)
property api:
def __get__(self):
cdef:
const_char *name
- const_char *description
- name = edje_edit_part_api_name_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
- description = edje_edit_part_api_description_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
- n, d = _ctouni(name), _ctouni(description)
+ const_char *desc
+ name = edje_edit_part_api_name_get(self.edje.obj, self.name)
+ desc = edje_edit_part_api_description_get(self.edje.obj, self.name)
+ n, d = _ctouni(name), _ctouni(desc)
edje_edit_string_free(name)
- edje_edit_string_free(description)
+ edje_edit_string_free(desc)
return (n, d)
def __set__(self, value):
@@ -323,9 +275,7 @@ cdef class Part(object):
name, desc = value
if isinstance(name, unicode): name = name.encode("UTF-8")
if isinstance(desc, unicode): desc = desc.encode("UTF-8")
- edje_edit_part_api_name_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
- <const_char *>name if name is not None else NULL)
- edje_edit_part_api_description_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
- <const_char *>desc if desc is not None else NULL)
+ edje_edit_part_api_name_set(self.edje.obj, self.name,
+ <const_char *>name if name is not None else NULL)
+ edje_edit_part_api_description_set(self.edje.obj, self.name,
+ <const_char *>desc if desc is not None else NULL)
diff --git a/efl/edje/efl.edje_edit_part_state.pxi
b/efl/edje/efl.edje_edit_part_state.pxi
index 8c4b69d..45491ce 100644
--- a/efl/edje/efl.edje_edit_part_state.pxi
+++ b/efl/edje/efl.edje_edit_part_state.pxi
@@ -19,21 +19,26 @@
cdef class State:
cdef EdjeEdit edje
cdef object part
- cdef object name
+ cdef const_char *name
cdef object part_obj
cdef object value
- def __init__(self, Part part, name, double value=0.0):
+ def __init__(self, Part part not None, name not None, double value=0.0):
if isinstance(name, unicode): name = name.encode("UTF-8")
+ self.name = eina_stringshare_add(name)
self.part_obj = part
self.edje = part.edje
self.part = part.name
- self.name = name
self.value = value
+ def __dealloc__(self):
+ eina_stringshare_del(self.name)
+
property name:
def __get__(self):
- return self.name
+ return _ctouni(self.name)
+ def __set__(self, name):
+ self.name_set(name)
property value:
def __get__(self):
@@ -42,12 +47,16 @@ cdef class State:
def part_get(self):
return self.part_obj
- def name_set(self, new_name, new_value=None):
- if new_value == None:
- new_value = self.value
- return bool(edje_edit_state_name_set(self.edje.obj, self.part,
- self.name, self.value, new_name,
- new_value))
+ def name_set(self, new_name not None, new_value=None):
+ if isinstance(new_name, unicode): new_name = new_name.encode("UTF-8")
+ ret = edje_edit_state_name_set(self.edje.obj, self.part,
+ self.name, self.value,
+ <const_char *>new_name if new_name is not None else
NULL,
+ new_value if new_value is not None else self.value)
+ if ret == 0:
+ return False
+ eina_stringshare_replace(&self.name, <const_char *>new_name)
+ return True
"""
def copy_from(self, from_state, from_value=0.0):
return bool(edje_edit_state_copy(self.edje.obj, self.part,
diff --git a/efl/edje/efl.edje_edit_program.pxi
b/efl/edje/efl.edje_edit_program.pxi
index acca7e4..4ccfe90 100644
--- a/efl/edje/efl.edje_edit_program.pxi
+++ b/efl/edje/efl.edje_edit_program.pxi
@@ -18,117 +18,103 @@
cdef class Program(object):
cdef EdjeEdit edje
- cdef object name
+ cdef const_char *name
- def __init__(self, EdjeEdit e, name):
+ def __init__(self, EdjeEdit e not None, name not None):
if isinstance(name, unicode): name = name.encode("UTF-8")
self.edje = e
- self.name = name
+ self.name = eina_stringshare_add(name)
+
+ def __dealloc__(self):
+ eina_stringshare_del(self.name)
property name:
def __get__(self):
- return self.name.decode('UTF-8', 'strict')
-
+ return _ctouni(self.name)
def __set__(self, newname):
self.rename(newname)
- def rename(self, newname):
+ def rename(self, newname not None):
cdef Eina_Bool ret
if isinstance(newname, unicode): newname = newname.encode("UTF-8")
- ret = edje_edit_program_name_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ ret = edje_edit_program_name_set(self.edje.obj, self.name,
<const_char *>newname if newname is not None else NULL)
if ret == 0:
return False
- self.name = newname
+ eina_stringshare_replace(&self.name, <const_char *>newname)
return True
def edje_get(self):
return self.edje
def run(self):
- return bool(edje_edit_program_run(self.edje.obj,
- <const_char *>self.name if self.name is not None else
NULL))
+ return bool(edje_edit_program_run(self.edje.obj, self.name))
# XXX TODO: add (or better convert) all this to properties
# like is done in Part()
def source_get(self):
cdef const_char *s
- s = edje_edit_program_source_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ s = edje_edit_program_source_get(self.edje.obj, self.name)
ret = _ctouni(s)
edje_edit_string_free(s)
return ret
def source_set(self, source):
if isinstance(source, unicode): source = source.encode("UTF-8")
- return bool(edje_edit_program_source_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ return bool(edje_edit_program_source_set(self.edje.obj, self.name,
<const_char *>source if source is not None else NULL))
def signal_get(self):
cdef const_char *s
- s = edje_edit_program_signal_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ s = edje_edit_program_signal_get(self.edje.obj, self.name)
ret = _ctouni(s)
edje_edit_string_free(s)
return ret
def signal_set(self, signal):
if isinstance(signal, unicode): signal = signal.encode("UTF-8")
- return bool(edje_edit_program_signal_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ return bool(edje_edit_program_signal_set(self.edje.obj, self.name,
<const_char *>signal if signal is not None else NULL))
def in_from_get(self):
- return edje_edit_program_in_from_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ return edje_edit_program_in_from_get(self.edje.obj, self.name)
def in_from_set(self, double f):
- return bool(edje_edit_program_in_from_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL, f))
+ return bool(edje_edit_program_in_from_set(self.edje.obj, self.name, f))
def in_range_get(self):
- return edje_edit_program_in_range_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ return edje_edit_program_in_range_get(self.edje.obj, self.name)
def in_range_set(self, double r):
- return bool(edje_edit_program_in_range_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL, r))
+ return bool(edje_edit_program_in_range_set(self.edje.obj, self.name,
r))
def action_get(self):
- return edje_edit_program_action_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ return edje_edit_program_action_get(self.edje.obj, self.name)
def action_set(self, action):
if isinstance(action, unicode): action = action.encode("UTF-8")
- return bool(edje_edit_program_action_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
- action))
+ return bool(edje_edit_program_action_set(self.edje.obj, self.name,
+ action))
def targets_get(self):
cdef Eina_List *lst
- lst = edje_edit_program_targets_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ lst = edje_edit_program_targets_get(self.edje.obj, self.name)
ret = convert_eina_list_strings_to_python_list(lst)
edje_edit_string_list_free(lst)
return ret
def target_add(self, target):
if isinstance(target, unicode): target = target.encode("UTF-8")
- return bool(edje_edit_program_target_add(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ return bool(edje_edit_program_target_add(self.edje.obj, self.name,
<const_char *>target if target is not None else NULL))
def target_del(self, target):
if isinstance(target, unicode): target = target.encode("UTF-8")
- return bool(edje_edit_program_target_del(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ return bool(edje_edit_program_target_del(self.edje.obj, self.name,
<const_char *>target if target is not None else NULL))
def targets_clear(self):
- return bool(edje_edit_program_targets_clear(self.edje.obj,
- <const_char *>self.name if self.name is not None else
NULL))
+ return bool(edje_edit_program_targets_clear(self.edje.obj, self.name))
def afters_get(self):
cdef Eina_List *lst
@@ -139,89 +125,72 @@ cdef class Program(object):
def after_add(self, after):
if isinstance(after, unicode): after = after.encode("UTF-8")
- return bool(edje_edit_program_after_add(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ return bool(edje_edit_program_after_add(self.edje.obj, self.name,
<const_char *>after if after is not None else NULL))
def after_del(self, after):
if isinstance(after, unicode): after = after.encode("UTF-8")
- return bool(edje_edit_program_after_del(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ return bool(edje_edit_program_after_del(self.edje.obj, self.name,
<const_char *>after if after is not None else NULL))
def afters_clear(self):
- return bool(edje_edit_program_afters_clear(self.edje.obj,
- <const_char *>self.name if self.name is not None else
NULL))
+ return bool(edje_edit_program_afters_clear(self.edje.obj, self.name))
def state_get(self):
cdef const_char *s
- s = edje_edit_program_state_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ s = edje_edit_program_state_get(self.edje.obj, self.name)
ret = _ctouni(s)
edje_edit_string_free(s)
return ret
def state_set(self, state):
if isinstance(state, unicode): state = state.encode("UTF-8")
- return bool(edje_edit_program_state_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ return bool(edje_edit_program_state_set(self.edje.obj, self.name,
<const_char *>state if state is not None else NULL))
def value_get(self):
- return edje_edit_program_value_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ return edje_edit_program_value_get(self.edje.obj, self.name)
def value_set(self, double v):
- return bool(edje_edit_program_value_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL, v))
+ return bool(edje_edit_program_value_set(self.edje.obj, self.name, v))
def state2_get(self):
cdef const_char *s
- s = edje_edit_program_state2_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ s = edje_edit_program_state2_get(self.edje.obj, self.name)
ret = _ctouni(s)
edje_edit_string_free(s)
return ret
def state2_set(self, state):
if isinstance(state, unicode): state = state.encode("UTF-8")
- return bool(edje_edit_program_state2_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ return bool(edje_edit_program_state2_set(self.edje.obj, self.name,
<const_char *>state if state is not None else NULL))
def value2_get(self):
- return edje_edit_program_value2_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ return edje_edit_program_value2_get(self.edje.obj, self.name)
def value2_set(self, double v):
- return bool(edje_edit_program_value2_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL, v))
+ return bool(edje_edit_program_value2_set(self.edje.obj, self.name, v))
def transition_get(self):
- return edje_edit_program_transition_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ return edje_edit_program_transition_get(self.edje.obj, self.name)
def transition_set(self, t):
- return bool(edje_edit_program_transition_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL, t))
+ return bool(edje_edit_program_transition_set(self.edje.obj, self.name,
t))
def transition_time_get(self):
- return edje_edit_program_transition_time_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ return edje_edit_program_transition_time_get(self.edje.obj, self.name)
def transition_time_set(self, double t):
- return bool(edje_edit_program_transition_time_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL, t))
+ return bool(edje_edit_program_transition_time_set(self.edje.obj,
self.name, t))
property api:
def __get__(self):
cdef:
const_char *name
const_char *desc
- name = edje_edit_program_api_name_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
- desc = edje_edit_program_api_description_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ name = edje_edit_program_api_name_get(self.edje.obj, self.name)
+ desc = edje_edit_program_api_description_get(self.edje.obj,
self.name)
n, d = _ctouni(name), _ctouni(desc)
edje_edit_string_free(name)
edje_edit_string_free(desc)
@@ -232,29 +201,24 @@ cdef class Program(object):
name, desc = value
if isinstance(name, unicode): name = name.encode("UTF-8")
if isinstance(desc, unicode): desc = desc.encode("UTF-8")
- edje_edit_program_api_name_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ edje_edit_program_api_name_set(self.edje.obj, self.name,
<const_char *>name if name is not None else NULL)
- edje_edit_program_api_description_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ edje_edit_program_api_description_set(self.edje.obj, self.name,
<const_char *>desc if desc is not None else NULL)
property script:
def __get__(self):
cdef char *code
- code = edje_edit_script_program_get(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL)
+ code = edje_edit_script_program_get(self.edje.obj, self.name)
ret = _touni(code)
free(code)
return ret
def __set__(self, code):
if isinstance(code, unicode): code = code.encode("UTF-8")
- edje_edit_script_program_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
+ edje_edit_script_program_set(self.edje.obj, self.name,
<const_char *>code if code is not None else NULL)
def __del__(self):
- edje_edit_script_program_set(self.edje.obj,
- <const_char *>self.name if self.name is not None else NULL,
NULL)
+ edje_edit_script_program_set(self.edje.obj, self.name, NULL)
diff --git a/include/efl.pxd b/include/efl.pxd
index 0dd7810..5663e10 100644
--- a/include/efl.pxd
+++ b/include/efl.pxd
@@ -113,6 +113,7 @@ cdef extern from "Eina.h":
void eina_stringshare_del(Eina_Stringshare *str)
Eina_Stringshare *eina_stringshare_ref(Eina_Stringshare *str)
int eina_stringshare_strlen(Eina_Stringshare *str)
+ Eina_Bool eina_stringshare_replace(Eina_Stringshare **p_str,
const_char *news)
Eina_List *eina_list_free(Eina_List *list)
Eina_List *eina_list_append(Eina_List *list, void *data)
diff --git a/tests/edje/test_04_edit.py b/tests/edje/test_04_edit.py
index 67ba20e..7880864 100644
--- a/tests/edje/test_04_edit.py
+++ b/tests/edje/test_04_edit.py
@@ -466,10 +466,8 @@ class TestEdjeEditPartStates(unittest.TestCase):
s = p.state_get("state1", 0.0)
print(s)
print(s.rel1_to_get())
-
-
if __name__ == '__main__':
unittest.main(verbosity=2)
edje.shutdown()
--
------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter