kuuko pushed a commit to branch master.
commit 4244773c9401533b959a6e88368f65264df78397
Author: Kai Huuhko <[email protected]>
Date: Mon Apr 1 18:02:16 2013 +0000
Evas: the holy grail of strings!
---
efl/evas/efl.evas.pyx | 6 ++++--
efl/evas/efl.evas_canvas.pxi | 21 +++++++++++++++++----
efl/evas/efl.evas_object.pxi | 8 ++++++--
efl/evas/efl.evas_object_image.pxi | 6 +++++-
efl/evas/efl.evas_object_text.pxi | 13 ++++++++++---
efl/evas/efl.evas_object_textblock.pxi | 12 +++++++++---
6 files changed, 51 insertions(+), 15 deletions(-)
diff --git a/efl/evas/efl.evas.pyx b/efl/evas/efl.evas.pyx
index 671418c..ab76c74 100644
--- a/efl/evas/efl.evas.pyx
+++ b/efl/evas/efl.evas.pyx
@@ -19,7 +19,7 @@ import traceback
from cpython cimport bool
from efl cimport *
from efl.eo cimport Eo, object_from_instance, _object_mapping_register
-from efl.eo cimport _ctouni, _cfruni, _touni, _fruni
+from efl.eo cimport _ctouni, _touni
#
# TODO: Put these in enums.pxd and cimport + assign them here, for exposing
@@ -182,7 +182,9 @@ def render_method_lookup(name):
:rtype: int
"""
- return evas_render_method_lookup(_cfruni(name))
+ if isinstance(name, unicode): name = name.encode("UTF-8")
+ return evas_render_method_lookup(
+ <const_char *>name if name is not None else NULL)
def render_method_list():
diff --git a/efl/evas/efl.evas_canvas.pxi b/efl/evas/efl.evas_canvas.pxi
index 5d36a3b..225d4e5 100644
--- a/efl/evas/efl.evas_canvas.pxi
+++ b/efl/evas/efl.evas_canvas.pxi
@@ -132,8 +132,13 @@ cdef class Canvas(Eo):
if isinstance(method, (int, long)):
engine_id = method
+ elif isinstance(method, unicode):
+ method = method.encode("UTF-8")
+ engine_id = evas_render_method_lookup(
+ <const_char *>method if method is not None else NULL)
elif isinstance(method, str):
- engine_id = evas_render_method_lookup(_cfruni(method))
+ engine_id = evas_render_method_lookup(
+ <const_char *>method if method is not None else NULL)
else:
raise TypeError("method must be integer or string")
@@ -481,7 +486,9 @@ cdef class Canvas(Eo):
:rtype: :py:class:`efl.evas.Object`
"""
- return object_from_instance(evas_object_name_find(self.obj,
_cfruni(name)))
+ if isinstance(name, unicode): name = name.encode("UTF-8")
+ return object_from_instance(evas_object_name_find(self.obj,
+ <const_char *>name if name is not None else NULL))
def image_cache_flush(self):
evas_image_cache_flush(self.obj)
@@ -524,13 +531,18 @@ cdef class Canvas(Eo):
evas_font_path_clear(self.obj)
def font_path_append(self, path):
- evas_font_path_append(self.obj, _cfruni(path))
+ if isinstance(path, unicode): path = path.encode("UTF-8")
+ evas_font_path_append(self.obj,
+ <const_char *>path if path is not None else NULL)
def font_path_prepend(self, path):
- evas_font_path_prepend(self.obj, _cfruni(path))
+ if isinstance(path, unicode): path = path.encode("UTF-8")
+ evas_font_path_prepend(self.obj,
+ <const_char *>path if path is not None else NULL)
def font_path_list(self):
""":rtype: list of str"""
+ # TODO: use list conv func
cdef const_Eina_List *itr
lst = []
itr = evas_font_path_list(self.obj)
@@ -541,6 +553,7 @@ cdef class Canvas(Eo):
def font_available_list(self):
""":rtype: list of str"""
+ # TODO: use list conv func
cdef void *p
cdef Eina_List *itr, *head
lst = []
diff --git a/efl/evas/efl.evas_object.pxi b/efl/evas/efl.evas_object.pxi
index 885cdae..d8aada5 100644
--- a/efl/evas/efl.evas_object.pxi
+++ b/efl/evas/efl.evas_object.pxi
@@ -1122,12 +1122,16 @@ cdef class Object(Eo):
return _ctouni(evas_object_name_get(self.obj))
def __set__(self, value):
- evas_object_name_set(self.obj, _cfruni(value))
+ if isinstance(value, unicode): value = value.encode("UTF-8")
+ evas_object_name_set(self.obj,
+ <const_char *>value if value is not None else NULL)
def name_get(self):
return _ctouni(evas_object_name_get(self.obj))
def name_set(self, value):
- evas_object_name_set(self.obj, _cfruni(value))
+ if isinstance(value, unicode): value = value.encode("UTF-8")
+ evas_object_name_set(self.obj,
+ <const_char *>value if value is not None else NULL)
property focus:
"""Whenever object currently have the focus.
diff --git a/efl/evas/efl.evas_object_image.pxi
b/efl/evas/efl.evas_object_image.pxi
index dea72c6..13f72d3 100644
--- a/efl/evas/efl.evas_object_image.pxi
+++ b/efl/evas/efl.evas_object_image.pxi
@@ -163,7 +163,11 @@ cdef class Image(Object):
"""
cdef int err
- evas_object_image_file_set(self.obj, _cfruni(filename), _cfruni(key))
+ if isinstance(filename, unicode): filename = filename.encode("UTF-8")
+ if isinstance(key, unicode): key = key.encode("UTF-8")
+ evas_object_image_file_set(self.obj,
+ <const_char *>filename if filename is not None else NULL,
+ <const_char *>key if key is not None else NULL)
err = evas_object_image_load_error_get(self.obj)
if err != EVAS_LOAD_ERROR_NONE:
raise EvasLoadError(err, filename, key)
diff --git a/efl/evas/efl.evas_object_text.pxi
b/efl/evas/efl.evas_object_text.pxi
index 8078377..23e9064 100644
--- a/efl/evas/efl.evas_object_text.pxi
+++ b/efl/evas/efl.evas_object_text.pxi
@@ -86,7 +86,9 @@ cdef class Text(Object):
def font_source_set(self, value):
"""Set where to find the font (ie: EET/Edje)."""
- evas_object_text_font_source_set(self.obj, _cfruni(value))
+ if isinstance(value, unicode): value = value.encode("UTF-8")
+ evas_object_text_font_source_set(self.obj,
+ <const_char *>value if value is not None else NULL)
property font_source:
def __get__(self):
@@ -108,7 +110,10 @@ cdef class Text(Object):
:param font:.
:param size:.
"""
- evas_object_text_font_set(self.obj, _cfruni(font), size)
+ if isinstance(font, unicode): font = font.encode("UTF-8")
+ evas_object_text_font_set(self.obj,
+ <const_char *>font if font is not None else NULL,
+ size)
property font:
def __get__(self):
@@ -125,7 +130,9 @@ cdef class Text(Object):
def text_set(self, value):
"""Change text to be used"""
- evas_object_text_text_set(self.obj, _cfruni(value))
+ if isinstance(value, unicode): value = value.encode("UTF-8")
+ evas_object_text_text_set(self.obj,
+ <const_char *>value if value is not None else NULL)
property text:
def __get__(self):
diff --git a/efl/evas/efl.evas_object_textblock.pxi
b/efl/evas/efl.evas_object_textblock.pxi
index b8ef309..776277d 100644
--- a/efl/evas/efl.evas_object_textblock.pxi
+++ b/efl/evas/efl.evas_object_textblock.pxi
@@ -66,7 +66,9 @@ cdef class Textblock(Object):
:param value:
"""
cdef Evas_Textblock_Style *style = evas_textblock_style_new()
- evas_textblock_style_set(style, _cfruni(value))
+ if isinstance(value, unicode): value = value.encode("UTF-8")
+ evas_textblock_style_set(style,
+ <const_char *>value if value is not None else NULL)
evas_object_textblock_style_set(self.obj, style)
evas_textblock_style_free(style)
@@ -89,7 +91,9 @@ cdef class Textblock(Object):
:param value:
"""
- evas_object_textblock_text_markup_set(self.obj, _cfruni(value))
+ if isinstance(value, unicode): value = value.encode("UTF-8")
+ evas_object_textblock_text_markup_set(self.obj,
+ <const_char *>value if value is not None else NULL)
property text_markup:
def __get__(self):
@@ -102,7 +106,9 @@ cdef class Textblock(Object):
return _ctouni(evas_object_textblock_replace_char_get(self.obj))
def replace_char_set(self, value):
- evas_object_textblock_replace_char_set(self.obj, _cfruni(value))
+ if isinstance(value, unicode): value = value.encode("UTF-8")
+ evas_object_textblock_replace_char_set(self.obj,
+ <const_char *>value if value is not None else NULL)
property replace_char:
def __get__(self):
--
------------------------------------------------------------------------------
Own the Future-Intel(R) Level Up Game Demo Contest 2013
Rise to greatness in Intel's independent game demo contest. Compete
for recognition, cash, and the chance to get your game on Steam.
$5K grand prize plus 10 genre and skill prizes. Submit your demo
by 6/6/13. http://altfarm.mediaplex.com/ad/ck/12124-176961-30367-2