mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-09-21 12:43:43 +00:00
refactor web ui operator handling
This commit is contained in:
@@ -38,7 +38,7 @@ class WebNamespace(socketio.AsyncNamespace):
|
|||||||
async def on_web_operator(self, sid, data):
|
async def on_web_operator(self, sid, data):
|
||||||
await sio.emit(
|
await sio.emit(
|
||||||
"web_operator",
|
"web_operator",
|
||||||
data["operator"],
|
data,
|
||||||
namespace="/blender",
|
namespace="/blender",
|
||||||
room=data["blenderId"],
|
room=data["blenderId"],
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -167,10 +167,11 @@ function addTableElement(blenderId, csvData, filename) {
|
|||||||
var tableId = row.getTable().element.id.substr(6);
|
var tableId = row.getTable().element.id.substr(6);
|
||||||
|
|
||||||
const msg = {
|
const msg = {
|
||||||
|
sourcePage: "csv",
|
||||||
blenderId: tableId,
|
blenderId: tableId,
|
||||||
operator: {
|
operator: {
|
||||||
type: "selection",
|
type: "selection",
|
||||||
GlobalId: index,
|
globalId: index,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
socket.emit("web_operator", msg);
|
socket.emit("web_operator", msg);
|
||||||
|
|||||||
@@ -141,20 +141,29 @@ class Web(blenderbim.core.tool.Web):
|
|||||||
return None # unregister timer if not connected
|
return None # unregister timer if not connected
|
||||||
|
|
||||||
while not web_operator_queue.empty():
|
while not web_operator_queue.empty():
|
||||||
operator_data = web_operator_queue.get_nowait()
|
operator = web_operator_queue.get_nowait()
|
||||||
if not operator_data:
|
if not operator:
|
||||||
continue
|
continue
|
||||||
|
if operator["sourcePage"] == "csv":
|
||||||
if operator_data["type"] == "selection":
|
cls.handle_csv_operator(operator["operator"])
|
||||||
bpy.ops.object.select_all(action="DESELECT")
|
elif operator["sourcePage"] == "gantt":
|
||||||
guid = operator_data["GlobalId"]
|
cls.handle_gantt_operator(operator["operator"])
|
||||||
ele = tool.Ifc.get().by_guid(guid)
|
|
||||||
obj = tool.Ifc.get_object(ele)
|
|
||||||
bpy.context.view_layer.objects.active = obj
|
|
||||||
obj.select_set(True)
|
|
||||||
|
|
||||||
return 1.0
|
return 1.0
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def handle_csv_operator(cls, operator_data):
|
||||||
|
if operator_data["type"] == "selection":
|
||||||
|
bpy.ops.object.select_all(action="DESELECT")
|
||||||
|
guid = operator_data["globalId"]
|
||||||
|
ele = tool.Ifc.get().by_guid(guid)
|
||||||
|
obj = tool.Ifc.get_object(ele)
|
||||||
|
bpy.context.view_layer.objects.active = obj
|
||||||
|
obj.select_set(True)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def handle_gantt_operator(cls, operator_data):
|
||||||
|
pass
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def open_web_browser(cls, port):
|
def open_web_browser(cls, port):
|
||||||
webbrowser.open(f"http://127.0.0.1:{port}/")
|
webbrowser.open(f"http://127.0.0.1:{port}/")
|
||||||
@@ -162,9 +171,7 @@ class Web(blenderbim.core.tool.Web):
|
|||||||
@classmethod
|
@classmethod
|
||||||
async def sio_connect(cls, url):
|
async def sio_connect(cls, url):
|
||||||
await sio.connect(url, transports=["websocket"], namespaces="/blender")
|
await sio.connect(url, transports=["websocket"], namespaces="/blender")
|
||||||
|
sio.on("web_operator", cls.sio_listen_web_operator, namespace="/blender")
|
||||||
# TODO: register event handlers to handle incoming messages
|
|
||||||
sio.on("web_operator", cls.sio_handle_web_operator, namespace="/blender")
|
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def sio_disconnect(cls):
|
async def sio_disconnect(cls):
|
||||||
@@ -175,7 +182,7 @@ class Web(blenderbim.core.tool.Web):
|
|||||||
await sio.emit(event, data, namespace=namespace)
|
await sio.emit(event, data, namespace=namespace)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
async def sio_handle_web_operator(cls, data):
|
async def sio_listen_web_operator(cls, data):
|
||||||
try:
|
try:
|
||||||
web_operator_queue.put_nowait(data)
|
web_operator_queue.put_nowait(data)
|
||||||
except queue.Full:
|
except queue.Full:
|
||||||
|
|||||||
Reference in New Issue
Block a user