Added job export dialog to Job Editor.

This commit is contained in:
markus
2018-08-31 13:59:50 -07:00
committed by Markus Lampert
parent ca06567043
commit aefa922c2b
4 changed files with 90 additions and 20 deletions

View File

@@ -135,7 +135,20 @@ class DlgJobTemplateExport:
def __init__(self, job, parent=None):
self.job = job
self.dialog = FreeCADGui.PySideUic.loadUi(":/panels/DlgJobTemplateExport.ui")
if parent:
self.dialog.setParent(parent)
parent.layout().addWidget(self.dialog)
self.dialog.dialogButtonBox.hide()
else:
self.dialog.exportButtonBox.hide()
self.updateUI()
self.dialog.toolsGroup.clicked.connect(self.checkUncheckTools)
def exportButton(self):
return self.dialog.exportButton
def updateUI(self):
job = self.job
if job.PostProcessor:
ppHint = "%s %s %s" % (job.PostProcessor, job.PostProcessorArgs, job.PostProcessorOutputFile)
self.dialog.postProcessingHint.setText(ppHint)
@@ -168,19 +181,20 @@ class DlgJobTemplateExport:
self.dialog.settingToolRapid.setChecked(rapidChanged)
self.dialog.settingOperationDepths.setChecked(depthsChanged)
self.dialog.settingOperationHeights.setChecked(heightsChanged)
self.dialog.settingsOpsList.clear()
for op in opsWithSettings:
item = QtGui.QListWidgetItem(op)
item.setCheckState(QtCore.Qt.CheckState.Checked)
self.dialog.settingsOpsList.addItem(item)
self.dialog.toolsList.clear()
for tc in sorted(job.ToolController, key=lambda o: o.Label):
item = QtGui.QListWidgetItem(tc.Label)
item.setData(self.DataObject, tc)
item.setCheckState(QtCore.Qt.CheckState.Checked)
self.dialog.toolsList.addItem(item)
self.dialog.toolsGroup.clicked.connect(self.checkUncheckTools)
def checkUncheckTools(self):
state = QtCore.Qt.CheckState.Checked if self.dialog.toolsGroup.isChecked() else QtCore.Qt.CheckState.Unchecked
for i in range(self.dialog.toolsList.count()):
@@ -260,12 +274,16 @@ class CommandJobTemplateExport:
job = self.GetJob()
dialog = DlgJobTemplateExport(job)
if dialog.exec_() == 1:
foo = QtGui.QFileDialog.getSaveFileName(QtGui.QApplication.activeWindow(),
"Path - Job Template",
PathPreferences.filePath(),
"job_*.json")[0]
if foo:
self.Execute(job, foo, dialog)
self.SaveDialog(job, dialog)
@classmethod
def SaveDialog(cls, job, dialog):
foo = QtGui.QFileDialog.getSaveFileName(QtGui.QApplication.activeWindow(),
"Path - Job Template",
PathPreferences.filePath(),
"job_*.json")[0]
if foo:
cls.Execute(job, foo, dialog)
@classmethod
def Execute(cls, job, path, dialog=None):

View File

@@ -27,6 +27,7 @@ import DraftVecUtils
import FreeCAD
import FreeCADGui
import PathScripts.PathJob as PathJob
import PathScripts.PathJobCmd as PathJobCmd
import PathScripts.PathGeom as PathGeom
import PathScripts.PathGui as PathGui
import PathScripts.PathLog as PathLog
@@ -456,6 +457,7 @@ class TaskPanel:
self.obj = vobj.Object
self.deleteOnReject = deleteOnReject
self.form = FreeCADGui.PySideUic.loadUi(":/panels/PathEdit.ui")
self.template = PathJobCmd.DlgJobTemplateExport(self.obj, self.form.jobBox.widget(1))
vUnit = FreeCAD.Units.Quantity(1, FreeCAD.Units.Velocity).getUserPreferred()[2]
self.form.toolControllerList.horizontalHeaderItem(1).setText('#')
@@ -790,6 +792,8 @@ class TaskPanel:
pass
item.setText("%g" % getattr(tc, prop).Value)
self.template.updateUI()
def orientSelected(self, axis):
def flipSel(sel):
PathLog.debug("flip")
@@ -914,10 +918,13 @@ class TaskPanel:
PathLog.error(translate('PathJob', "Unsupported stock type %s (%d)") % (self.form.stock.currentText(), index))
self.stockEdit.activate(self.obj, index == -1)
def updateStock(self):
if -1 != index:
self.template.updateUI()
def updateStock(self):
self.updateStockEditor(self.form.stock.currentIndex())
def centerInStock(self):
def centerInStock(self):
bbb = self.obj.Base.Shape.BoundBox
bbs = self.obj.Stock.Shape.BoundBox
by = bbs.Center - bbb.Center
@@ -959,6 +966,14 @@ class TaskPanel:
self.form.centerInStock.setEnabled(False)
self.form.centerInStockXY.setEnabled(False)
def tabPageChanged(self, index):
if index == 0:
# update the template with potential changes
self.getFields()
self.setupGlobal.accept()
self.setupOps.accept()
self.obj.Document.recompute()
self.template.updateUI()
def setupUi(self, activate):
self.setupGlobal.setupUi()
@@ -1023,6 +1038,13 @@ class TaskPanel:
if activate in ['Workplan', 'Operations']:
self.form.setCurrentIndex(4)
self.form.currentChanged.connect(self.tabPageChanged)
self.template.exportButton().clicked.connect(self.templateExport)
def templateExport(self):
self.getFields()
PathJobCmd.CommandJobTemplateExport.SaveDialog(self.obj, self.template)
def open(self):
FreeCADGui.Selection.addObserver(self)