fix: connect signal BEFORE _refresh (was unreachable on exception), bridge_is_open exception-safe, remove bogus QTimer workaround

This commit is contained in:
Hermes
2026-07-12 14:31:58 +00:00
parent 37cc1f0736
commit a4703f104f
+7 -8
View File
@@ -28,7 +28,11 @@ def save_config(cfg):
json.dump(cfg, f, indent=2)
def bridge_is_open(port):
return f"Port {port} is open" in hou.hscript("openport")[0]
try:
out = hou.hscript("openport")[0]
except Exception:
return False
return f"Port {port} is open" in out
# ── Styles ──────────────────────────────────────────
STYLE_CONNECTED = (
@@ -51,9 +55,9 @@ class HermesBridgeWindow(QtWidgets.QWidget):
self.port = self.cfg.get("port", DEFAULT_PORT)
self.hostname = socket.gethostname()
self._build_ui()
self._refresh()
# Connect after refresh — style changes don't kill the signal
# Connect signals FIRST — _refresh may throw but button must work
self.btn_toggle.released.connect(self._toggle)
self._refresh()
def _build_ui(self):
self.setWindowTitle("Hermes Bridge")
@@ -129,11 +133,6 @@ class HermesBridgeWindow(QtWidgets.QWidget):
f"on {self.hostname} (port {self.port}).")
def _toggle(self):
# Defer to next event loop cycle — avoids re-entrancy
# issues with hou.hscript in signal handler context
QtCore.QTimer.singleShot(0, self._execute_toggle)
def _execute_toggle(self):
try:
if bridge_is_open(self.port):
hou.hscript(f"closeport {self.port}")