# Copyright (C) 2007-2013 various contributors (see AUTHORS) # # This file is part of Python-EFL. # # Python-EFL is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # Python-EFL is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this Python-EFL. If not, see . cdef class Text(Object): """ Text. :param canvas: Evas canvas for this object :type canvas: Canvas :keyword size: Width and height :type size: tuple of ints :keyword pos: X and Y :type pos: tuple of ints :keyword geometry: X, Y, width, height :type geometry: tuple of ints :keyword color: R, G, B, A :type color: tuple of ints :keyword name: Object name :type name: string :keyword text: The text :type text: string :keyword font: Font name :type font: string :keyword font_source: Where to find the font :type font_source: string :keyword style: Style :type style: string :keyword shadow_color: The shadow color :type shadow_color: tuple of ints :keyword glow_color: The primary glow color :type glow_color: tuple of ints :keyword glow2_color: The secondary glow color :type glow2_color: tuple of ints :keyword outline_color: The outline color :type outline_color: tuple of ints """ def __init__(self, Canvas canvas not None, **kargs): self._set_obj(evas_object_text_add(canvas.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, **kargs): Object._set_common_params(self, **kargs) 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 style is not None: self.style_set(style) if shadow_color is not None: self.shadow_color_set(*color_parse(shadow_color)) if glow_color is not None: self.glow_color_set(*color_parse(glow_color)) if glow2_color is not None: self.glow2_color_set(*color_parse(glow2_color)) if outline_color is not None: self.outline_color_set(*color_parse(outline_color)) def font_source_get(self): """:rtype: str""" return _ctouni(evas_object_text_font_source_get(self.obj)) def font_source_set(self, value): """Set where to find the font (ie: EET/Edje).""" if isinstance(value, unicode): value = value.encode("UTF-8") evas_object_text_font_source_set(self.obj, value if value is not None else NULL) property font_source: def __get__(self): return self.font_source_get() def __set__(self, value): self.font_source_set(value) def font_get(self): """:rtype: (str, int)""" cdef const_char *f cdef int size evas_object_text_font_get(self.obj, &f, &size) return (_ctouni(f), size) def font_set(self, font, int size=10): """Set font to use. :param font:. :param size:. """ if isinstance(font, unicode): font = font.encode("UTF-8") evas_object_text_font_set(self.obj, font if font is not None else NULL, size) property font: def __get__(self): return self.font_get() def __set__(self, spec): if not isinstance(spec, (tuple, list)): spec = (spec,) self.font_set(*spec) def text_get(self): """:rtype: str""" return _ctouni(evas_object_text_text_get(self.obj)) def text_set(self, value): """Change text to be used""" if isinstance(value, unicode): value = value.encode("UTF-8") evas_object_text_text_set(self.obj, value if value is not None else NULL) property text: def __get__(self): return self.text_get() def __set__(self, value): self.text_set(value) def ascent_get(self): """:rtype: int""" return evas_object_text_ascent_get(self.obj) property ascent: def __get__(self): return self.ascent_get() def descent_get(self): """:rtype: int""" return evas_object_text_descent_get(self.obj) property descent: def __get__(self): return self.descent_get() def max_ascent_get(self): """:rtype: int""" return evas_object_text_max_ascent_get(self.obj) property max_ascent: def __get__(self): return self.max_ascent_get() def max_descent_get(self): """:rtype: int""" return evas_object_text_max_descent_get(self.obj) property max_descent: def __get__(self): return self.max_descent_get() def horiz_advance_get(self): """:rtype: int""" return evas_object_text_horiz_advance_get(self.obj) property horiz_advance: def __get__(self): return self.horiz_advance_get() def vert_advance_get(self): """:rtype: int""" return evas_object_text_vert_advance_get(self.obj) property vert_advance: def __get__(self): return self.vert_advance_get() def inset_get(self): """:rtype: int""" return evas_object_text_inset_get(self.obj) property inset: def __get__(self): return self.inset_get() def char_pos_get(self, int char_index): """Retrieve position and dimension information of a character. This function is used to obtain the **x**, **y**, **width** and **height** of a the character located at **char_index** within this object. :param char_index: index of desired character. :rtype: tuple of int """ cdef int x, y, w, h, r r = evas_object_text_char_pos_get(self.obj, char_index, &x, &y, &w, &h) if r == 0: return None else: return (x, y, w, h) def char_coords_get(self, int x, int y): """Retrieve position and dimension information of a character at desired position. Like L{char_pos_get()}, but instead of providing the character index one can give its position. :param x: :param y: :rtype: tuple of int """ cdef int cx, cy, cw, ch, c c = evas_object_text_char_coords_get(self.obj, x, y, &cx, &cy, &cw, &ch) if c < 0: return None else: return ("%c" % c, cx, cy, cw, ch) def style_get(self): """:rtype: int""" return evas_object_text_style_get(self.obj) def style_set(self, int value): """Set text drawing style. :param value: can be one of: - EVAS_TEXT_STYLE_PLAIN - EVAS_TEXT_STYLE_SHADOW - EVAS_TEXT_STYLE_OUTLINE - EVAS_TEXT_STYLE_SOFT_OUTLINE - EVAS_TEXT_STYLE_GLOW - EVAS_TEXT_STYLE_OUTLINE_SHADOW - EVAS_TEXT_STYLE_FAR_SHADOW - EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW - EVAS_TEXT_STYLE_SOFT_SHADOW - EVAS_TEXT_STYLE_FAR_SOFT_SHADOW """ evas_object_text_style_set(self.obj, value) property style: def __get__(self): return self.style_get() def __set__(self, int value): self.style_set(value) def shadow_color_get(self): """:rtype: tuple of int""" cdef int r, g, b, a evas_object_text_shadow_color_get(self.obj, &r, &g, &b, &a) return (r, g, b, a) def shadow_color_set(self, int r, int g, int b, int a): """Set shadow color. :param r: :param g: :param b: :param a: """ evas_object_text_shadow_color_set(self.obj, r, g, b, a) property shadow_color: def __get__(self): return self.shadow_color_get() def __set__(self, spec): self.shadow_color_set(*spec) def glow_color_get(self): """:rtype: tuple of int""" cdef int r, g, b, a evas_object_text_glow_color_get(self.obj, &r, &g, &b, &a) return (r, g, b, a) def glow_color_set(self, int r, int g, int b, int a): """Set glow color. :param r: :param g: :param b: :param a: """ evas_object_text_glow_color_set(self.obj, r, g, b, a) property glow_color: def __get__(self): return self.glow_color_get() def __set__(self, spec): self.glow_color_set(*spec) def glow2_color_get(self): """:rtype: tuple of int""" cdef int r, g, b, a evas_object_text_glow2_color_get(self.obj, &r, &g, &b, &a) return (r, g, b, a) def glow2_color_set(self, int r, int g, int b, int a): """Set second level glow color. :param r: :param g: :param b: :param a: """ evas_object_text_glow2_color_set(self.obj, r, g, b, a) property glow2_color: def __get__(self): return self.glow2_color_get() def __set__(self, spec): self.glow2_color_set(*spec) def outline_color_get(self): """:rtype: tuple of int""" cdef int r, g, b, a evas_object_text_outline_color_get(self.obj, &r, &g, &b, &a) return (r, g, b, a) def outline_color_set(self, int r, int g, int b, int a): """Set outline color. :param r: :param g: :param b: :param a: """ evas_object_text_outline_color_set(self.obj, r, g, b, a) property outline_color: def __get__(self): return self.outline_color_get() def __set__(self, spec): self.outline_color_set(*spec) def style_pad_get(self): """:rtype: tuple of int""" cdef int l, r, t, b evas_object_text_style_pad_get(self.obj, &l, &r, &t, &b) return (l, r, t, b) property style_pad: def __get__(self): return self.style_pad_get() _object_mapping_register("Evas_Object_Text", Text)