Only set properties if they have actually changed (the onChanged/updateData callbacks are called synchronously).
This commit is contained in:
committed by
Yorik van Havre
parent
e7e7ef20af
commit
aec6cfe239
@@ -22,6 +22,7 @@
|
||||
# * *
|
||||
# ***************************************************************************
|
||||
|
||||
import ArchPanel
|
||||
import FreeCAD
|
||||
import DraftGeomUtils
|
||||
import PathScripts.PathLog as PathLog
|
||||
@@ -152,15 +153,16 @@ class ObjectOp(PathOp.ObjectOp):
|
||||
def setupDepthsFrom(self, obj, features, baseobject):
|
||||
zmax = None
|
||||
zmin = None
|
||||
for base,sub in features:
|
||||
shape = base.Shape.getElement(sub)
|
||||
bb = shape.BoundBox
|
||||
# find the highes zmax and the highes zmin levels, those provide
|
||||
# the safest values for StartDepth and FinalDepth
|
||||
if zmax is None or zmax < bb.ZMax:
|
||||
zmax = bb.ZMax
|
||||
if zmin is None or zmin < bb.ZMin:
|
||||
zmin = bb.ZMin
|
||||
if not self.baseIsArchPanel(obj, baseobject):
|
||||
for base,sub in features:
|
||||
shape = base.Shape.getElement(sub)
|
||||
bb = shape.BoundBox
|
||||
# find the highes zmax and the highes zmin levels, those provide
|
||||
# the safest values for StartDepth and FinalDepth
|
||||
if zmax is None or zmax < bb.ZMax:
|
||||
zmax = bb.ZMax
|
||||
if zmin is None or zmin < bb.ZMin:
|
||||
zmin = bb.ZMin
|
||||
self.setDepths(obj, zmax, zmin, baseobject.Shape.BoundBox)
|
||||
|
||||
def setDepths(self, obj, zmax, zmin, bb):
|
||||
@@ -176,8 +178,8 @@ class ObjectOp(PathOp.ObjectOp):
|
||||
PathLog.debug("setDepths(%s): z=%.2f -> %.2f bb.z=%.2f -> %.2f" % (obj.Label, zmin, zmax, bb.ZMin, bb.ZMax))
|
||||
|
||||
obj.StartDepth = zmax
|
||||
obj.ClearanceHeight = bb.ZMax + 5.0
|
||||
obj.SafeHeight = bb.ZMax + 3.0
|
||||
obj.ClearanceHeight = max(bb.ZMax, zmax) + 5.0
|
||||
obj.SafeHeight = max(bb.ZMax, zmax) + 3.0
|
||||
obj.FinalDepth = zmin
|
||||
|
||||
def findHoles(self, obj, baseobject):
|
||||
|
||||
@@ -48,13 +48,13 @@ class TaskPanelHoleGeometryPage(PathOpGui.TaskPanelBaseGeometryPage):
|
||||
self.form.baseList.blockSignals(True)
|
||||
self.form.baseList.clearContents()
|
||||
self.form.baseList.setRowCount(0)
|
||||
for i, (base, subs) in enumerate(self.obj.Base):
|
||||
for i, (base, subs) in enumerate(obj.Base):
|
||||
for sub in subs:
|
||||
self.form.baseList.insertRow(self.form.baseList.rowCount())
|
||||
|
||||
item = QtGui.QTableWidgetItem("%s.%s" % (base.Label, sub))
|
||||
item.setFlags(item.flags() | QtCore.Qt.ItemIsUserCheckable)
|
||||
if self.obj.Proxy.isHoleEnabled(self.obj, base, sub):
|
||||
if obj.Proxy.isHoleEnabled(obj, base, sub):
|
||||
item.setCheckState(QtCore.Qt.Checked)
|
||||
else:
|
||||
item.setCheckState(QtCore.Qt.Unchecked)
|
||||
@@ -64,7 +64,7 @@ class TaskPanelHoleGeometryPage(PathOpGui.TaskPanelBaseGeometryPage):
|
||||
item.setData(self.DataObjectSub, sub)
|
||||
self.form.baseList.setItem(self.form.baseList.rowCount()-1, 0, item)
|
||||
|
||||
item = QtGui.QTableWidgetItem("{:.3f}".format(self.obj.Proxy.holeDiameter(self.obj, base, sub)))
|
||||
item = QtGui.QTableWidgetItem("{:.3f}".format(obj.Proxy.holeDiameter(obj, base, sub)))
|
||||
item.setData(self.DataFeatureName, name)
|
||||
item.setData(self.DataObject, base)
|
||||
item.setData(self.DataObjectSub, sub)
|
||||
@@ -143,7 +143,7 @@ class TaskPanelHoleGeometryPage(PathOpGui.TaskPanelBaseGeometryPage):
|
||||
|
||||
def updateData(self, obj, prop):
|
||||
if prop in ['Base', 'Disabled']:
|
||||
self.setFields(self.obj)
|
||||
self.setFields(obj)
|
||||
|
||||
class TaskPanelOpPage(PathOpGui.TaskPanelPage):
|
||||
|
||||
|
||||
@@ -45,39 +45,42 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage):
|
||||
|
||||
def getFields(self, obj):
|
||||
PathLog.track()
|
||||
self.obj.PeckDepth = FreeCAD.Units.Quantity(self.form.peckDepth.text()).Value
|
||||
self.obj.RetractHeight = FreeCAD.Units.Quantity(self.form.retractHeight.text()).Value
|
||||
self.obj.DwellTime = FreeCAD.Units.Quantity(self.form.dwellTime.text()).Value
|
||||
self.updateInputField(obj, 'PeckDepth', self.form.peckDepth)
|
||||
self.updateInputField(obj, 'RetractHeight', self.form.retractHeight)
|
||||
self.updateInputField(obj, 'DwellTime', self.form.dwellTime)
|
||||
|
||||
self.obj.DwellEnabled = self.form.dwellEnabled.isChecked()
|
||||
self.obj.PeckEnabled = self.form.peckEnabled.isChecked()
|
||||
self.obj.AddTipLength = self.form.useTipLength.isChecked()
|
||||
if obj.DwellEnabled != self.form.dwellEnabled.isChecked():
|
||||
obj.DwellEnabled = self.form.dwellEnabled.isChecked()
|
||||
if obj.PeckEnabled != self.form.peckEnabled.isChecked():
|
||||
obj.PeckEnabled = self.form.peckEnabled.isChecked()
|
||||
if obj.AddTipLength != self.form.useTipLength.isChecked():
|
||||
obj.AddTipLength = self.form.useTipLength.isChecked()
|
||||
|
||||
self.updateToolController(obj, self.form.toolController)
|
||||
|
||||
def setFields(self, obj):
|
||||
PathLog.track()
|
||||
|
||||
self.form.peckDepth.setText(FreeCAD.Units.Quantity(self.obj.PeckDepth.Value, FreeCAD.Units.Length).UserString)
|
||||
self.form.retractHeight.setText(FreeCAD.Units.Quantity(self.obj.RetractHeight.Value, FreeCAD.Units.Length).UserString)
|
||||
self.form.dwellTime.setText(str(self.obj.DwellTime))
|
||||
self.form.peckDepth.setText(FreeCAD.Units.Quantity(obj.PeckDepth.Value, FreeCAD.Units.Length).UserString)
|
||||
self.form.retractHeight.setText(FreeCAD.Units.Quantity(obj.RetractHeight.Value, FreeCAD.Units.Length).UserString)
|
||||
self.form.dwellTime.setText(str(obj.DwellTime))
|
||||
|
||||
if self.obj.DwellEnabled:
|
||||
if obj.DwellEnabled:
|
||||
self.form.dwellEnabled.setCheckState(QtCore.Qt.Checked)
|
||||
else:
|
||||
self.form.dwellEnabled.setCheckState(QtCore.Qt.Unchecked)
|
||||
|
||||
if self.obj.PeckEnabled:
|
||||
if obj.PeckEnabled:
|
||||
self.form.peckEnabled.setCheckState(QtCore.Qt.Checked)
|
||||
else:
|
||||
self.form.peckEnabled.setCheckState(QtCore.Qt.Unchecked)
|
||||
|
||||
if self.obj.AddTipLength:
|
||||
if obj.AddTipLength:
|
||||
self.form.useTipLength.setCheckState(QtCore.Qt.Checked)
|
||||
else:
|
||||
self.form.useTipLength.setCheckState(QtCore.Qt.Unchecked)
|
||||
|
||||
self.setupToolController(self.obj, self.form.toolController)
|
||||
self.setupToolController(obj, self.form.toolController)
|
||||
|
||||
def getSignalsForUpdate(self, obj):
|
||||
signals = []
|
||||
|
||||
@@ -43,11 +43,12 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
|
||||
return FreeCADGui.PySideUic.loadUi(":/panels/PageOpEngraveEdit.ui")
|
||||
|
||||
def getFields(self, obj):
|
||||
self.obj.StartVertex = self.form.startVertex.value()
|
||||
if obj.StartVertex != self.form.startVertex.value():
|
||||
obj.StartVertex = self.form.startVertex.value()
|
||||
self.updateToolController(obj, self.form.toolController)
|
||||
|
||||
def setFields(self, obj):
|
||||
self.form.startVertex.setValue(self.obj.StartVertex)
|
||||
self.form.startVertex.setValue(obj.StartVertex)
|
||||
self.setupToolController(obj, self.form.toolController)
|
||||
|
||||
def getSignalsForUpdate(self, obj):
|
||||
|
||||
@@ -45,20 +45,23 @@ class TaskPanelOpPage(PathCircularHoleBaseGui.TaskPanelOpPage):
|
||||
|
||||
def getFields(self, obj):
|
||||
PathLog.track()
|
||||
self.obj.Direction = str(self.form.direction.currentText())
|
||||
self.obj.StartSide = str(self.form.startSide.currentText())
|
||||
self.obj.StepOver = self.form.stepOverPercent.value()
|
||||
if obj.Direction != str(self.form.direction.currentText()):
|
||||
obj.Direction = str(self.form.direction.currentText())
|
||||
if obj.StartSide != str(self.form.startSide.currentText()):
|
||||
obj.StartSide = str(self.form.startSide.currentText())
|
||||
if obj.StepOver != self.form.stepOverPercent.value():
|
||||
obj.StepOver = self.form.stepOverPercent.value()
|
||||
|
||||
self.updateToolController(obj, self.form.toolController)
|
||||
|
||||
def setFields(self, obj):
|
||||
PathLog.track()
|
||||
|
||||
self.form.stepOverPercent.setValue(self.obj.StepOver)
|
||||
self.selectInComboBox(self.obj.Direction, self.form.direction)
|
||||
self.selectInComboBox(self.obj.StartSide, self.form.startSide)
|
||||
self.form.stepOverPercent.setValue(obj.StepOver)
|
||||
self.selectInComboBox(obj.Direction, self.form.direction)
|
||||
self.selectInComboBox(obj.StartSide, self.form.startSide)
|
||||
|
||||
self.setupToolController(self.obj, self.form.toolController)
|
||||
self.setupToolController(obj, self.form.toolController)
|
||||
|
||||
def getSignalsForUpdate(self, obj):
|
||||
signals = []
|
||||
|
||||
@@ -43,6 +43,8 @@ TaskPanelLayout = 0
|
||||
if False:
|
||||
PathLog.setLevel(PathLog.Level.DEBUG, PathLog.thisModule())
|
||||
PathLog.trackModule(PathLog.thisModule())
|
||||
else:
|
||||
PathLog.setLevel(PathLog.Level.INFO, PathLog.thisModule())
|
||||
|
||||
def translate(context, text, disambig=None):
|
||||
return QtCore.QCoreApplication.translate(context, text, disambig)
|
||||
@@ -140,6 +142,7 @@ class TaskPanelPage(object):
|
||||
self.setFields(self.obj)
|
||||
|
||||
def pageRegisterSignalHandlers(self):
|
||||
PathLog.info("pageRegisterSignalHandlers(%s)" % self.getTitle(self.obj))
|
||||
for signal in self.getSignalsForUpdate(self.obj):
|
||||
signal.connect(self.pageGetFields)
|
||||
self.registerSignalHandlers(self.obj)
|
||||
@@ -190,7 +193,13 @@ class TaskPanelPage(object):
|
||||
|
||||
def updateToolController(self, obj, combo):
|
||||
tc = PathUtils.findToolController(obj, combo.currentText())
|
||||
self.obj.ToolController = tc
|
||||
if obj.ToolController != tc:
|
||||
obj.ToolController = tc
|
||||
|
||||
def updateInputField(self, obj, prop, widget):
|
||||
value = FreeCAD.Units.Quantity(widget.text()).Value
|
||||
if getattr(obj, prop) != value:
|
||||
setattr(obj, prop, value)
|
||||
|
||||
class TaskPanelBaseGeometryPage(TaskPanelPage):
|
||||
DataObject = QtCore.Qt.ItemDataRole.UserRole
|
||||
@@ -313,15 +322,20 @@ class TaskPanelHeightsPage(TaskPanelPage):
|
||||
def getTitle(self, obj):
|
||||
return translate("Path_AreaOp", "Heights")
|
||||
def getFields(self, obj):
|
||||
obj.SafeHeight = FreeCAD.Units.Quantity(self.form.safeHeight.text()).Value
|
||||
obj.ClearanceHeight = FreeCAD.Units.Quantity(self.form.clearanceHeight.text()).Value
|
||||
self.updateInputField(obj, 'SafeHeight', self.form.safeHeight)
|
||||
self.updateInputField(obj, 'ClearanceHeight', self.form.clearanceHeight)
|
||||
def setFields(self, obj):
|
||||
self.form.safeHeight.setText(FreeCAD.Units.Quantity(obj.SafeHeight.Value, FreeCAD.Units.Length).UserString)
|
||||
self.form.clearanceHeight.setText(FreeCAD.Units.Quantity(obj.ClearanceHeight.Value, FreeCAD.Units.Length).UserString)
|
||||
def getSignalsForUpdate(self, obj):
|
||||
return [self.form.safeHeight.editingFinished, self.form.clearanceHeight.editingFinished]
|
||||
PathLog.info("getSignalsForUpdate(%s)" % obj.Label)
|
||||
signals = []
|
||||
signals.append(self.form.safeHeight.editingFinished)
|
||||
signals.append(self.form.clearanceHeight.editingFinished)
|
||||
return signals
|
||||
|
||||
def pageUpdateData(self, obj, prop):
|
||||
PathLog.info("pageUpdateData(%s)" % prop)
|
||||
if prop in ['SafeHeight', 'ClearanceHeight']:
|
||||
self.setFields(obj)
|
||||
|
||||
@@ -344,12 +358,12 @@ class TaskPanelDepthsPage(TaskPanelPage):
|
||||
return translate("PathOp", "Depths")
|
||||
|
||||
def getFields(self, obj):
|
||||
obj.StartDepth = FreeCAD.Units.Quantity(self.form.startDepth.text()).Value
|
||||
obj.FinalDepth = FreeCAD.Units.Quantity(self.form.finalDepth.text()).Value
|
||||
self.updateInputField(obj, 'StartDepth', self.form.startDepth)
|
||||
self.updateInputField(obj, 'FinalDepth', self.form.finalDepth)
|
||||
if PathOp.FeatureStepDown & self.features:
|
||||
obj.StepDown = FreeCAD.Units.Quantity(self.form.stepDown.text()).Value
|
||||
self.updateInputField(obj, 'StepDown', self.form.stepDown)
|
||||
if PathOp.FeatureFinishDepth & self.features:
|
||||
obj.FinishDepth = FreeCAD.Units.Quantity(self.form.finishDepth.text()).Value
|
||||
self.updateInputField(obj, 'FinishDepht', self.form.finishDepth)
|
||||
def setFields(self, obj):
|
||||
self.form.startDepth.setText(FreeCAD.Units.Quantity(obj.StartDepth.Value, FreeCAD.Units.Length).UserString)
|
||||
self.form.finalDepth.setText(FreeCAD.Units.Quantity(obj.FinalDepth.Value, FreeCAD.Units.Length).UserString)
|
||||
|
||||
@@ -51,20 +51,25 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
|
||||
return form
|
||||
|
||||
def getFields(self, obj):
|
||||
obj.CutMode = str(self.form.cutMode.currentText())
|
||||
obj.StepOver = self.form.stepOverPercent.value()
|
||||
obj.OffsetPattern = str(self.form.offsetPattern.currentText())
|
||||
obj.ZigZagAngle = FreeCAD.Units.Quantity(self.form.zigZagAngle.text()).Value
|
||||
if obj.CutMode != str(self.form.cutMode.currentText()):
|
||||
obj.CutMode = str(self.form.cutMode.currentText())
|
||||
if obj.StepOver != self.form.stepOverPercent.value():
|
||||
obj.StepOver = self.form.stepOverPercent.value()
|
||||
if obj.OffsetPattern != str(self.form.offsetPattern.currentText()):
|
||||
obj.OffsetPattern = str(self.form.offsetPattern.currentText())
|
||||
self.updateInputField(obj, 'ZigZagAngle', self.form.zigZagAngle)
|
||||
|
||||
self.updateToolController(obj, self.form.toolController)
|
||||
|
||||
if FeaturePocket & self.pocketFeatures():
|
||||
obj.MaterialAllowance = FreeCAD.Units.Quantity(self.form.extraOffset.text()).Value
|
||||
obj.UseStartPoint = self.form.useStartPoint.isChecked()
|
||||
self.updateInputField(obj, 'MaterialAllowance', self.form.extraOffset)
|
||||
if obj.UseStartPoint != self.form.useStartPoint.isChecked():
|
||||
obj.UseStartPoint = self.form.useStartPoint.isChecked()
|
||||
|
||||
if FeatureFacing & self.pocketFeatures():
|
||||
obj.PassExtension = FreeCAD.Units.Quantity(self.form.passExtension.text()).Value
|
||||
obj.BoundaryShape = str(self.form.boundaryShape.currentText())
|
||||
self.updateInputField(obj, 'PassExtension', self.form.passExtension)
|
||||
if obj.BoundaryShape != str(self.form.boundaryShape.currentText()):
|
||||
obj.BoundaryShape = str(self.form.boundaryShape.currentText())
|
||||
|
||||
def setFields(self, obj):
|
||||
self.form.zigZagAngle.setText(FreeCAD.Units.Quantity(obj.ZigZagAngle, FreeCAD.Units.Angle).UserString)
|
||||
|
||||
@@ -54,36 +54,43 @@ class TaskPanelOpPage(PathOpGui.TaskPanelPage):
|
||||
return form
|
||||
|
||||
def getFields(self, obj):
|
||||
self.obj.OffsetExtra = FreeCAD.Units.Quantity(self.form.extraOffset.text()).Value
|
||||
self.obj.UseComp = self.form.useCompensation.isChecked()
|
||||
self.obj.UseStartPoint = self.form.useStartPoint.isChecked()
|
||||
self.obj.Direction = str(self.form.direction.currentText())
|
||||
self.updateInputField(obj, 'OffsetExtra', self.form.extraOffset)
|
||||
if obj.UseComp != self.form.useCompensation.isChecked():
|
||||
obj.UseComp = self.form.useCompensation.isChecked()
|
||||
if obj.UseStartPoint != self.form.useStartPoint.isChecked():
|
||||
obj.UseStartPoint = self.form.useStartPoint.isChecked()
|
||||
if obj.Direction != str(self.form.direction.currentText()):
|
||||
obj.Direction = str(self.form.direction.currentText())
|
||||
|
||||
self.updateToolController(self.obj, self.form.toolController)
|
||||
self.updateToolController(obj, self.form.toolController)
|
||||
|
||||
if FeatureSide & self.profileFeatures():
|
||||
self.obj.Side = str(self.form.cutSide.currentText())
|
||||
if obj.Side != str(self.form.cutSide.currentText()):
|
||||
obj.Side = str(self.form.cutSide.currentText())
|
||||
|
||||
if FeatureProcessing & self.profileFeatures():
|
||||
self.obj.processHoles = self.form.processHoles.isChecked()
|
||||
self.obj.processPerimeter = self.form.processPerimeter.isChecked()
|
||||
self.obj.processCircles = self.form.processCircles.isChecked()
|
||||
if obj.processHoles != self.form.processHoles.isChecked():
|
||||
obj.processHoles = self.form.processHoles.isChecked()
|
||||
if obj.processPerimeter != self.form.processPerimeter.isChecked():
|
||||
obj.processPerimeter = self.form.processPerimeter.isChecked()
|
||||
if obj.processCircles != self.form.processCircles.isChecked():
|
||||
obj.processCircles = self.form.processCircles.isChecked()
|
||||
|
||||
def setFields(self, obj):
|
||||
self.form.extraOffset.setText(FreeCAD.Units.Quantity(self.obj.OffsetExtra.Value, FreeCAD.Units.Length).UserString)
|
||||
self.form.useCompensation.setChecked(self.obj.UseComp)
|
||||
self.form.useStartPoint.setChecked(self.obj.UseStartPoint)
|
||||
self.form.extraOffset.setText(FreeCAD.Units.Quantity(obj.OffsetExtra.Value, FreeCAD.Units.Length).UserString)
|
||||
self.form.useCompensation.setChecked(obj.UseComp)
|
||||
self.form.useStartPoint.setChecked(obj.UseStartPoint)
|
||||
|
||||
self.selectInComboBox(self.obj.Direction, self.form.direction)
|
||||
self.setupToolController(self.obj, self.form.toolController)
|
||||
self.selectInComboBox(obj.Direction, self.form.direction)
|
||||
self.setupToolController(obj, self.form.toolController)
|
||||
|
||||
if FeatureSide & self.profileFeatures():
|
||||
self.selectInComboBox(self.obj.Side, self.form.cutSide)
|
||||
self.selectInComboBox(obj.Side, self.form.cutSide)
|
||||
|
||||
if FeatureProcessing & self.profileFeatures():
|
||||
self.form.processHoles.setChecked(self.obj.processHoles)
|
||||
self.form.processPerimeter.setChecked(self.obj.processPerimeter)
|
||||
self.form.processCircles.setChecked(self.obj.processCircles)
|
||||
self.form.processHoles.setChecked(obj.processHoles)
|
||||
self.form.processPerimeter.setChecked(obj.processPerimeter)
|
||||
self.form.processCircles.setChecked(obj.processCircles)
|
||||
|
||||
def getSignalsForUpdate(self, obj):
|
||||
signals = []
|
||||
|
||||
Reference in New Issue
Block a user