fix: connect signal BEFORE _refresh (was unreachable on exception), bridge_is_open exception-safe, remove bogus QTimer workaround
This commit is contained in:
@@ -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}")
|
||||
|
||||
Reference in New Issue
Block a user