From 2e9bf52082e1c0fbd02e7bb2574ffc290aa94c30 Mon Sep 17 00:00:00 2001 From: Zoe Forbes Date: Sun, 8 Feb 2026 22:54:28 -0600 Subject: [PATCH] fix: SSE URL double /api/ and SiloOrigin command invocation (#84) - Fix SSE listener URL: _listen() used '/api/events' but _get_api_url() already returns a URL ending in '/api', producing '/api/api/events'. Changed to '/events' to match _test_sse(). - Replace all Command.get().Activated() calls in silo_origin.py with FreeCADGui.runCommand(). The C++ Gui::Command wrapper returned by Command.get() does not expose .Activated() to Python. --- freecad/silo_commands.py | 2 +- freecad/silo_origin.py | 38 +++++++++++--------------------------- 2 files changed, 12 insertions(+), 28 deletions(-) diff --git a/freecad/silo_commands.py b/freecad/silo_commands.py index 3372420..f4d6bac 100644 --- a/freecad/silo_commands.py +++ b/freecad/silo_commands.py @@ -2431,7 +2431,7 @@ class SiloEventListener(QtCore.QThread): # -- SSE stream reader -------------------------------------------------- def _listen(self): - url = f"{_get_api_url().rstrip('/')}/api/events" + url = f"{_get_api_url().rstrip('/')}/events" headers = {"Accept": "text/event-stream"} headers.update(_get_auth_headers()) req = urllib.request.Request(url, headers=headers, method="GET") diff --git a/freecad/silo_origin.py b/freecad/silo_origin.py index 071c772..e839551 100644 --- a/freecad/silo_origin.py +++ b/freecad/silo_origin.py @@ -299,9 +299,7 @@ class SiloOrigin: Created App.Document or None """ try: - cmd = FreeCADGui.Command.get("Silo_New") - if cmd: - cmd.Activated() + FreeCADGui.runCommand("Silo_New") return FreeCAD.ActiveDocument except Exception as e: FreeCAD.Console.PrintError(f"Silo new document failed: {e}\n") @@ -322,9 +320,7 @@ class SiloOrigin: if not identity: # No identity - show search dialog try: - cmd = FreeCADGui.Command.get("Silo_Open") - if cmd: - cmd.Activated() + FreeCADGui.runCommand("Silo_Open") return FreeCAD.ActiveDocument except Exception as e: FreeCAD.Console.PrintError(f"Silo open failed: {e}\n") @@ -354,9 +350,7 @@ class SiloOrigin: Opened App.Document or None """ try: - cmd = FreeCADGui.Command.get("Silo_Open") - if cmd: - cmd.Activated() + FreeCADGui.runCommand("Silo_Open") return FreeCAD.ActiveDocument except Exception as e: FreeCAD.Console.PrintError(f"Silo open failed: {e}\n") @@ -473,10 +467,8 @@ class SiloOrigin: True if command was executed """ try: - cmd = FreeCADGui.Command.get("Silo_Commit") - if cmd: - cmd.Activated() - return True + FreeCADGui.runCommand("Silo_Commit") + return True except Exception as e: FreeCAD.Console.PrintError(f"Silo commit failed: {e}\n") return False @@ -493,10 +485,8 @@ class SiloOrigin: True if command was executed """ try: - cmd = FreeCADGui.Command.get("Silo_Pull") - if cmd: - cmd.Activated() - return True + FreeCADGui.runCommand("Silo_Pull") + return True except Exception as e: FreeCAD.Console.PrintError(f"Silo pull failed: {e}\n") return False @@ -513,10 +503,8 @@ class SiloOrigin: True if command was executed """ try: - cmd = FreeCADGui.Command.get("Silo_Push") - if cmd: - cmd.Activated() - return True + FreeCADGui.runCommand("Silo_Push") + return True except Exception as e: FreeCAD.Console.PrintError(f"Silo push failed: {e}\n") return False @@ -530,9 +518,7 @@ class SiloOrigin: doc: FreeCAD App.Document """ try: - cmd = FreeCADGui.Command.get("Silo_Info") - if cmd: - cmd.Activated() + FreeCADGui.runCommand("Silo_Info") except Exception as e: FreeCAD.Console.PrintError(f"Silo info failed: {e}\n") @@ -545,9 +531,7 @@ class SiloOrigin: doc: FreeCAD App.Document """ try: - cmd = FreeCADGui.Command.get("Silo_BOM") - if cmd: - cmd.Activated() + FreeCADGui.runCommand("Silo_BOM") except Exception as e: FreeCAD.Console.PrintError(f"Silo BOM failed: {e}\n")