5from textual.screen
import ModalScreen, Screen
6from textual.app
import ComposeResult
7from textual.widgets
import Input, Button, Static
8from textual.containers
import Horizontal, Container
10from daqconf.cider.widgets.configuration_controller
import ConfigurationController
13 def __init__(self, button_labels: Dict[str, Dict[str, str]], input_message: str=
"", name: str |
None=
None, id: str |
None =
None, classes: str |
None =
None) ->
None:
14 super().
__init__(name=name, id=id, classes=classes)
15 """Base class for popups with N buttons and a single input field
24 """Generates interfaxce
26 with Container(id=
"save_box"):
27 yield Input(placeholder=self.
_input_message, classes=
"save_message")
28 with Horizontal(classes=
"buttons"):
31 yield Button(button_properties[
"label"], id=button_text, variant=button_properties[
"variant"])
32 yield Button(
"Cancel", id=
"cancel", variant=
"error")
36 raise NotImplementedError(
"button_actions should be implemented in the child class")
39 raise NotImplementedError(
"input_action should be implemented in the child class")
44 self.app.screen.dismiss(result=
"yay")
47 if event.button.id !=
"cancel":
51 self.app.screen.dismiss(result=
"yay")
56 def __init__(self, name: str |
None =
None, id: str |
None =
None, classes: str |
None =
None) ->
None:
58 Concrete class for saving configuration with a message
61 "save" : {
"label":
"Save",
"variant":
"success"}
72 input = self.query_one(Input)
78 css_file_path = f
"{environ.get('DAQCONF_SHARE')}/config/textual_dbe/textual_css"
80 CSS_PATH = f
"{css_file_path}/save_menu_layout.tcss"
82 Splash screen for saving to file
89 message_box = self.query_one(SaveWithMessage)
95 def __init__(self, name: str |
None =
None, id: str |
None =
None, classes: str |
None =
None) ->
None:
98 "open" : {
"label":
"Open",
"variant":
"success"},
99 "browse" : {
"label":
"Browse [DOESN'T WORK]",
"variant":
"warning"}
102 Concrete class for opening a configuration file
110 Add new handler based on config name
114 except Exception
as e:
116 logger.write_error(e)
119 """Open file or browse for file (not implemented)
122 button_id -- Button label
126 input = self.query_one(Input)
134 logger.write_error(
"Sorry not done this yet, please enter full file path and hit enter/open!")
142 css_file_path = f
"{environ.get('DAQCONF_SHARE')}/config/textual_dbe/textual_css"
144 CSS_PATH = f
"{css_file_path}/save_menu_layout.tcss"
146 def __init__(self, name: str |
None=
None, id: str |
None =
None, classes: str |
None =
None) ->
None:
147 """Add in configuration screen
149 super().
__init__(name=name, id=id, classes=classes)
150 main_screen = self.app.get_screen(
"main")
158 message_box = self.query_one(OpenFile)
165 def __init__(self, name: str |
None =
None, id: str |
None =
None, classes: str |
None =
None) ->
None:
168 "rename" : {
"label":
"Rename",
"variant":
"success"}
171 Concrete class for opening a configuration file
182 Add new handler based on config name
186 main_screen = self.app.get_screen(
"main")
187 selection_menu = main_screen.query_exactly_one(
"SelectionPanel")
188 selection_menu.refresh(recompose=
True)
189 selection_menu.restore_menu_state()
191 except Exception
as e:
193 logger.write_error(e)
196 """Open file or browse for file (not implemented)
199 button_id -- Button label
203 input = self.query_one(Input)
213 css_file_path = f
"{environ.get('DAQCONF_SHARE')}/config/textual_dbe/textual_css"
215 CSS_PATH = f
"{css_file_path}/save_menu_layout.tcss"
217 Splash screen for saving to file
224 message_box = self.query_one(RenameConfigObject)
None __init__(self, str|None name=None, str|None id=None, str|None classes=None)
ComposeResult compose(self)
input_action(self, str new_config)
button_actions(self, str|None button_id)
None __init__(self, str|None name=None, str|None id=None, str|None classes=None)
ComposeResult compose(self)
input_action(self, str new_file_name)
None __init__(self, str|None name=None, str|None id=None, str|None classes=None)
button_actions(self, str|None button_id)
ComposeResult compose(self)
input_action(self, str message)
button_actions(self, str button_id)
None __init__(self, str|None name=None, str|None id=None, str|None classes=None)