DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
selection_panel.py
Go to the documentation of this file.
1from textual.app import ComposeResult
2from textual.geometry import Region
3from textual.widgets import Static, Button, ContentSwitcher
4from textual.containers import Horizontal
5
6from daqconf.cider.widgets.selection_menu import SelectionMenu
7
8class SelectionPanel(Static):
9 """Selection panel structure. Allows user to select between different configuration views
10 """
11
12 _current_menu = None
13 _saved_states = None
14 _menu_ids = {"Class View" : "class-selection",
15 "Session View" : "relation-selection"}
16
17 def compose(self) -> ComposeResult:
18 """Compose the selection panel for use in the app
19 """
20 # There has to be a better way of doing this
21 with Horizontal(id="buttons"):
22 for label, id in self._menu_ids.items():
23 yield Button(label, id=id)
24
25 if self._current_menu is None:
26 self._current_menu = list(self._menu_ids.values())[0]
27
28 if self._saved_states is None:
29 self._saved_states = [None]*len(self._menu_ids)
30
31 with ContentSwitcher(initial=self._current_menu):
32 for i, id in enumerate(self._menu_ids.values()):
33
34 menu = SelectionMenu(id=id)
35 yield menu
36
37
38 # Not fully implemented
39 def save_menu_state(self):
40 # for i, menu in enumerate(self._menu_ids.values()):
41 # selection_menu = self.query_one(f"#{menu}", SelectionMenu)
42 # self._saved_states[i] = selection_menu.save_tree_state()
43 self._current_menu = self.query_one(ContentSwitcher).current
44
46 # for i, menu in enumerate(self._menu_ids.values()):
47 # selection_menu = self.query_one(f"#{menu}", SelectionMenu)
48 # selection_menu.restore_tree_state(self._saved_states[i])
49
50 self.query_one(ContentSwitcher).current = self._current_menu
51
52
53 def on_button_pressed(self, event: Button.Pressed)->None:
54 """Swap between different configuration views via button. Currently bound here for...reasons
55 """
56 self.query_one(ContentSwitcher).current = event.button.id
57 self._current_menu = event.button.id
58 # Also swap this around so refreshing is smoother!
None on_button_pressed(self, Button.Pressed event)