Skip to content

Commit 9d900aa

Browse files
authored
Merge pull request #336 from funkelab/335-dynamically-showhide-panels
Dynamically show/hide menu widget and tree view
2 parents 4bdc866 + 61cdc32 commit 9d900aa

File tree

4 files changed

+38
-1
lines changed

4 files changed

+38
-1
lines changed

docs/source/key_bindings.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ Napari viewer and layer key bindings and mouse functions
2626
- | Toggle between viewing all nodes in the
2727
| points/labels or only those for the currently
2828
| selected lineages
29+
* - /
30+
- | Toggle between hiding/showing the side menu and the docked treeview
2931

3032
Tree view key and mouse functions
3133
*********************************

src/motile_tracker/application_menus/main_app.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,9 @@ def __init__(self, viewer: napari.Viewer):
1818
self.menu_widget = MenuWidget(viewer)
1919
tree_widget = TreeWidget(viewer)
2020

21-
viewer.window.add_dock_widget(tree_widget, area="bottom", name="Tree View")
21+
viewer.window.add_dock_widget(
22+
tree_widget, area="bottom", name="Lineage View (Motile Tracker)"
23+
)
2224

2325
layout = QVBoxLayout()
2426
layout.addWidget(self.menu_widget)

src/motile_tracker/data_views/views_coordinator/key_binds.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"swap_nodes": ["s"],
1818
"undo": ["z"],
1919
"redo": ["r"],
20+
"hide_panels": ["/"],
2021
"deselect": ["Escape"],
2122
"restore_selection": ["e"],
2223
}

src/motile_tracker/data_views/views_coordinator/tracks_viewer.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,38 @@ def redo(self, event=None):
356356
return
357357
self.tracks_controller.redo()
358358

359+
def hide_panels(self, event=None):
360+
"""Show/hide menu and tree view panels without destroying"""
361+
362+
if "All (Motile Tracker)" in self.viewer.window.dock_widgets:
363+
main_app = self.viewer.window.dock_widgets["All (Motile Tracker)"]
364+
visible = main_app.isVisible()
365+
366+
if visible:
367+
main_app.parent().close()
368+
else:
369+
main_app.parent().show()
370+
371+
if "Menus (Motile Tracker)" in self.viewer.window.dock_widgets:
372+
menus_app = self.viewer.window.dock_widgets["Menus (Motile Tracker)"]
373+
visible = menus_app.isVisible()
374+
375+
if visible:
376+
menus_app.parent().close()
377+
else:
378+
menus_app.parent().show()
379+
380+
# if the tree view is docked, also show/hide it
381+
if "Lineage View (Motile Tracker)" in self.viewer.window.dock_widgets:
382+
tree_view = self.viewer.window.dock_widgets["Lineage View (Motile Tracker)"]
383+
if not tree_view.parent().isFloating():
384+
visible = tree_view.isVisible()
385+
386+
if visible:
387+
tree_view.parent().close()
388+
else:
389+
tree_view.parent().show()
390+
359391
def deselect(self, event=None):
360392
self.selected_nodes.reset()
361393

0 commit comments

Comments
 (0)