From 4e1ff8ea6a9ebc7e8e80d9c2c943efcfe096f6b8 Mon Sep 17 00:00:00 2001 From: tim Date: Fri, 7 Feb 2025 10:42:51 -0500 Subject: [PATCH] Icon mode for IFC Modes Added UIData class with function for storing icon color mode. IFC Mode dropdown now supports blender dark, blender light, and custom "white" themes --- src/bonsai/bonsai/bim/module/geometry/ui.py | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/bonsai/bonsai/bim/module/geometry/ui.py b/src/bonsai/bonsai/bim/module/geometry/ui.py index 80f5751eec..f76bbed893 100644 --- a/src/bonsai/bonsai/bim/module/geometry/ui.py +++ b/src/bonsai/bonsai/bim/module/geometry/ui.py @@ -32,13 +32,30 @@ from bonsai.bim.module.geometry.data import ( from bonsai.bim.module.layer.data import LayersData +class UIData: + data = {} + is_loaded = False + + @classmethod + def load(cls): + cls.data = {"menu_icon_color_mode": cls.icon_color_mode("user_interface.wcol_menu.text")} + cls.is_loaded = True + + @classmethod + def icon_color_mode(cls, color_path): + return tool.Blender.detect_icon_color_mode(color_path) + + def mode_menu(self, context): if not tool.Ifc.get(): return + if not UIData.is_loaded: + UIData.load() + ifc_icon = f"{UIData.data['menu_icon_color_mode']}_ifc" row = self.layout.row(align=True) if context.scene.BIMGeometryProperties.mode == "EDIT": row.operator("bim.override_mode_set_object", icon="CANCEL", text="Discard Changes").should_save = False - row.prop(context.scene.BIMGeometryProperties, "mode", text="", icon_value=bonsai.bim.icons["IFC"].icon_id) + row.prop(context.scene.BIMGeometryProperties, "mode", text="", icon_value=bonsai.bim.icons[ifc_icon].icon_id) def object_menu(self, context):