davemds pushed a commit to branch master.

http://git.enlightenment.org/bindings/python/python-efl.git/commit/?id=783e2ba6c8c046d67bbba43b9cff2bc46daa1ee0

commit 783e2ba6c8c046d67bbba43b9cff2bc46daa1ee0
Author: Dave Andreoli <[email protected]>
Date:   Tue Jan 6 17:46:18 2015 +0100

    Evas.Object: New convenience props, size_hint_expand and size_hint_fill
    
    Also added some docs for size hints usage
---
 doc/evas/class-object.rst    | 27 -----------------
 doc/evas/evas.rst            | 50 +++++++++++++++++++++++++++++++
 efl/evas/efl.evas_object.pxi | 71 ++++++++++++++++++++++++++++++++++++++++++--
 include/efl.evas.pxd         |  4 +++
 4 files changed, 122 insertions(+), 30 deletions(-)

diff --git a/doc/evas/class-object.rst b/doc/evas/class-object.rst
index 06f5213..38e1558 100644
--- a/doc/evas/class-object.rst
+++ b/doc/evas/class-object.rst
@@ -3,32 +3,5 @@
 :class:`efl.evas.Object` Class
 ==============================
 
-.. _Evas_Keys:
-
-Key Input Functions
-===================
-
-Functions which feed key events to the canvas.
-
-As explained in :ref:`evas_main_intro_not_evas`, Evas is **not** aware of input
-systems at all. Then, the user, if using it crudely (evas_new()),
-will have to feed it with input events, so that it can react
-somehow. If, however, the user creates a canvas by means of the
-Ecore_Evas wrapper, it will automatically bind the chosen display
-engine's input events to the canvas, for you.
-
-This group presents the functions dealing with the feeding of key
-events to the canvas. On most of them, one has to reference a given
-key by a name (``keyname`` argument). Those are
-**platform dependent** symbolic names for the keys. Sometimes
-you'll get the right ``keyname`` by simply using an ASCII
-value of the key name, but it won't be like that always.
-
-Typical platforms are Linux frame buffer (Ecore_FB) and X server
-(Ecore_X) when using Evas with Ecore and Ecore_Evas. Please refer
-to your display engine's documentation when using evas through an
-Ecore helper wrapper when you need the ``keyname``'s.
-
-
 .. autoclass:: efl.evas.Object
     :inherited-members:
diff --git a/doc/evas/evas.rst b/doc/evas/evas.rst
index fbcac8b..1993a8a 100644
--- a/doc/evas/evas.rst
+++ b/doc/evas/evas.rst
@@ -167,6 +167,56 @@ display logic, but does very little high-level logic such 
as
 scrollbars, sliders, push buttons etc.
 
 
+.. _evas-size-hints:
+
+Size Hints
+----------
+
+Evas :class:`Object` may carry hints, so that another object that acts as a
+manager may know how to properly position and resize its subordinate objects.
+
+The Size Hints provide a common interface that is recommended as the
+protocol for such information.
+
+For example, box objects use alignment hints to align its lines/columns
+inside its container, padding hints to set the padding between each
+individual child, etc.
+
+Size Hints are controlled using various :class:`Object` properties:
+
+ * :attr:`~Object.size_hint_weight` (also called 
:attr:`~Object.size_hint_expand`)
+ * :attr:`~Object.size_hint_align` (also called :attr:`~Object.size_hint_fill`)
+ * :attr:`~Object.size_hint_min`
+ * :attr:`~Object.size_hint_max`
+ * :attr:`~Object.size_hint_aspect`
+ * :attr:`~Object.size_hint_padding`
+ * :attr:`~Object.size_hint_display_mode`
+ * :attr:`~Object.size_hint_request`
+
+The **weight** and the **align** are quite special, they are also used to
+express the **expand** and the **fill** property of the object. For this
+reason some helper are provided:
+
+ * ``EVAS_HINT_EXPAND`` = -1.0 (to be used with **weight** or **expand**)
+ * ``EVAS_HINT_FILL`` = 1.0 (to be used with **align** or **fill**)
+
+And also:
+
+ * ``EXPAND_BOTH``  = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ * ``EXPAND_HORIZ`` = EVAS_HINT_EXPAND, 0.0
+ * ``EXPAND_VERT``  = 0.0, EVAS_HINT_EXPAND
+ * ``FILL_BOTH``  = EVAS_HINT_FILL, EVAS_HINT_FILL
+ * ``FILL_HORIZ`` = EVAS_HINT_FILL, 0.5
+ * ``FILL_VERT``  = 0.5, EVAS_HINT_FILL
+
+You can also build your own as needed, for example you can define:
+
+ * ``FILL_AND_ALIGN_TOP`` = EVAS_HINT_FILL, 0.0
+ * ``FILL_AND_ALIGN_RIGHT`` = 1.0, EVAS_HINT_FILL
+
+and so on...
+
+
 Next Steps
 ----------
 
