python-efl/examples/elementary/test_toolbar.py

242 lines
6.8 KiB
Python

#!/usr/bin/env python
# encoding: utf-8
import os
from efl.evas import EVAS_HINT_EXPAND, EVAS_HINT_FILL, EXPAND_BOTH, FILL_BOTH
from efl import elementary
from efl.elementary.window import StandardWindow
from efl.elementary.box import Box
from efl.elementary.photo import Photo
from efl.elementary.table import Table
from efl.elementary.toolbar import Toolbar, ELM_TOOLBAR_SHRINK_MENU, \
ELM_OBJECT_SELECT_MODE_NONE
from efl.elementary.frame import Frame
from efl.elementary.label import Label
from efl.elementary.list import List
ALIGN_CENTER = 0.5, 0.5
script_path = os.path.dirname(os.path.abspath(__file__))
img_path = os.path.join(script_path, "images")
def tb_1(obj, it, ph):
ph.file = os.path.join(img_path, "panel_01.jpg")
def tb_2(obj, it, ph):
ph.file = os.path.join(img_path, "rock_01.jpg")
def tb_3(obj, it, ph):
ph.file = os.path.join(img_path, "wood_01.jpg")
def tb_3a(obj, it, ph):
tb_3(obj, it, ph)
it.state = it.state_next()
def tb_3b(obj, it, ph):
tb_3(obj, it, ph)
del it.state
def tb_4(obj, it, ph):
ph.file = os.path.join(img_path, "sky_03.jpg")
def tb_4a(obj, it, ph):
it.state = it.state_prev()
def tb_5(obj, it, ph):
ph.file = None
def cb_clicked(tb):
print("CLICKED")
print(tb)
def cb_item_focused(tb, item):
print("ITEM FOCUSED")
print(tb)
print(item)
def cb_selected(tb, item):
print("SELECTED")
print(tb)
print(item)
def toolbar_clicked(obj, item=None):
win = StandardWindow("toolbar", "Toolbar", autodel=True, size=(320, 300))
if obj is None:
win.callback_delete_request_add(lambda o: elementary.exit())
bx = Box(win, size_hint_weight=EXPAND_BOTH)
win.resize_object_add(bx)
bx.show()
tbl = Table(win, size_hint_weight=(0.0, EVAS_HINT_EXPAND),
size_hint_align=FILL_BOTH)
tb = Toolbar(win, homogeneous=False, size_hint_weight=(0.0, 0.0),
size_hint_align=(EVAS_HINT_FILL, 0.0))
tb.callback_clicked_add(cb_clicked)
tb.callback_selected_add(cb_selected)
tb.callback_item_focused_add(cb_item_focused)
ph1 = Photo(win, size=40, file=os.path.join(img_path, "plant_01.jpg"),
size_hint_weight=EXPAND_BOTH, size_hint_align=ALIGN_CENTER)
tbl.pack(ph1, 0, 0, 1, 1)
ph1.show()
ph2 = Photo(win, size=80, size_hint_weight=EXPAND_BOTH,
size_hint_align=ALIGN_CENTER)
tbl.pack(ph2, 1, 0, 1, 1)
ph2.show()
ph3 = Photo(win, size=40, file=os.path.join(img_path, "sky_01.jpg"),
size_hint_weight=EXPAND_BOTH, size_hint_align=ALIGN_CENTER)
tbl.pack(ph3, 0, 1, 1, 1)
ph3.show()
ph4 = Photo(win, size=60, file=os.path.join(img_path, "sky_02.jpg"),
size_hint_weight=EXPAND_BOTH, size_hint_align=ALIGN_CENTER)
tbl.pack(ph4, 1, 1, 1, 1)
ph4.show()
item = tb.item_append("document-print", "Hello", tb_1)
item.disabled = True
item = tb.item_append("clock", "World,", tb_2, ph2)
item.selected = True
tb.item_append("folder-new", "here", tb_3, ph4)
tb.item_append("clock", "comes", tb_4, ph4)
tb.item_append("folder-new", "python-elementary!", tb_5, ph4)
item = tb.item_append("clock", "Menu", tb_5, ph4)
item.menu = True
tb.menu_parent = win
menu = item.menu
menu.item_add(None, "Here", "clock", tb_3, ph4)
menu_item = menu.item_add(None, "Comes", "refresh", tb_4, ph4)
menu.item_add(menu_item, "hey ho", "folder-new", tb_4, ph4)
menu.item_add(None, "python-elementary", "document-print", tb_5, ph4)
bx.pack_end(tb)
tb.show()
bx.pack_end(tbl)
tbl.show()
win.show()
# Toolbar with multiple state buttons
def toolbar5_clicked(obj, item=None):
win = StandardWindow("toolbar5", "Toolbar 5", autodel=True, size=(320, 300))
win.autodel = True
bx = Box(win, size_hint_weight=EXPAND_BOTH)
win.resize_object_add(bx)
bx.show()
tbl = Table(win, size_hint_weight=(0.0, EVAS_HINT_EXPAND),
size_hint_align=FILL_BOTH)
tb = Toolbar(win, homogeneous=False, shrink_mode=ELM_TOOLBAR_SHRINK_MENU,
size_hint_weight=(0.0, 0.0), size_hint_align=(EVAS_HINT_FILL, 0.0),
select_mode=ELM_OBJECT_SELECT_MODE_NONE)
ph1 = Photo(win, size=40, file=os.path.join(img_path, "plant_01.jpg"),
size_hint_weight=EXPAND_BOTH, size_hint_align=ALIGN_CENTER)
tbl.pack(ph1, 0, 0, 1, 1)
ph1.show()
ph2 = Photo(win, size=80, size_hint_weight=EXPAND_BOTH,
size_hint_align=ALIGN_CENTER)
tbl.pack(ph2, 1, 0, 1, 1)
ph2.show()
ph3 = Photo(win, size=20, file=os.path.join(img_path, "sky_01.jpg"),
size_hint_weight=EXPAND_BOTH, size_hint_align=ALIGN_CENTER)
tbl.pack(ph3, 0, 1, 1, 1)
ph3.show()
ph4 = Photo(win, size=60, file=os.path.join(img_path, "sky_02.jpg"),
size_hint_weight=EXPAND_BOTH, size_hint_align=ALIGN_CENTER)
tbl.pack(ph4, 1, 1, 1, 1)
ph4.show()
tb_it = tb.item_append("document-print", "Hello", tb_1, ph1)
tb_it.disabled = True
tb_it.priority = 100
tb_it = tb.item_append(os.path.join(img_path, "icon_04.png"),
"World", tb_2, ph1)
tb_it.priority = -100
tb_it = tb.item_append("object-rotate-right", "H", tb_3a, ph4)
tb_it.state_add("object-rotate-left", "H2", tb_3b, ph4)
tb_it.priority = 150
tb_it = tb.item_append("mail-send", "Comes", tb_4a, ph4)
tb_it.state_add("emptytrash", "Comes2", tb_4a, ph4)
tb_it.state_add("trashcan_full", "Comes3", tb_4a, ph4)
tb_it.priority = 0
tb_it = tb.item_append("clock", "Elementary", tb_5, ph4)
tb_it.priority = -200
tb_it = tb.item_append("refresh", "Menu")
tb_it.menu = True
tb_it.priority = -9999
tb.menu_parent = win
menu = tb_it.menu
menu.item_add(None, "edit-cut", "Shrink", tb_3, ph4)
menu_it = menu.item_add(None, "edit-copy", "Mode", tb_4, ph4)
menu.item_add(menu_it, "edit-paste", "is set to", tb_4, ph4)
menu.item_add(None, "edit-delete", "Menu", tb_5, ph4)
bx.pack_end(tb)
tb.show()
bx.pack_end(tbl)
tbl.show()
win.show()
if __name__ == "__main__":
win = StandardWindow("test", "python-elementary test application",
size=(320,520))
win.callback_delete_request_add(lambda o: elementary.exit())
box0 = Box(win, size_hint_weight=EXPAND_BOTH)
win.resize_object_add(box0)
box0.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.")
lb.show()
fr = Frame(win, text="Information", content=lb)
box0.pack_end(fr)
fr.show()
items = [
("Toolbar", toolbar_clicked),
("Toolbar Item States", toolbar5_clicked),
]
li = List(win, size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH)
box0.pack_end(li)
li.show()
for item in items:
li.item_append(item[0], callback=item[1])
li.go()
win.show()
elementary.run()