diff --git a/src/Mod/Path/Gui/Resources/Path.qrc b/src/Mod/Path/Gui/Resources/Path.qrc
index c1383eb7a5..c99246c667 100644
--- a/src/Mod/Path/Gui/Resources/Path.qrc
+++ b/src/Mod/Path/Gui/Resources/Path.qrc
@@ -97,6 +97,7 @@
panels/DogboneEdit.ui
panels/DressupPathBoundary.ui
panels/DragKnifeEdit.ui
+ panels/DressUpLeadInOutEdit.ui
panels/HoldingTagsEdit.ui
panels/PageBaseGeometryEdit.ui
panels/PageBaseHoleGeometryEdit.ui
diff --git a/src/Mod/Path/Gui/Resources/panels/DressUpLeadInOutEdit.ui b/src/Mod/Path/Gui/Resources/panels/DressUpLeadInOutEdit.ui
new file mode 100644
index 0000000000..53710a2ad7
--- /dev/null
+++ b/src/Mod/Path/Gui/Resources/panels/DressUpLeadInOutEdit.ui
@@ -0,0 +1,381 @@
+
+
+ TaskPanel
+
+
+
+ 0
+ 0
+ 381
+ 452
+
+
+
+ LeadInOut
+
+
+ -
+
+
+
+ 0
+ 400
+
+
+
+ QFrame::NoFrame
+
+
+ 0
+
+
+ 6
+
+
+
+
+ 0
+ 0
+ 363
+ 403
+
+
+
+ Dressup
+
+
+
+
+ 0
+ 0
+ 361
+ 401
+
+
+
+
-
+
+
+ QLayout::SetDefaultConstraint
+
+
-
+
+
+
+ 0
+ 0
+
+
+
+
+ 0
+ 0
+
+
+
+
+ 180
+ 190
+
+
+
+ LeadIn
+
+
+
+
+ 10
+ 30
+ 161
+ 151
+
+
+
+
-
+
+
+ Enable LeadIn
+
+
+
+ -
+
+
-
+
+
+ Extend In:
+
+
+
+ -
+
+
+
+ 60
+ 0
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Style In:
+
+
+
+ -
+
+
+
+ 80
+ 0
+
+
+
+
+ 80
+ 16777215
+
+
+
-
+
+ Arc
+
+
+ -
+
+ Tangent
+
+
+ -
+
+ Perpendicular
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+ 180
+ 190
+
+
+
+ LeadOut
+
+
+
+
+ 10
+ 30
+ 161
+ 151
+
+
+
+
-
+
+
+ Enable LeadOut
+
+
+
+ -
+
+
-
+
+
+ Extend Out:
+
+
+
+ -
+
+
+
+ 60
+ 0
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Style Out:
+
+
+
+ -
+
+
+
+ 80
+ 0
+
+
+
+
+ 80
+ 16777215
+
+
+
-
+
+ Arc
+
+
+ -
+
+ Tangent
+
+
+ -
+
+ Perpendicular
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
-
+
+
-
+
+
+ Length / Radius:
+
+
+
+ -
+
+
+
+ 80
+ 0
+
+
+
+
+ 80
+ 16777215
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Radius / Center:
+
+
+
+ -
+
+
+
+ 80
+ 0
+
+
+
+
+ 80
+ 16777215
+
+
+
-
+
+ Radius
+
+
+ -
+
+ Center
+
+
+
+
+
+
+ -
+
+
-
+
+
+ Keep Tool Down
+
+
+
+ -
+
+
+ Rapid Plunge
+
+
+
+
+
+ -
+
+
-
+
+
+ <html><head/><body><p>Apply Lead In/Out on all layers</p></body></html>
+
+
+ Include Layers
+
+
+
+ -
+
+
+ Use Machine CRC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Mod/Path/PathScripts/PathDressupDogbone.py b/src/Mod/Path/PathScripts/PathDressupDogbone.py
index 25d0fdabc7..ce134a23c3 100644
--- a/src/Mod/Path/PathScripts/PathDressupDogbone.py
+++ b/src/Mod/Path/PathScripts/PathDressupDogbone.py
@@ -1108,6 +1108,7 @@ class CommandDressupDogbone:
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()
+
if FreeCAD.GuiUp:
import FreeCADGui
from PySide import QtGui
diff --git a/src/Mod/Path/PathScripts/PathDressupLeadInOut.py b/src/Mod/Path/PathScripts/PathDressupLeadInOut.py
index 6f7c161db1..64fc18e1ac 100644
--- a/src/Mod/Path/PathScripts/PathDressupLeadInOut.py
+++ b/src/Mod/Path/PathScripts/PathDressupLeadInOut.py
@@ -24,6 +24,7 @@
from __future__ import print_function
import FreeCAD
+import FreeCADGui
import Path
import PathScripts.PathDressup as PathDressup
import PathScripts.PathGeom as PathGeom
@@ -32,7 +33,7 @@ import PathScripts.PathUtils as PathUtils
import math
import copy
-from PySide import QtCore
+from PySide import QtCore, QtGui
__doc__ = """LeadInOut Dressup MASHIN-CRC USE ROLL-ON ROLL-OFF to profile"""
@@ -463,13 +464,124 @@ class ObjectDressup:
commands = newpath
return Path.Path(commands)
-class ViewProviderDressup:
+class TaskPanel:
+ def __init__(self, obj, view):
+ self.obj = obj
+ self.viewProvider = view
+ self.form = FreeCADGui.PySideUic.loadUi(":/panels/DressUpLeadInOutEdit.ui")
+ self.setupUi()
+
+ FreeCAD.ActiveDocument.openTransaction(translate("Path_DressupLeadInOut", "Edit LeadInOut Dress-up"))
+
+ def getStandardButtons(self):
+ return int(QtGui.QDialogButtonBox.Ok | QtGui.QDialogButtonBox.Apply | QtGui.QDialogButtonBox.Cancel)
+
+ def modifyStandardButtons(self, buttonBox):
+ self.buttonBox = buttonBox
+
+ def setDirty(self):
+ self.isDirty = True
+ self.buttonBox.button(QtGui.QDialogButtonBox.Apply).setEnabled(True)
+
+ def setClean(self):
+ self.isDirty = False
+ self.buttonBox.button(QtGui.QDialogButtonBox.Apply).setEnabled(False)
+
+ def clicked(self, button):
+ # callback for standard buttons
+ if button == QtGui.QDialogButtonBox.Apply:
+ self.updateModel()
+ FreeCAD.ActiveDocument.recompute()
+ if button == QtGui.QDialogButtonBox.Cancel:
+ self.abort()
+
+ def abort(self):
+ FreeCAD.ActiveDocument.abortTransaction()
+ self.cleanup(True)
+
+ def reject(self):
+ FreeCAD.ActiveDocument.abortTransaction()
+ FreeCADGui.Control.closeDialog()
+ FreeCAD.ActiveDocument.recompute()
+
+ def accept(self):
+ self.getFields()
+ FreeCAD.ActiveDocument.commitTransaction()
+ FreeCADGui.ActiveDocument.resetEdit()
+ FreeCADGui.Control.closeDialog()
+ FreeCAD.ActiveDocument.recompute()
+
+ def cleanup(self, gui):
+ self.viewProvider.clearTaskPanel()
+ if gui:
+ #FreeCADGui.ActiveDocument.resetEdit()
+ FreeCADGui.Control.closeDialog()
+ FreeCAD.ActiveDocument.recompute()
+
+ def getFields(self):
+ self.obj.LeadIn = self.form.chkLeadIn.isChecked()
+ self.obj.LeadOut = self.form.chkLeadOut.isChecked()
+ self.obj.Length = self.form.dsbLen.value()
+ self.obj.ExtendLeadIn = self.form.dsbExtendIn.value()
+ self.obj.ExtendLeadOut = self.form.dsbExtendOut.value()
+ self.obj.StyleOn = str(self.form.cboStyleIn.currentText())
+ self.obj.StyleOff = str(self.form.cboStyleOut.currentText())
+ self.obj.RadiusCenter = str(self.form.cboRadius.currentText())
+ self.obj.RapidPlunge = self.form.chkRapidPlunge.isChecked()
+ self.obj.IncludeLayers = self.form.chkLayers.isChecked()
+ self.obj.KeepToolDown = self.form.chkKeepToolDown.isChecked()
+ self.obj.UseMachineCRC = self.form.chkUseCRC.isChecked()
+
+ self.updateUI()
+ self.obj.Proxy.execute(self.obj)
+
+ def updateUI(self):
+ self.form.chkLeadIn.setChecked(self.obj.LeadIn)
+ self.form.chkLeadOut.setChecked(self.obj.LeadOut)
+ self.form.chkRapidPlunge.setChecked(self.obj.RapidPlunge)
+ self.form.chkLayers.setChecked(self.obj.IncludeLayers)
+ self.form.chkKeepToolDown.setChecked(self.obj.KeepToolDown)
+ self.form.chkUseCRC.setChecked(self.obj.UseMachineCRC)
+
+ self.form.dsbLen.setValue(self.obj.Length)
+
+ self.form.dsbExtendIn.setValue(self.obj.ExtendLeadIn)
+ #self.form.dsbExtendIn.setEnabled(self.obj.LeadIn)
+
+ self.form.dsbExtendOut.setValue(self.obj.ExtendLeadOut)
+ #self.form.dsbExtendOut.setEnabled(self.obj.LeadOut)
+
+ self.form.cboStyleIn.setCurrentIndex(self.form.cboStyleIn.findText(self.obj.StyleOn))
+ #self.form.cboStyleIn.setEnabled(self.obj.LeadIn)
+
+ self.form.cboStyleOut.setCurrentIndex(self.form.cboStyleIn.findText(self.obj.StyleOff))
+ #self.form.cboStyleOut.setEnabled(self.obj.LeadOut)
+
+ self.form.cboRadius.setCurrentIndex(self.form.cboRadius.findText(self.obj.RadiusCenter))
+
+ def updateModel(self):
+ self.getFields()
+ FreeCAD.ActiveDocument.recompute()
+
+ def setFields(self):
+ self.updateUI()
+
+ def open(self):
+ pass
+
+ def setupUi(self):
+ self.setFields()
+
+
+class ViewProviderDressup:
def __init__(self, vobj):
self.obj = vobj.Object
+ self.setEdit(vobj)
def attach(self, vobj):
self.obj = vobj.Object
+ self.panel = None
def claimChildren(self):
if hasattr(self.obj.Base, "InList"):
@@ -484,6 +596,18 @@ class ViewProviderDressup:
# FreeCADGui.ActiveDocument.getObject(obj.Base.Name).Visibility = False
return [self.obj.Base]
+ def setEdit(self, vobj, mode=0):
+ # pylint: disable=unused-argument
+ FreeCADGui.Control.closeDialog()
+ panel = TaskPanel(vobj.Object, self)
+ FreeCADGui.Control.showDialog(panel)
+ panel.setupUi()
+ return True
+
+ def unsetEdit(self, vobj, mode=0):
+ if self.panel:
+ self.panel.abort()
+
def onDelete(self, arg1=None, arg2=None):
'''this makes sure that the base operation is added back to the project and visible'''
# pylint: disable=unused-argument
@@ -502,6 +626,9 @@ class ViewProviderDressup:
def __setstate__(self, state):
# pylint: disable=unused-argument
return None
+
+ def clearTaskPanel(self):
+ self.panel = None
class CommandPathDressupLeadInOut:
@@ -519,7 +646,6 @@ class CommandPathDressupLeadInOut:
return False
def Activated(self):
-
# check that the selection contains exactly what we want
selection = FreeCADGui.Selection.getSelection()
if len(selection) != 1:
@@ -543,9 +669,9 @@ class CommandPathDressupLeadInOut:
FreeCADGui.doCommand('job = PathScripts.PathUtils.findParentJob(base)')
FreeCADGui.doCommand('obj.Base = base')
FreeCADGui.doCommand('job.Proxy.addOperation(obj, base)')
+ FreeCADGui.doCommand('dbo.setup(obj)')
FreeCADGui.doCommand('obj.ViewObject.Proxy = PathScripts.PathDressupLeadInOut.ViewProviderDressup(obj.ViewObject)')
FreeCADGui.doCommand('Gui.ActiveDocument.getObject(base.Name).Visibility = False')
- FreeCADGui.doCommand('dbo.setup(obj)')
FreeCAD.ActiveDocument.commitTransaction()
FreeCAD.ActiveDocument.recompute()