diff --git a/efl/evas/efl.evas_object.pxi b/efl/evas/efl.evas_object.pxi
index a919499..cee17b1 100644
--- a/efl/evas/efl.evas_object.pxi
+++ b/efl/evas/efl.evas_object.pxi
@@ -851,15 +851,17 @@ cdef class Object(Eo):
         This is not an enforcement, just a hint that can be used by
         other objects like Edje, boxes, tables and others.
 
-        Accepted values are in the 0.0 to 1.0 range, with the special
-        value -1.0 used to specify"justify" or "fill" by some users.
-        See documentation of possible users.
+        Accepted values are in the 0.0 to 1.0 range, with the special value
+        -1.0 (EVAS_HINT_FILL) used to specify "justify" or "fill" by some
+        users.
 
         When this property changes, EVAS_CALLBACK_CHANGED_SIZE_HINTS
         will be emitted.
 
         :type: (double **x**, double **y**)
 
+        .. seealso:: :ref:`evas-size-hints`
+
         """
         def __get__(self):
             cdef double x, y
@@ -877,6 +879,37 @@ cdef class Object(Eo):
     def size_hint_align_set(self, float x, float y):
         evas_object_size_hint_align_set(self.obj, x, y)
 
+    property size_hint_fill:
+        """Hint about fill.
+
+        This is just a convenience property to make it easier to understand
+        that **align** is also used for **fill** properties (as fill is 
mutually
+        exclusive to align).
+        This is **exactly** the same as using :attr:`size_hint_align`
+
+        :type: (double **x**, double **y**)
+
+        .. seealso:: :ref:`evas-size-hints`
+
+        .. versionadded:: 1.13
+
+        """
+        def __get__(self):
+            cdef double x, y
+            evas_object_size_hint_fill_get(self.obj, &x, &y)
+            return (x, y)
+
+        def __set__(self, spec):
+            x, y = spec
+            evas_object_size_hint_fill_set(self.obj, x, y)
+
+    def size_hint_fill_get(self):
+        cdef double x, y
+        evas_object_size_hint_fill_get(self.obj, &x, &y)
+        return (x, y)
+    def size_hint_fill_set(self, float x, float y):
+        evas_object_size_hint_fill_set(self.obj, x, y)
+
     property size_hint_weight:
         """Hint about weight.
 
@@ -890,6 +923,8 @@ cdef class Object(Eo):
 
         :type: (double **x**, double **y**)
 
+        .. seealso:: :ref:`evas-size-hints`
+
         """
         def __get__(self):
             cdef double x, y
@@ -907,6 +942,36 @@ cdef class Object(Eo):
     def size_hint_weight_set(self, float x, float y):
         evas_object_size_hint_weight_set(self.obj, x, y)
 
+    property size_hint_expand:
+        """Hint about expand.
+
+        This is just a convenience property to make it easier to understand
+        that **weight** is also used for **expand** properties.
+        This is **exactly** the same as using :attr:`size_hint_weight`
+
+        :type: (double **x**, double **y**)
+
+        .. seealso:: :ref:`evas-size-hints`
+
+        .. versionadded:: 1.13
+
+        """
+        def __get__(self):
+            cdef double x, y
+            evas_object_size_hint_expand_get(self.obj, &x, &y)
+            return (x, y)
+
+        def __set__(self, spec):
+            x, y = spec
+            evas_object_size_hint_expand_set(self.obj, x, y)
+
+    def size_hint_expand_get(self):
+        cdef double x, y
+        evas_object_size_hint_expand_get(self.obj, &x, &y)
+        return (x, y)
+    def size_hint_expand_set(self, float x, float y):
+        evas_object_size_hint_expand_set(self.obj, x, y)
+
     property size_hint_padding:
         """Hint about padding.
 
diff --git a/include/efl.evas.pxd b/include/efl.evas.pxd
index 657178c..f549a69 100644
--- a/include/efl.evas.pxd
+++ b/include/efl.evas.pxd
@@ -702,8 +702,12 @@ cdef extern from "Evas.h":
     void evas_object_size_hint_aspect_set(Evas_Object *obj, 
Evas_Aspect_Control aspect, Evas_Coord w, Evas_Coord h)
     void evas_object_size_hint_align_get(const Evas_Object *obj, double *x, 
double *y)
     void evas_object_size_hint_align_set(Evas_Object *obj, double x, double y)
+    void evas_object_size_hint_fill_get(const Evas_Object *obj, double *x, 
double *y)
+    void evas_object_size_hint_fill_set(Evas_Object *obj, double x, double y)
     void evas_object_size_hint_weight_get(const Evas_Object *obj, double *x, 
double *y)
     void evas_object_size_hint_weight_set(Evas_Object *obj, double x, double y)
+    void evas_object_size_hint_expand_get(const Evas_Object *obj, double *x, 
double *y)
+    void evas_object_size_hint_expand_set(Evas_Object *obj, double x, double y)
     void evas_object_size_hint_padding_get(const Evas_Object *obj, Evas_Coord 
*l, Evas_Coord *r, Evas_Coord *t, Evas_Coord *b)
     void evas_object_size_hint_padding_set(Evas_Object *obj, Evas_Coord l, 
Evas_Coord r, Evas_Coord t, Evas_Coord b)
 

-- 


Reply via email to