From 9690bfb1ed2a3abf2b36bd3dec084b3db5148721 Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Mon, 8 Jul 2024 14:50:18 +0500 Subject: [PATCH] Styles UI - support renaming styles by double click Example - https://imgur.com/a/X7WBllz --- src/blenderbim/blenderbim/bim/module/style/prop.py | 7 ++++++- src/blenderbim/blenderbim/bim/module/style/ui.py | 2 +- src/blenderbim/blenderbim/tool/style.py | 7 +++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/style/prop.py b/src/blenderbim/blenderbim/bim/module/style/prop.py index b420aba834..d64fc8769a 100644 --- a/src/blenderbim/blenderbim/bim/module/style/prop.py +++ b/src/blenderbim/blenderbim/bim/module/style/prop.py @@ -51,8 +51,13 @@ def get_reflectance_methods(self, context): return StylesData.data["reflectance_methods"] +def update_style_name(self: "Style", context: bpy.types.Context) -> None: + style = tool.Ifc.get().by_id(self.ifc_definition_id) + tool.Style.rename_style(style, self.name) + + class Style(PropertyGroup): - name: StringProperty(name="Name") + name: StringProperty(name="Name", update=update_style_name) ifc_definition_id: IntProperty(name="IFC Definition ID") total_elements: IntProperty(name="Total Elements") style_classes: CollectionProperty(name="Style Classes", type=StrProperty) diff --git a/src/blenderbim/blenderbim/bim/module/style/ui.py b/src/blenderbim/blenderbim/bim/module/style/ui.py index 9bcb3353ba..1702001672 100644 --- a/src/blenderbim/blenderbim/bim/module/style/ui.py +++ b/src/blenderbim/blenderbim/bim/module/style/ui.py @@ -265,7 +265,7 @@ class BIM_UL_styles(UIList): def draw_item(self, context, layout, data, item, icon, active_data, active_propname): if item: row = layout.row(align=True) - row.label(text=item.name) + row.prop(item, "name", text="", emboss=False) if item.has_surface_colour: row = row.row(align=True) row.enabled = False diff --git a/src/blenderbim/blenderbim/tool/style.py b/src/blenderbim/blenderbim/tool/style.py index ac83589bb6..f3f0b7985c 100644 --- a/src/blenderbim/blenderbim/tool/style.py +++ b/src/blenderbim/blenderbim/tool/style.py @@ -663,3 +663,10 @@ class Style(blenderbim.core.tool.Style): tool.Loader.create_surface_style_with_textures(blender_material, rendering_style, texture_style) else: assert_never(style_type) + + @classmethod + def rename_style(cls, style: ifcopenshell.entity_instance, name: str) -> None: + """Rename style and related blender material.""" + blender_material = tool.Ifc.get_object(style) + # Will implicitly update the style name using handler. + blender_material.name = name