GUI: Added ui_state_manager to handle Qsettings. Trying to resolve beamline busy and baton conflicts... helpppppp
This commit is contained in:
@@ -19,6 +19,7 @@ from aare.common.diffraction_geometry import DiffractionGeometry
|
||||
from aare.common.logger_config import setup_logger
|
||||
from aare.common.models import SampleShortInfoList, TokenData, DAQStatusModel, BeamlineStateEnum
|
||||
from aare.common.sample_geometry import SampleGeometryModel
|
||||
from aare.gui.models.gui_state_manager import UIStateManager
|
||||
from aare.gui.panels.LogPanel import LogDock
|
||||
|
||||
from aare.gui.panels.beamline_controls import BeamlineControls
|
||||
@@ -93,7 +94,7 @@ class MainWindow(QMainWindow):
|
||||
# Tutorial manager (define tutorials after widgets exist)
|
||||
self._tutorial_event_bus = TutorialEventBus(self)
|
||||
self._tutorial_text_resolver = DictionaryTextResolver(MANUAL_MOUNT_TUTORIAL)
|
||||
|
||||
self.state_manager = UIStateManager("PSI", "AareGUI")
|
||||
self.viewer = JFJochDBusClient()
|
||||
|
||||
try:
|
||||
@@ -895,9 +896,10 @@ class MainWindow(QMainWindow):
|
||||
self._waiting_for_baton_response = True
|
||||
timeout = result.get("timeout_seconds", 30)
|
||||
holder = result.get("message", "Waiting for response...")
|
||||
is_busy = result.get("beamline_busy", False)
|
||||
|
||||
if getattr(self, "_baton_pending_dialog", None) is None:
|
||||
target_user = holder.replace("Request sent to ", "")
|
||||
target_user = holder.replace("Request sent to ", "").replace(" (Note: beamline is currently busy, transfer will be queued if accepted)", "")
|
||||
self._baton_pending_dialog = BatonPendingDialog(target_user=target_user, timeout_seconds=timeout,
|
||||
parent=self)
|
||||
self._baton_pending_dialog.cancelled_signal.connect(self.daq.cancel_baton_request)
|
||||
@@ -906,7 +908,7 @@ class MainWindow(QMainWindow):
|
||||
self._baton_pending_dialog.update_remaining(timeout)
|
||||
|
||||
self.alert_banner.show_waiting(f"Requesting control - {holder}", timeout)
|
||||
logger.info(f"Baton request pending - {timeout}s timeout")
|
||||
logger.info(f"Baton request pending - {timeout}s timeout (busy={is_busy})")
|
||||
|
||||
elif result.get("queued"):
|
||||
self._waiting_for_baton_response = True
|
||||
@@ -1008,23 +1010,12 @@ class MainWindow(QMainWindow):
|
||||
|
||||
|
||||
def _restore_window_state(self) -> None:
|
||||
settings = QSettings()
|
||||
geometry = settings.value("main_window/geometry")
|
||||
state = settings.value("main_window/state")
|
||||
|
||||
if geometry is not None:
|
||||
self.restoreGeometry(geometry)
|
||||
if state is not None:
|
||||
self.restoreState(state)
|
||||
|
||||
if not self.__decoded_token.staff:
|
||||
self.ref_tools_dock.hide()
|
||||
self.state_manager.restore_window(self)
|
||||
|
||||
def closeEvent(self, event) -> None:
|
||||
try:
|
||||
settings = QSettings()
|
||||
settings.setValue("main_window/geometry", self.saveGeometry())
|
||||
settings.setValue("main_window/state", self.saveState())
|
||||
self.state_manager.save_window(self)
|
||||
|
||||
except Exception as e:
|
||||
logger.warning(f"Failed to save main window state: {e}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user