DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dropdown_selector.py
Go to the documentation of this file.
1from os import environ
2
3from textual.widgets import Static, SelectionList, Button
4from textual.widgets.selection_list import Selection
5from textual.screen import ModalScreen
6
7
8from daqconf.cider.widgets.configuration_controller import ConfigurationController
9
10class SelectSession(Static):
11 def compose(self):
12
13 self._configuration_controller = self.app.get_screen("main").query_one(ConfigurationController)
14 self._sessions = self._configuration_controller.get_all_sessions()
15 is_enabled = self._configuration_controller.is_selected_object_enabled()
16
17 selections = [Selection(self._configuration_controller.generate_rich_string(s), s, d) for s, d in zip(self._sessions, is_enabled)]
18
19 selection_list = SelectionList(*selections, id="session_select_list")
20 selection_list.border_title = "Select Sessions to toggle object on/off in"
21
22 yield selection_list
23 yield Button("Apply", id="apply")
24 yield Button("Close", id="cancel")
25
26 def on_button_pressed(self, event: Button.Pressed):
27
28 if event.button.id == "apply":
29 selection_list = self.query_one("#session_select_list").selected
30
31 # Hacky but ensures we know what we are toggling on/off
32 selected_sessions = [(s, s in selection_list) for s in self._sessions]
33
34 self._configuration_controller.toggle_disable_conf_obj(selected_sessions)
35 else:
36 menu = self.app.get_screen("main").query_one("SelectionPanel")
37 menu.save_menu_state()
38 menu.refresh(recompose=True)
39 menu.restore_menu_state()
40
41 self.app.screen.dismiss(result="cancel")
42
43
44class SelectSessionScreen(ModalScreen):
45 css_file_path = f"{environ.get('DAQCONF_SHARE')}/config/textual_dbe/textual_css"
46 CSS_PATH = f"{css_file_path}/session_selection_layout.tcss"
47
48 def compose(self):
49 yield SelectSession()
50
51 def on_mount(self)->None:
52 self.query_one(SelectSession).focus()
on_button_pressed(self, Button.Pressed event)