diff --git a/src/bonsai/bonsai/bim/module/pset/operator.py b/src/bonsai/bonsai/bim/module/pset/operator.py index 5870547bce..24662bee04 100644 --- a/src/bonsai/bonsai/bim/module/pset/operator.py +++ b/src/bonsai/bonsai/bim/module/pset/operator.py @@ -440,5 +440,8 @@ class AddProposedProp(bpy.types.Operator): prop_value: bpy.props.StringProperty() def execute(self, context): - core.add_proposed_prop(tool.Pset, self.obj, self.obj_type, self.prop_name, self.prop_value) + res = core.add_proposed_prop(tool.Pset, self.obj, self.obj_type, self.prop_name, self.prop_value) + if res: + self.report({"ERROR"}, res) + return {"CANCELLED"} return {"FINISHED"} diff --git a/src/bonsai/bonsai/core/pset.py b/src/bonsai/bonsai/core/pset.py index c2b87836df..c96e5177ff 100644 --- a/src/bonsai/bonsai/core/pset.py +++ b/src/bonsai/bonsai/core/pset.py @@ -89,9 +89,12 @@ def enable_pset_editing( pset_tool.enable_proposed_pset(props, pset_name, pset_type, has_template) -def add_proposed_prop(pset: tool.Pset, obj_name: str, obj_type: tool.Ifc.OBJECT_TYPE, name: str, value: Any) -> None: +def add_proposed_prop( + pset: tool.Pset, obj_name: str, obj_type: tool.Ifc.OBJECT_TYPE, name: str, value: Any +) -> Union[None, str]: props = pset.get_pset_props(obj_name, obj_type) - pset.add_proposed_property(name, pset.cast_string_to_primitive(value), props) + res = pset.add_proposed_property(name, pset.cast_string_to_primitive(value), props) + return res def unshare_pset( diff --git a/src/bonsai/bonsai/tool/pset.py b/src/bonsai/bonsai/tool/pset.py index e5436513db..dcfa111872 100644 --- a/src/bonsai/bonsai/tool/pset.py +++ b/src/bonsai/bonsai/tool/pset.py @@ -297,9 +297,9 @@ class Pset(bonsai.core.tool.Pset): return bonsai.bim.schema.ifc.psetqto.get_by_name(name) @classmethod - def add_proposed_property(cls, name: str, value: Any, props: bpy.types.PropertyGroup) -> None: + def add_proposed_property(cls, name: str, value: Any, props: bpy.types.PropertyGroup) -> Union[None, str]: if props.properties.get(name): - return + return f"Property '{name}' already exists." prop = props.properties.add() prop.name = name metadata = prop.metadata