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

Reply via email to