444 lines
13 KiB
Python
444 lines
13 KiB
Python
#!/usr/bin/env python
|
|
# encoding: utf-8
|
|
|
|
from efl import elementary
|
|
from efl import evas
|
|
|
|
|
|
def gl_text_get(obj, part, item_data):
|
|
return "Item # %i" % (item_data,)
|
|
|
|
def gl_content_get(obj, part, data):
|
|
ic = elementary.Icon(obj)
|
|
ic.file_set("images/logo_small.png")
|
|
ic.size_hint_aspect_set(evas.EVAS_ASPECT_CONTROL_VERTICAL, 1, 1)
|
|
return ic
|
|
|
|
def gl_state_get(obj, part, item_data):
|
|
return False
|
|
|
|
def gl_item_sel(gli, gl, *args, **kwargs):
|
|
print("\n---GenlistItem selected---")
|
|
print(gli)
|
|
print(gl)
|
|
print(args)
|
|
print(kwargs)
|
|
print(("item_data: %s" % gli.data_get()))
|
|
|
|
def glg_text_get(obj, part, item_data):
|
|
return "Group # %i" % (item_data,)
|
|
|
|
def glg_content_get(obj, part, data):
|
|
ic = elementary.Icon(obj)
|
|
ic.file_set("images/logo.png")
|
|
ic.size_hint_aspect_set(evas.EVAS_ASPECT_CONTROL_VERTICAL, 1, 1)
|
|
return ic
|
|
|
|
def _gl_selected(gl, gli, *args, **kwargs):
|
|
print("\n---Genlist selected---")
|
|
print(gl)
|
|
print(gli)
|
|
print(args)
|
|
print(kwargs)
|
|
|
|
def _gl_clicked_double(gl, gli, *args, **kwargs):
|
|
print("\n---Genlist double clcked---")
|
|
print(gl)
|
|
print(gli)
|
|
print(args)
|
|
print(kwargs)
|
|
|
|
def _gl_longpressed(gl, gli, *args, **kwargs):
|
|
print("\n---Genlist longpressed---")
|
|
print(gl)
|
|
print(gli)
|
|
print(args)
|
|
print(kwargs)
|
|
|
|
def _gl_over_click(evas, evt, gl):
|
|
print("\n---OverRect click---")
|
|
gli = gl.at_xy_item_get(evt.position.canvas.x, evt.position.canvas.y)
|
|
if gli:
|
|
print(gli)
|
|
else:
|
|
print("over none")
|
|
|
|
|
|
def genlist_clicked(obj, item=None):
|
|
win = elementary.Window("Genlist", elementary.ELM_WIN_BASIC)
|
|
win.title_set("Genlist test")
|
|
win.autodel_set(True)
|
|
|
|
bg = elementary.Background(win)
|
|
win.resize_object_add(bg)
|
|
bg.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
bg.show()
|
|
|
|
bx = elementary.Box(win)
|
|
win.resize_object_add(bx)
|
|
bx.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
bx.show()
|
|
|
|
gl = elementary.Genlist(win)
|
|
gl.callback_selected_add(_gl_selected, "arg1", "arg2", kwarg1="kwarg1", kwarg2="kwarg2")
|
|
gl.callback_clicked_double_add(_gl_clicked_double, "arg1", "arg2", kwarg1="kwarg1", kwarg2="kwarg2")
|
|
gl.callback_longpressed_add(_gl_longpressed, "arg1", "arg2", kwarg1="kwarg1", kwarg2="kwarg2")
|
|
gl.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
gl.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
bx.pack_end(gl)
|
|
gl.show()
|
|
|
|
over = evas.Rectangle(win.evas_get())
|
|
over.color_set(0, 0, 0, 0)
|
|
over.event_callback_add(evas.EVAS_CALLBACK_MOUSE_DOWN, _gl_over_click, gl)
|
|
over.repeat_events_set(True)
|
|
over.show()
|
|
over.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
win.resize_object_add(over)
|
|
|
|
vbx = elementary.Box(win)
|
|
vbx.horizontal_set(True)
|
|
bx.pack_end(vbx)
|
|
vbx.show()
|
|
|
|
itc1 = elementary.GenlistItemClass(item_style="default",
|
|
text_get_func=gl_text_get,
|
|
content_get_func=gl_content_get,
|
|
state_get_func=gl_state_get)
|
|
|
|
bt_50 = elementary.Button(win)
|
|
bt_50.text_set("Go to 50")
|
|
vbx.pack_end(bt_50)
|
|
bt_50.show()
|
|
|
|
bt_1500 = elementary.Button(win)
|
|
bt_1500.text_set("Go to 1500")
|
|
vbx.pack_end(bt_1500)
|
|
bt_1500.show()
|
|
|
|
for i in range(0, 2000):
|
|
gli = gl.item_append(itc1, i, func=gl_item_sel)
|
|
if i == 50:
|
|
bt_50._callback_add("clicked", lambda bt, it: it.bring_in(), gli)
|
|
elif i == 1500:
|
|
bt_1500._callback_add("clicked", lambda bt, it: it.bring_in(), gli)
|
|
|
|
win.resize(480, 800)
|
|
win.show()
|
|
|
|
|
|
def genlist2_clicked(obj, item=None):
|
|
win = elementary.Window("Genlist", elementary.ELM_WIN_BASIC)
|
|
win.title_set("Genlist test 2")
|
|
win.autodel_set(True)
|
|
|
|
bg = elementary.Background(win)
|
|
win.resize_object_add(bg)
|
|
bg.file_set("images/plant_01.jpg")
|
|
bg.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
bg.show()
|
|
|
|
bx = elementary.Box(win)
|
|
win.resize_object_add(bx)
|
|
bx.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
bx.show()
|
|
|
|
gl = elementary.Genlist(win)
|
|
gl.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
gl.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
gl.show()
|
|
|
|
itc1 = elementary.GenlistItemClass(item_style="default",
|
|
text_get_func=gl_text_get,
|
|
content_get_func=gl_content_get,
|
|
state_get_func=gl_state_get)
|
|
|
|
gl.item_append(itc1, 1001, func=gl_item_sel)
|
|
gl.item_append(itc1, 1002, func=gl_item_sel)
|
|
gl.item_append(itc1, 1003, func=gl_item_sel)
|
|
gl.item_append(itc1, 1004, func=gl_item_sel)
|
|
gl.item_append(itc1, 1005, func=gl_item_sel)
|
|
gl.item_append(itc1, 1006, func=gl_item_sel)
|
|
gl.item_append(itc1, 1007, func=gl_item_sel)
|
|
|
|
bx.pack_end(gl)
|
|
|
|
bx2 = elementary.Box(win)
|
|
bx2.horizontal_set(True)
|
|
bx2.homogeneous_set(True)
|
|
bx2.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
bx2.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
|
|
|
|
def my_gl_first(bt, gl):
|
|
gli = gl.first_item_get()
|
|
if gli:
|
|
gli.show()
|
|
gli.selected = True
|
|
|
|
bt = elementary.Button(win)
|
|
bt.text_set("/\\")
|
|
bt.callback_clicked_add(my_gl_first, gl)
|
|
bt.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
bt.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
|
|
|
|
def my_gl_last(bt, gl):
|
|
gli = gl.last_item_get()
|
|
if gli:
|
|
gli.show()
|
|
gli.selected = True
|
|
|
|
bt = elementary.Button(win)
|
|
bt.text_set("\\/")
|
|
bt.callback_clicked_add(my_gl_last, gl)
|
|
bt.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
bt.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
|
|
|
|
def my_gl_disable(bt, gl):
|
|
gli = gl.selected_item_get()
|
|
if gli:
|
|
gli.disabled = True
|
|
gli.selected = False
|
|
gli.update()
|
|
else:
|
|
print("no item selected")
|
|
|
|
bt = elementary.Button(win)
|
|
bt.text_set("#")
|
|
bt.callback_clicked_add(my_gl_disable, gl)
|
|
bt.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
bt.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
|
|
|
|
def my_gl_update_all(bt, gl):
|
|
gli = gl.first_item_get()
|
|
i = 0
|
|
while gli:
|
|
gli.update()
|
|
print(i)
|
|
i = i + 1
|
|
gli = gli.next_get()
|
|
|
|
bt = elementary.Button(win)
|
|
bt.text_set("U")
|
|
bt.callback_clicked_add(my_gl_update_all, gl)
|
|
bt.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
bt.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
|
|
bx.pack_end(bx2)
|
|
bx2.show()
|
|
|
|
|
|
bx2 = elementary.Box(win)
|
|
bx2.horizontal_set(True)
|
|
bx2.homogeneous_set(True)
|
|
bx2.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
bx2.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
|
|
|
|
def my_gl_clear(bt, gl):
|
|
gl.clear()
|
|
|
|
bt = elementary.Button(win)
|
|
bt.text_set("X")
|
|
bt.callback_clicked_add(my_gl_clear, gl)
|
|
bt.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
bt.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
|
|
|
|
class MyGlAdd:
|
|
i = 0
|
|
def my_gl_add(bt, gl, itc1):
|
|
gl.item_append(itc1, MyGlAdd.i, func=gl_item_sel)
|
|
MyGlAdd.i = MyGlAdd.i + 1
|
|
|
|
bt = elementary.Button(win)
|
|
bt.text_set("+")
|
|
bt.callback_clicked_add(my_gl_add, gl, itc1)
|
|
bt.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
bt.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
|
|
|
|
def my_gl_del(bt, gl):
|
|
gli = gl.selected_item_get()
|
|
if gli:
|
|
gli.delete()
|
|
else:
|
|
print("no item selected")
|
|
|
|
bt = elementary.Button(win)
|
|
bt.text_set("-")
|
|
bt.callback_clicked_add(my_gl_del, gl)
|
|
bt.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
bt.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
|
|
bx.pack_end(bx2)
|
|
bx2.show()
|
|
|
|
bx2 = elementary.Box(win)
|
|
bx2.horizontal_set(True)
|
|
bx2.homogeneous_set(True)
|
|
bx2.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
bx2.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
|
|
|
|
class MyGlInsertBefore:
|
|
i = 0
|
|
def my_gl_insert_before(bt, gl, itc1):
|
|
gli = gl.selected_item_get()
|
|
if gli:
|
|
gl.item_insert_before(itc1, MyGlInsertBefore.i, gli, func=gl_item_sel)
|
|
MyGlInsertBefore.i = MyGlInsertBefore.i + 1
|
|
else:
|
|
print("no item selected")
|
|
|
|
bt = elementary.Button(win)
|
|
bt.text_set("+ before")
|
|
bt.callback_clicked_add(my_gl_insert_before, gl, itc1)
|
|
bt.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
bt.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
|
|
|
|
class MyGlInsertAfter:
|
|
i = 0
|
|
def my_gl_insert_after(bt, gl, itc1):
|
|
gli = gl.selected_item_get()
|
|
if gli:
|
|
gl.item_insert_after(itc1, MyGlInsertAfter.i, gli, func=gl_item_sel)
|
|
MyGlInsertAfter.i = MyGlInsertAfter.i + 1
|
|
else:
|
|
print("no item selected")
|
|
|
|
bt = elementary.Button(win)
|
|
bt.text_set("+ after")
|
|
bt.callback_clicked_add(my_gl_insert_after, gl, itc1)
|
|
bt.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
bt.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
|
|
|
|
def my_gl_flush(bt, gl):
|
|
def my_gl_flush_delay():
|
|
elm_cache_all_flush()
|
|
ecore.timer_add(1.2, my_gl_flush_delay)
|
|
bt = elementary.Button(win)
|
|
bt.text_set("Flush")
|
|
bt.callback_clicked_add(my_gl_flush, gl)
|
|
bt.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
bt.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
|
|
bx.pack_end(bx2)
|
|
bx2.show()
|
|
|
|
win.resize(320, 320)
|
|
win.show()
|
|
|
|
|
|
def genlist3_clicked(obj, item=None):
|
|
win = elementary.Window("Genlist", elementary.ELM_WIN_BASIC)
|
|
win.title_set("Genlist Group test")
|
|
win.autodel_set(True)
|
|
|
|
bg = elementary.Background(win)
|
|
win.resize_object_add(bg)
|
|
bg.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
bg.show()
|
|
|
|
gl = elementary.Genlist(win)
|
|
win.resize_object_add(gl)
|
|
gl.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
|
|
gl.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
gl.show()
|
|
|
|
itc_i = elementary.GenlistItemClass(item_style="default",
|
|
text_get_func=gl_text_get,
|
|
content_get_func=gl_content_get,
|
|
state_get_func=gl_state_get)
|
|
|
|
itc_g = elementary.GenlistItemClass(item_style="group_index",
|
|
text_get_func=glg_text_get,
|
|
content_get_func=glg_content_get)
|
|
|
|
for i in range(300):
|
|
if i % 10 == 0:
|
|
git = gl.item_append(itc_g, i/10,
|
|
flags=elementary.ELM_GENLIST_ITEM_GROUP)
|
|
git.select_mode_set(elementary.ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY)
|
|
gl.item_append(itc_i, i, git)
|
|
|
|
win.resize(320, 320)
|
|
win.show()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
def destroy(obj):
|
|
elementary.exit()
|
|
|
|
elementary.init()
|
|
win = elementary.Window("test", elementary.ELM_WIN_BASIC)
|
|
win.title_set("python-elementary test application")
|
|
win.callback_delete_request_add(destroy)
|
|
|
|
bg = elementary.Background(win)
|
|
win.resize_object_add(bg)
|
|
bg.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
bg.show()
|
|
|
|
box0 = elementary.Box(win)
|
|
box0.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
win.resize_object_add(box0)
|
|
box0.show()
|
|
|
|
fr = elementary.Frame(win)
|
|
fr.text_set("Information")
|
|
box0.pack_end(fr)
|
|
fr.show()
|
|
|
|
lb = elementary.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 = [("Genlist", genlist_clicked),
|
|
("Genlist 2", genlist2_clicked),
|
|
("Genlist Group", genlist3_clicked)]
|
|
|
|
li = elementary.List(win)
|
|
li.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
|
|
li.size_hint_align_set(evas.EVAS_HINT_FILL, evas.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()
|