Skip to content

Commit

Permalink
Fix pset template UI bug where changing to another prop didn't cancel…
Browse files Browse the repository at this point in the history
… editing older props. Also add support for blank or falsey enums (e.g. a real of 0.0).
  • Loading branch information
Moult committed Sep 1, 2022
1 parent f2bd362 commit a800d1a
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 6 deletions.
Expand Up @@ -240,6 +240,7 @@ def _execute(self, context):
IfcStore.pset_template_file,
**{"pset_template": IfcStore.pset_template_file.by_id(pset_template_id)}
)
bpy.ops.bim.disable_editing_prop_template()


class RemovePropTemplate(bpy.types.Operator, Operator):
Expand Down Expand Up @@ -294,7 +295,7 @@ def generate_prop_enum(self, props):
"IFCPROPERTYENUMERATION",
Name=prop.name,
EnumerationValues=tuple(
self.file.create_entity(prop.primary_measure_type, ev[data_type]) for ev in prop.enum_values
self.file.create_entity(prop.primary_measure_type, getattr(ev, data_type)) for ev in prop.enum_values
),
)
return prop_enum
43 changes: 39 additions & 4 deletions src/blenderbim/test/bim/feature/pset_template.feature
Expand Up @@ -56,32 +56,67 @@ Scenario: Remove prop template
When I load a new pset template file
And I press "bim.add_pset_template"
And I press "bim.add_prop_template"
And the variable "prop_template" is "2"
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
And I press "bim.remove_prop_template(prop_template={prop_template})"
Then nothing happens

Scenario: Enable editing prop template
Given an empty IFC project
When I load a new pset template file
And I press "bim.add_pset_template"
And the variable "prop_template" is "2"
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
And I press "bim.enable_editing_prop_template(prop_template={prop_template})"
Then nothing happens

Scenario: Edit prop template
Given an empty IFC project
When I load a new pset template file
And I press "bim.add_pset_template"
And the variable "prop_template" is "2"
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
And I press "bim.enable_editing_prop_template(prop_template={prop_template})"
And I press "bim.edit_prop_template"
Then nothing happens

Scenario: Edit prop template - enumeration property
Given an empty IFC project
When I load a new pset template file
And I press "bim.add_pset_template"
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
And I press "bim.enable_editing_prop_template(prop_template={prop_template})"
And I set "scene.BIMPsetTemplateProperties.active_prop_template.template_type" to "P_ENUMERATEDVALUE"
And I press "bim.edit_prop_template"
Then nothing happens

Scenario: Add prop enum
Given an empty IFC project
When I load a new pset template file
And I press "bim.add_pset_template"
And I press "bim.add_prop_template"
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
And I press "bim.enable_editing_prop_template(prop_template={prop_template})"
And I set "scene.BIMPsetTemplateProperties.active_prop_template.template_type" to "P_ENUMERATEDVALUE"
And I press "bim.add_prop_enum"
And I press "bim.edit_prop_template"
Then nothing happens

Scenario: Delete prop enum
Given an empty IFC project
When I load a new pset template file
And I press "bim.add_pset_template"
And I press "bim.add_prop_template"
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
And I press "bim.enable_editing_prop_template(prop_template={prop_template})"
And I set "scene.BIMPsetTemplateProperties.active_prop_template.template_type" to "P_ENUMERATEDVALUE"
And I press "bim.add_prop_enum"
And I press "bim.delete_prop_enum(index=0)"
And I press "bim.edit_prop_template"
Then nothing happens

Scenario: Disable editing prop template
Given an empty IFC project
When I load a new pset template file
And I press "bim.add_pset_template"
And the variable "prop_template" is "2"
And the variable "prop_template" is "{pset_ifc}.by_type('IfcSimplePropertyTemplate')[-1].id()"
And I press "bim.enable_editing_prop_template(prop_template={prop_template})"
And I press "bim.disable_editing_prop_template"
Then nothing happens
2 changes: 1 addition & 1 deletion src/blenderbim/test/bim/test_feature.py
Expand Up @@ -29,7 +29,7 @@

scenarios("feature")

variables = {"cwd": os.getcwd(), "ifc": "IfcStore.get_file()"}
variables = {"cwd": os.getcwd(), "ifc": "IfcStore.get_file()", "pset_ifc": "IfcStore.pset_template_file"}

# Monkey-patch webbrowser opening since we want to test headlessly
webbrowser.open = lambda x: True
Expand Down

0 comments on commit a800d1a

Please sign in to comment.