def createProcessGUI(self): """Create the GUI for a selected WPS process based on the DescribeProcess response document. Mandatory inputs are marked as red, default is black""" # Lists which store the inputs and meta information (format, occurs, ...) # This list is initialized every time the GUI is created self.complexInputComboBoxList = [ ] # complex input for single raster and vector maps self.complexInputListWidgetList = [ ] # complex input for multiple raster and vector maps self.complexInputTextBoxList = [] # complex inpt of type text/plain self.literalInputComboBoxList = [ ] # literal value list with selectable answers self.literalInputLineEditList = [ ] # literal value list with single text line input self.bboxInputLineEditList = [ ] # bbox value list with single text line input self.complexOutputComboBoxList = [] # list combo box self.inputDataTypeList = {} self.outputDataTypeList = {} flags = Qt.WindowTitleHint | Qt.WindowSystemMenuHint | Qt.WindowMinimizeButtonHint | Qt.WindowMaximizeButtonHint # QgisGui.ModalDialogFlags self.processUrl = self.process.processUrl self.processIdentifier = self.process.processIdentifier self.processName = self.process.processName # Create the layouts and the scroll area self.dlgProcess = QgsWpsDescribeProcessGui(self.dlg, flags) self.dlgProcessLayout = QGridLayout() # Two tabs, one for the process inputs and one for the documentation # TODO: add a tab for literal outputs self.dlgProcessTab = QTabWidget() self.dlgProcessTabFrame = QFrame() self.dlgProcessTabFrameLayout = QGridLayout() # The process description can be very long, so we make it scrollable self.dlgProcessScrollArea = QScrollArea(self.dlgProcessTab) self.dlgProcessScrollAreaWidget = QFrame() self.dlgProcessScrollAreaWidgetLayout = QGridLayout() # First part of the gui is a short overview about the process self.identifier = self.process.identifier title = self.process.title abstract = self.process.abstract self.addIntroduction(self.identifier, title) # If no Input Data are requested if len(self.process.inputs) == 0: self.defineProcess() return 0 # Generate the input GUI buttons and widgets res = self.generateProcessInputsGUI() if res == 0: return 0 # Generate the editable outpt widgets, you can set the output to none if it is not requested self.generateProcessOutputsGUI() self.dlgProcessScrollAreaWidgetLayout.setSpacing(10) self.dlgProcessScrollAreaWidget.setLayout( self.dlgProcessScrollAreaWidgetLayout) self.dlgProcessScrollArea.setWidget(self.dlgProcessScrollAreaWidget) self.dlgProcessScrollArea.setWidgetResizable(True) self.dlgProcessTabFrameLayout.addWidget(self.dlgProcessScrollArea) self.addOkCancelButtons(self.dlgProcess, self.dlgProcessTabFrameLayout) self.dlgProcessTabFrame.setLayout(self.dlgProcessTabFrameLayout) self.dlgProcessTab.addTab(self.dlgProcessTabFrame, "Process") self.tools.addDocumentationTab(self.dlgProcessTab, abstract) self.dlgProcessLayout.addWidget(self.dlgProcessTab) self.dlgProcess.setLayout(self.dlgProcessLayout) self.dlgProcess.setGeometry(QRect(190, 100, 800, 600)) self.dlgProcess.show()