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)
|
json.dump(cfg, f, indent=2)
|
||||||
|
|
||||||
def bridge_is_open(port):
|
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 ──────────────────────────────────────────
|
# ── Styles ──────────────────────────────────────────
|
||||||
STYLE_CONNECTED = (
|
STYLE_CONNECTED = (
|
||||||
@@ -51,9 +55,9 @@ class HermesBridgeWindow(QtWidgets.QWidget):
|
|||||||
self.port = self.cfg.get("port", DEFAULT_PORT)
|
self.port = self.cfg.get("port", DEFAULT_PORT)
|
||||||
self.hostname = socket.gethostname()
|
self.hostname = socket.gethostname()
|
||||||
self._build_ui()
|
self._build_ui()
|
||||||
self._refresh()
|
# Connect signals FIRST — _refresh may throw but button must work
|
||||||
# Connect after refresh — style changes don't kill the signal
|
|
||||||
self.btn_toggle.released.connect(self._toggle)
|
self.btn_toggle.released.connect(self._toggle)
|
||||||
|
self._refresh()
|
||||||
|
|
||||||
def _build_ui(self):
|
def _build_ui(self):
|
||||||
self.setWindowTitle("Hermes Bridge")
|
self.setWindowTitle("Hermes Bridge")
|
||||||
@@ -129,11 +133,6 @@ class HermesBridgeWindow(QtWidgets.QWidget):
|
|||||||
f"on {self.hostname} (port {self.port}).")
|
f"on {self.hostname} (port {self.port}).")
|
||||||
|
|
||||||
def _toggle(self):
|
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:
|
try:
|
||||||
if bridge_is_open(self.port):
|
if bridge_is_open(self.port):
|
||||||
hou.hscript(f"closeport {self.port}")
|
hou.hscript(f"closeport {self.port}")
|
||||||
|
|||||||
Reference in New Issue
Block a user