From 9e9c1ed21b132e7065ea6cfc8e0aaac7be2f415e Mon Sep 17 00:00:00 2001 From: Patrick Felixberger Date: Wed, 23 Dec 2020 12:05:49 +0100 Subject: [PATCH] Added gui support for lead in/out dressup --- src/Mod/Path/Gui/Resources/Path.qrc | 1 + .../Resources/panels/DressUpLeadInOutEdit.ui | 340 ++++++++++++++++++ .../Path/PathScripts/PathDressupDogbone.py | 1 + .../Path/PathScripts/PathDressupLeadInOut.py | 84 ++++- 4 files changed, 425 insertions(+), 1 deletion(-) create mode 100644 src/Mod/Path/Gui/Resources/panels/DressUpLeadInOutEdit.ui 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..e7d1e9329f --- /dev/null +++ b/src/Mod/Path/Gui/Resources/panels/DressUpLeadInOutEdit.ui @@ -0,0 +1,340 @@ + + + TaskPanel + + + + 0 + 0 + 372 + 518 + + + + LeadInOut + + + + + + + 0 + 400 + + + + QFrame::NoFrame + + + 0 + + + 6 + + + + + 0 + 0 + 354 + 470 + + + + Dressup + + + + + 0 + 0 + 351 + 391 + + + + + 6 + + + 6 + + + 6 + + + 6 + + + 6 + + + + + + + <html><head/><body><p>Apply Lead In/Out on all layers</p></body></html> + + + Include Layers + + + + + + + Use Machine CRC + + + + + + + + + + + Extend In: + + + + + + + + 80 + 0 + + + + + + + + Qt::Vertical + + + + + + + Extend Out: + + + + + + + + 80 + 0 + + + + + + + + + + + + Enable LeadIn + + + + + + + Qt::Vertical + + + + + + + Enable LeadOut + + + + + + + + + + + Length / Radius: + + + + + + + + 80 + 0 + + + + + 80 + 16777215 + + + + + + + + + + + + Style In: + + + + + + + + 80 + 0 + + + + + 80 + 16777215 + + + + + Arc + + + + + Tangent + + + + + Perpendicular + + + + + + + + Qt::Vertical + + + + + + + Style Out: + + + + + + + + 80 + 0 + + + + + 80 + 16777215 + + + + + Arc + + + + + Tangent + + + + + Perpendicular + + + + + + + + + + + + Keep Tool Down + + + + + + + Rapid Plunge + + + + + + + + + + + Radius / Center: + + + + + + + + 80 + 0 + + + + + 80 + 16777215 + + + + + Radius + + + + + Center + + + + + + + + + + + + + + + + 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..261531835c 100644 --- a/src/Mod/Path/PathScripts/PathDressupLeadInOut.py +++ b/src/Mod/Path/PathScripts/PathDressupLeadInOut.py @@ -463,6 +463,81 @@ class ObjectDressup: commands = newpath return Path.Path(commands) + +class TaskPanel: + def __init__(self, obj): + self.obj = obj + self.form = FreeCADGui.PySideUic.loadUi(":/panels/DressUpLeadInOutEdit.ui") + + FreeCAD.ActiveDocument.openTransaction(translate("Path_DressupLeadInOut", "Edit LeadInOut Dress-up")) + + 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 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): @@ -484,6 +559,14 @@ 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) + FreeCADGui.Control.showDialog(panel) + panel.setupUi() + return True + 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 @@ -519,7 +602,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: