mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-23 14:26:30 +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
|
props = scene.WebProperties
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.prop(props, "webserver_port", text="Webserver Port")
|
row.prop(props, "webserver_port", text="Websocket server Port")
|
||||||
|
|
||||||
if props.is_running:
|
if props.is_running:
|
||||||
row = layout.row()
|
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 = layout.row()
|
||||||
row.operator("bim.connect_websocket_server")
|
row.operator("bim.connect_websocket_server")
|
||||||
|
|
||||||
if props.is_connected:
|
if props.is_connected:
|
||||||
row = layout.row()
|
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()
|
if props.is_running:
|
||||||
row.operator("bim.kill_websocket_server")
|
row = layout.row()
|
||||||
|
row.operator("bim.kill_websocket_server")
|
||||||
|
|
||||||
row = layout.row()
|
if props.is_connected:
|
||||||
row.operator("bim.disconnect_websocket_server")
|
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
|
# check if port already has a server listening to it
|
||||||
if web.is_port_available(port):
|
if web.is_port_available(port):
|
||||||
web.start_websocket_server(port)
|
web.start_websocket_server(port)
|
||||||
web.set_is_running(True)
|
|
||||||
else:
|
|
||||||
web.set_is_running(False)
|
|
||||||
|
|
||||||
web.connect_websocket_server(port)
|
web.connect_websocket_server(port)
|
||||||
web.set_is_connected(True)
|
|
||||||
|
|
||||||
|
|
||||||
def disconnect_websocket_server(web):
|
def disconnect_websocket_server(web):
|
||||||
web.disconnect_websocket_server()
|
web.disconnect_websocket_server()
|
||||||
web.set_is_connected(False)
|
|
||||||
|
|
||||||
|
|
||||||
def kill_websocket_server(web):
|
def kill_websocket_server(web):
|
||||||
web.kill_websocket_server()
|
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
|
global ws_process
|
||||||
ws_path = os.path.join(bpy.context.scene.BIMProperties.data_dir, "webui", "sioserver.py")
|
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"])
|
ws_process = subprocess.Popen(["python", ws_path, "--p", str(port), "--host", "127.0.0.1"])
|
||||||
|
cls.set_is_running(True)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def connect_websocket_server(cls, port):
|
def connect_websocket_server(cls, port):
|
||||||
global ws_thread, sio
|
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)
|
sio = socketio.AsyncClient(reconnection=True, reconnection_attempts=3, reconnection_delay=2, logger=True)
|
||||||
|
|
||||||
ws_thread = AsyncioThread()
|
ws_thread = AsyncioThread()
|
||||||
@@ -72,6 +77,7 @@ class Web(blenderbim.core.tool.Web):
|
|||||||
|
|
||||||
ws_url = f"ws://localhost:{port}/blender"
|
ws_url = f"ws://localhost:{port}/blender"
|
||||||
ws_thread.run_coro(cls.sio_connect(ws_url))
|
ws_thread.run_coro(cls.sio_connect(ws_url))
|
||||||
|
cls.set_is_connected(True)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def disconnect_websocket_server(cls):
|
def disconnect_websocket_server(cls):
|
||||||
@@ -80,21 +86,25 @@ class Web(blenderbim.core.tool.Web):
|
|||||||
ws_thread.stop()
|
ws_thread.stop()
|
||||||
ws_thread = None
|
ws_thread = None
|
||||||
sio = None
|
sio = None
|
||||||
|
cls.set_is_connected(False)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def kill_websocket_server(cls):
|
def kill_websocket_server(cls):
|
||||||
global ws_process
|
global ws_process
|
||||||
|
|
||||||
if ws_process is None:
|
if ws_process is None:
|
||||||
print("No webserver running")
|
print("No Websocket server running")
|
||||||
return
|
return
|
||||||
|
|
||||||
cls.disconnect_websocket_server()
|
if bpy.context.scene.WebProperties.is_connected:
|
||||||
|
cls.disconnect_websocket_server()
|
||||||
|
|
||||||
ws_process.terminate()
|
ws_process.terminate()
|
||||||
ws_process.wait()
|
ws_process.wait()
|
||||||
ws_process = None
|
ws_process = None
|
||||||
|
cls.set_is_running(False)
|
||||||
|
|
||||||
print("Webserver terminated successfully")
|
print("Websocket server terminated successfully")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def send_webui_data(cls):
|
def send_webui_data(cls):
|
||||||
|
|||||||
Reference in New Issue
Block a user