davemds pushed a commit to branch master.

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

commit f183fc171f314cdafe40a05c3d8fb57a13cf6134
Author: Dave Andreoli <d...@gurumeditation.it>
Date:   Thu Apr 16 22:05:41 2015 +0200

    New 1.14 API: elm.Scroller.loop
    
    Scroller test redone to include loop and more
---
 efl/elementary/scroller.pxd          |   2 +
 efl/elementary/scroller.pyx          |  27 ++++++-
 examples/elementary/test_scroller.py | 139 ++++++++++++++++++++++++++---------
 3 files changed, 131 insertions(+), 37 deletions(-)

diff --git a/efl/elementary/scroller.pxd b/efl/elementary/scroller.pxd
index 0b008c5..7de1f39 100644
--- a/efl/elementary/scroller.pxd
+++ b/efl/elementary/scroller.pxd
@@ -60,6 +60,8 @@ cdef extern from "Elementary.h":
     void                     elm_scroller_gravity_get(const Evas_Object *obj, 
double *x, double *y)
     void                     elm_scroller_movement_block_set(Evas_Object *obj, 
Elm_Scroller_Movement_Block block)
     Elm_Scroller_Movement_Block elm_scroller_movement_block_get(const 
Evas_Object *obj)
+    void                     elm_scroller_loop_set(Evas_Object *obj, Eina_Bool 
loop_h, Eina_Bool loop_v)
+    void                     elm_scroller_loop_get(const Evas_Object *obj, 
Eina_Bool *loop_h, Eina_Bool *loop_v)
 
 cdef class Scrollable(Object):
     pass
diff --git a/efl/elementary/scroller.pyx b/efl/elementary/scroller.pyx
index d4ab6e0..8efff31 100644
--- a/efl/elementary/scroller.pyx
+++ b/efl/elementary/scroller.pyx
@@ -696,7 +696,6 @@ cdef class Scrollable(Object):
 
         .. versionadded:: 1.8
 
