697 lines
20 KiB
Python
697 lines
20 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, EXPAND_HORIZ, FILL_HORIZ
|
|
from efl import elementary
|
|
from efl import edje
|
|
from efl.elementary.window import StandardWindow
|
|
from efl.elementary.box import Box
|
|
from efl.elementary.bubble import Bubble
|
|
from efl.elementary.button import Button
|
|
from efl.elementary.label import Label
|
|
from efl.elementary.layout import Layout
|
|
from efl.elementary.list import List
|
|
from efl.elementary.frame import Frame
|
|
from efl.elementary.separator import Separator
|
|
from efl.elementary.scroller import Scroller
|
|
from efl.elementary.spinner import Spinner
|
|
from efl.elementary.check import Check
|
|
from efl.elementary.entry import Entry
|
|
from efl.elementary.table import Table
|
|
from efl.elementary.toolbar import Toolbar, ELM_TOOLBAR_SHRINK_MENU
|
|
from efl.elementary.object import ELM_FOCUS_DOWN, ELM_FOCUS_UP, \
|
|
ELM_FOCUS_MOVE_POLICY_CLICK, ELM_FOCUS_MOVE_POLICY_IN, \
|
|
ELM_FOCUS_MOVE_POLICY_KEY_ONLY
|
|
from efl.elementary.configuration import Configuration
|
|
from efl.elementary.theme import theme_overlay_add
|
|
from efl.elementary.radio import Radio
|
|
|
|
|
|
script_path = os.path.dirname(os.path.abspath(__file__))
|
|
edj_file = os.path.join(script_path, "test.edj")
|
|
conf = Configuration()
|
|
|
|
# Focus
|
|
def _tb_sel(tb, item):
|
|
print(item)
|
|
print(item.text)
|
|
|
|
def _obj_focused_cb(obj):
|
|
print("Focused: ", obj)
|
|
|
|
def focus_clicked(obj, item=None):
|
|
win = StandardWindow("focus", "Focus", autodel=True, size=(800,600))
|
|
|
|
win.focus_highlight_enabled = True
|
|
|
|
tbx = Box(win, size_hint_weight=EXPAND_BOTH)
|
|
win.resize_object_add(tbx)
|
|
tbx.show()
|
|
|
|
### Toolbar
|
|
tbar = Toolbar(win, shrink_mode=ELM_TOOLBAR_SHRINK_MENU,
|
|
size_hint_align=(EVAS_HINT_FILL,0.0))
|
|
tbar.callback_focused_add(_obj_focused_cb)
|
|
|
|
tb_it = tbar.item_append("document-print", "Hello", _tb_sel)
|
|
tb_it.disabled = True
|
|
tb_it = tbar.item_append("folder-new", "World", _tb_sel)
|
|
tb_it = tbar.item_append("object-rotate-right", "H", _tb_sel)
|
|
tb_it = tbar.item_append("object-rotate-left", "Comes", _tb_sel)
|
|
tb_it = tbar.item_append("folder", "Elementary", _tb_sel)
|
|
|
|
tb_it = tbar.item_append("view-refresh", "Menu", _tb_sel)
|
|
tb_it.menu = True
|
|
tbar.menu_parent = win
|
|
menu = tb_it.menu
|
|
|
|
menu.item_add(None, "Shrink", "edit-cut", _tb_sel)
|
|
menu_it = menu.item_add(None, "Mode", "edit-copy", _tb_sel)
|
|
menu.item_add(menu_it, "is set to", "edit-paste", _tb_sel)
|
|
menu.item_add(menu_it, "or to", "edit-paste", _tb_sel)
|
|
menu.item_add(None, "Menu", "edit-delete", _tb_sel)
|
|
|
|
tbx.pack_end(tbar)
|
|
tbar.show()
|
|
|
|
|
|
mainbx = Box(win, horizontal=True, size_hint_weight=EXPAND_BOTH)
|
|
tbx.pack_end(mainbx)
|
|
mainbx.show()
|
|
|
|
## First Col
|
|
bx = Box(win, size_hint_weight=EXPAND_BOTH)
|
|
mainbx.pack_end(bx)
|
|
bx.show()
|
|
|
|
lb = Label(win, text="<b>Use Tab or Shift+Tab<br/>or Arrow keys</b>",
|
|
size_hint_align=FILL_BOTH)
|
|
bx.pack_end(lb)
|
|
lb.show()
|
|
|
|
tg = Check(win, style="toggle")
|
|
tg.callback_focused_add(_obj_focused_cb)
|
|
tg.part_text_set("on", "Yes")
|
|
tg.part_text_set("off", "No")
|
|
bx.pack_end(tg)
|
|
tg.show()
|
|
|
|
en = Entry(win, scrollable=True, single_line=True, text="This is a single line",
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ)
|
|
en.callback_focused_add(_obj_focused_cb)
|
|
bx.pack_end(en)
|
|
en.show()
|
|
|
|
#
|
|
bx2 = Box(win, horizontal=True, size_hint_align=FILL_BOTH)
|
|
bx.pack_end(bx2)
|
|
bx2.show()
|
|
|
|
for i in range(2):
|
|
bt = Button(win, text="Box", size_hint_align=FILL_BOTH, disabled=(i % 2))
|
|
bt.callback_focused_add(_obj_focused_cb)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
|
|
sc = Scroller(win, bounce=(True,True), content_min_limit=(1,1),
|
|
size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH)
|
|
bx2.pack_end(sc)
|
|
sc.show()
|
|
|
|
bt = Button(win, text="Scroller", size_hint_align=FILL_BOTH)
|
|
bt.callback_focused_add(_obj_focused_cb)
|
|
sc.content = bt
|
|
bt.show()
|
|
|
|
#
|
|
bt = Button(win, text="Box", size_hint_align=FILL_BOTH)
|
|
bt.callback_focused_add(_obj_focused_cb)
|
|
bx.pack_end(bt)
|
|
bt.show()
|
|
|
|
#
|
|
bx2 = Box(win, horizontal=True, size_hint_align=FILL_BOTH)
|
|
bx.pack_end(bx2)
|
|
bx2.show()
|
|
|
|
for i in range(2):
|
|
bx3 = Box(win, size_hint_align=FILL_BOTH)
|
|
bx2.pack_end(bx3)
|
|
bx3.show()
|
|
|
|
for j in range(3):
|
|
bt = Button(win, text="Box", size_hint_align=FILL_BOTH)
|
|
bt.callback_focused_add(_obj_focused_cb)
|
|
bx3.pack_end(bt)
|
|
bt.show()
|
|
|
|
|
|
sc = Scroller(win, bounce=(False, True), content_min_limit=(1,0),
|
|
size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_BOTH)
|
|
sc.content_min_limit=(1, 1) ## Why this do not work ???
|
|
bx2.pack_end(sc)
|
|
sc.show()
|
|
|
|
bx3 = Box(win, size_hint_align=FILL_BOTH)
|
|
sc.content = bx3
|
|
bx3.show()
|
|
|
|
for i in range(5):
|
|
bt = Button(win, text="BX Scroller", size_hint_align=FILL_BOTH)
|
|
bt.callback_focused_add(_obj_focused_cb)
|
|
bx3.pack_end(bt)
|
|
bt.show()
|
|
|
|
|
|
## Second Col
|
|
ly = Layout(win, size_hint_weight=EXPAND_BOTH)
|
|
ly.file = edj_file, "twolines"
|
|
mainbx.pack_end(ly)
|
|
ly.show()
|
|
|
|
bx2 = Box(win, horizontal=True, size_hint_align=FILL_BOTH)
|
|
ly.part_content_set("element1", bx2)
|
|
bx2.show()
|
|
|
|
for i in range(3):
|
|
bt = Button(win, text="Layout", size_hint_align=FILL_BOTH)
|
|
bt.callback_focused_add(_obj_focused_cb)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
bx2.focus_custom_chain_prepend(bt)
|
|
|
|
bx2 = Box(win, size_hint_align=FILL_BOTH)
|
|
ly.part_content_set("element2", bx2)
|
|
bx2.show()
|
|
|
|
bt = Button(win, text="Disable", size_hint_align=FILL_BOTH)
|
|
bt.callback_clicked_add(lambda b: b.disabled_set(True))
|
|
bt.callback_focused_add(_obj_focused_cb)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
bx2.focus_custom_chain_prepend(bt)
|
|
|
|
bt2 = Button(win, text="Enable", size_hint_align=FILL_BOTH)
|
|
bt2.callback_clicked_add(lambda b, b1: b1.disabled_set(False), bt)
|
|
bt2.callback_focused_add(_obj_focused_cb)
|
|
bx2.pack_end(bt2)
|
|
bt2.show()
|
|
bx2.focus_custom_chain_append(bt2)
|
|
|
|
## Third Col
|
|
bx = Box(win, size_hint_weight=EXPAND_BOTH)
|
|
mainbx.pack_end(bx)
|
|
bx.show()
|
|
|
|
fr = Frame(win, text="Frame")
|
|
bx.pack_end(fr)
|
|
fr.show()
|
|
|
|
tb = Table(win, size_hint_weight=EXPAND_BOTH)
|
|
fr.content = tb
|
|
tb.show()
|
|
|
|
for j in range(1):
|
|
for i in range(2):
|
|
bt = Button(win, text="Table", size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_BOTH)
|
|
bt.callback_focused_add(_obj_focused_cb)
|
|
tb.pack(bt, i, j, 1, 1)
|
|
bt.show()
|
|
|
|
#
|
|
fr = Bubble(win, text="Bubble", size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_BOTH)
|
|
bx.pack_end(fr)
|
|
fr.show()
|
|
|
|
tb = Table(win, size_hint_weight=EXPAND_BOTH)
|
|
fr.content = tb
|
|
tb.show()
|
|
|
|
for j in range(2):
|
|
bt = Button(win, text="Table", size_hint_align=FILL_BOTH, size_hint_weight=EXPAND_BOTH)
|
|
bt.callback_focused_add(_obj_focused_cb)
|
|
tb.pack(bt, 0, j, 1, 1)
|
|
bt.show()
|
|
|
|
|
|
win.show()
|
|
|
|
|
|
# Focus 2
|
|
def _focus_obj(bt, newfocus):
|
|
print(newfocus)
|
|
newfocus.focus = True
|
|
|
|
def _focus_layout_part(bt, layout):
|
|
newfocus = layout.edje.part_object_get("sky")
|
|
print(newfocus)
|
|
newfocus.focus = True
|
|
|
|
|
|
def focus2_clicked(obj, item=None):
|
|
win = StandardWindow("focus2", "Focus 2", autodel=True, size=(400, 400))
|
|
|
|
win.focus_highlight_enabled = True
|
|
|
|
bx = Box(win, size_hint_weight=EXPAND_BOTH)
|
|
win.resize_object_add(bx)
|
|
bx.show()
|
|
|
|
PARENT = bx
|
|
|
|
en = Entry(PARENT, scrollable=True, single_line=True,
|
|
text="Entry that should get focus",
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ)
|
|
bx.pack_end(en)
|
|
en.show()
|
|
|
|
bt = Button(PARENT, text="Give focus to entry")
|
|
bt.callback_clicked_add(_focus_obj, en)
|
|
bx.pack_end(bt)
|
|
bt.show()
|
|
|
|
ly = Layout(PARENT, size_hint_weight=EXPAND_BOTH)
|
|
ly.file = edj_file, "layout"
|
|
bx.pack_end(ly)
|
|
ly.show()
|
|
|
|
bt1 = bt = Button(ly, text="Button 1")
|
|
ly.part_content_set("element1", bt)
|
|
|
|
en1 = Entry(ly, scrollable=True, single_line=True,
|
|
text="Scrolled Entry that should get focus",
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ )
|
|
ly.part_content_set("element2", en1)
|
|
|
|
bt = Button(ly, text="Button 2")
|
|
ly.part_content_set("element3", bt)
|
|
|
|
|
|
bt = Button(PARENT, text="Give focus to layout",
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ)
|
|
bt.callback_clicked_add(_focus_obj, ly)
|
|
bx.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(PARENT, text="Give focus to layout part",
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ)
|
|
bt.callback_clicked_add(_focus_layout_part, ly)
|
|
bx.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(PARENT, text="Give focus to layout 'Button 1'",
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ)
|
|
bt.callback_clicked_add(_focus_obj, bt1)
|
|
bx.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(PARENT, text="Give focus to layout 'Entry'",
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ)
|
|
bt.callback_clicked_add(_focus_obj, en1)
|
|
bx.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt.focus_next_object_set(en, ELM_FOCUS_DOWN)
|
|
en.focus_next_object_set(bt, ELM_FOCUS_UP)
|
|
win.show()
|
|
|
|
|
|
# Focus 3
|
|
focused = None
|
|
def _focused_cb(obj):
|
|
global focused
|
|
print(obj)
|
|
focused = obj
|
|
|
|
def _unfocused_cb(obj):
|
|
global focused
|
|
print(obj)
|
|
focused = None
|
|
|
|
def _add_cb(bt, win, bx):
|
|
en = Entry(win, scrollable=True, single_line=True, text="An entry",
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ)
|
|
en.callback_focused_add(_focused_cb)
|
|
en.callback_unfocused_add(_unfocused_cb)
|
|
bx.pack_start(en)
|
|
en.show()
|
|
|
|
def _del_cb(bt, bx):
|
|
if focused:
|
|
focused.delete()
|
|
|
|
def _hide_cb(bt):
|
|
if focused:
|
|
focused.hide()
|
|
|
|
def focus3_clicked(obj, item=None):
|
|
win = StandardWindow("focus3", "Focus 3", autodel=True, size=(320, 480))
|
|
|
|
win.focus_highlight_enabled = True
|
|
|
|
bx = Box(win, size_hint_weight=EXPAND_BOTH)
|
|
win.resize_object_add(bx)
|
|
bx.show()
|
|
|
|
en = Entry(win, scrollable=True, single_line=True, text="An entry",
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ)
|
|
en.callback_focused_add(_focused_cb)
|
|
en.callback_unfocused_add(_unfocused_cb)
|
|
bx.pack_end(en)
|
|
en.show()
|
|
|
|
bt = Button(win, text="Add", focus_allow=False,
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ)
|
|
bt.callback_clicked_add(_add_cb, win, bx)
|
|
bx.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(win, text="Del", focus_allow=False,
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ)
|
|
bt.callback_clicked_add(_del_cb, bx)
|
|
bx.pack_end(bt)
|
|
bt.show()
|
|
|
|
bt = Button(win, text="hide", focus_allow=False,
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_HORIZ)
|
|
bt.callback_clicked_add(_hide_cb)
|
|
bx.pack_end(bt)
|
|
bt.show()
|
|
|
|
win.show()
|
|
|
|
|
|
# Focus 4
|
|
def _highlight_enabled_cb(chk, win):
|
|
conf.focus_highlight_enabled = chk.state
|
|
|
|
def _highlight_animate_cb(chk, win):
|
|
conf.focus_highlight_animate = chk.state
|
|
|
|
def _win_highlight_enabled_cb(chk, win):
|
|
win.focus_highlight_enabled = chk.state
|
|
|
|
def _win_highlight_animate_cb(chk, win):
|
|
win.focus_highlight_animate = chk.state
|
|
|
|
def _custom_chain_cb(chk, bx):
|
|
print(chk.state)
|
|
if chk.state is True:
|
|
i = 0
|
|
custom_chain = []
|
|
for child in bx.children:
|
|
print(child)
|
|
if i == 0:
|
|
c = child
|
|
custom_chain.append(child)
|
|
bx.focus_custom_chain_set(custom_chain)
|
|
elif i == 1:
|
|
bx.focus_custom_chain_prepend(child, c)
|
|
elif i == 2:
|
|
bx.focus_custom_chain_append(child, c)
|
|
c = child
|
|
elif i == 3:
|
|
bx.focus_custom_chain_prepend(child, c)
|
|
i += 1
|
|
|
|
else:
|
|
bx.focus_custom_chain_unset()
|
|
|
|
def focus4_clicked(obj, item=None):
|
|
win = StandardWindow("focus4", "Focus 4", autodel=True, size=(320, 320))
|
|
|
|
win.focus_highlight_enabled = True
|
|
win.focus_highlight_animate = True
|
|
|
|
fr = Frame(win, style="pad_large",
|
|
size_hint_weight=EXPAND_BOTH)
|
|
win.resize_object_add(fr)
|
|
fr.show()
|
|
|
|
# First Example - Using Focus Highlight
|
|
bx = Box(fr)
|
|
fr.content = bx
|
|
bx.show()
|
|
|
|
tg = Check(bx, text="Focus Highlight Enabled (Config)", state=True,
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
|
|
tg.callback_changed_add(_highlight_enabled_cb, win)
|
|
|
|
bx.pack_end(tg)
|
|
tg.show()
|
|
|
|
tg = Check(bx, text="Focus Highlight Animate (Config)", state=True,
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
|
|
tg.callback_changed_add(_highlight_animate_cb, win)
|
|
bx.pack_end(tg)
|
|
tg.show()
|
|
|
|
tg = Check(bx, text="Focus Highlight Enabled (Win)", state=True,
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
|
|
tg.callback_changed_add(_win_highlight_enabled_cb, win)
|
|
bx.pack_end(tg)
|
|
tg.show()
|
|
|
|
tg = Check(bx, text="Focus Highlight Animate (Win)", state=True,
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
|
|
tg.callback_changed_add(_win_highlight_animate_cb, win)
|
|
bx.pack_end(tg)
|
|
tg.show()
|
|
|
|
sp = Separator(win, horizontal=True,
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
|
|
bx.pack_end(sp)
|
|
sp.show()
|
|
|
|
# Second Example - Using Custom Chain
|
|
lb = Label(bx, text="Custom Chain: Please use tab key to check",
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
|
|
bx.pack_end(lb)
|
|
lb.show()
|
|
|
|
bx2 = Box(bx, horizontal=True,
|
|
size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH)
|
|
bx.pack_end(bx2)
|
|
bx2.show()
|
|
|
|
bt1 = Button(bx2, text="Button 1",
|
|
size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH)
|
|
bx2.pack_end(bt1)
|
|
bt1.show()
|
|
|
|
bt2 = Button(bx2, text="Button 2",
|
|
size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH)
|
|
bx2.pack_end(bt2)
|
|
bt2.show()
|
|
|
|
bt3 = Button(bx2, text="Button 3",
|
|
size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH)
|
|
bx2.pack_end(bt3)
|
|
bt3.show()
|
|
|
|
bt4 = Button(bx2, text="Button 4",
|
|
size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH)
|
|
bx2.pack_end(bt4)
|
|
bt4.show()
|
|
|
|
bx2.focus_custom_chain = [bt2, bt1, bt4, bt3]
|
|
|
|
tg = Check(bx, text="Custom Chain", state=False,
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
|
|
tg.callback_changed_add(_custom_chain_cb, bx)
|
|
bx.pack_end(tg)
|
|
tg.show()
|
|
|
|
|
|
win.show()
|
|
|
|
|
|
# Focus 5 (custom)
|
|
def _glow_effect_on_cb(btn, win, chk):
|
|
if chk.state:
|
|
win.focus_highlight_style = "glow_effect"
|
|
|
|
def _glow_effect_off_cb(btn, win, chk):
|
|
if chk.state:
|
|
win.focus_highlight_style = "glow"
|
|
|
|
def focus5_clicked(obj, item=None):
|
|
|
|
theme_overlay_add(os.path.join(script_path, "test_focus_custom.edj"))
|
|
|
|
win = StandardWindow("focus5", "Focus Custom", autodel=True, size=(320, 320))
|
|
win.focus_highlight_enabled = True
|
|
win.focus_highlight_animate = True
|
|
win.focus_highlight_style = "glow"
|
|
|
|
fr = Frame(win, style="pad_large",
|
|
size_hint_weight=EXPAND_BOTH)
|
|
win.resize_object_add(fr)
|
|
fr.show()
|
|
|
|
bx = Box(fr)
|
|
fr.content = bx
|
|
bx.show()
|
|
|
|
chk = Check(bx, text='Enable glow effect on "Glow" Button', state=True,
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
|
|
bx.pack_end(chk)
|
|
chk.show()
|
|
|
|
spinner = Spinner(bx, size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
|
|
bx.pack_end(spinner)
|
|
spinner.show()
|
|
|
|
bt = Button(bx, text="Glow Button",
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
|
|
bt.callback_focused_add(_glow_effect_on_cb, win, chk)
|
|
bt.callback_unfocused_add(_glow_effect_off_cb, win, chk)
|
|
bx.pack_end(bt)
|
|
bt.show()
|
|
|
|
sp = Separator(bx, horizontal=True,
|
|
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
|
|
bx.pack_end(sp)
|
|
sp.show()
|
|
|
|
bx2 = Box(bx, horizontal=True,
|
|
size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH)
|
|
bx.pack_end(bx2)
|
|
bx2.show()
|
|
|
|
for i in range (1, 5):
|
|
bt = Button(bx2, text="Button %d" % i,
|
|
size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH)
|
|
bx2.pack_end(bt)
|
|
bt.show()
|
|
|
|
win.show()
|
|
|
|
|
|
# Focus Move Policy
|
|
def _move_policy_changed_cb(radio, bt3, text):
|
|
bt3.text = "Test Button " + text
|
|
bt3.focus_move_policy = radio.state_value
|
|
|
|
def focus6_clicked(obj, item=None):
|
|
win = StandardWindow("focus6", "Focus Move Policy",
|
|
autodel=True, size=(320, 320))
|
|
win.focus_highlight_enabled = True
|
|
win.focus_highlight_animate = True
|
|
|
|
bx = Box(win, size_hint_expand=EXPAND_BOTH, size_hint_fill=FILL_BOTH)
|
|
win.resize_object_add(bx)
|
|
bx.show()
|
|
|
|
# first frame
|
|
fr = Frame(bx, text="Focusable Buttons", size_hint_fill=FILL_BOTH)
|
|
bx.pack_end(fr)
|
|
fr.show()
|
|
|
|
frbx = Box(fr, size_hint_expand=EXPAND_BOTH, size_hint_fill=FILL_BOTH)
|
|
fr.content = frbx
|
|
frbx.show()
|
|
|
|
bt1 = Button(frbx, text="Button 1", size_hint_fill=FILL_HORIZ)
|
|
frbx.pack_end(bt1)
|
|
bt1.show()
|
|
|
|
bt2 = Button(frbx, text="Button 2", size_hint_fill=FILL_HORIZ)
|
|
frbx.pack_end(bt2)
|
|
bt2.show()
|
|
|
|
bt3 = Button(frbx, text="Test Button (MOUSE CLICK or KEY)",
|
|
size_hint_fill=FILL_HORIZ)
|
|
frbx.pack_end(bt3)
|
|
bt3.show()
|
|
|
|
bt4 = Button(frbx, text="Button 4", size_hint_fill=FILL_HORIZ)
|
|
frbx.pack_end(bt4)
|
|
bt4.show()
|
|
|
|
|
|
# second frame
|
|
fr = Frame(bx, text="Focus Options for a TEST button",
|
|
size_hint_fill=FILL_BOTH)
|
|
bx.pack_end(fr)
|
|
fr.show()
|
|
|
|
frbx = Box(fr, size_hint_expand=EXPAND_BOTH, size_hint_fill=FILL_BOTH)
|
|
fr.content = frbx
|
|
frbx.show()
|
|
|
|
lbl = Label(frbx, text="This focus option will be applied only for the TEST button. <br/>The focus policies of other buttons will remain in MOUSE CLICK status.",
|
|
size_hint_expand=EXPAND_HORIZ)
|
|
frbx.pack_end(lbl)
|
|
lbl.show()
|
|
|
|
rdg = Radio(frbx, state_value=ELM_FOCUS_MOVE_POLICY_CLICK,
|
|
text="Focus Move Pollicy Mouse Click",
|
|
size_hint_align=(0.0,0.5))
|
|
frbx.pack_end(rdg)
|
|
rdg.show()
|
|
rdg.callback_changed_add(_move_policy_changed_cb, bt3, "(MOUSE CLICK or KEY)")
|
|
|
|
rd = Radio(frbx, state_value=ELM_FOCUS_MOVE_POLICY_IN,
|
|
text="Focus Move Policy Mouse In",
|
|
size_hint_align=(0.0,0.5))
|
|
frbx.pack_end(rd)
|
|
rd.group_add(rdg)
|
|
rd.show()
|
|
rd.callback_changed_add(_move_policy_changed_cb, bt3, "(MOUSE IN or KEY))")
|
|
|
|
rd = Radio(frbx, state_value=ELM_FOCUS_MOVE_POLICY_KEY_ONLY,
|
|
text="Focus Move Pollicy Key Only",
|
|
size_hint_align=(0.0,0.5))
|
|
frbx.pack_end(rd)
|
|
rd.group_add(rdg)
|
|
rd.show()
|
|
rd.callback_changed_add(_move_policy_changed_cb, bt3, "(KEY ONLY)")
|
|
|
|
# show the win
|
|
bt1.focus = True
|
|
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 = [("Focus", focus_clicked),
|
|
("Focus 2", focus2_clicked),
|
|
("Focus 3", focus3_clicked),
|
|
("Focus 4", focus4_clicked),
|
|
("Focus Custom", focus5_clicked),
|
|
("Focus Move Policy", focus6_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()
|