diff --git a/src/blenderbim/blenderbim/bim/data/webui/sioserver.py b/src/blenderbim/blenderbim/bim/data/webui/sioserver.py index 9d16717cc6..4876e578fe 100644 --- a/src/blenderbim/blenderbim/bim/data/webui/sioserver.py +++ b/src/blenderbim/blenderbim/bim/data/webui/sioserver.py @@ -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): diff --git a/src/blenderbim/blenderbim/core/web.py b/src/blenderbim/blenderbim/core/web.py index 581ca35772..d69508d901 100644 --- a/src/blenderbim/blenderbim/core/web.py +++ b/src/blenderbim/blenderbim/core/web.py @@ -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 diff --git a/src/blenderbim/blenderbim/tool/web.py b/src/blenderbim/blenderbim/tool/web.py index 47f83bd4e1..4c46930121 100644 --- a/src/blenderbim/blenderbim/tool/web.py +++ b/src/blenderbim/blenderbim/tool/web.py @@ -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")