mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-10 17:58:20 +00:00
change ui to show buttons according to connected/running
and moved setting is_connected and is_running to inside the tool itself
This commit is contained in:
@@ -35,21 +35,23 @@ class BIM_PT_webui(Panel):
|
||||
props = scene.WebProperties
|
||||
|
||||
row = layout.row()
|
||||
row.prop(props, "webserver_port", text="Webserver Port")
|
||||
row.prop(props, "webserver_port", text="Websocket server Port")
|
||||
|
||||
if props.is_running:
|
||||
row = layout.row()
|
||||
row.label(text=f"Webserver running on port {props.webserver_port}")
|
||||
row.label(text=f"Running on port: {props.webserver_port}")
|
||||
|
||||
row = layout.row()
|
||||
row.operator("bim.connect_websocket_server")
|
||||
|
||||
if props.is_connected:
|
||||
row = layout.row()
|
||||
row.label(text=f"Connected to Webserver on port {props.webserver_port}")
|
||||
row.label(text=f"Connected on port: {props.webserver_port}")
|
||||
|
||||
row = layout.row()
|
||||
row.operator("bim.kill_websocket_server")
|
||||
if props.is_running:
|
||||
row = layout.row()
|
||||
row.operator("bim.kill_websocket_server")
|
||||
|
||||
row = layout.row()
|
||||
row.operator("bim.disconnect_websocket_server")
|
||||
if props.is_connected:
|
||||
row = layout.row()
|
||||
row.operator("bim.disconnect_websocket_server")
|
||||
|
||||
@@ -10,20 +10,13 @@ def connect_websocket_server(web, port):
|
||||
# check if port already has a server listening to it
|
||||
if web.is_port_available(port):
|
||||
web.start_websocket_server(port)
|
||||
web.set_is_running(True)
|
||||
else:
|
||||
web.set_is_running(False)
|
||||
|
||||
web.connect_websocket_server(port)
|
||||
web.set_is_connected(True)
|
||||
|
||||
|
||||
def disconnect_websocket_server(web):
|
||||
web.disconnect_websocket_server()
|
||||
web.set_is_connected(False)
|
||||
|
||||
|
||||
def kill_websocket_server(web):
|
||||
web.kill_websocket_server()
|
||||
web.set_is_running(False)
|
||||
web.set_is_connected(False)
|
||||
|
||||
@@ -59,11 +59,16 @@ 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.set_is_running(True)
|
||||
|
||||
@classmethod
|
||||
def connect_websocket_server(cls, port):
|
||||
global ws_thread, sio
|
||||
|
||||
if bpy.context.scene.WebProperties.is_connected:
|
||||
print(f"Already connected to websocket server on port: {port}")
|
||||
return
|
||||
|
||||
sio = socketio.AsyncClient(reconnection=True, reconnection_attempts=3, reconnection_delay=2, logger=True)
|
||||
|
||||
ws_thread = AsyncioThread()
|
||||
@@ -72,6 +77,7 @@ class Web(blenderbim.core.tool.Web):
|
||||
|
||||
ws_url = f"ws://localhost:{port}/blender"
|
||||
ws_thread.run_coro(cls.sio_connect(ws_url))
|
||||
cls.set_is_connected(True)
|
||||
|
||||
@classmethod
|
||||
def disconnect_websocket_server(cls):
|
||||
@@ -80,21 +86,25 @@ class Web(blenderbim.core.tool.Web):
|
||||
ws_thread.stop()
|
||||
ws_thread = None
|
||||
sio = None
|
||||
cls.set_is_connected(False)
|
||||
|
||||
@classmethod
|
||||
def kill_websocket_server(cls):
|
||||
global ws_process
|
||||
|
||||
if ws_process is None:
|
||||
print("No webserver running")
|
||||
print("No Websocket server running")
|
||||
return
|
||||
|
||||
cls.disconnect_websocket_server()
|
||||
if bpy.context.scene.WebProperties.is_connected:
|
||||
cls.disconnect_websocket_server()
|
||||
|
||||
ws_process.terminate()
|
||||
ws_process.wait()
|
||||
ws_process = None
|
||||
cls.set_is_running(False)
|
||||
|
||||
print("Webserver terminated successfully")
|
||||
print("Websocket server terminated successfully")
|
||||
|
||||
@classmethod
|
||||
def send_webui_data(cls):
|
||||
|
||||
Reference in New Issue
Block a user