Browse Source

fixes for testing

spacexerq 1 week ago
parent
commit
dcb5310dfa
3 changed files with 34 additions and 13 deletions
  1. 30 13
      apps/gui/src/app_window.py
  2. 2 0
      start.ps1
  3. 2 0
      update.ps1

+ 30 - 13
apps/gui/src/app_window.py

@@ -244,8 +244,9 @@ class LFMRIWindow(QMainWindow):
         self._spec_blink_timer.setInterval(700)
         self._spec_blink_timer.timeout.connect(self._tick_spec_blink)
 
-        # Mode selector state
-        self._current_mode: str = "plug"   # updated by background fetch after startup
+        # Mode selector state — initialised from server_config.json, then
+        # confirmed/overridden by a background GET /mode after startup.
+        self._current_mode: str = hw_mode
         self._mode_bridge = _ModeSignalBridge(self)
 
         self.menuBar().hide()
@@ -425,21 +426,27 @@ class LFMRIWindow(QMainWindow):
         sb = QStatusBar()
         self.setStatusBar(sb)
 
-        # Permanent mode badge on the right
-        mode_color = "#e65100" if self._hw_mode == "real" else "#336633"
-        mode_lbl = QLabel(f"  {self._hw_mode.upper()}  ")
-        mode_lbl.setStyleSheet(
-            f"color: {mode_color}; font-weight: bold; font-size: 10px;"
-            f" background: {mode_color}22; border: 1px solid {mode_color}55;"
+        # Permanent mode badge — stored so _refresh_mode_badge() can update it
+        self._mode_badge_lbl = QLabel()
+        sb.addPermanentWidget(self._mode_badge_lbl)
+        self._refresh_mode_badge()
+        sb.showMessage(f"{i18n.tr('active_tab')}: {i18n.tr(_TAB_NAV_KEYS[0])}")
+
+    def _refresh_mode_badge(self) -> None:
+        """Update the status-bar mode badge to reflect _current_mode."""
+        mode  = self._current_mode
+        color = "#e65100" if mode == "real" else "#336633"
+        self._mode_badge_lbl.setText(f"  {mode.upper()}  ")
+        self._mode_badge_lbl.setStyleSheet(
+            f"color: {color}; font-weight: bold; font-size: 10px;"
+            f" background: {color}22; border: 1px solid {color}55;"
             " border-radius: 3px; padding: 0 4px; margin: 2px 6px;"
         )
-        mode_lbl.setToolTip(
+        self._mode_badge_lbl.setToolTip(
             "Hardware mode: real scanner connected"
-            if self._hw_mode == "real"
+            if mode == "real"
             else "Stub mode: simulated responses, no hardware"
         )
-        sb.addPermanentWidget(mode_lbl)
-        sb.showMessage(f"{i18n.tr('active_tab')}: {i18n.tr(_TAB_NAV_KEYS[0])}")
 
     def _size_and_center(self) -> None:
         screen = QApplication.primaryScreen()
@@ -554,12 +561,15 @@ class LFMRIWindow(QMainWindow):
     def _on_mode_fetched(self, mode: str) -> None:
         self._current_mode = mode
         self._update_mode_btn()
+        self._refresh_mode_badge()
         self._scanner_tab.refresh_scenarios()
 
     def _on_mode_set(self, mode: str) -> None:
         self._current_mode = mode
         self._mode_btn.setEnabled(True)
         self._update_mode_btn()
+        self._refresh_mode_badge()
+        self.setWindowTitle(f"LF-MRI System  [{mode.upper()}]")
         self._scanner_tab.refresh_scenarios()
 
     def _on_mode_error(self, msg: str) -> None:
@@ -575,10 +585,17 @@ class LFMRIWindow(QMainWindow):
     def _on_mode_btn_clicked(self) -> None:
         target = "real" if self._current_mode == "plug" else "plug"
         confirm_key = f"mode_confirm_to_{target}"
+        msg = i18n.tr(confirm_key)
+        if target == "real":
+            msg += (
+                "\n\n⚠  Switching to REAL mode requires the native spectrometer "
+                "to be already running (start.ps1 -Mode real).\n"
+                "If it is not running, the first scan will fail with a connection error."
+            )
         reply = QMessageBox.question(
             self,
             i18n.tr("mode_confirm_title"),
-            i18n.tr(confirm_key),
+            msg,
             QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No,
             QMessageBox.StandardButton.No,
         )

+ 2 - 0
start.ps1

@@ -223,3 +223,5 @@ if ($Mode -eq "real") {
 Write-Host "  Stop all:           .\stop.ps1"
 Write-Host "  Update code:        .\update.bat"
 Write-Host ""
+Write-Host "  Press Enter to close this window..." -ForegroundColor DarkGray
+$null = Read-Host

+ 2 - 0
update.ps1

@@ -160,3 +160,5 @@ Write-Host ""
 Write-Host "  To also restart the native spectrometer:"
 Write-Host "    .\update.ps1 -RestartSpec"
 Write-Host ""
+Write-Host "  Press Enter to close this window..." -ForegroundColor DarkGray
+$null = Read-Host