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