kuuko pushed a commit to branch master.

commit 77ed60ae26bc3981d8c75cc687eb171b0a563fb7
Author: Kai Huuhko <[email protected]>
Date:   Sun Apr 14 00:14:52 2013 +0000

    Evas: Add some missing API to Object.
---
 efl/evas/efl.evas_object.pxi | 188 +++++++++++++++++++++++++++++++++++++++++++
 include/efl.evas.pxd         |  31 ++++++-
 2 files changed, 217 insertions(+), 2 deletions(-)

diff --git a/efl/evas/efl.evas_object.pxi b/efl/evas/efl.evas_object.pxi
index 32b3d5f..5f76357 100644
--- a/efl/evas/efl.evas_object.pxi
+++ b/efl/evas/efl.evas_object.pxi
@@ -788,6 +788,28 @@ cdef class Object(Eo):
     def size_hint_max_set(self, int w, int h):
         evas_object_size_hint_max_set(self.obj, w, h)
 
+    property size_hint_display_mode:
+        """The hints for an object's display mode
+
+        This is not a size enforcement in any way, it's just a hint that can be
+        used whenever appropriate. This mode can be used objects display mode
+        like compress or expand.
+
+        :type: Evas_Display_Mode
+
+        """
+        def __get__(self):
+            return self.size_hint_display_mode_get()
+
+        def __set__(self, value):
+            self.size_hint_display_mode_set(value)
+
+    cpdef size_hint_display_mode_get(self):
+        return evas_object_size_hint_display_mode_get(self.obj)
+
+    cpdef size_hint_display_mode_set(self, Evas_Display_Mode dispmode):
+        evas_object_size_hint_display_mode_set(self.obj, dispmode)
+
     property size_hint_request:
         """Hint about request size.
 
@@ -1009,6 +1031,33 @@ cdef class Object(Eo):
         else:
             self.hide()
 
+    property precise_is_inside:
+        """Set whether to use precise (usually expensive) point collision
+        detection for a given Evas object.
+
+        Use this function to make Evas treat objects' transparent areas as
+        **not** belonging to it with regard to mouse pointer events. By
+        default, all of the object's boundary rectangle will be taken in
+        account for them.
+
+        :type: bool
+
+        .. warning:: By using precise point collision detection you'll be
+            making Evas more resource intensive.
+
+        """
+        def __set__(self, value):
+            self.precise_is_inside_set(value)
+
+        def __get__(self):
+            return self.precise_is_inside_get()
+
+    cpdef precise_is_inside_set(self, precise):
+        evas_object_precise_is_inside_set(self.obj, precise)
+
+    cpdef precise_is_inside_get(self):
+        return bool(evas_object_precise_is_inside_get(self.obj))
+
     property static_clip:
         """A hint flag on the object, whether this is used as a static clipper
         or not.
@@ -1061,6 +1110,33 @@ cdef class Object(Eo):
     def anti_alias_set(self, int value):
         evas_object_anti_alias_set(self.obj, value)
 
+    property scale:
+        """The scaling factor for an Evas object. Does not affect all objects.
+
+        Value of ``1.0`` means no scaling, default size.
+
+        This will multiply the object's dimension by the given factor, thus
+        altering its geometry (width and height). Useful when you want
+        scalable UI elements, possibly at run time.
+
+        :type: double
+
+        .. note:: Only text and textblock objects have scaling change
+            handlers. Other objects won't change visually on this call.
+
+        """
+        def __set__(self, value):
+            self.scale_set(value)
+
+        def __get__(self):
+            return self.scale_get()
+
+    cpdef scale_set(self, double scale):
+        evas_object_scale_set(self.obj, scale)
+
+    cpdef scale_get(self):
+        return evas_object_scale_get(self.obj)
+
     property color:
         """Object's (r, g, b, a) color, in pre-multiply colorspace.
 
@@ -1555,6 +1631,36 @@ cdef class Object(Eo):
     def propagate_events_set(self, value):
         evas_object_propagate_events_set(self.obj, value)
 
+    property freeze_events:
+        """Whether an Evas object is to freeze (discard) events.
+
+        If True, events will be **discarded**. Unlike :py:attr:`pass_events`,
+        events will not be passed to **next** lower object. This API can be 
used
+        for blocking events while the object is on transiting.
+
+        If False, events will be processed as normal.
+
+        :type: bool
+
+        .. seealso::
+
+            :py:attr:`pass_events`
+            :py:attr:`repeat_events`
+            :py:attr:`propagate_events`
+
+        """
+        def __set__(self, value):
+            self.freeze_events_set(value)
+
+        def __get__(self):
+            return self.freeze_events_get()
+
+    cpdef freeze_events_set(self, freeze):
+        evas_object_freeze_events_set(self.obj, freeze)
+
+    cpdef freeze_events_get(self):
+        return bool(evas_object_freeze_events_get(self.obj))
+
     property pointer_mode:
         """If pointer should be grabbed while processing events.
 
