Skip to content

Commit

Permalink
Path: Update GUI inputs for independent Waterline operation
Browse files Browse the repository at this point in the history
  • Loading branch information
Russ4262 committed Mar 31, 2020
1 parent d495ee2 commit 3363639
Show file tree
Hide file tree
Showing 2 changed files with 163 additions and 74 deletions.
187 changes: 125 additions & 62 deletions src/Mod/Path/Gui/Resources/panels/PageOpWaterlineEdit.ui
Expand Up @@ -6,7 +6,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<width>350</width>
<height>400</height>
</rect>
</property>
Expand Down Expand Up @@ -43,136 +43,199 @@
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QGridLayout" name="gridLayout">
<item row="6" column="2" colspan="2">
<widget class="Gui::InputField" name="sampleInterval" native="true">
<property name="unit" stdset="0">
<string notr="true">mm</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="cutPattern_label">
<property name="text">
<string>Cut Pattern</string>
<item row="1" column="3">
<widget class="QComboBox" name="boundBoxSelect">
<property name="font">
<font>
<pointsize>8</pointsize>
</font>
</property>
<item>
<property name="text">
<string>Stock</string>
</property>
</item>
<item>
<property name="text">
<string>BaseBoundBox</string>
</property>
</item>
</widget>
</item>
<item row="6" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Sample interval</string>
<item row="4" column="3">
<widget class="QLineEdit" name="boundaryAdjustment">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QLineEdit" name="boundaryAdjustment"/>
</item>
<item row="3" column="3">
<widget class="QComboBox" name="clearLayers">
<item row="2" column="3">
<widget class="QComboBox" name="layerMode">
<property name="font">
<font>
<pointsize>9</pointsize>
<pointsize>8</pointsize>
</font>
</property>
<item>
<property name="text">
<string>Line</string>
<string>Single-pass</string>
</property>
</item>
<item>
<property name="text">
<string>ZigZag</string>
<string>Multi-pass</string>
</property>
</item>
</widget>
</item>
<item row="0" column="3">
<widget class="QComboBox" name="algorithmSelect">
<item>
<property name="text">
<string>Circular</string>
<string>OCL Dropcutter</string>
</property>
</item>
<item>
<property name="text">
<string>CircularZigZag</string>
<string>Experimental</string>
</property>
</item>
</widget>
</item>
<item row="11" column="3">
<widget class="QCheckBox" name="optimizeEnabled">
<property name="text">
<string>Optimize Linear Paths</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLabel" name="label_7">
<widget class="QLabel" name="boundaryAdjustment_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Depth offset</string>
<string>Boundary Adjustment</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QComboBox" name="boundBoxSelect">
<item row="3" column="3">
<widget class="QComboBox" name="cutPattern">
<property name="font">
<font>
<pointsize>9</pointsize>
<pointsize>8</pointsize>
</font>
</property>
<item>
<property name="text">
<string>Stock</string>
<string>None</string>
</property>
</item>
<item>
<property name="text">
<string>BaseBoundBox</string>
<string>Line</string>
</property>
</item>
<item>
<property name="text">
<string>ZigZag</string>
</property>
</item>
<item>
<property name="text">
<string>Circular</string>
</property>
</item>
<item>
<property name="text">
<string>CircularZigZag</string>
</property>
</item>
</widget>
</item>
<item row="4" column="2" colspan="2">
<widget class="Gui::InputField" name="depthOffset" native="true">
<property name="unit" stdset="0">
<string notr="true">mm</string>
<item row="8" column="3">
<widget class="QSpinBox" name="stepOver">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter.&lt;/p&gt;&lt;p&gt;A step over of 100% results in no overlap between two different cycles.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>100</number>
</property>
<property name="singleStep">
<number>10</number>
</property>
<property name="value">
<number>100</number>
</property>
</widget>
</item>
<item row="8" column="3">
<widget class="QCheckBox" name="optimizeEnabled">
<item row="2" column="0">
<widget class="QLabel" name="layerMode_label">
<property name="text">
<string>Optimize Linear Paths</string>
<string>Layer Mode</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="3">
<widget class="QLabel" name="label_7">
<item row="1" column="0">
<widget class="QLabel" name="boundBoxSelect_label">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>BoundBox</string>
</property>
</widget>
</item>
<item row="1" column="0" colspan="3">
<widget class="QLabel" name="label_2">
<item row="8" column="0">
<widget class="QLabel" name="stepOver_label">
<property name="text">
<string>Boundary Adjustment</string>
<string>Step over</string>
</property>
</widget>
</item>
<item row="5" column="3">
<widget class="QSpinBox" name="stepOver">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The amount by which the tool is laterally displaced on each cycle of the pattern, specified in percent of the tool diameter.&lt;/p&gt;&lt;p&gt;A step over of 100% results in no overlap between two different cycles.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>100</number>
<item row="9" column="3">
<widget class="Gui::InputField" name="sampleInterval" native="true">
<property name="unit" stdset="0">
<string notr="true">mm</string>
</property>
<property name="singleStep">
<number>10</number>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="cutPattern_label">
<property name="text">
<string>Cut Pattern</string>
</property>
<property name="value">
<number>100</number>
</widget>
</item>
<item row="9" column="0">
<widget class="QLabel" name="sampleInterval_label">
<property name="text">
<string>Sample interval</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QLabel" name="label_7">
<item row="0" column="0">
<widget class="QLabel" name="algorithmSelect_label">
<property name="text">
<string>Step over</string>
<string>Algorithm</string>
</property>
</widget>
</item>
Expand Down
50 changes: 38 additions & 12 deletions src/Mod/Path/PathScripts/PathWaterlineGui.py
Expand Up @@ -46,24 +46,37 @@ def getForm(self):

