aboutsummaryrefslogtreecommitdiffstats
path: root/examples/elementary/test_access.py
diff options
context:
space:
mode:
authorKai Huuhko <kai.huuhko@gmail.com>2013-10-04 15:11:57 +0300
committerKai Huuhko <kai.huuhko@gmail.com>2013-10-04 15:11:57 +0300
commitfa9e96dff9f8168d449978e3df730542d70f08ab (patch)
treea57a9af212225d050511445394b247df1b7cfb6a /examples/elementary/test_access.py
parentElementary: Add various missing functions (diff)
downloadpython-efl-fa9e96dff9f8168d449978e3df730542d70f08ab.tar.gz
Elementary: Add a test for Access.
Change internal only GenlistItem.itc to readonly item_class
Diffstat (limited to 'examples/elementary/test_access.py')
-rw-r--r--examples/elementary/test_access.py336
1 files changed, 336 insertions, 0 deletions
diff --git a/examples/elementary/test_access.py b/examples/elementary/test_access.py
new file mode 100644
index 0000000..6c9484e
--- /dev/null
+++ b/examples/elementary/test_access.py
@@ -0,0 +1,336 @@
+#!/usr/bin/env python
+# encoding: utf-8
+
+from efl.evas import EVAS_HINT_FILL, EVAS_HINT_EXPAND, \
+ EVAS_ASPECT_CONTROL_VERTICAL
+from efl import elementary
+from efl.elementary.window import StandardWindow
+from efl.elementary.box import Box
+from efl.elementary.button import Button
+from efl.elementary.genlist import Genlist, GenlistItemClass, \
+ ELM_GENLIST_ITEM_NONE
+from efl.elementary.gengrid import Gengrid, GengridItemClass
+from efl.elementary.configuration import Configuration
+from efl.elementary.access import Accessible
+from efl.elementary.frame import Frame
+from efl.elementary.label import Label
+from efl.elementary.list import List
+from efl.elementary.icon import Icon
+
+config = Configuration()
+
+
+def cleanup_cb(obj):
+ config.access = False
+
+class GLItC1(GenlistItemClass):
+ def text_get(self, gl, part, data):
+ return "Item # {0}".format(data)
+
+ def content_get(self, gl, part, data):
+ if not part == "elm.swallow.end":
+ bt = Button(gl)
+ bt.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL
+ bt.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ bt.text = "OK"
+ else:
+ bt = Icon(gl)
+ bt.file = "images/logo_small.png"
+ bt.size_hint_aspect = EVAS_ASPECT_CONTROL_VERTICAL, 1, 1
+
+ return bt
+
+class GLItC2(GenlistItemClass):
+ def content_get(self, gl, part, data):
+ if part != "elm.swallow.content": return
+
+ grid = Gengrid(gl)
+ grid.item_size = config.scale * 100, config.scale * 100
+ grid.horizontal = False
+ grid.reorder_mode = True
+ grid.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ grid.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL
+
+ gic = GGItC(item_style="default")
+
+ for i in range(4):
+ grid.item_append(gic, i)
+
+ #gic.free()
+
+ scale = config.scale
+
+ grid.size_hint_min = 300 * config.scale, 150 * config.scale
+
+ return grid
+
+
+class GGItC(GengridItemClass):
+ def content_get(self, gg, part, data):
+ if not part == "elm.swallow.icon":
+ ic = Icon(gg)
+ ic.scale = 0.5
+ ic.file = "images/icon_%02i.png" % (data % 4)
+ ic.resizable = 0, 0
+ ic.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ ic.size_hint_align = 0.5, 0.5
+ ic.show()
+ return ic
+
+def _realized(obj, ei):
+ if not ei: return
+ item = ei
+
+ itc = item.item_class
+
+ if not itc.item_style == "full":
+ # unregister item itself
+ item.access_unregister()
+
+ # convey highlight to its content
+ content = item.part_content_get("elm.swallow.content")
+ if not content: return
+
+ items.append(content)
+
+ else:
+ bt = item.part_content_get("elm.swallow.end")
+ if not bt: return
+
+ items.append(bt)
+
+ item.access_order = items
+
+def access_clicked(obj, item=None):
+ win = StandardWindow("access", "Access")
+ win.autodel = True
+ win.on_free_add(cleanup_cb)
+
+ config.access = True
+
+ bx = Box(win)
+ bx.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ bx.homogeneous = True
+ bx.horizontal = True
+ win.resize_object_add(bx)
+ bx.show()
+
+ gl = Genlist(win)
+ gl.size_hint_weight = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
+ gl.size_hint_align = EVAS_HINT_FILL, EVAS_HINT_FILL
+ bx.pack_end(gl)
+ gl.show()
+
+ gl.callback_realized_add(_realized)
+
+ itc1 = GLItC1(item_style="default")
+ itc2 = GLItC2(item_style="full")
+
+ for i in range(1,9):
+ if i % 4:
+ gl.item_append(itc1, i, None, ELM_GENLIST_ITEM_NONE)
+ else:
+ gl.item_append(itc2, i, None, ELM_GENLIST_ITEM_NONE)
+
+ itc1.free()
+ itc2.free()
+ win.resize(500, 400)
+ win.show()
+
+# def access2_clicked(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED):
+# int i, j, k
+# char buf[PATH_MAX]
+# Evas_Object *win, *bx, *sc, *ly, *ly2, *ic
+# Evas_Object *ao, *to
+
+# win = StandardWindow("access", "Access")
+# elm_win_autodel_set(win, True)
+# evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, NULL)
+
+# elm_config_access_set(True)
+
+# sc = elm_scroller_add(win)
+# elm_scroller_bounce_set(sc, True, False)
+# elm_scroller_policy_set(sc, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF)
+# evas_object_size_hint_weight_set(sc, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND)
+# elm_win_resize_object_add(win, sc)
+# evas_object_show(sc)
+
+# bx = Box(win)
+# evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND)
+# evas_object_size_hint_align_set(bx, EVAS_HINT_FILL, EVAS_HINT_FILL)
+# elm_box_homogeneous_set(bx, True)
+# elm_box_horizontal_set(bx, True)
+# elm_object_content_set(sc, bx)
+# evas_object_show(bx)
+
+# for (k = 0 ; k < 3; k++)
+# ly = elm_layout_add(win)
+# snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get())
+# elm_layout_file_set(ly, buf, "access_page")
+# evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND)
+# evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL)
+# evas_object_show(ly)
+
+# for (j = 0; j < 3; j++)
+# for (i = 0; i < 3; i++)
+# ly2 = elm_layout_add(win)
+# snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get())
+# elm_layout_file_set(ly2, buf, "access_icon")
+# evas_object_size_hint_weight_set(ly2, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND)
+# evas_object_size_hint_align_set(ly2, EVAS_HINT_FILL, EVAS_HINT_FILL)
+
+# ic = Icon(win)
+# elm_object_scale_set(ic, 0.5)
+# snprintf(buf, sizeof(buf), "%s/images/icon_%02i.png", elm_app_data_dir_get(), (i + (k * 3)))
+# elm_image_file_set(ic, buf, NULL)
+# elm_image_resizable_set(ic, 0, 0)
+# evas_object_size_hint_weight_set(ic, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND)
+# evas_object_size_hint_align_set(ic, 0.5, 0.5)
+# elm_object_part_content_set(ly2, "slot", ic)
+# evas_object_show(ic)
+
+# snprintf(buf, sizeof(buf), "slot.%i.%i", i, j)
+# elm_object_part_content_set(ly, buf, ly2)
+# evas_object_show(ly2)
+
+# /* access */
+# to = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get(ly2), "access")
+# ao = elm_access_object_register(to, ly2)
+# elm_object_focus_custom_chain_append(ly2, ao, NULL)
+
+# elm_box_pack_end(bx, ly)
+
+# evas_object_resize(win, 300, 300)
+# evas_object_show(win)
+
+# static Eina_Bool
+# _key_down_cb(void *data, int type EINA_UNUSED, void *ei)
+# Elm_Access_Action_Info *a
+# Ecore_Event_Key *ev = ei
+
+# a = calloc(1, sizeof(Elm_Access_Action_Info))
+# if (!a) return ECORE_CALLBACK_PASS_ON
+
+# if (ev && ev->key)
+# if (!strcmp(ev->key, "F1"))
+# a->highlight_cycle = True
+# elm_access_action(data, ELM_ACCESS_ACTION_HIGHLIGHT_NEXT, a)
+# free(a)
+
+# return ECORE_CALLBACK_PASS_ON
+
+# static char *
+# _access_info_cb(void *data, Evas_Object *obj EINA_UNUSED)
+# if (data) return strdup(data)
+# return NULL
+
+# def access3_clicked(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED):
+# char buf[PATH_MAX]
+# Evas_Object *win, *box, *lbl, *ly, *btn
+# Evas_Object *red_ao, *green_ao, *blue_ao, *black_ao, *to
+
+# win = StandardWindow("access", "Access")
+# elm_win_autodel_set(win, True)
+# evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, NULL)
+
+# elm_config_access_set(True)
+
+# box = Box(win)
+# evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND)
+# elm_win_resize_object_add(win, box)
+# evas_object_show(box)
+
+# lbl = elm_label_add(box)
+# elm_object_text_set(lbl,
+# "Move a mouse pointer to any object and press F1 to "
+# "move access highlight to the next object.")
+# evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0)
+# evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, EVAS_HINT_FILL)
+# elm_box_pack_end(box, lbl)
+# evas_object_show(lbl)
+
+# ly = elm_layout_add(box)
+# snprintf(buf, sizeof(buf), "%s/objects/test.edj", elm_app_data_dir_get())
+# elm_layout_file_set(ly, buf, "access_color_page")
+# evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND)
+# evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL)
+# elm_box_pack_end(box, ly)
+# evas_object_show(ly)
+
+# btn = elm_button_add(win)
+# elm_object_text_set(btn, "action")
+# evas_object_size_hint_weight_set(btn, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND)
+# evas_object_size_hint_align_set(btn, EVAS_HINT_FILL, EVAS_HINT_FILL)
+# evas_object_show(btn)
+
+# elm_object_part_content_set(ly, "center", btn)
+
+# to = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get(ly), "red")
+# red_ao = elm_access_object_register(to, ly)
+# elm_access_info_cb_set(red_ao, ELM_ACCESS_INFO, _access_info_cb, "red")
+# elm_access_highlight_next_set(btn, ELM_HIGHLIGHT_DIR_NEXT, red_ao)
+
+# to = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get(ly), "green")
+# green_ao = elm_access_object_register(to, ly)
+# elm_access_info_cb_set(green_ao, ELM_ACCESS_INFO, _access_info_cb, "green")
+# elm_access_highlight_next_set(red_ao, ELM_HIGHLIGHT_DIR_NEXT, green_ao)
+
+# to = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get(ly), "blue")
+# blue_ao = elm_access_object_register(to, ly)
+# elm_access_info_cb_set(blue_ao, ELM_ACCESS_INFO, _access_info_cb, "blue")
+# elm_access_highlight_next_set(green_ao, ELM_HIGHLIGHT_DIR_NEXT, blue_ao)
+
+# to = (Evas_Object *)edje_object_part_object_get(elm_layout_edje_get(ly), "black")
+# black_ao = elm_access_object_register(to, ly)
+# elm_access_info_cb_set(black_ao, ELM_ACCESS_INFO, _access_info_cb, "black")
+# elm_access_highlight_next_set(blue_ao, ELM_HIGHLIGHT_DIR_NEXT, black_ao)
+
+# ecore_event_handler_add(ECORE_EVENT_KEY_DOWN, _key_down_cb, win)
+
+# evas_object_resize(win, 300, 300)
+# evas_object_show(win)
+
+if __name__ == "__main__":
+ elementary.init()
+ win = StandardWindow("test", "python-elementary test application")
+ win.callback_delete_request_add(lambda o: elementary.exit())
+
+ box0 = Box(win)
+ box0.size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND)
+ win.resize_object_add(box0)
+ box0.show()
+
+ fr = Frame(win)
+ fr.text_set("Information")
+ box0.pack_end(fr)
+ fr.show()
+
+ lb = Label(win)
+ lb.text_set("Please select a test from the list below<br>"
+ "by clicking the test button to show the<br>"
+ "test window.")
+ fr.content_set(lb)
+ lb.show()
+
+ items = [
+ ("Access 1", access_clicked),
+ #("Access 2", access2_clicked),
+ #("Access 3", accesst3_clicked),
+ ]
+
+ li = List(win)
+ li.size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND)
+ li.size_hint_align_set(EVAS_HINT_FILL, EVAS_HINT_FILL)
+ box0.pack_end(li)
+ li.show()
+
+ for item in items:
+ li.item_append(item[0], callback=item[1])
+
+ li.go()
+
+ win.resize(320,520)
+ win.show()
+ elementary.run()
+ elementary.shutdown()