New 1.19 API: elm.Panel "toggled" signal

with test
This commit is contained in:
Davide Andreoli 2017-02-26 09:43:15 +01:00
parent f76e272990
commit 6f92607ba4
3 changed files with 39 additions and 2 deletions

View File

@ -14,6 +14,11 @@ A panel is a type of animated container that contains subobjects.
It can be expanded or contracted by clicking the button on it's edge. It can be expanded or contracted by clicking the button on it's edge.
Emitted signals
===============
- ``toggled`` - Emitted when the panel has been toggled. (since 1.19)
Layout content parts Layout content parts
==================== ====================

View File

@ -118,5 +118,15 @@ cdef class Panel(LayoutClass):
"""Toggle the hidden state of the panel from code.""" """Toggle the hidden state of the panel from code."""
elm_panel_toggle(self.obj) elm_panel_toggle(self.obj)
def callback_toggled_add(self, func, *args, **kwargs):
""" The panel has been toggled.
.. versionadded:: 1.19
"""
self._callback_add("toggled", func, args, kwargs)
def callback_toggled_del(self, func):
self._callback_del("toggled", func)
_object_mapping_register("Elm.Panel", Panel) _object_mapping_register("Elm.Panel", Panel)

View File

@ -21,6 +21,20 @@ from efl.elementary.toolbar import Toolbar, ELM_TOOLBAR_SHRINK_NONE
script_path = os.path.dirname(os.path.abspath(__file__)) script_path = os.path.dirname(os.path.abspath(__file__))
img_file = os.path.join(script_path, "images", "plant_01.jpg") img_file = os.path.join(script_path, "images", "plant_01.jpg")
def toolbar_item_clicked_cb(toolbar, item, win):
p = win.data["panel1"]
print("The top panel is currently %s" % ("hidden" if p.hidden else "shown"))
p = win.data["panel2"]
print("The left panel is currently %s" % ("hidden" if p.hidden else "shown"))
p = win.data["panel3"]
print("The right panel is currently %s" % ("hidden" if p.hidden else "shown"))
p = win.data["panel4"]
print("The bottom panel is currently %s" % ("hidden" if p.hidden else "shown"))
def panel_toggled_cb(panel):
print("Panel toggled")
def panel_clicked(obj): def panel_clicked(obj):
win = StandardWindow("panel", "Panel test", autodel=True, size=(320, 400)) win = StandardWindow("panel", "Panel test", autodel=True, size=(320, 400))
if obj is None: if obj is None:
@ -33,12 +47,14 @@ def panel_clicked(obj):
# top panel (toolbar content) # top panel (toolbar content)
panel1 = Panel(bx, orient=ELM_PANEL_ORIENT_TOP, panel1 = Panel(bx, orient=ELM_PANEL_ORIENT_TOP,
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH) size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
panel1.callback_toggled_add(panel_toggled_cb)
bx.pack_end(panel1) bx.pack_end(panel1)
panel1.show() panel1.show()
win.data['panel1'] = panel1
toolbar = Toolbar(panel1, homogeneous=False, toolbar = Toolbar(panel1, homogeneous=False,
shrink_mode=ELM_TOOLBAR_SHRINK_NONE) shrink_mode=ELM_TOOLBAR_SHRINK_NONE)
toolbar.item_append("user-home", "Hello Toolbar") toolbar.item_append("user-home", "Hello", toolbar_item_clicked_cb, win)
panel1.content = toolbar panel1.content = toolbar
toolbar.show() toolbar.show()
@ -55,6 +71,7 @@ def panel_clicked(obj):
# left panel (list content) # left panel (list content)
panel2 = Panel(table, orient=ELM_PANEL_ORIENT_LEFT, panel2 = Panel(table, orient=ELM_PANEL_ORIENT_LEFT,
size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH)
panel2.callback_toggled_add(panel_toggled_cb)
table.pack(panel2, 0, 0, 2, 4) table.pack(panel2, 0, 0, 2, 4)
panel2.show() panel2.show()
@ -64,12 +81,15 @@ def panel_clicked(obj):
li.item_append("Item #%d" % i, ic) li.item_append("Item #%d" % i, ic)
panel2.content = li panel2.content = li
li.show() li.show()
win.data['panel2'] = panel2
# right panel (button content) # right panel (button content)
panel3 = Panel(table, orient=ELM_PANEL_ORIENT_RIGHT, hidden=True, panel3 = Panel(table, orient=ELM_PANEL_ORIENT_RIGHT, hidden=True,
size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH) size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH)
panel3.callback_toggled_add(panel_toggled_cb)
table.pack(panel3, 2, 0, 2, 4); table.pack(panel3, 2, 0, 2, 4);
panel3.show() panel3.show()
win.data['panel3'] = panel3
bt = Button(panel3, text="HIDE ME :)", size_hint_weight=EXPAND_BOTH, bt = Button(panel3, text="HIDE ME :)", size_hint_weight=EXPAND_BOTH,
size_hint_align=FILL_BOTH) size_hint_align=FILL_BOTH)
@ -80,13 +100,15 @@ def panel_clicked(obj):
# bottom panel (toolbar content) # bottom panel (toolbar content)
panel4 = Panel(table, orient=ELM_PANEL_ORIENT_BOTTOM, hidden=True, panel4 = Panel(table, orient=ELM_PANEL_ORIENT_BOTTOM, hidden=True,
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH) size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
panel4.callback_toggled_add(panel_toggled_cb)
table.pack(panel4, 0, 4, 4, 1) table.pack(panel4, 0, 4, 4, 1)
panel4.show() panel4.show()
win.data['panel4'] = panel4
toolbar = Toolbar(panel4, homogeneous=False, toolbar = Toolbar(panel4, homogeneous=False,
shrink_mode=ELM_TOOLBAR_SHRINK_NONE, shrink_mode=ELM_TOOLBAR_SHRINK_NONE,
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH) size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
toolbar.item_append("user-home", "Hello Toolbar") toolbar.item_append(None, "Hello", toolbar_item_clicked_cb, win)
panel4.content = toolbar panel4.content = toolbar
toolbar.show() toolbar.show()