From 80b8da629defc37193e5a2288057e1072cec8a34 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Wed, 27 Oct 2021 09:35:31 +1100 Subject: [PATCH] Types in type dropdowns are now sorted alphabetically for convenience. --- .../blenderbim/bim/module/model/workspace.py | 2 +- src/blenderbim/blenderbim/bim/module/type/prop.py | 15 ++++++++------- src/blenderbim/blenderbim/bim/module/type/ui.py | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/blenderbim/blenderbim/bim/module/model/workspace.py b/src/blenderbim/blenderbim/bim/module/model/workspace.py index 4d271a6f57..2c845965e5 100644 --- a/src/blenderbim/blenderbim/bim/module/model/workspace.py +++ b/src/blenderbim/blenderbim/bim/module/model/workspace.py @@ -61,7 +61,7 @@ class BimTool(WorkSpaceTool): row.label(text="No IFC Class") else: row.prop(props, "ifc_class", text="") - if type_prop.getAvailableTypes(props, context): + if type_prop.get_relating_type(props, context): row.prop(props, "relating_type", text="") else: row.label(text="No Relating Type") diff --git a/src/blenderbim/blenderbim/bim/module/type/prop.py b/src/blenderbim/blenderbim/bim/module/type/prop.py index 7088cd20c6..01376affd2 100644 --- a/src/blenderbim/blenderbim/bim/module/type/prop.py +++ b/src/blenderbim/blenderbim/bim/module/type/prop.py @@ -58,11 +58,11 @@ def getIfcTypes(self, context): return type_classes_enum -def getAvailableTypes(self, context): +def get_relating_type(self, context): global available_types_enum if len(available_types_enum) < 1 and getIfcTypes(self, context): - elements = IfcStore.get_file().by_type(self.ifc_class) - available_types_enum.extend((str(e.id()), e.Name, "") for e in elements) + elements = [(str(e.id()), e.Name, "") for e in IfcStore.get_file().by_type(self.ifc_class)] + available_types_enum.extend(sorted(elements, key=lambda s: s[1])) return available_types_enum @@ -82,11 +82,12 @@ def getApplicableTypes(self, context): return applicable_types_enum -def getRelatingTypes(self, context): +def get_object_relating_type(self, context): global relating_types_enum if len(relating_types_enum) < 1: elements = IfcStore.get_file().by_type(context.active_object.BIMTypeProperties.relating_type_class) - relating_types_enum.extend((str(e.id()), e.Name, "") for e in elements) + elements = [(str(e.id()), e.Name, "") for e in elements] + relating_types_enum.extend(sorted(elements, key=lambda s: s[1])) return relating_types_enum @@ -99,10 +100,10 @@ def updateTypeDropdowns(self, context): class BIMTypeProperties(PropertyGroup): ifc_class: bpy.props.EnumProperty(items=getIfcTypes, name="IFC Class", update=updateTypeInstanceIfcClass) - relating_type: bpy.props.EnumProperty(items=getAvailableTypes, name="Relating Type") + relating_type: bpy.props.EnumProperty(items=get_relating_type, name="Relating Type") class BIMTypeObjectProperties(PropertyGroup): is_editing_type: BoolProperty(name="Is Editing Type", update=updateTypeDropdowns) relating_type_class: EnumProperty(items=getApplicableTypes, name="Relating Type Class") - relating_type: EnumProperty(items=getRelatingTypes, name="Relating Type") + relating_type: EnumProperty(items=get_object_relating_type, name="Relating Type") diff --git a/src/blenderbim/blenderbim/bim/module/type/ui.py b/src/blenderbim/blenderbim/bim/module/type/ui.py index 4dc3ba3ecd..274339e58f 100644 --- a/src/blenderbim/blenderbim/bim/module/type/ui.py +++ b/src/blenderbim/blenderbim/bim/module/type/ui.py @@ -69,7 +69,7 @@ class BIM_PT_type(Panel): row = self.layout.row(align=True) row.prop(props, "relating_type_class", text="") - if type_prop.getRelatingTypes(None, context): + if type_prop.get_object_relating_type(None, context): row.prop(props, "relating_type", text="") row.operator("bim.assign_type", icon="CHECKMARK", text="") else: