From df2655e7ae78c85584ace1488c5abb72b8562574 Mon Sep 17 00:00:00 2001 From: Ziad-I <68874104+Ziad-I@users.noreply.github.com> Date: Thu, 13 Jun 2024 20:26:00 +0300 Subject: [PATCH] add open browser button and operator --- src/blenderbim/blenderbim/bim/module/web/__init__.py | 1 + src/blenderbim/blenderbim/bim/module/web/operator.py | 9 +++++++++ src/blenderbim/blenderbim/bim/module/web/ui.py | 3 ++- src/blenderbim/blenderbim/core/web.py | 8 ++++---- src/blenderbim/blenderbim/tool/web.py | 5 +++++ 5 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/web/__init__.py b/src/blenderbim/blenderbim/bim/module/web/__init__.py index 31737cc334..17c5271f01 100644 --- a/src/blenderbim/blenderbim/bim/module/web/__init__.py +++ b/src/blenderbim/blenderbim/bim/module/web/__init__.py @@ -23,6 +23,7 @@ classes = ( operator.ConnectToWebsocketServer, operator.DisconnectWebsocketServer, operator.killWebsocketServer, + operator.OpenWebBrowser, prop.WebProperties, ui.BIM_PT_webui, ) diff --git a/src/blenderbim/blenderbim/bim/module/web/operator.py b/src/blenderbim/blenderbim/bim/module/web/operator.py index 25d47a4adb..8e852f852c 100644 --- a/src/blenderbim/blenderbim/bim/module/web/operator.py +++ b/src/blenderbim/blenderbim/bim/module/web/operator.py @@ -55,3 +55,12 @@ class killWebsocketServer(bpy.types.Operator): def execute(self, context): core.kill_websocket_server(tool.Web) return {"FINISHED"} + + +class OpenWebBrowser(bpy.types.Operator): + bl_idname = "bim.open_web_browser" + bl_label = "Open Web Browser" + bl_description = "Open the web UI base URL in your Web Browser" + + def execute(self, context): + core.open_web_browser(tool.Web) diff --git a/src/blenderbim/blenderbim/bim/module/web/ui.py b/src/blenderbim/blenderbim/bim/module/web/ui.py index 221692ca27..8693cfeaca 100644 --- a/src/blenderbim/blenderbim/bim/module/web/ui.py +++ b/src/blenderbim/blenderbim/bim/module/web/ui.py @@ -41,8 +41,9 @@ class BIM_PT_webui(Panel): row = layout.row() row.label(text=f"Running on port: {props.webserver_port}") - row = layout.row() + row = layout.row(align=True) row.operator("bim.connect_websocket_server") + row.operator("bim.open_web_browser", icon="URL", text="") if props.is_connected: row = layout.row() diff --git a/src/blenderbim/blenderbim/core/web.py b/src/blenderbim/blenderbim/core/web.py index ef2ec750c9..cc7f39c84c 100644 --- a/src/blenderbim/blenderbim/core/web.py +++ b/src/blenderbim/blenderbim/core/web.py @@ -1,7 +1,3 @@ -def open_web_ui(web): - web.open_web_ui() - - def generate_port_number(web): return web.generate_port_number() @@ -20,3 +16,7 @@ def disconnect_websocket_server(web): def kill_websocket_server(web): web.kill_websocket_server() + + +def open_web_browser(web): + web.open_web_browser() diff --git a/src/blenderbim/blenderbim/tool/web.py b/src/blenderbim/blenderbim/tool/web.py index 591c6b59c5..87b975664a 100644 --- a/src/blenderbim/blenderbim/tool/web.py +++ b/src/blenderbim/blenderbim/tool/web.py @@ -59,6 +59,7 @@ class Web(blenderbim.core.tool.Web): global ws_process ws_path = os.path.join(bpy.context.scene.BIMProperties.data_dir, "webui", "sioserver.py") ws_process = subprocess.Popen(["python", ws_path, "--p", str(port), "--host", "127.0.0.1"]) + cls.open_web_browser(port) cls.set_is_running(True) @classmethod @@ -118,6 +119,10 @@ class Web(blenderbim.core.tool.Web): data["ifc_file"] = bpy.context.scene.BIMProperties.ifc_file return json.dumps(data) + @classmethod + def open_web_browser(cls, port): + webbrowser.open(f"http://127.0.0.1:{port}/") + @classmethod async def sio_connect(cls, url): await sio.connect(url, transports=["websocket"], namespaces="/blender")