davemds pushed a commit to branch master.

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

commit dd3bc98c93a9e17c5ca110d6b4eca8844ea81669
Author: davemds <d...@gurumeditation.it>
Date:   Sun Feb 23 16:29:31 2014 +0100

    Python-EFL: add API Label.slide_speed. With tests
---
 efl/elementary/label.pxd          |  2 ++
 efl/elementary/label.pyx          | 27 +++++++++++++++++++++
 examples/elementary/test_label.py | 50 +++++++++++++++++++++++++++------------
 3 files changed, 64 insertions(+), 15 deletions(-)

diff --git a/efl/elementary/label.pxd b/efl/elementary/label.pxd
index fa7c9bb..00504d1 100644
--- a/efl/elementary/label.pxd
+++ b/efl/elementary/label.pxd
@@ -11,6 +11,8 @@ cdef extern from "Elementary.h":
     Eina_Bool             elm_label_ellipsis_get(Evas_Object *obj)
     void                  elm_label_slide_duration_set(Evas_Object *obj, 
double duration)
     double                elm_label_slide_duration_get(Evas_Object *obj)
+    void                  elm_label_slide_speed_set(Evas_Object *obj, double 
speed)
+    double                elm_label_slide_speed_get(Evas_Object *obj)
 # TODO:    void                    elm_label_slide_area_limit_set(Evas_Object 
*obj, Eina_Bool limit)
     void                  elm_label_slide_mode_set(Evas_Object *obj, 
Elm_Label_Slide_Mode mode)
     Elm_Label_Slide_Mode  elm_label_slide_mode_get(const_Evas_Object *obj)
diff --git a/efl/elementary/label.pyx b/efl/elementary/label.pyx
index 7d1d785..033d64b 100644
--- a/efl/elementary/label.pyx
+++ b/efl/elementary/label.pyx
@@ -215,6 +215,10 @@ cdef class Label(LayoutClass):
 
         :type: float
 
+        .. note:: If you set the speed of the slide using 
:py:attr:`slide_speed`
+                  you cannot get the correct duration using this function until
+                  the label is actually rendered and resized.
+
         """
         def __get__(self):
             return elm_label_slide_duration_get(self.obj)
@@ -227,6 +231,29 @@ cdef class Label(LayoutClass):
     def slide_duration_get(self):
         return elm_label_slide_duration_get(self.obj)
 
+    property slide_speed:
+        """The speed of the slide animation in px per seconds
+
+        :type: float
+
+        .. note:: If you set the duration of the slide using 
:py:attr:`slide_duration`
+                  you cannot get the correct speed using this function until
+                  the label is actually rendered and resized.
+
+        .. versionadded:: 1.9
+
+        """
+        def __get__(self):
+            return elm_label_slide_speed_get(self.obj)
+
+        def __set__(self, speed):
+            elm_label_slide_speed_set(self.obj, speed)
+
+    def slide_speed_set(self, speed):
+        elm_label_slide_speed_set(self.obj, speed)
+    def slide_speed_get(self):
+        return elm_label_slide_speed_get(self.obj)
+
     # TODO: What the heck does this do?
     # property slide_area_limit:
     #     """
diff --git a/examples/elementary/test_label.py 
b/examples/elementary/test_label.py
index ffa1a18..21b239e 100644
--- a/examples/elementary/test_label.py
+++ b/examples/elementary/test_label.py
@@ -20,9 +20,18 @@ def cb_slide_radio(radio, lb):
     lb.style = radio.text
 
 def cb_slider_duration(slider, lb):
-    lb.slide = False
     lb.slide_duration = slider.value
-    lb.slide = True
+    lb.slide_go()
+
+    sl_spd = lb.data["slider_speed"]
+    sl_spd.value = lb.slide_speed
+
+def cb_slider_speed(slider, lb):
+    lb.slide_speed = slider.value
+    lb.slide_go()
+
+    sl_dur = lb.data["slider_duration"]
+    sl_dur.value = lb.slide_duration
 
 def label_clicked(obj):
     win = StandardWindow("label", "Label test", autodel=True, size=(280, 400))
@@ -85,49 +94,60 @@ def label_clicked(obj):
     gd.pack(lb, 5, 15, 90, 15)
     lb.show()
 
-    lb = Label(win, "Test Label Slide:", size_hint_align=(0.0, 0.5))
-    gd.pack(lb, 5, 40, 90, 15)
+    lb = Label(win, text="Test Label Slide:", size_hint_align=(0.0, 0.5))
+    gd.pack(lb, 5, 30, 90, 15)
     lb.show()
 
+
     rect = Rectangle(win.evas, color=(255, 125, 125, 255))
-    gd.pack(rect, 5, 50, 90, 15)
+    gd.pack(rect, 5, 40, 90, 15)
     rect.show()
 
     lb = Label(win, slide_mode=ELM_LABEL_SLIDE_MODE_AUTO, style="slide_short",
-        size_hint_align=(0.0, 0.5))
+                    size_hint_align=(0.0, 0.5), slide_duration=15)
     lb.text = "This is a label set to slide. " \
               "If set slide to true the text of the label " \
               "will slide/scroll through the length of label." \
               "This only works with the themes \"slide_short\", " \
               "\"slide_long\" and \"slide_bounce\"."
-    gd.pack(lb, 5, 50, 90, 15)
+    gd.pack(lb, 5, 40, 90, 15)
     lb.show()
 
     rd = Radio(win, state_value=1, text="slide_short")
-    gd.pack(rd, 5, 65, 30, 15)
+    gd.pack(rd, 5, 55, 30, 15)
     rd.callback_changed_add(cb_slide_radio, lb)
     rd.show()
     rdg = rd
 
     rd = Radio(win, state_value=2, text="slide_long")
     rd.group_add(rdg)
-    gd.pack(rd, 35, 65, 30, 15)
+    gd.pack(rd, 35, 55, 30, 15)
     rd.callback_changed_add(cb_slide_radio, lb)
     rd.show()
 
     rd = Radio(win, state_value=3, text="slide_bounce")
     rd.group_add(rdg)
-    gd.pack(rd, 65, 65, 30, 15)
+    gd.pack(rd, 65, 55, 30, 15)
     rd.callback_changed_add(cb_slide_radio, lb)
     rd.show()
 
-    sl = Slider(win, text="Slide Duration", unit_format="%1.1f units",
-        min_max=(1, 20), value=10, size_hint_align=FILL_HORIZ,
+    sl_dur = Slider(win, text="Slide Duration", unit_format="%1.1f secs",
+                    min_max=(1, 40), value=15, size_hint_align=FILL_HORIZ,
+                    size_hint_weight=EXPAND_HORIZ)
+    sl_dur.callback_changed_add(cb_slider_duration, lb)
+    gd.pack(sl_dur, 5, 70, 90, 15)
+    sl_dur.show()
+
+    sl_spd = Slider(win, text="Slide Speed", unit_format="%1.1f px/sec",
+        min_max=(10, 300), value=10, size_hint_align=FILL_HORIZ,
         size_hint_weight=EXPAND_HORIZ)
-    sl.callback_changed_add(cb_slider_duration, lb)
-    gd.pack(sl, 5, 80, 90, 15)
-    sl.show()
+    sl_spd.callback_changed_add(cb_slider_speed, lb)
+    gd.pack(sl_spd, 5, 80, 90, 15)
+    sl_spd.show()
 
+    lb.data["slider_duration"] = sl_dur
+    lb.data["slider_speed"] = sl_spd
+    
     win.show()
 
 

-- 


Reply via email to