@@ -1632,3 +1738,85 @@ cdef class Object(Eo):
         ret.map = <Evas_Map *>evas_object_map_get(self.obj)
         return ret
 
+    def key_grab(self, keyname not None, Evas_Modifier_Mask modifiers, 
Evas_Modifier_Mask not_modifiers, bint exclusive):
+        """Requests @p keyname key events be directed to @p obj.
+
+        :param keyname: the key to request events for.
+        :param modifiers: a mask of modifiers that must be present to
+            trigger the event.
+        :type modifiers: Evas_Modifier_Mask
+        :param not_modifiers: a mask of modifiers that must @b not be present
+            to trigger the event.
+        :type not_modifiers: Evas_Modifier_Mask
+        :param exclusive: request that the @p obj is the only object
+            receiving the @p keyname events.
+        :type exclusive: bool
+        :raise RuntimeError: if grabbing the key was unsuccesful
+
+        Key grabs allow one or more objects to receive key events for
+        specific key strokes even if other objects have focus. Whenever a
+        key is grabbed, only the objects grabbing it will get the events
+        for the given keys.
+
+        @p keyname is a platform dependent symbolic name for the key
+        pressed (see @ref Evas_Keys for more information).
+
+        @p modifiers and @p not_modifiers are bit masks of all the
+        modifiers that must and mustn't, respectively, be pressed along
+        with @p keyname key in order to trigger this new key
+        grab. Modifiers can be things such as Shift and Ctrl as well as
+        user defined types via evas_key_modifier_add(). Retrieve them with
+        evas_key_modifier_mask_get() or use @c 0 for empty masks.
+
+        @p exclusive will make the given object the only one permitted to
+        grab the given key. If given @c EINA_TRUE, subsequent calls on this
+        function with different @p obj arguments will fail, unless the key
+        is ungrabbed again.
+
+        .. warning:: Providing impossible modifier sets creates undefined 
behavior
+
+        @see evas_object_key_ungrab
+        @see evas_object_focus_set
+        @see evas_object_focus_get
+        @see evas_focus_get
+        @see evas_key_modifier_add
+
+        """
+        if isinstance(keyname, unicode): keyname = keyname.encode("UTF-8")
+        if not evas_object_key_grab(self.obj, <const_char *>keyname, 
modifiers, not_modifiers, exclusive):
+            raise RuntimeError("Could not grab key.")
+
+    def key_ungrab(self, keyname not None, Evas_Modifier_Mask modifiers, 
Evas_Modifier_Mask not_modifiers):
+        """Removes the grab on @p keyname key events by @p obj.
+
+        :param keyname: the key the grab is set for.
+        :param modifiers: a mask of modifiers that must be present to
+            trigger the event.
+        :param not_modifiers: a mask of modifiers that must not not be
+            present to trigger the event.
+
+        Removes a key grab on @p obj if @p keyname, @p modifiers, and @p
+        not_modifiers match.
+
+        @see evas_object_key_grab
+        @see evas_object_focus_set
+        @see evas_object_focus_get
+        @see evas_focus_get
+
+        """
+        if isinstance(keyname, unicode): keyname = keyname.encode("UTF-8")
+        evas_object_key_ungrab(self.obj, <const_char *>keyname, modifiers, 
not_modifiers)
+
+    property is_frame_object:
+        """:type: bool"""
+        def __set__(self, value):
+            self.is_frame_object_set(value)
+
+        def __get__(self):
+            return self.is_frame_object_get()
+
+    cpdef is_frame_object_set(self, bint is_frame):
+        evas_object_is_frame_object_set(self.obj, is_frame);
+
+    cpdef is_frame_object_get(self):
+        return bool(evas_object_is_frame_object_get(self.obj))
diff --git a/include/efl.evas.pxd b/include/efl.evas.pxd
index c6e0e78..58029b9 100644
--- a/include/efl.evas.pxd
+++ b/include/efl.evas.pxd
@@ -25,7 +25,8 @@ from efl.evas.enums cimport Evas_Event_Flags, 
Evas_Button_Flags, \
     Evas_Text_Style_Type, Evas_Textblock_Text_Type, \
     Evas_Textgrid_Palette, Evas_Textgrid_Font_Style, \
     Evas_Fill_Spread, Evas_Image_Scale_Hint, Evas_Image_Content_Hint, \
-    Evas_Image_Animated_Loop_Hint, Evas_Object_Table_Homogeneous_Mode
+    Evas_Image_Animated_Loop_Hint, Evas_Object_Table_Homogeneous_Mode, \
+    Evas_Display_Mode
 
 cdef extern from "Evas.h":
     ####################################################################
@@ -34,7 +35,7 @@ cdef extern from "Evas.h":
     ctypedef int Evas_Coord
     ctypedef int Evas_Angle
     ctypedef int Evas_Font_Size
-
+    ctypedef unsigned long long Evas_Modifier_Mask
 
     ####################################################################
     # Structures
