From ad8d02bfedcf3ed8cd786a779dcadab5859aa35d Mon Sep 17 00:00:00 2001 From: Andrej730 Date: Tue, 8 Jul 2025 19:12:11 +0500 Subject: [PATCH] Groups UI - support renaming groups directly from UI Example - https://files.catbox.moe/u4b918.mp4 --- src/bonsai/bonsai/bim/module/group/operator.py | 2 +- src/bonsai/bonsai/bim/module/group/prop.py | 12 +++++++++++- src/bonsai/bonsai/bim/module/group/ui.py | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/bonsai/bonsai/bim/module/group/operator.py b/src/bonsai/bonsai/bim/module/group/operator.py index 13af368e58..cc0ea45dd5 100644 --- a/src/bonsai/bonsai/bim/module/group/operator.py +++ b/src/bonsai/bonsai/bim/module/group/operator.py @@ -50,7 +50,7 @@ class LoadGroups(bpy.types.Operator, tool.Ifc.Operator): def load_group(self, group: ifcopenshell.entity_instance, tree_depth: int = 0) -> None: new = self.props.groups.add() new.ifc_definition_id = group.id() - new.name = group.Name or "Unnamed" + new["name"] = group.Name or "Unnamed" new.tree_depth = tree_depth new.has_children = False new.is_expanded = group.id() in self.expanded_groups diff --git a/src/bonsai/bonsai/bim/module/group/prop.py b/src/bonsai/bonsai/bim/module/group/prop.py index 13af83f704..f87e021cde 100644 --- a/src/bonsai/bonsai/bim/module/group/prop.py +++ b/src/bonsai/bonsai/bim/module/group/prop.py @@ -38,8 +38,18 @@ def update_active_group_index(self, context): refresh_pset() +def update_name(self: "Group", context: object) -> None: + group = tool.Ifc.get_entity_by_id(self.ifc_definition_id) + # Theoretically group can be removed outside Group UI. + if not group: + return + if group.Name == self.name: + return + group.Name = self.name + + class Group(PropertyGroup): - name: StringProperty(name="Name") + name: StringProperty(name="Name", update=update_name) ifc_definition_id: IntProperty(name="IFC Definition ID") is_expanded: BoolProperty(name="Is Expanded", default=False) has_children: BoolProperty(name="Has Children", default=False) diff --git a/src/bonsai/bonsai/bim/module/group/ui.py b/src/bonsai/bonsai/bim/module/group/ui.py index c94c699c90..74c4dc01cd 100644 --- a/src/bonsai/bonsai/bim/module/group/ui.py +++ b/src/bonsai/bonsai/bim/module/group/ui.py @@ -141,4 +141,4 @@ class BIM_UL_groups(UIList): op.ifc_definition_id = item.ifc_definition_id op.index = index op.option = "Collapse" if item.is_expanded else "Expand" - row.label(text=item.name) + row.prop(item, "name", text="", emboss=False)