From 954771ccbae00abc95b8bd15e570273d29730f58 Mon Sep 17 00:00:00 2001 From: Markus Lampert Date: Sat, 25 Aug 2018 15:55:26 -0700 Subject: [PATCH] Added automatic setting of operation values from the setup sheet during creation. --- src/Mod/Path/PathScripts/PathOp.py | 10 ++++++---- src/Mod/Path/PathScripts/PathSetupSheet.py | 15 ++++++++++++++- src/Mod/Path/PathScripts/PathSetupSheetGui.py | 2 ++ .../Path/PathScripts/PathSetupSheetOpPrototype.py | 7 ++++--- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/Mod/Path/PathScripts/PathOp.py b/src/Mod/Path/PathScripts/PathOp.py index ade41b93ab..6be0a97bd1 100644 --- a/src/Mod/Path/PathScripts/PathOp.py +++ b/src/Mod/Path/PathScripts/PathOp.py @@ -163,7 +163,10 @@ class ObjectOp(object): self.initOperation(obj) if not hasattr(obj, 'DoNotSetDefaultValues') or not obj.DoNotSetDefaultValues: - if self.setDefaultValues(obj): + job = self.setDefaultValues(obj) + if job: + job.SetupSheet.Proxy.setOperationProperties(obj, name) + obj.recompute() obj.Proxy = self def setEditorModes(self, obj, features): @@ -290,7 +293,7 @@ class ObjectOp(object): else: obj.ToolController = PathUtils.findToolController(obj) if not obj.ToolController: - return False + return None obj.OpToolDiameter = obj.ToolController.Tool.Diameter if FeatureDepths & features: @@ -321,8 +324,7 @@ class ObjectOp(object): obj.UseStartPoint = False self.opSetDefaultValues(obj, job) - obj.recompute() - return True + return job def _setBaseAndStock(self, obj, ignoreErrors=False): job = PathUtils.findParentJob(obj) diff --git a/src/Mod/Path/PathScripts/PathSetupSheet.py b/src/Mod/Path/PathScripts/PathSetupSheet.py index 1fdb038c8e..e0c9e09cde 100644 --- a/src/Mod/Path/PathScripts/PathSetupSheet.py +++ b/src/Mod/Path/PathScripts/PathSetupSheet.py @@ -29,6 +29,7 @@ import PathScripts.PathLog as PathLog import PathScripts.PathSetupSheetOpPrototype as PathSetupSheetOpPrototype import PathScripts.PathUtil as PathUtil import PySide +import traceback __title__ = "Setup Sheet for a Job." __author__ = "sliptonic (Brad Collette)" @@ -37,7 +38,7 @@ __doc__ = "A container for all default values and job specific configuration val _RegisteredOps = {} -if False: +if True: PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule()) PathLog.trackModule() else: @@ -246,6 +247,18 @@ class SetupSheet: break return ops + def setOperationProperties(self, obj, opName): + PathLog.track(obj.Label, opName) + try: + op = _RegisteredOps[opName] + for prop in op.properties(): + propName = OpPropertyName(opName, prop) + if hasattr(self.obj, propName): + setattr(obj, prop, getattr(self.obj, propName)) + except Exception as exc: + PathLog.track(exc) + traceback.print_exc(exc) + pass def Create(name = 'SetupSheet'): obj = FreeCAD.ActiveDocument.addObject('App::FeaturePython', name) diff --git a/src/Mod/Path/PathScripts/PathSetupSheetGui.py b/src/Mod/Path/PathScripts/PathSetupSheetGui.py index 745978fe45..78be36f091 100644 --- a/src/Mod/Path/PathScripts/PathSetupSheetGui.py +++ b/src/Mod/Path/PathScripts/PathSetupSheetGui.py @@ -250,6 +250,7 @@ class TaskPanel: self.rapidHorizontal.updateProperty() def updateUI(self): + PathLog.track() self.globalForm.startDepthExpr.setText( self.obj.StartDepthExpression) self.globalForm.finalDepthExpr.setText( self.obj.FinalDepthExpression) self.globalForm.stepDownExpr.setText( self.obj.StepDownExpression) @@ -261,6 +262,7 @@ class TaskPanel: self.rapidHorizontal.updateSpinBox() def updateModel(self): + PathLog.track() self.getFields() self.updateUI() FreeCAD.ActiveDocument.recompute() diff --git a/src/Mod/Path/PathScripts/PathSetupSheetOpPrototype.py b/src/Mod/Path/PathScripts/PathSetupSheetOpPrototype.py index 28773d5887..05bce5c208 100644 --- a/src/Mod/Path/PathScripts/PathSetupSheetOpPrototype.py +++ b/src/Mod/Path/PathScripts/PathSetupSheetOpPrototype.py @@ -67,12 +67,13 @@ class Property(object): return "Property" def setupProperty(self, obj, name, category, value): + created = False if not hasattr(obj, name): obj.addProperty(self.propType, name, category, self.info) self.initProperty(obj, name) - setattr(obj, name, value) - return True - return False + created = True + setattr(obj, name, value) + return created def initProperty(self, obj, name): pass