From c50348697a96cbea94c36176ad2311d3dc60b6e7 Mon Sep 17 00:00:00 2001 From: sliptonic Date: Wed, 7 Jul 2021 22:05:23 -0500 Subject: [PATCH] Make job work more naturally Operations Group as document group Make job claim children [Path] Make Operations into a document group --- src/Mod/Path/PathScripts/PathJob.py | 16 +++++++++------- src/Mod/Path/PathScripts/PathJobGui.py | 5 +++++ src/Mod/Path/PathScripts/PathOpGui.py | 8 +++++++- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/Mod/Path/PathScripts/PathJob.py b/src/Mod/Path/PathScripts/PathJob.py index 72d1085c9d..d538228a14 100644 --- a/src/Mod/Path/PathScripts/PathJob.py +++ b/src/Mod/Path/PathScripts/PathJob.py @@ -282,12 +282,13 @@ class ObjectJob: def setupOperations(self, obj): """setupOperations(obj)... setup the Operations group for the Job object.""" - ops = FreeCAD.ActiveDocument.addObject( - "Path::FeatureCompoundPython", "Operations" - ) + # ops = FreeCAD.ActiveDocument.addObject( + # "Path::FeatureCompoundPython", "Operations" + # ) + ops = FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroup","Operations") if ops.ViewObject: - ops.ViewObject.Proxy = 0 - ops.ViewObject.Visibility = False + # ops.ViewObject.Proxy = 0 + ops.ViewObject.Visibility = True obj.Operations = ops obj.setEditorMode("Operations", 2) # hide @@ -659,7 +660,7 @@ class ObjectJob: def execute(self, obj): if getattr(obj, "Operations", None): - obj.Path = obj.Operations.Path + #obj.Path = obj.Operations.Path self.getCycleTime() def getCycleTime(self): @@ -709,7 +710,7 @@ class ObjectJob: else: group.append(op) self.obj.Operations.Group = group - op.Path.Center = self.obj.Operations.Path.Center + # op.Path.Center = self.obj.Operations.Path.Center def nextToolNumber(self): # returns the next available toolnumber in the job @@ -849,5 +850,6 @@ def Create(name, base, templateFile=None): else: models = base obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", name) + obj.addExtension("App::GroupExtensionPython") obj.Proxy = ObjectJob(obj, models, templateFile) return obj diff --git a/src/Mod/Path/PathScripts/PathJobGui.py b/src/Mod/Path/PathScripts/PathJobGui.py index 8cd22a3e80..bdb0bf9403 100644 --- a/src/Mod/Path/PathScripts/PathJobGui.py +++ b/src/Mod/Path/PathScripts/PathJobGui.py @@ -241,6 +241,7 @@ class ViewProvider: self.obj.Stock.ViewObject.Proxy.onEdit(_OpenCloseResourceEditor) def rememberBaseVisibility(self, obj, base): + PathLog.track() if base.ViewObject: orig = PathUtil.getPublicObject(obj.Proxy.baseObject(obj, base)) self.baseVisibility[base.Name] = ( @@ -253,6 +254,7 @@ class ViewProvider: base.ViewObject.Visibility = True def forgetBaseVisibility(self, obj, base): + PathLog.track() if self.baseVisibility.get(base.Name): visibility = self.baseVisibility[base.Name] visibility[0].ViewObject.Visibility = visibility[1] @@ -260,6 +262,7 @@ class ViewProvider: del self.baseVisibility[base.Name] def setupEditVisibility(self, obj): + PathLog.track() self.baseVisibility = {} for base in obj.Model.Group: self.rememberBaseVisibility(obj, base) @@ -270,6 +273,7 @@ class ViewProvider: self.obj.Stock.ViewObject.Visibility = True def resetEditVisibility(self, obj): + PathLog.track() for base in obj.Model.Group: self.forgetBaseVisibility(obj, base) if obj.Stock and obj.Stock.ViewObject: @@ -1581,6 +1585,7 @@ def Create(base, template=None): try: obj = PathJob.Create("Job", base, template) obj.ViewObject.Proxy = ViewProvider(obj.ViewObject) + obj.ViewObject.addExtension("Gui::ViewProviderGroupExtensionPython") FreeCAD.ActiveDocument.commitTransaction() obj.Document.recompute() obj.ViewObject.Proxy.editObject(obj.Stock) diff --git a/src/Mod/Path/PathScripts/PathOpGui.py b/src/Mod/Path/PathScripts/PathOpGui.py index 50d5345539..aefd3eb52e 100644 --- a/src/Mod/Path/PathScripts/PathOpGui.py +++ b/src/Mod/Path/PathScripts/PathOpGui.py @@ -221,6 +221,11 @@ class TaskPanelPage(object): def _installTCUpdate(self): return hasattr(self.form, "toolController") + def setParent(self, parent): + '''setParent() ... used to transfer parent object link to child class. + Do not overwrite.''' + self.parent = parent + def onDirtyChanged(self, callback): """onDirtyChanged(callback) ... set callback when dirty state changes.""" self.signalDirtyChanged = callback @@ -1178,6 +1183,7 @@ class TaskPanel(object): self.form = forms self.selectionFactory = selectionFactory + self.obj = obj self.isdirty = deleteOnReject self.visibility = obj.ViewObject.Visibility obj.ViewObject.Visibility = True @@ -1392,7 +1398,7 @@ def Create(res): obj = res.objFactory(res.name, obj=None, parentJob=res.job) if obj.Proxy: obj.ViewObject.Proxy = ViewProvider(obj.ViewObject, res) - obj.ViewObject.Visibility = False + obj.ViewObject.Visibility = True FreeCAD.ActiveDocument.commitTransaction() obj.ViewObject.Document.setEdit(obj.ViewObject, 0)