class StepDialog(QtGui.QDialog): def __init__(self, alg, mainDialog, canEdit=True): self.alg = alg self.mainDialog = mainDialog self.goForward = False self.goBackward = False QtGui.QDialog.__init__(self) self.setWindowFlags(self.windowFlags() | QtCore.Qt.WindowSystemMenuHint | QtCore.Qt.WindowMinMaxButtonsHint) # create a tab for this algorithm self.tabLayout = QtGui.QGridLayout() self.algInstructions = QtGui.QTextEdit() self.algInstructions.setMinimumWidth(250) self.algInstructions.setMaximumWidth(250) self.algInstructions.setFontPointSize(10) if not canEdit: self.algInstructions.setReadOnly(True) self.normalModeDialog = alg.getCustomParametersDialog() if not self.normalModeDialog: self.normalModeDialog = ParametersDialog(alg) self.batchModeDialog = BatchProcessingDialog(alg) self.batchModeDialog.setHidden(True) self.normalModeDialog.buttonBox.button(QtGui.QDialogButtonBox.Close).hide() # forwardButton does this job self.batchModeDialog.buttonBox.button(QtGui.QDialogButtonBox.Close).hide() # forwardButton does this job if canEdit: self.normalModeDialog.progress.hide() self.normalModeDialog.buttonBox.hide() self.batchModeDialog.buttonBox.hide() self.batchModeDialog.progress.hide() self.normalModeDialog.connect(self.normalModeDialog, QtCore.SIGNAL("finished(int)"), self.forward) self.batchModeDialog.connect(self.batchModeDialog, QtCore.SIGNAL("finished(int)"), self.forward) self.tabLayout.addWidget(self.algInstructions,0,0) self.tabLayout.addWidget(self.normalModeDialog, 0, 1) self.tabLayout.addWidget(self.batchModeDialog, 0, 1) self.algMode = QtGui.QComboBox() self.algMode.addItems([NORMAL_MODE, BATCH_MODE]) if canEdit: self.algMode.connect(self.algMode, QtCore.SIGNAL("currentIndexChanged(QString)"), self.mainDialog.changeAlgMode) self.tabLayout.addWidget(self.algMode, 1, 1) else: self.buttonBox = QtGui.QDialogButtonBox() self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.backwardButton = QtGui.QPushButton() self.backwardButton.setText("< Previous step") self.buttonBox.addButton(self.backwardButton, QtGui.QDialogButtonBox.ActionRole) QtCore.QObject.connect(self.backwardButton, QtCore.SIGNAL("clicked()"), self.backward) self.forwardButton = QtGui.QPushButton() self.forwardButton.setText("Skip step >") self.buttonBox.addButton(self.forwardButton, QtGui.QDialogButtonBox.ActionRole) QtCore.QObject.connect(self.forwardButton, QtCore.SIGNAL("clicked()"), self.forward) self.closeButton = QtGui.QPushButton() self.closeButton.setText("Finish Workflow") self.buttonBox.addButton(self.closeButton, QtGui.QDialogButtonBox.ActionRole) QtCore.QObject.connect(self.closeButton, QtCore.SIGNAL("clicked()"), self.close) self.tabLayout.addWidget(self.buttonBox, 1, 1) self.setLayout(self.tabLayout) self.executed = self.normalModeDialog.executed def forward(self): self.goForward = True self.close() def backward(self): self.goBackward = True self.close() def getMode(self): return self.algMode.currentText() def setMode(self, mode): if mode == NORMAL_MODE and not self.normalModeDialog.isVisible(): self.batchModeDialog.setHidden(True) self.normalModeDialog.setVisible(True) elif mode == BATCH_MODE and not self.batchModeDialog.isVisible(): self.normalModeDialog.setHidden(True) self.batchModeDialog.setVisible(True) self.resize(1050, 500) def getInstructions(self): return self.algInstructions.toPlainText() def setInstructions(self, instructions): self.algInstructions.setText(instructions) # not used for now def addRasterInputs(self, inputs): if self.getMode() == NORMAL_MODE: panelList = self.normalModeDialog.ui.paramTable.findChildren(InputLayerSelectorPanel) else: panelList = self.normalBatchDialog.ui.paramTable.findChildren(InputLayerSelectorPanel) for panel in panelList: comboBox = panel.text for myInput in inputs: comboBox.addItem(myInput, myInput)