def getFields(self, obj):
'''getFields(obj) ... transfers values from UI to obj's proprties'''
self.updateToolController(obj, self.form.toolController)

if obj.Algorithm != str(self.form.algorithmSelect.currentText()):
obj.Algorithm = str(self.form.algorithmSelect.currentText())

if obj.BoundBox != str(self.form.boundBoxSelect.currentText()):
obj.BoundBox = str(self.form.boundBoxSelect.currentText())

if obj.LayerMode != str(self.form.layerMode.currentText()):
obj.LayerMode = str(self.form.layerMode.currentText())

if obj.CutPattern != str(self.form.cutPattern.currentText()):
obj.CutPattern = str(self.form.cutPattern.currentText())

PathGui.updateInputField(obj, 'BoundaryAdjustment', self.form.boundaryAdjustment)
PathGui.updateInputField(obj, 'SampleInterval', self.form.sampleInterval)

if obj.StepOver != self.form.stepOver.value():
obj.StepOver = self.form.stepOver.value()

if obj.BoundBox != str(self.form.boundBoxSelect.currentText()):
obj.BoundBox = str(self.form.boundBoxSelect.currentText())
PathGui.updateInputField(obj, 'SampleInterval', self.form.sampleInterval)

if obj.OptimizeLinearPaths != self.form.optimizeEnabled.isChecked():
obj.OptimizeLinearPaths = self.form.optimizeEnabled.isChecked()

self.updateToolController(obj, self.form.toolController)

def setFields(self, obj):
'''setFields(obj) ... transfers obj's property values to UI'''
self.setupToolController(obj, self.form.toolController)
self.selectInComboBox(obj.Algorithm, self.form.algorithmSelect)
self.selectInComboBox(obj.BoundBox, self.form.boundBoxSelect)
self.selectInComboBox(obj.LayerMode, self.form.layerMode)
self.selectInComboBox(obj.CutPattern, self.form.cutPattern)
self.form.boundaryAdjustment.setText(FreeCAD.Units.Quantity(obj.BoundaryAdjustment.Value, FreeCAD.Units.Length).UserString)
self.form.stepOver.setValue(obj.StepOver)
self.form.sampleInterval.setText(str(obj.SampleInterval))
Expand All @@ -77,7 +90,10 @@ def getSignalsForUpdate(self, obj):
'''getSignalsForUpdate(obj) ... return list of signals for updating obj'''
signals = []
signals.append(self.form.toolController.currentIndexChanged)
signals.append(self.form.algorithmSelect.currentIndexChanged)
signals.append(self.form.boundBoxSelect.currentIndexChanged)
signals.append(self.form.layerMode.currentIndexChanged)
signals.append(self.form.cutPattern.currentIndexChanged)
signals.append(self.form.boundaryAdjustment.editingFinished)
signals.append(self.form.stepOver.editingFinished)
signals.append(self.form.sampleInterval.editingFinished)
Expand All @@ -86,15 +102,25 @@ def getSignalsForUpdate(self, obj):
return signals

def updateVisibility(self):
self.form.boundBoxSelect.setEnabled(True)
self.form.boundaryAdjustment.setEnabled(True)
self.form.stepOver.setEnabled(True)
self.form.sampleInterval.setEnabled(True)
self.form.optimizeEnabled.setEnabled(True)
if self.form.algorithmSelect.currentText() == 'OCL Dropcutter':
self.form.cutPattern.setEnabled(False)
self.form.boundaryAdjustment.setEnabled(False)
self.form.stepOver.setEnabled(False)
self.form.sampleInterval.setEnabled(True)
self.form.optimizeEnabled.setEnabled(True)
else:
self.form.cutPattern.setEnabled(True)
self.form.boundaryAdjustment.setEnabled(True)
if self.form.cutPattern.currentText() == 'None':
self.form.stepOver.setEnabled(False)
else:
self.form.stepOver.setEnabled(True)
self.form.sampleInterval.setEnabled(False)
self.form.optimizeEnabled.setEnabled(False)

def registerSignalHandlers(self, obj):
# self.form.clearLayers.currentIndexChanged.connect(self.updateVisibility)
pass
self.form.algorithmSelect.currentIndexChanged.connect(self.updateVisibility)
self.form.cutPattern.currentIndexChanged.connect(self.updateVisibility)


Command = PathOpGui.SetupOperation('Waterline',
Expand Down

0 comments on commit 3363639

Please sign in to comment.