203 lines
5.6 KiB
Python
203 lines
5.6 KiB
Python
#!/usr/bin/env python
|
|
# encoding: utf-8
|
|
|
|
from efl.evas import EXPAND_BOTH, FILL_BOTH, EXPAND_HORIZ, FILL_HORIZ
|
|
from efl import elementary
|
|
from efl.elementary import StandardWindow
|
|
from efl.elementary import Box
|
|
from efl.elementary import Button
|
|
from efl.elementary import MultiButtonEntry
|
|
from efl.elementary import Scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO
|
|
|
|
SCROLL_POLICY_VERT = ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_AUTO
|
|
|
|
counter = 0
|
|
|
|
def cb_item_selected(mbe, item):
|
|
print("ITEM SELECTED", item)
|
|
|
|
def cb_item_clicked(mbe, item):
|
|
print("ITEM CLICKED", item)
|
|
|
|
def cb_item_longpressed(mbe, item):
|
|
print("ITEM LONGPRESSED", item)
|
|
|
|
|
|
def cb_btn_item_prepend(btn, mbe):
|
|
global counter
|
|
|
|
counter += 1
|
|
mbe.item_prepend("item #%d" % (counter), cb_item_selected)
|
|
|
|
def cb_btn_item_append(btn, mbe):
|
|
global counter
|
|
|
|
counter += 1
|
|
mbe.item_append("item #%d" % (counter), cb_item_selected)
|
|
|
|
def cb_btn_item_insert_after(btn, mbe):
|
|
global counter
|
|
|
|
counter += 1
|
|
after = mbe.selected_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
|
|
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):
|
|
print(text)
|
|
return True
|
|
|
|
def cb_filter2(mbe, text):
|
|
if text == "nope":
|
|
return False
|
|
else:
|
|
return True
|
|
|
|
def cb_print(btn, mbe):
|
|
for i in mbe.items:
|
|
print(i.text)
|
|
|
|
def custom_format_func(count):
|
|
return "+ {} rabbits".format(count)
|
|
|
|
|
|
def multibuttonentry_clicked(obj, item=None):
|
|
win = StandardWindow("multibuttonentry", "MultiButtonEntry test",
|
|
autodel=True, size=(320, 320))
|
|
if obj is None:
|
|
win.callback_delete_request_add(lambda o: elementary.exit())
|
|
|
|
vbox = Box(win, size_hint_weight=EXPAND_BOTH)
|
|
win.resize_object_add(vbox)
|
|
vbox.show()
|
|
|
|
mbe = MultiButtonEntry(win, size_hint_align=FILL_BOTH,
|
|
size_hint_weight=EXPAND_BOTH, text="To: ")
|
|
mbe.callback_item_selected_add(cb_item_selected)
|
|
mbe.callback_item_clicked_add(cb_item_clicked)
|
|
mbe.callback_item_longpressed_add(cb_item_longpressed)
|
|
mbe.part_text_set("guide", "Tap to add recipient. Type \"nope\" to test filter rejection.")
|
|
mbe.filter_append(cb_filter1)
|
|
mbe.filter_append(cb_filter2)
|
|
mbe.show()
|
|
|
|
sc = Scroller(win, bounce=(False, True), policy=SCROLL_POLICY_VERT,
|
|
size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_BOTH, content=mbe)
|
|
vbox.pack_end(sc)
|
|
sc.show()
|
|
|
|
print(mbe.entry)
|
|
|
|
hbox = Box(win, horizontal=True, size_hint_weight=EXPAND_HORIZ)
|
|
vbox.pack_end(hbox)
|
|
hbox.show()
|
|
|
|
bt = Button(win, text="item_append", size_hint_align=FILL_HORIZ,
|
|
size_hint_weight=EXPAND_HORIZ)
|
|
bt.callback_clicked_add(cb_btn_item_append, mbe)
|
|
hbox.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(win, text="item_prepend", size_hint_align=FILL_HORIZ,
|
|
size_hint_weight=EXPAND_HORIZ)
|
|
bt.callback_clicked_add(cb_btn_item_prepend, mbe)
|
|
hbox.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(win, text="item_insert_after", size_hint_align=FILL_HORIZ,
|
|
size_hint_weight=EXPAND_HORIZ)
|
|
bt.callback_clicked_add(cb_btn_item_insert_after, mbe)
|
|
hbox.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(win, text="item_insert_before", size_hint_align=FILL_HORIZ,
|
|
size_hint_weight=EXPAND_HORIZ)
|
|
bt.callback_clicked_add(cb_btn_item_insert_before, mbe)
|
|
hbox.pack_end(bt)
|
|
bt.show()
|
|
|
|
|
|
hbox = Box(win, horizontal=True, size_hint_weight=EXPAND_HORIZ)
|
|
vbox.pack_end(hbox)
|
|
hbox.show()
|
|
|
|
bt = Button(win, text="delete selected item", size_hint_align=FILL_HORIZ,
|
|
size_hint_weight=EXPAND_HORIZ)
|
|
bt.callback_clicked_add(lambda btn: mbe.selected_item.delete())
|
|
hbox.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(win, text="clear", size_hint_align=FILL_HORIZ,
|
|
size_hint_weight=EXPAND_HORIZ)
|
|
bt.callback_clicked_add(lambda bt: mbe.clear())
|
|
hbox.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(win, text="clear2", size_hint_align=FILL_HORIZ,
|
|
size_hint_weight=EXPAND_HORIZ)
|
|
bt.callback_clicked_add(cb_btn_clear2, mbe)
|
|
hbox.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(win, text="toggle expand", size_hint_align=FILL_HORIZ,
|
|
size_hint_weight=EXPAND_HORIZ)
|
|
bt.callback_clicked_add(lambda btn: mbe.expanded_set(not mbe.expanded_get()))
|
|
hbox.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(win, text="print", size_hint_align=FILL_HORIZ,
|
|
size_hint_weight=EXPAND_HORIZ)
|
|
bt.callback_clicked_add(cb_print, mbe)
|
|
hbox.pack_end(bt)
|
|
bt.show()
|
|
|
|
|
|
hbox = Box(win, horizontal=True, size_hint_weight=EXPAND_HORIZ)
|
|
vbox.pack_end(hbox)
|
|
hbox.show()
|
|
|
|
bt = Button(win, text="Change format function",
|
|
size_hint_align=FILL_HORIZ, size_hint_weight=EXPAND_HORIZ)
|
|
bt.callback_clicked_add(lambda b: mbe.format_function_set(custom_format_func))
|
|
hbox.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(win, text="Unset format function",
|
|
size_hint_align=FILL_HORIZ, size_hint_weight=EXPAND_HORIZ)
|
|
bt.callback_clicked_add(lambda b: mbe.format_function_set(None))
|
|
hbox.pack_end(bt)
|
|
bt.show()
|
|
|
|
mbe.focus = True
|
|
|
|
win.show()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
import logging
|
|
elog = logging.getLogger("efl")
|
|
elog.setLevel(logging.INFO)
|
|
|
|
elog_form = logging.Formatter(
|
|
"[%(name)s] %(levelname)s in %(funcName)s:%(lineno)d - %(message)s"
|
|
)
|
|
elog_hdlr = logging.StreamHandler()
|
|
elog_hdlr.setFormatter(elog_form)
|
|
|
|
elog.addHandler(elog_hdlr)
|
|
|
|
multibuttonentry_clicked(None)
|
|
|
|
elementary.run()
|