mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-05 23:41:44 +00:00
add getting and sending theme data from blender
This commit is contained in:
@@ -34,7 +34,7 @@ sio.attach(app)
|
||||
|
||||
# represents a caching for blender messages
|
||||
blender_messages = {}
|
||||
blender_them_data = {}
|
||||
blender_theme = {}
|
||||
|
||||
|
||||
# Web namespace
|
||||
@@ -46,7 +46,7 @@ class WebNamespace(socketio.AsyncNamespace):
|
||||
print(f"Web client connected: {sid}")
|
||||
if blender_messages:
|
||||
await sio.emit("connected_clients", list(blender_messages.keys()), namespace="/web", room=sid)
|
||||
await sio.emit("theme_data", blender_them_data, namespace="/web", room=sid)
|
||||
await sio.emit("theme_data", blender_theme, namespace="/web", room=sid)
|
||||
await self.send_cached_messages(sid)
|
||||
|
||||
async def on_disconnect(self, sid):
|
||||
|
||||
@@ -8,6 +8,7 @@ def connect_websocket_server(web, port):
|
||||
web.start_websocket_server(port)
|
||||
if web.has_started(port):
|
||||
web.connect_websocket_server(port)
|
||||
web.send_theme_data()
|
||||
web.open_web_browser(port)
|
||||
return
|
||||
|
||||
|
||||
@@ -375,6 +375,28 @@ class Web(blenderbim.core.tool.Web):
|
||||
def open_web_browser(cls, port: int) -> None:
|
||||
webbrowser.open(f"http://127.0.0.1:{port}/")
|
||||
|
||||
@classmethod
|
||||
def send_theme_data(cls) -> None:
|
||||
def get_color(theme, attribute) -> tuple[Any, ...]:
|
||||
return tuple(getattr(theme, attribute)[:])
|
||||
|
||||
prefs = bpy.context.preferences.themes[0].preferences.space
|
||||
panel = prefs.panelcolors
|
||||
view_3d = bpy.context.preferences.themes[0].view_3d
|
||||
theme = {
|
||||
"window_background": get_color(prefs, "back"),
|
||||
# "title": get_color(prefs, "title"),
|
||||
"text": get_color(prefs, "text"),
|
||||
# "header": get_color(prefs, "header"),
|
||||
# "header_text": get_color(prefs, "header_text"),
|
||||
# "header_text_highlight": get_color(prefs, "header_text_hi"),
|
||||
"navigation_bar": get_color(prefs, "navigation_bar"),
|
||||
"panel_header": get_color(panel, "header"),
|
||||
"panel_background": get_color(panel, "back"),
|
||||
"active_object": get_color(view_3d, "object_active"),
|
||||
}
|
||||
cls.send_webui_data(theme, "theme", "theme_data", use_web_data=False)
|
||||
|
||||
@classmethod
|
||||
async def sio_connect(cls, url: str) -> None:
|
||||
await sio.connect(url, transports=["websocket"], namespaces="/blender")
|
||||
|
||||
Reference in New Issue
Block a user