From 7df2bb33c2d4a6c5336b50eaad044185ce06fc92 Mon Sep 17 00:00:00 2001 From: vocx-fc Date: Wed, 27 May 2020 02:18:45 -0500 Subject: [PATCH] Draft: hide properties of other array types in Array class Leave only the corresponding properties by examining the value of `ArrayType`. --- src/Mod/Draft/draftobjects/array.py | 42 ++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/src/Mod/Draft/draftobjects/array.py b/src/Mod/Draft/draftobjects/array.py index f5ca116f04..ceec461be6 100644 --- a/src/Mod/Draft/draftobjects/array.py +++ b/src/Mod/Draft/draftobjects/array.py @@ -65,6 +65,8 @@ class Array(DraftLink): self.set_polar_properties(obj) self.set_circular_properties(obj) + # The ArrayType property (general) must be attached + # after the other array properties so that onChanged works properly self.set_general_properties(obj) self.set_link_properties(obj) @@ -293,7 +295,11 @@ class Array(DraftLink): def onChanged(self, obj, prop): """Execute when a property is changed.""" super(Array, self).onChanged(obj, prop) - print(prop, ": ", getattr(obj, prop)) + # print(prop, ": ", getattr(obj, prop)) + self.show_and_hide(obj, prop) + + def show_and_hide(self, obj, prop): + """Show and hide the properties depending on the touched property.""" if prop == "AxisReference": if obj.AxisReference: obj.setEditorMode("Center", 1) @@ -302,6 +308,40 @@ class Array(DraftLink): obj.setEditorMode("Center", 0) obj.setEditorMode("Axis", 0) + if prop == "ArrayType": + if obj.ArrayType == "ortho": + for pr in ("NumberX", "NumberY", "NumberZ", + "IntervalX", "IntervalY", "IntervalZ"): + obj.setPropertyStatus(pr, "-Hidden") + + for pr in ("Axis", "Center", "NumberPolar", "Angle", + "IntervalAxis", "NumberCircles", + "RadialDistance", "TangentialDistance", + "Symmetry"): + obj.setPropertyStatus(pr, "Hidden") + + if obj.ArrayType == "polar": + for pr in ("Axis", "Center", "NumberPolar", + "Angle", "IntervalAxis"): + obj.setPropertyStatus(pr, "-Hidden") + + for pr in ("NumberX", "NumberY", "NumberZ", + "IntervalX", "IntervalY", "IntervalZ", + "NumberCircles", "RadialDistance", + "TangentialDistance", "Symmetry"): + obj.setPropertyStatus(pr, "Hidden") + + if obj.ArrayType == "circular": + for pr in ("Axis", "Center", "NumberCircles", + "RadialDistance", "TangentialDistance", + "Symmetry"): + obj.setPropertyStatus(pr, "-Hidden") + + for pr in ("NumberX", "NumberY", "NumberZ", + "IntervalX", "IntervalY", "IntervalZ", + "NumberPolar", "Angle", "IntervalAxis"): + obj.setPropertyStatus(pr, "Hidden") + def execute(self, obj): """Execture when the object is created or recomputed.""" if obj.Base: