kuuko pushed a commit to branch master.

commit 19a2aaf70c60c229d7099b4b777b32bf33c4f90f
Author: Kai Huuhko <[email protected]>
Date:   Mon Apr 15 16:19:56 2013 +0000

    Elementary: Add decorate mode tests for Genlist.
---
 efl/elementary/genlist.pyx            |   2 +
 examples/elementary/images/bubble.png | Bin 0 -> 4878 bytes
 examples/elementary/test.py           |   5 +-
 examples/elementary/test_genlist.py   | 233 +++++++++++++++++++++++++++++++++-
 4 files changed, 237 insertions(+), 3 deletions(-)

diff --git a/efl/elementary/genlist.pyx b/efl/elementary/genlist.pyx
index 9b41693..240ea5a 100644
--- a/efl/elementary/genlist.pyx
+++ b/efl/elementary/genlist.pyx
@@ -1564,6 +1564,8 @@ cdef class GenlistItem(ObjectItem):
         active on the item, and will be destroyed after the mode is totally
         deactivated from that item.
 
+        :type: (unicode **decorate_it_type**, bool **decorate_it_set**)
+
         .. seealso:: :py:attr:`mode` :py:attr:`decorated_item`
 
         """
diff --git a/examples/elementary/images/bubble.png 
b/examples/elementary/images/bubble.png
new file mode 100644
index 0000000..dfb71b7
Binary files /dev/null and b/examples/elementary/images/bubble.png differ
diff --git a/examples/elementary/test.py b/examples/elementary/test.py
index 545be1d..f6f6e39 100755
--- a/examples/elementary/test.py
+++ b/examples/elementary/test.py
@@ -47,7 +47,8 @@ from test_flipselector import flipselector_clicked
 from test_floating import floating_clicked
 from test_frame import frame_clicked
 from test_gengrid import gengrid_clicked
-from test_genlist import genlist_clicked, genlist2_clicked, genlist3_clicked, 
genlist4_clicked, genlist5_clicked
+from test_genlist import genlist_clicked, genlist2_clicked, genlist3_clicked, \
+    genlist4_clicked, genlist5_clicked, genlist10_clicked, genlist15_clicked
 from test_grid import grid_clicked
 from test_hover import hover_clicked, hover2_clicked
 from test_hoversel import hoversel_clicked
@@ -164,6 +165,8 @@ items = [
             ("Genlist Group", genlist3_clicked),
             ("Genlist Sorted", genlist4_clicked),
             ("Genlist Iteration", genlist5_clicked),
+            ("Genlist Decorate Item Mode", genlist10_clicked),
+            ("Genlist Decorate All Mode", genlist15_clicked),
             ("Gengrid", gengrid_clicked),
         ]),
          ("Miscellaneous", [
diff --git a/examples/elementary/test_genlist.py 
b/examples/elementary/test_genlist.py
index feb8406..2773533 100644
--- a/examples/elementary/test_genlist.py
+++ b/examples/elementary/test_genlist.py
@@ -8,7 +8,7 @@ if sys.version_info < (3,): range = xrange
 from efl import evas
 from efl import ecore
 from efl import elementary
-from efl.elementary.window import Window
+from efl.elementary.window import Window, StandardWindow
 from efl.elementary.background import Background
 from efl.elementary.box import Box
 from efl.elementary.frame import Frame
@@ -16,8 +16,14 @@ from efl.elementary.label import Label
 from efl.elementary.button import Button
 from efl.elementary.list import List
 from efl.elementary.icon import Icon
-from efl.elementary.genlist import Genlist, GenlistItem, GenlistItemClass
+from efl.elementary.genlist import Genlist, GenlistItem, GenlistItemClass, \
+    ELM_GENLIST_ITEM_NONE, ELM_OBJECT_SELECT_MODE_ALWAYS, \
+    ELM_OBJECT_SELECT_MODE_DEFAULT
 from efl.elementary.general import cache_all_flush
+from efl.elementary.radio import Radio
+from efl.elementary.check import Check
+
+from efl.evas import EVAS_HINT_EXPAND, EVAS_HINT_FILL, 
EVAS_ASPECT_CONTROL_VERTICAL
 
 
 def gl_text_get(obj, part, item_data):
@@ -491,6 +497,227 @@ def genlist5_clicked(obj, item=None):
     win.resize(320, 320)
     win.show()
 
+mode_type = ["slide", "rotate"]
+
+class ItemClass10(GenlistItemClass):
+    def text_get(self, obj, part, data):
+        t = data[0]
+        if part == "elm.text.mode":
+            return "Mode # %i" % (t,)
+        else:
+            return "Item # %i" % (t,)
+
+    def content_get(self, obj, part, data):
+        ic = Icon(obj)
+        if part == "elm.swallow.end":
+            f = "images/bubble.png"
+        else:
+            f = "images/logo_small.png"
+        ic.file = f
+        ic.size_hint_aspect = EVAS_ASPECT_CONTROL_VERTICAL, 1, 1
+        return ic
+
+def gl_sel10(it, gl, data):
+    rd = data[1]
+    v = rd.value
+    if v:
+        it.decorate_mode_set(mode_type[v], True)
+
+def my_gl_mode_right(obj, it, rd):
+    v = rd.value
+    if not v:
+        it.decorate_mode_set(mode_type[v], True)
+
+def my_gl_mode_left(obj, it, rd):
+    v = rd.value
+    if not v:
+        it.decorate_mode_set(mode_type[v], False)
+
+def my_gl_mode_cancel(obj, it, rd):
+    print("drag")
+    v = rd.value
+    glit = obj.decorated_item
+    if glit:
+        glit.decorate_mode_set(mode_type[v], False)
+
+def genlist10_clicked(obj, item=None):
+    win = StandardWindow("genlist-decorate-item-mode", "Genlist Decorate Item 
Mode");
+    win.autodel = True
+
+    bx = Box(win)
+    bx.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+    win.resize_object_add(bx)
+    bx.show()
+
+    fr = Frame(win)
+    fr.text = "Decorate Item Mode Type"
+    bx.pack_end(fr)
+    fr.show()
+
+    bx2 = Box(win)
+    fr.content = bx2
+    bx2.show()
+
+    rd = Radio(win)
+    rd.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+    rd.state_value = 0
+    rd.text = "Slide : Sweep genlist items to the right."
+    rd.show()
+    bx2.pack_end(rd)
+    rdg = rd
+
+    rd = Radio(win)
+    rd.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+    rd.state_value = 1
+    rd.text = "Rotate : Click each item."
+    rd.group_add(rdg)
+    rd.show()
+    bx2.pack_end(rd)
+
+    gl = Genlist(win)
+    gl.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL
+    gl.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+    gl.callback_drag_start_right_add(my_gl_mode_right, rdg)
+    gl.callback_drag_start_left_add(my_gl_mode_left, rdg)
+    gl.callback_drag_start_up_add(my_gl_mode_cancel, rdg)
+    gl.callback_drag_start_down_add(my_gl_mode_cancel, rdg)
+    gl.show()
+
+    itc10 = ItemClass10(item_style="default", decorate_item_style="mode")
+    itc10.state_get = gl_state_get
+
+    for i in range(50):
+        GenlistItem(itc10,
+            #1000+i,
+            None,
+            ELM_GENLIST_ITEM_NONE,
+            gl_sel10,
+            (1000+i, rdg)).append_to(gl)
+
+    bx.pack_end(gl)
+
+    win.size = 520, 520
+    win.show()
+
+
+
+def edit_icon_clicked_cb(ic, item):
+    # TODO: get the item here
+    #item.delete()
+    pass
+
+class ItemClass15(GenlistItemClass):
+    def text_get(self, obj, part, data):
+        return "Item #%i" % (data[0])
+
+    def content_get(self, obj, part, data):
+        checked = data[1]
+
+        # "edit" EDC layout is like below. each part is swallow part.
+        # the existing item is swllowed to elm.swallow.edit.content part.
+        # --------------------------------------------------------------------
+        # | elm.edit.icon.1 | elm.swallow.decorate.content | elm.edit.icon,2 |
+        # --------------------------------------------------------------------
+
+        if part == "elm.swallow.end":
+            ic = Icon(obj)
+            ic.file = "images/bubble.png"
+            ic.size_hint_aspect = EVAS_ASPECT_CONTROL_VERTICAL, 1, 1
+            return ic
+        elif part == "elm.edit.icon.1":
+            ck = Check(obj)
+            ck.state = checked
+            ck.propagate_events = False
+            ck.show()
+            return ck
+        elif part == "elm.edit.icon.2":
+            icn = Icon(obj)
+            icn.file = "images/icon_06.png"
+            icn.propagate_events = False
+            icn.size_hint_aspect = EVAS_ASPECT_CONTROL_VERTICAL, 1, 1
+            icn.callback_clicked_add(edit_icon_clicked_cb, obj)
+            return icn
+        else:
+            return
+
+    def delete(obj, *args):
+        print("item deleted.")
+
+def gl15_sel(it, gl, data):
+    checked = data[1]
+    if gl.decorate_mode:
+        if not data[1]:
+            data[1] = True
+        else:
+            data[1] = False
+    it.update()
+
+def gl15_deco_all_mode(obj, gl):
+    gl.decorate_mode = True
+    gl.select_mode = ELM_OBJECT_SELECT_MODE_ALWAYS
+
+def gl15_normal_mode(obj, gl):
+    gl.decorate_mode = False
+    gl.select_mode = ELM_OBJECT_SELECT_MODE_DEFAULT
+
+def genlist15_clicked(obj, item=None):
+    win = StandardWindow("genlist-decorate-all-mode", "Genlist Decorate All 
Mode")
+    win.autodel = True
+
+    bx = Box(win)
+    bx.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+    win.resize_object_add(bx)
+    bx.show()
+
+    gl = Genlist(win)
+    gl.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL
+    gl.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+    gl.show()
+
+    itc15 = ItemClass15(item_style="default", decorate_all_item_style="edit")
+    itc15.state_get = gl_state_get
+
+    for i in range(100):
+        ck = Check(gl)
+        GenlistItem(itc15,
+            # tits[i], # item data
+            None, # parent
+            ELM_GENLIST_ITEM_NONE, # flags
+            gl15_sel, # func
+            [i, False], # func data
+            ).append_to(gl)
+
+    bx.pack_end(gl)
+    bx.show()
+
+    bx2 = Box(win)
+    bx2.horizontal = True
+    bx2.homogeneous = True
+    bx2.size_hint_weight =  EVAS_HINT_EXPAND, 0.0
+    bx2.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL
+
+    bt = Button(win)
+    bt.text = "Decorate All mode"
+    bt.callback_clicked_add(gl15_deco_all_mode, gl)
+    bt.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL
+    bt.size_hint_weight = EVAS_HINT_EXPAND, 0.0
+    bx2.pack_end(bt)
+    bt.show()
+
+    bt = Button(win)
+    bt.text = "Normal mode"
+    bt.callback_clicked_add(gl15_normal_mode, gl)
+    bt.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL
+    bt.size_hint_weight = EVAS_HINT_EXPAND, 0.0
+    bx2.pack_end(bt)
+    bt.show()
+
+    bx.pack_end(bx2)
+    bx2.show()
+
+    win.size = 520, 520
+    win.show()
+
 
 if __name__ == "__main__":
     def destroy(obj):
@@ -529,6 +756,8 @@ if __name__ == "__main__":
         ("Genlist Group", genlist3_clicked),
         ("Genlist Sorted", genlist4_clicked),
         ("Genlist Iteration", genlist5_clicked),
+        ("Genlist Decorate Item Mode", genlist10_clicked),
+        ("Genlist Decorate All Mode", genlist15_clicked),
     ]
 
     li = List(win)

-- 

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