@@ -409,6 +410,8 @@ cdef extern from "Evas.h":
     void evas_object_size_hint_min_set(Evas_Object *obj, Evas_Coord w, 
Evas_Coord h)
     void evas_object_size_hint_max_get(const_Evas_Object *obj, Evas_Coord *w, 
Evas_Coord *h)
     void evas_object_size_hint_max_set(Evas_Object *obj, Evas_Coord w, 
Evas_Coord h)
+    Evas_Display_Mode evas_object_size_hint_display_mode_get(const_Evas_Object 
*obj)
+    void evas_object_size_hint_display_mode_set(Evas_Object *obj, 
Evas_Display_Mode dispmode)
     void evas_object_size_hint_request_get(const_Evas_Object *obj, Evas_Coord 
*w, Evas_Coord *h)
     void evas_object_size_hint_request_set(Evas_Object *obj, Evas_Coord w, 
Evas_Coord h)
     void evas_object_size_hint_aspect_get(const_Evas_Object *obj, 
Evas_Aspect_Control *aspect, Evas_Coord *w, Evas_Coord *h)
@@ -424,6 +427,9 @@ cdef extern from "Evas.h":
     void evas_object_hide(Evas_Object *obj)
     Eina_Bool evas_object_visible_get(const_Evas_Object *obj)
 
+    void                     evas_object_precise_is_inside_set(Evas_Object 
*obj, Eina_Bool precise)
+    Eina_Bool                
evas_object_precise_is_inside_get(const_Evas_Object *obj)
+
     void evas_object_static_clip_set(Evas_Object *obj, Eina_Bool 
is_static_clip)
     Eina_Bool evas_object_static_clip_get(Evas_Object *obj)
 
@@ -433,6 +439,9 @@ cdef extern from "Evas.h":
     void evas_object_anti_alias_set(Evas_Object *obj, Eina_Bool antialias)
     Eina_Bool evas_object_anti_alias_get(const_Evas_Object *obj)
 
+    void                     evas_object_scale_set(Evas_Object *obj, double 
scale)
+    double                   evas_object_scale_get(const_Evas_Object *obj)
+
     void evas_object_color_set(Evas_Object *obj, int r, int g, int b, int a)
     void evas_object_color_get(const_Evas_Object *obj, int *r, int *g, int *b, 
int *a)
 
@@ -466,12 +475,20 @@ cdef extern from "Evas.h":
     Eina_Bool evas_object_repeat_events_get(const_Evas_Object *obj)
     void evas_object_propagate_events_set(Evas_Object *obj, Eina_Bool prop)
     Eina_Bool evas_object_propagate_events_get(const_Evas_Object *obj)
+    void      evas_object_freeze_events_set(Evas_Object *obj, Eina_Bool freeze)
+    Eina_Bool evas_object_freeze_events_get(const_Evas_Object *obj)
+
     void evas_object_pointer_mode_set(Evas_Object *obj, 
Evas_Object_Pointer_Mode setting)
     Evas_Object_Pointer_Mode evas_object_pointer_mode_get(const_Evas_Object 
*obj)
 
     void evas_object_focus_set(Evas_Object *obj, Eina_Bool focus)
     Eina_Bool evas_object_focus_get(const_Evas_Object *obj)
 
+    Eina_Bool            evas_object_key_grab(Evas_Object *obj, const_char 
*keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, 
Eina_Bool exclusive)
+    void                 evas_object_key_ungrab(Evas_Object *obj, const_char 
*keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers)
+    void         evas_object_is_frame_object_set(Evas_Object *obj, Eina_Bool 
is_frame)
+    Eina_Bool    evas_object_is_frame_object_get(Evas_Object *obj)
+
 
     ####################################################################
     # Smart Object (py3:TODO)
@@ -861,8 +878,14 @@ cdef class Object(Eo):
     cpdef geometry_set(self, int x, int y, int w, int h)
     cpdef size_get(self)
     cpdef size_set(self, int w, int h)
+    cpdef size_hint_display_mode_get(self)
+    cpdef size_hint_display_mode_set(self, Evas_Display_Mode dispmode)
     cpdef visible_get(self)
     cpdef visible_set(self, spec)
+    cpdef precise_is_inside_set(self, precise)
+    cpdef precise_is_inside_get(self)
+    cpdef scale_set(self, double scale)
+    cpdef scale_get(self)
     cpdef color_get(self)
     cpdef clip_get(self)
     cpdef clipees_get(self)
@@ -870,8 +893,12 @@ cdef class Object(Eo):
     cpdef name_set(self, value)
     cpdef focus_get(self)
     cpdef focus_set(self, value)
+    cpdef freeze_events_set(self, freeze)
+    cpdef freeze_events_get(self)
     cpdef map_get(self)
     cpdef map_set(self, Map map)
+    cpdef is_frame_object_set(self, bint is_frame)
+    cpdef is_frame_object_get(self)
 
 
 cdef class Rectangle(Object):

-- 

------------------------------------------------------------------------------
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

Reply via email to