GUI: main window add restore default view and way to recover refernece samples panel, also capture default window state.
This commit is contained in:
1 parent
9db0e45f8b
commit
c25e20a10c
1 file changed
+60
-10
+60
-10
@@ -47,6 +47,7 @@ from aare.gui.threads.camera_thread import SampleCameraThread
|
||||
from aare.gui.threads.prediction_subscriber import PredictionSubscriber
|
||||
from aare.gui.threads.daq_worker import DAQWorker
|
||||
from aare.gui.threads.jfjoch_viewer import JFJochDBusClient
|
||||
from aare.gui.tutorials.tutorial_registration import register_tutorials
|
||||
from aare.gui.widgets.alert_banner import AlertBanner
|
||||
from aare.gui.widgets.camera_image import SampleCameraImageLabel
|
||||
from aare.gui.widgets.no_wheel_scroll_area import NoWheelScrollArea
|
||||
@@ -76,6 +77,7 @@ class MainWindow(QMainWindow):
|
||||
self._beamline_recovery_dialog = None
|
||||
self._controls_help_dialog = None
|
||||
self._cleanup_done = False
|
||||
self._default_window_state = None
|
||||
|
||||
# Tutorial manager (define tutorials after widgets exist)
|
||||
self._tutorial_event_bus = TutorialEventBus(self)
|
||||
@@ -221,6 +223,11 @@ class MainWindow(QMainWindow):
|
||||
self.ref_tools_dock.setAllowedAreas(Qt.DockWidgetArea.BottomDockWidgetArea)
|
||||
self.addDockWidget(Qt.DockWidgetArea.BottomDockWidgetArea, self.ref_tools_dock)
|
||||
self.tabifyDockWidget(self.ref_tools_dock, self.tell_samples_dock)
|
||||
if self.__decoded_token.staff:
|
||||
self.ref_tools_dock.show()
|
||||
self.ref_tools_dock.raise_()
|
||||
else:
|
||||
self.ref_tools_dock.hide()
|
||||
|
||||
self.sample_logic = SampleMountLogic()
|
||||
|
||||
@@ -282,6 +289,7 @@ class MainWindow(QMainWindow):
|
||||
|
||||
self.setWindowTitle("AareGUI")
|
||||
self.create_menu_bar()
|
||||
self._capture_default_window_state()
|
||||
self._restore_window_state()
|
||||
|
||||
# Define tutorials now that the UI exists
|
||||
@@ -522,35 +530,41 @@ class MainWindow(QMainWindow):
|
||||
file_menu.addAction(quit_action)
|
||||
|
||||
view_menu = menu_bar.addMenu("View")
|
||||
|
||||
show_samples_action = QAction("Show Sample List", self)
|
||||
show_samples_action.setCheckable(True)
|
||||
show_samples_action.setChecked(True)
|
||||
show_samples_action.triggered.connect(lambda: self.tell_samples_dock.setVisible(show_samples_action.isChecked()))
|
||||
|
||||
# When dock visibility changes, update the action's checked state
|
||||
show_samples_action.triggered.connect(lambda checked: self.tell_samples_dock.setVisible(checked))
|
||||
self.tell_samples_dock.visibilityChanged.connect(show_samples_action.setChecked)
|
||||
view_menu.addAction(show_samples_action)
|
||||
|
||||
if self.__decoded_token.staff:
|
||||
show_reference_tools_action = QAction("Show Reference Tools", self)
|
||||
show_reference_tools_action.setCheckable(True)
|
||||
show_reference_tools_action.setChecked(True)
|
||||
show_reference_tools_action.triggered.connect(
|
||||
lambda checked: self.ref_tools_dock.setVisible(checked)
|
||||
)
|
||||
self.ref_tools_dock.visibilityChanged.connect(show_reference_tools_action.setChecked)
|
||||
view_menu.addAction(show_reference_tools_action)
|
||||
|
||||
show_job_list_action = QAction("Show job List", self)
|
||||
show_job_list_action.setCheckable(True)
|
||||
show_job_list_action.setChecked(True)
|
||||
show_job_list_action.triggered.connect(self.job_list_dock.setVisible)
|
||||
# When dock visibility changes, update the action's checked state
|
||||
show_job_list_action.triggered.connect(lambda: self.job_list_dock.setVisible(show_job_list_action.isChecked()))
|
||||
show_job_list_action.triggered.connect(lambda checked: self.job_list_dock.setVisible(checked))
|
||||
self.job_list_dock.visibilityChanged.connect(show_job_list_action.setChecked)
|
||||
view_menu.addAction(show_job_list_action)
|
||||
|
||||
show_manual_sample_action = QAction("Show manual sample", self)
|
||||
show_manual_sample_action.setCheckable(True)
|
||||
show_manual_sample_action.setChecked(True)
|
||||
show_manual_sample_action.triggered.connect(self.manual_sample_dock.setVisible)
|
||||
# When dock visibility changes, update the action's checked state
|
||||
show_manual_sample_action.triggered.connect(lambda: self.manual_sample_dock.setVisible(show_manual_sample_action.isChecked()))
|
||||
show_manual_sample_action.triggered.connect(lambda checked: self.manual_sample_dock.setVisible(checked))
|
||||
self.manual_sample_dock.visibilityChanged.connect(show_manual_sample_action.setChecked)
|
||||
view_menu.addAction(show_manual_sample_action)
|
||||
|
||||
show_face_panel_action = QAction("Show face detection", self)
|
||||
show_face_panel_action.setCheckable(True)
|
||||
show_face_panel_action.setChecked(False)
|
||||
#show_face_panel_action.triggered.connect(self.face_panel_dock.setVisible)
|
||||
show_face_panel_action.triggered.connect(lambda checked: self.face_panel_dock.setVisible(checked))
|
||||
self.face_panel_dock.visibilityChanged.connect(show_face_panel_action.setChecked)
|
||||
view_menu.addAction(show_face_panel_action)
|
||||
@@ -566,6 +580,7 @@ class MainWindow(QMainWindow):
|
||||
show_smargon_trace_action.setCheckable(True)
|
||||
show_smargon_trace_action.setChecked(False)
|
||||
show_smargon_trace_action.triggered.connect(lambda checked: self.smargon_trace_dock.setVisible(checked))
|
||||
self.smargon_trace_dock.visibilityChanged.connect(show_smargon_trace_action.setChecked)
|
||||
self.smargon_trace_dock.visibilityChanged.connect(
|
||||
lambda visible: self.smargon_trace_panel.refresh_plot(force=True) if visible else None
|
||||
)
|
||||
@@ -578,6 +593,12 @@ class MainWindow(QMainWindow):
|
||||
self.log_dock.visibilityChanged.connect(show_log_action.setChecked)
|
||||
view_menu.addAction(show_log_action)
|
||||
|
||||
view_menu.addSeparator()
|
||||
|
||||
restore_default_view_action = QAction("Restore Default View", self)
|
||||
restore_default_view_action.triggered.connect(self.restore_default_view)
|
||||
view_menu.addAction(restore_default_view_action)
|
||||
|
||||
help_menu = menu_bar.addMenu("Help")
|
||||
about_action = QAction("About", self) # Action for 'About'
|
||||
about_action.triggered.connect(self.show_about_dialog)
|
||||
@@ -606,6 +627,32 @@ class MainWindow(QMainWindow):
|
||||
start_interactive_tutorial_action.triggered.connect(self.start_interactive_tutorial)
|
||||
help_menu.addAction(start_interactive_tutorial_action)
|
||||
|
||||
def _capture_default_window_state(self) -> None:
|
||||
self._default_window_state = self.saveState()
|
||||
|
||||
@Slot()
|
||||
def restore_default_view(self) -> None:
|
||||
if self._default_window_state is not None:
|
||||
self.restoreState(self._default_window_state)
|
||||
|
||||
self.tell_samples_dock.setVisible(True)
|
||||
self.job_list_dock.setVisible(True)
|
||||
self.manual_sample_dock.setVisible(True)
|
||||
|
||||
self.face_panel_dock.setVisible(False)
|
||||
self.fluor_panel_dock.setVisible(False)
|
||||
self.smargon_trace_dock.setVisible(False)
|
||||
self.log_dock.setVisible(False)
|
||||
|
||||
if self.__decoded_token.staff:
|
||||
self.ref_tools_dock.setVisible(True)
|
||||
self.ref_tools_dock.raise_()
|
||||
else:
|
||||
self.ref_tools_dock.setVisible(False)
|
||||
self.tell_samples_dock.raise_()
|
||||
|
||||
self.video_tab.setCurrentIndex(0)
|
||||
|
||||
def show_about_dialog(self):
|
||||
QMessageBox.about(
|
||||
self,
|
||||
@@ -684,6 +731,9 @@ class MainWindow(QMainWindow):
|
||||
if state is not None:
|
||||
self.restoreState(state)
|
||||
|
||||
if not self.__decoded_token.staff:
|
||||
self.ref_tools_dock.hide()
|
||||
|
||||
def closeEvent(self, event) -> None:
|
||||
try:
|
||||
settings = QSettings()
|
||||
|
||||
Reference in new issue
Block a user