Fix #2781. Usability bug where it wasn't clear references were only loaded from the active external classification library.

This commit is contained in:
Dion Moult
2023-02-28 12:39:15 +11:00
parent 5a40519114
commit 2f614330c9
2 changed files with 13 additions and 8 deletions
@@ -65,12 +65,13 @@ class ClassificationsData:
class ReferencesData:
@classmethod
def is_available_classification_added(cls):
def active_classification_library(cls):
if not IfcStore.classification_file or not IfcStore.classification_file.by_type("IfcClassification"):
return False
props = bpy.context.scene.BIMClassificationProperties
name = IfcStore.classification_file.by_id(int(props.available_classifications)).Name
return name in [e.Name for e in tool.Ifc.get().by_type("IfcClassification")]
if name in [e.Name for e in tool.Ifc.get().by_type("IfcClassification")]:
return name
class ClassificationReferencesData(ReferencesData):
@@ -81,7 +82,7 @@ class ClassificationReferencesData(ReferencesData):
def load(cls):
cls.is_loaded = True
cls.data["references"] = cls.references()
cls.data["is_available_classification_added"] = cls.is_available_classification_added()
cls.data["active_classification_library"] = cls.active_classification_library()
@classmethod
def references(cls):
@@ -103,7 +104,7 @@ class MaterialClassificationsData(ReferencesData):
def load(cls):
cls.is_loaded = True
cls.data["references"] = cls.references()
cls.data["is_available_classification_added"] = cls.is_available_classification_added()
cls.data["active_classification_library"] = cls.active_classification_library()
@classmethod
def references(cls):
@@ -125,7 +126,7 @@ class CostClassificationsData(ReferencesData):
def load(cls):
cls.is_loaded = True
cls.data["references"] = cls.references()
cls.data["is_available_classification_added"] = cls.is_available_classification_added()
cls.data["active_classification_library"] = cls.active_classification_library()
@classmethod
def references(cls):
@@ -100,12 +100,16 @@ class ReferenceUI:
self.draw_reference_ui(reference)
def draw_add_ui(self, context):
if not self.data.data["is_available_classification_added"]:
if not self.data.data["active_classification_library"]:
row = self.layout.row(align=True)
row.label(text="No Active Classification Library")
row.operator("bim.load_classification_library", text="", icon="IMPORT")
return
row = self.layout.row(align=True)
row.prop(self.sprops, "available_classifications", text="")
row.label(text=f"Active Classification Library: {self.data.data['active_classification_library']}")
#row.prop(self.sprops, "available_classifications", text="")
if not self.sprops.available_library_references:
op = row.operator("bim.change_classification_level", text="", icon="IMPORT")
op = row.operator("bim.change_classification_level", text="", icon="GREASEPENCIL")
op.parent_id = int(self.sprops.available_classifications)
return
if self.sprops.active_library_referenced_source: