Path: unsetEdit support
This commit is contained in:
@@ -25,7 +25,6 @@
|
||||
import FreeCAD
|
||||
import FreeCADGui
|
||||
import Path
|
||||
#import Draft
|
||||
import Part
|
||||
import ArchPanel
|
||||
|
||||
@@ -39,10 +38,12 @@ LOG_MODULE = 'PathEngrave'
|
||||
PathLog.setLevel(PathLog.Level.INFO, LOG_MODULE)
|
||||
# PathLog.trackModule('PathEngrave')
|
||||
|
||||
|
||||
# Qt tanslation handling
|
||||
def translate(context, text, disambig=None):
|
||||
return QtCore.QCoreApplication.translate(context, text, disambig)
|
||||
|
||||
|
||||
class ObjectPathEngrave:
|
||||
|
||||
def __init__(self, obj):
|
||||
@@ -77,6 +78,12 @@ class ObjectPathEngrave:
|
||||
def execute(self, obj):
|
||||
PathLog.track()
|
||||
|
||||
if not obj.Active:
|
||||
path = Path.Path("(inactive operation)")
|
||||
obj.Path = path
|
||||
obj.ViewObject.Visibility = False
|
||||
return
|
||||
|
||||
output = ""
|
||||
if obj.Comment != "":
|
||||
output += '(' + str(obj.Comment)+')\n'
|
||||
@@ -141,15 +148,9 @@ class ObjectPathEngrave:
|
||||
if output == "":
|
||||
output += "(No commands processed)"
|
||||
|
||||
if obj.Active:
|
||||
path = Path.Path(output)
|
||||
obj.Path = path
|
||||
obj.ViewObject.Visibility = True
|
||||
|
||||
else:
|
||||
path = Path.Path("(inactive operation)")
|
||||
obj.Path = path
|
||||
obj.ViewObject.Visibility = False
|
||||
path = Path.Path(output)
|
||||
obj.Path = path
|
||||
obj.ViewObject.Visibility = True
|
||||
|
||||
def buildpathocc(self, obj, wires):
|
||||
PathLog.track()
|
||||
@@ -206,24 +207,38 @@ class _ViewProviderEngrave:
|
||||
|
||||
def __init__(self, vobj):
|
||||
vobj.Proxy = self
|
||||
self.taskPanel = None
|
||||
|
||||
def attach(self, vobj):
|
||||
self.Object = vobj.Object
|
||||
return
|
||||
|
||||
def deleteObjectsOnReject(self):
|
||||
return hasattr(self, 'deleteOnReject') and self.deleteOnReject
|
||||
|
||||
def setEdit(self, vobj, mode=0):
|
||||
PathLog.track()
|
||||
FreeCADGui.Control.closeDialog()
|
||||
taskd = TaskPanel(vobj.Object, self.deleteObjectsOnReject())
|
||||
taskd.obj = vobj.Object
|
||||
FreeCADGui.Control.showDialog(taskd)
|
||||
taskd.setupUi()
|
||||
self.deleteOnReject = False
|
||||
|
||||
self.taskPanel = TaskPanel(vobj, self.deleteObjectsOnReject())
|
||||
FreeCADGui.Control.showDialog(self.taskPanel)
|
||||
self.taskPanel.setupUi()
|
||||
self.deleteOnReject = False
|
||||
return True
|
||||
|
||||
def unsetEdit(self, vobj, mode):
|
||||
PathLog.track()
|
||||
if hasattr(self, 'taskPanel') and self.taskPanel:
|
||||
self.taskPanel.abort()
|
||||
|
||||
def clearTaskPanel(self):
|
||||
self.taskpanel = None
|
||||
FreeCADGui.Selection.removeSelectionGate()
|
||||
FreeCADGui.Selection.removeObserver(self)
|
||||
|
||||
def resetTaskPanel(self):
|
||||
PathLog.track()
|
||||
self.taskPanel = None
|
||||
|
||||
def getIcon(self):
|
||||
return ":/icons/Path-Engrave.svg"
|
||||
|
||||
@@ -233,9 +248,6 @@ class _ViewProviderEngrave:
|
||||
def __setstate__(self, state):
|
||||
return None
|
||||
|
||||
# def onDelete(self):
|
||||
# return None
|
||||
|
||||
|
||||
class CommandPathEngrave:
|
||||
|
||||
@@ -257,17 +269,18 @@ class CommandPathEngrave:
|
||||
FreeCAD.ActiveDocument.openTransaction("Create Engrave Path")
|
||||
FreeCADGui.addModule("PathScripts.PathFaceProfile")
|
||||
FreeCADGui.addModule("PathScripts.PathUtils")
|
||||
|
||||
FreeCADGui.doCommand('obj = FreeCAD.ActiveDocument.addObject("Path::FeaturePython", "PathEngrave")')
|
||||
FreeCADGui.doCommand('PathScripts.PathEngrave.ObjectPathEngrave(obj)')
|
||||
FreeCADGui.doCommand('PathScripts.PathUtils.addToJob(obj)')
|
||||
|
||||
FreeCADGui.doCommand('obj.ClearanceHeight = 10')
|
||||
FreeCADGui.doCommand('obj.FinalDepth= -0.1')
|
||||
FreeCADGui.doCommand('obj.SafeHeight= 5.0')
|
||||
FreeCADGui.doCommand('obj.Active = True')
|
||||
FreeCADGui.doCommand('obj.ViewObject.Proxy.deleteOnReject = True')
|
||||
|
||||
FreeCADGui.doCommand('PathScripts.PathUtils.addToJob(obj)')
|
||||
FreeCADGui.doCommand('obj.ToolController = PathScripts.PathUtils.findToolController(obj)')
|
||||
|
||||
FreeCADGui.doCommand('obj.ViewObject.startEditing()')
|
||||
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
@@ -275,35 +288,44 @@ class CommandPathEngrave:
|
||||
|
||||
|
||||
class TaskPanel:
|
||||
def __init__(self, obj, deleteOnReject):
|
||||
def __init__(self, vobj, deleteOnReject):
|
||||
FreeCAD.ActiveDocument.openTransaction(translate("Path_Engrave", "Engraving Operation"))
|
||||
self.form = FreeCADGui.PySideUic.loadUi(":/panels/EngraveEdit.ui")
|
||||
self.vobj = vobj
|
||||
self.obj = vobj.Object
|
||||
self.deleteOnReject = deleteOnReject
|
||||
self.obj = obj
|
||||
self.form = FreeCADGui.PySideUic.loadUi(":/panels/EngraveEdit.ui")
|
||||
|
||||
def __del__(self):
|
||||
FreeCADGui.Selection.removeObserver(self.s)
|
||||
def abort(self):
|
||||
FreeCAD.ActiveDocument.abortTransaction()
|
||||
self.cleanup(False)
|
||||
|
||||
def accept(self):
|
||||
PathLog.track()
|
||||
self.getFields()
|
||||
|
||||
FreeCADGui.Control.closeDialog()
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
FreeCADGui.Selection.removeObserver(self.s)
|
||||
self.cleanup(True)
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
return True
|
||||
|
||||
def reject(self):
|
||||
FreeCADGui.Control.closeDialog()
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
PathLog.track()
|
||||
FreeCAD.ActiveDocument.abortTransaction()
|
||||
FreeCADGui.Selection.removeObserver(self.s)
|
||||
if self.deleteOnReject:
|
||||
FreeCAD.ActiveDocument.openTransaction(translate("Path_Engrave", "Uncreate Engrave Operation"))
|
||||
FreeCAD.ActiveDocument.removeObject(self.obj.Name)
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
self.cleanup(True)
|
||||
return True
|
||||
|
||||
def cleanup(self, gui):
|
||||
FreeCADGui.Selection.removeObserver(self.s)
|
||||
|
||||
self.vobj.Proxy.clearTaskPanel()
|
||||
if gui:
|
||||
FreeCADGui.ActiveDocument.resetEdit()
|
||||
FreeCADGui.Control.closeDialog()
|
||||
FreeCAD.ActiveDocument.recompute()
|
||||
|
||||
def getFields(self):
|
||||
if self.obj:
|
||||
@@ -348,16 +370,12 @@ class TaskPanel:
|
||||
# install the function mode resident
|
||||
FreeCADGui.Selection.addObserver(self.s)
|
||||
|
||||
# def getStandardButtons(self):
|
||||
# return int(QtGui.QDialogButtonBox.Ok)
|
||||
|
||||
def setupUi(self):
|
||||
|
||||
# Connect Signals and Slots
|
||||
self.form.finalDepth.editingFinished.connect(self.getFields)
|
||||
self.form.safeHeight.editingFinished.connect(self.getFields)
|
||||
self.form.clearanceHeight.editingFinished.connect(self.getFields)
|
||||
|
||||
self.form.uiToolController.currentIndexChanged.connect(self.getFields)
|
||||
|
||||
self.setFields()
|
||||
|
||||
Reference in New Issue
Block a user