-
         """
         def __set__(self, Elm_Scroller_Movement_Block block):
             elm_scroller_movement_block_set(self.obj, block)
@@ -704,6 +703,32 @@ cdef class Scrollable(Object):
         def __get__(self):
             return elm_scroller_movement_block_get(self.obj)
 
+    property loop:
+        """
+
+        Set an infinite loop for the scroller
+
+        :type: (bool **h**, bool **v**)
+
+        .. versionadded:: 1.14
+
+        """
+        def __set__(self, value):
+            h, v = value
+            elm_scroller_loop_set(self.obj, h, v)
+
+        def __get__(self):
+            cdef Eina_Bool h, v
+            elm_scroller_loop_get(self.obj, &h, &v)
+            return (h, v)
+
+    def loop_set(self, h, v):
+        elm_scroller_loop_set(self.obj, h, v)
+    def loop_get(self):
+        cdef Eina_Bool h, v
+        elm_scroller_loop_get(self.obj, &h, &v)
+        return (h, v)
+
     def callback_edge_left_add(self, func, *args, **kwargs):
         """The left edge of the content has been reached."""
         self._callback_add("edge,left", func, args, kwargs)
diff --git a/examples/elementary/test_scroller.py 
b/examples/elementary/test_scroller.py
index 1b9827b..1b01763 100644
--- a/examples/elementary/test_scroller.py
+++ b/examples/elementary/test_scroller.py
@@ -8,8 +8,12 @@ from efl.evas import EVAS_HINT_EXPAND, EVAS_HINT_FILL, \
 from efl import elementary
 from efl.elementary.window import StandardWindow
 from efl.elementary.background import Background
+from efl.elementary.box import Box
 from efl.elementary.button import Button
-from efl.elementary.scroller import Scroller
+from efl.elementary.check import Check
+from efl.elementary.frame import Frame
+from efl.elementary.scroller import Scroller, \
+    ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL, 
ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL
 from efl.elementary.table import Table
 
 
@@ -37,6 +41,36 @@ def cb_drags(obj, action):
 def cb_anims(obj, action):
     print("Anim callback: " + action)
 
+def cb_freeze(chk, scroller):
+    if chk.state:
+        scroller.scroll_freeze_push()
+    else:
+        scroller.scroll_freeze_pop()
+
+def cb_hold(chk, scroller):
+    if chk.state:
+        scroller.scroll_hold_push()
+    else:
+        scroller.scroll_hold_pop()
+
+def cb_block(chk, scroller, direction):
+    if chk.state:
+        scroller.movement_block |= direction
+    else:
+        scroller.movement_block &= 0xFF ^ direction
+
+def cb_snap(chk, scroller):
+    scroller.page_snap = (chk.state, chk.state)
+
+def cb_loop_h(chk, scroller):
+    h, v = scroller.loop
+    scroller.loop = chk.state, v
+
+def cb_loop_v(chk, scroller):
+    h, v = scroller.loop
+    scroller.loop = h, chk.state
+
+
 def scroller_clicked(obj):
     win = StandardWindow("scroller", "Scroller", autodel=True, size=(320, 320))
     if obj is None:
@@ -44,31 +78,23 @@ def scroller_clicked(obj):
 
     tb = Table(win, size_hint_weight=EXPAND_BOTH)
 
-    img = ["panel_01.jpg",
-           "plant_01.jpg",
-           "rock_01.jpg",
-           "rock_02.jpg",
-           "sky_01.jpg",
-           "sky_02.jpg",
-           "sky_03.jpg",
-           "sky_04.jpg",
-           "wood_01.jpg"]
+    img = ["panel_01.jpg", "plant_01.jpg", "rock_01.jpg",
+           "rock_02.jpg", "sky_01.jpg", "sky_02.jpg",
+           "sky_03.jpg", "sky_04.jpg", "wood_01.jpg"]
 
     n = 0
     for j in range(12):
         for i in range(12):
-            bg2 = Background(win, file=os.path.join(img_path, img[n]),
-                size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH,
-                size_hint_min=(318, 318))
-
+            bg = Background(win, file=os.path.join(img_path, img[n]),
+                            size_hint_min=(318, 318))
             n += 1
             if n >= 9:
                 n = 0
-            tb.pack(bg2, i, j, 1, 1)
-            bg2.show()
+            tb.pack(bg, i, j, 1, 1)
+            bg.show()
 
-    sc = Scroller(win, size_hint_weight=EXPAND_BOTH, content=tb,
-        page_relative=(1.0, 1.0))
+    sc = Scroller(win, content=tb, page_size=(318, 318),
+                  size_hint_expand=EXPAND_BOTH, size_hint_fill=FILL_BOTH)
     sc.callback_edge_top_add(cb_edges, "top")
     sc.callback_edge_bottom_add(cb_edges, "bottom")
     sc.callback_edge_left_add(cb_edges, "left")
@@ -77,41 +103,82 @@ def scroller_clicked(obj):
     sc.callback_scroll_drag_stop_add(cb_drags, "stop")
     sc.callback_scroll_anim_start_add(cb_anims, "start")
     sc.callback_scroll_anim_stop_add(cb_anims, "stop")
-    win.resize_object_add(sc)
-
-    tb.show()
-
     sc.show()
+    tb.show()
 
-    tb2 = Table(win, size_hint_weight=EXPAND_BOTH)
+    tb2 = Table(win, size_hint_expand=EXPAND_BOTH, size_hint_fill=FILL_BOTH)
     win.resize_object_add(tb2)
+    tb2.pack(sc, 0, 1, 1, 1)
+    tb2.show()
 
-    bt = Button(win, text="to 300 300", size_hint_weight=EXPAND_BOTH,
-        size_hint_align=(0.1, 0.1))
+    fr = Frame(win, text="Options", size_hint_expand=EXPAND_HORIZ,
+               size_hint_fill=FILL_HORIZ)
+    tb2.pack(fr, 0, 0, 1, 1)
+    fr.show()
+
+    box = Box(fr, horizontal=True)
+    fr.content = box
+    box.show()
+
+    ck = Check(box, text="Freeze")
+    ck.callback_changed_add(cb_freeze, sc)
+    box.pack_end(ck)
+    ck.show()
+
+    ck = Check(box, text="Hold")
+    ck.callback_changed_add(cb_hold, sc)
+    box.pack_end(ck)
+    ck.show()
+
+    ck = Check(box, text="Block in X axis")
+    ck.callback_changed_add(cb_block, sc, 
ELM_SCROLLER_MOVEMENT_BLOCK_HORIZONTAL)
+    box.pack_end(ck)
+    ck.show()
+
+    ck = Check(box, text="Block in Y axis")
+    ck.callback_changed_add(cb_block, sc, ELM_SCROLLER_MOVEMENT_BLOCK_VERTICAL)
+    box.pack_end(ck)
+    ck.show()
+    
+    ck = Check(box, text="Snap to pages")
+    ck.callback_changed_add(cb_snap, sc)
+    box.pack_end(ck)
+    ck.show()
+
+    ck = Check(box, text="Loop in X axis")
+    ck.callback_changed_add(cb_loop_h, sc)
+    box.pack_end(ck)
+    ck.show()
+
+    ck = Check(box, text="Loop in Y axis")
+    ck.callback_changed_add(cb_loop_v, sc)
+    box.pack_end(ck)
+    ck.show()
+
+    bt = Button(win, text="to 300 300", size_hint_expand=EXPAND_BOTH,
+                size_hint_align=(0.1, 0.1))
     bt.callback_clicked_add(my_scroller_go_300_300, sc)
-    tb2.pack(bt, 0, 0, 1, 1)
+    tb2.pack(bt, 0, 1, 1, 1)
     bt.show()
 
-    bt = Button(win, text="to 900 300", size_hint_weight=EXPAND_BOTH,
-        size_hint_align=(0.9, 0.1))
+    bt = Button(win, text="to 900 300", size_hint_expand=EXPAND_BOTH,
+                size_hint_align=(0.9, 0.1))
     bt.callback_clicked_add(my_scroller_go_900_300, sc)
-    tb2.pack(bt, 1, 0, 1, 1)
+    tb2.pack(bt, 0, 1, 1, 1)
     bt.show()
 
-    bt = Button(win, text="to 300 900", size_hint_weight=EXPAND_BOTH,
-        size_hint_align=(0.1, 0.9))
+    bt = Button(win, text="to 300 900", size_hint_expand=EXPAND_BOTH,
+                size_hint_align=(0.1, 0.9))
     bt.callback_clicked_add(my_scroller_go_300_900, sc)
     tb2.pack(bt, 0, 1, 1, 1)
     bt.show()
 
-    bt = Button(win, text="to 900 900", size_hint_weight=EXPAND_BOTH,
-        size_hint_align=(0.9, 0.9))
+    bt = Button(win, text="to 900 900", size_hint_expand=EXPAND_BOTH,
+                size_hint_align=(0.9, 0.9))
     bt.callback_clicked_add(my_scroller_go_900_900, sc)
-    tb2.pack(bt, 1, 1, 1, 1)
+    tb2.pack(bt, 0, 1, 1, 1)
     bt.show()
 
-    tb2.show()
-
     win.show()
 
 

-- 


Reply via email to