add getting and sending theme data from blender

This commit is contained in:
Ziad-I
2024-08-02 09:49:26 +03:00
committed by Dion Moult
parent 4f28b2506d
commit f2b4bea4de
3 changed files with 25 additions and 2 deletions
@@ -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):
+1
View File
@@ -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
+22
View File
@@ -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")