Example #1
0
    def onDelete(self, obj, arg2=None):
        """Called by the view provider, there doesn't seem to be a callback on the obj itself."""
        PathLog.track(obj.Label, arg2)
        doc = obj.Document

        if getattr(obj, "Operations", None):
            # the first to tear down are the ops, they depend on other resources
            PathLog.debug(
                "taking down ops: %s" % [o.Name for o in self.allOperations()]
            )
            while obj.Operations.Group:
                op = obj.Operations.Group[0]
                if (
                    not op.ViewObject
                    or not hasattr(op.ViewObject.Proxy, "onDelete")
                    or op.ViewObject.Proxy.onDelete(op.ViewObject, ())
                ):
                    PathUtil.clearExpressionEngine(op)
                    doc.removeObject(op.Name)
            obj.Operations.Group = []
            doc.removeObject(obj.Operations.Name)
            obj.Operations = None

        # stock could depend on Model, so delete it first
        if getattr(obj, "Stock", None):
            PathLog.debug("taking down stock")
            PathUtil.clearExpressionEngine(obj.Stock)
            doc.removeObject(obj.Stock.Name)
            obj.Stock = None

        # base doesn't depend on anything inside job
        if getattr(obj, "Model", None):
            for base in obj.Model.Group:
                PathLog.debug("taking down base %s" % base.Label)
                self.removeBase(obj, base, False)
            obj.Model.Group = []
            doc.removeObject(obj.Model.Name)
            obj.Model = None

        # Tool controllers might refer to either legacy tool or toolbit
        if getattr(obj, "Tools", None):
            PathLog.debug("taking down tool controller")
            for tc in obj.Tools.Group:
                if hasattr(tc.Tool, "Proxy"):
                    PathUtil.clearExpressionEngine(tc.Tool)
                    doc.removeObject(tc.Tool.Name)
                PathUtil.clearExpressionEngine(tc)
                tc.Proxy.onDelete(tc)
                doc.removeObject(tc.Name)
            obj.Tools.Group = []
            doc.removeObject(obj.Tools.Name)
            obj.Tools = None

        # SetupSheet
        if getattr(obj, "SetupSheet", None):
            PathUtil.clearExpressionEngine(obj.SetupSheet)
            doc.removeObject(obj.SetupSheet.Name)
            obj.SetupSheet = None

        return True
Example #2
0
 def reject(self, resetEdit=True):
     '''reject() ... callback invoked when user presses the task panel Cancel button.'''
     self.preCleanup()
     FreeCAD.ActiveDocument.abortTransaction()
     if self.deleteOnReject:
         FreeCAD.ActiveDocument.openTransaction(translate("Path", "Uncreate AreaOp Operation"))
         PathUtil.clearExpressionEngine(self.obj)
         FreeCAD.ActiveDocument.removeObject(self.obj.Name)
         FreeCAD.ActiveDocument.commitTransaction()
     self.cleanup(resetEdit)
     return True
Example #3
0
 def onDelete(self, obj, arg2=None):
     '''Called by the view provider, there doesn't seem to be a callback on the obj itself.'''
     PathLog.track(obj.Label, arg2)
     doc = obj.Document
     # the first to tear down are the ops, they depend on other resources
     PathLog.debug('taking down ops: %s' %
                   [o.Name for o in self.allOperations()])
     while obj.Operations.Group:
         op = obj.Operations.Group[0]
         if not op.ViewObject or not hasattr(
                 op.ViewObject.Proxy,
                 'onDelete') or op.ViewObject.Proxy.onDelete(
                     op.ViewObject, ()):
             PathUtil.clearExpressionEngine(op)
             doc.removeObject(op.Name)
     obj.Operations.Group = []
     doc.removeObject(obj.Operations.Name)
     obj.Operations = None
     # stock could depend on Base
     if obj.Stock:
         PathLog.debug('taking down stock')
         PathUtil.clearExpressionEngine(obj.Stock)
         doc.removeObject(obj.Stock.Name)
         obj.Stock = None
     # base doesn't depend on anything inside job
     if obj.Base:
         PathLog.debug('taking down base')
         if isResourceClone(obj, 'Base'):
             PathUtil.clearExpressionEngine(obj.Base)
             doc.removeObject(obj.Base.Name)
         obj.Base = None
     # Tool controllers don't depend on anything
     PathLog.debug('taking down tool controller')
     for tc in obj.ToolController:
         PathUtil.clearExpressionEngine(tc)
         doc.removeObject(tc.Name)
     obj.ToolController = []
     # SetupSheet
     PathUtil.clearExpressionEngine(obj.SetupSheet)
     doc.removeObject(obj.SetupSheet.Name)
     obj.SetupSheet = None
     return True
Example #4
0
 def onDelete(self, obj, arg2=None):
     '''Called by the view provider, there doesn't seem to be a callback on the obj itself.'''
     PathLog.track(obj.Label, arg2)
     doc = obj.Document
     # the first to tear down are the ops, they depend on other resources
     PathLog.debug('taking down ops: %s' % [o.Name for o in self.allOperations()])
     while obj.Operations.Group:
         op = obj.Operations.Group[0]
         if not op.ViewObject or not hasattr(op.ViewObject.Proxy, 'onDelete') or op.ViewObject.Proxy.onDelete(op.ViewObject, ()):
             PathUtil.clearExpressionEngine(op)
             doc.removeObject(op.Name)
     obj.Operations.Group = []
     doc.removeObject(obj.Operations.Name)
     obj.Operations = None
     # stock could depend on Base
     if obj.Stock:
         PathLog.debug('taking down stock')
         PathUtil.clearExpressionEngine(obj.Stock)
         doc.removeObject(obj.Stock.Name)
         obj.Stock = None
     # base doesn't depend on anything inside job
     if obj.Base:
         PathLog.debug('taking down base')
         if isResourceClone(obj, 'Base'):
             PathUtil.clearExpressionEngine(obj.Base)
             doc.removeObject(obj.Base.Name)
         obj.Base = None
     # Tool controllers don't depend on anything
     PathLog.debug('taking down tool controller')
     for tc in obj.ToolController:
         PathUtil.clearExpressionEngine(tc)
         doc.removeObject(tc.Name)
     obj.ToolController = []
     # SetupSheet
     PathUtil.clearExpressionEngine(obj.SetupSheet)
     doc.removeObject(obj.SetupSheet.Name)
     obj.SetupSheet = None
     return True
Example #5
0
 def onDelete(self, vobj, arg2=None):
     # pylint: disable=unused-argument
     PathUtil.clearExpressionEngine(vobj.Object)
     return True
Example #6
0
 def onDelete(self, vobj, arg2=None):
     PathUtil.clearExpressionEngine(vobj.Object)
     return True
Example #7
0
 def removeBase(self, obj, base, removeFromModel):
     if isResourceClone(obj, base, None):
         PathUtil.clearExpressionEngine(base)
         if removeFromModel:
             obj.Model.removeObject(base)
         obj.Document.removeObject(base.Name)
Example #8
0
 def removeBase(self, obj, base, removeFromModel):
     if isResourceClone(obj, base, None):
         PathUtil.clearExpressionEngine(base)
         if removeFromModel:
             obj.Model.removeObject(base)
         obj.Document.removeObject(base.Name)
Example #9
0
 def onDelete(self, vobj, args=None):
     PathUtil.clearExpressionEngine(vobj.Object)
     self.vobj.Object.Proxy.onDelete(vobj.Object, args)
     return True