python-efl/examples/elementary/test_multibuttonentry.py

181 lines
5.0 KiB
Python

#!/usr/bin/env python
# encoding: utf-8
from efl import evas
from efl import elementary
from efl.elementary.window import Window
from efl.elementary.background import Background
from efl.elementary.box import Box
from efl.elementary.button import Button
from efl.elementary.entry import Entry
from efl.elementary.multibuttonentry import MultiButtonEntry
from efl.elementary.scroller import Scroller
counter = 0
def cb_item_selected(mbe, item):
print("cb!!!!!!!!!!!") # TODO this is never called
print(mbe)
print(item)
def cb_btn_item_prepend(btn, mbe):
global counter
counter += 1
item = mbe.item_prepend("item #%d" % (counter), cb_item_selected, "PippO")
def cb_btn_item_append(btn, mbe):
global counter
counter += 1
item = mbe.item_append("item #%d" % (counter), cb_item_selected, "PippO")
def cb_btn_item_insert_after(btn, mbe):
global counter
counter += 1
after = mbe.selected_item
item = mbe.item_insert_after(after, "item #%d" % (counter), cb_item_selected)
def cb_btn_item_insert_before(btn, mbe):
global counter
counter += 1
before = mbe.selected_item
item = mbe.item_insert_before(before, "item #%d" % (counter), cb_item_selected)
def cb_btn_clear2(btn, mbe):
for item in mbe.items:
item.delete()
def cb_filter1(mbe, text):
return True
def multibuttonentry_clicked(obj, item=None):
win = Window("multibuttonentry", elementary.ELM_WIN_BASIC)
win.title_set("MultiButtonEntry test")
win.autodel_set(True)
if obj is None:
win.callback_delete_request_add(lambda o: elementary.exit())
bg = Background(win)
win.resize_object_add(bg)
bg.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
bg.show()
vbox = Box(win)
vbox.size_hint_weight = (evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
win.resize_object_add(vbox)
vbox.show()
sc = Scroller(win)
sc.bounce = (False, True)
sc.policy = (elementary.ELM_SCROLLER_POLICY_OFF, elementary.ELM_SCROLLER_POLICY_AUTO)
sc.size_hint_align = (evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
sc.size_hint_weight = (evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
vbox.pack_end(sc)
sc.show()
mbe = MultiButtonEntry(win)
mbe.size_hint_align = (evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
mbe.size_hint_weight = (evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
mbe.text = "To: "
mbe.part_text_set("guide", "Tap to add recipient")
mbe.filter_append(cb_filter1)
sc.content = mbe
mbe.show()
print(mbe.entry)
hbox = Box(win)
hbox.horizontal = True
hbox.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
vbox.pack_end(hbox)
hbox.show()
bt = Button(win)
bt.text = "item_append"
bt.size_hint_align = (evas.EVAS_HINT_FILL, 0.0)
bt.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
bt.callback_clicked_add(cb_btn_item_append, mbe)
hbox.pack_end(bt)
bt.show()
bt = Button(win)
bt.text = "item_prepend"
bt.size_hint_align = (evas.EVAS_HINT_FILL, 0.0)
bt.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
bt.callback_clicked_add(cb_btn_item_prepend, mbe)
hbox.pack_end(bt)
bt.show()
bt = Button(win)
bt.text = "item_insert_after"
bt.size_hint_align = (evas.EVAS_HINT_FILL, 0.0)
bt.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
bt.callback_clicked_add(cb_btn_item_insert_after, mbe)
hbox.pack_end(bt)
bt.show()
bt = Button(win)
bt.text = "item_insert_before"
bt.size_hint_align = (evas.EVAS_HINT_FILL, 0.0)
bt.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
bt.callback_clicked_add(cb_btn_item_insert_before, mbe)
hbox.pack_end(bt)
bt.show()
hbox = Box(win)
hbox.horizontal = True
hbox.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
vbox.pack_end(hbox)
hbox.show()
bt = Button(win)
bt.text = "delete selected item"
bt.size_hint_align = (evas.EVAS_HINT_FILL, 0.0)
bt.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
bt.callback_clicked_add(lambda btn: mbe.selected_item.delete())
hbox.pack_end(bt)
bt.show()
bt = Button(win)
bt.text = "clear"
bt.size_hint_align = (evas.EVAS_HINT_FILL, 0.0)
bt.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
bt.callback_clicked_add(lambda bt: mbe.clear())
hbox.pack_end(bt)
bt.show()
bt = Button(win)
bt.text = "clear2"
bt.size_hint_align = (evas.EVAS_HINT_FILL, 0.0)
bt.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
bt.callback_clicked_add(cb_btn_clear2, mbe)
hbox.pack_end(bt)
bt.show()
bt = Button(win)
bt.text = "toggle expand"
bt.size_hint_align = (evas.EVAS_HINT_FILL, 0.0)
bt.size_hint_weight = (evas.EVAS_HINT_EXPAND, 0.0)
bt.callback_clicked_add(lambda btn: mbe.expanded_set(not mbe.expanded_get()))
hbox.pack_end(bt)
bt.show()
mbe.focus = True
win.resize(320, 320)
win.show()
if __name__ == "__main__":
elementary.init()
multibuttonentry_clicked(None)
elementary.run()
elementary.shutdown()