def __init__(self, dialog, param): super(ExtentSelectionPanel, self).__init__(None) self.setupUi(self) self.dialog = dialog self.param = param self.crs = QgsProject.instance().crs() if self.param.flags() & QgsProcessingParameterDefinition.FlagOptional: if hasattr(self.leText, 'setPlaceholderText'): self.leText.setPlaceholderText( self.tr('[Leave blank to use min covering extent]')) self.btnSelect.clicked.connect(self.selectExtent) if iface is not None: canvas = iface.mapCanvas() self.prevMapTool = canvas.mapTool() self.tool = RectangleMapTool(canvas) self.tool.rectangleCreated.connect(self.updateExtent) else: self.prevMapTool = None self.tool = None if param.defaultValue() is not None: context = createContext() rect = QgsProcessingParameters.parameterAsExtent( param, {param.name(): param.defaultValue()}, context) crs = QgsProcessingParameters.parameterAsExtentCrs( param, {param.name(): param.defaultValue()}, context) if not rect.isNull(): try: s = '{},{},{},{}'.format(rect.xMinimum(), rect.xMaximum(), rect.yMinimum(), rect.yMaximum()) if crs.isValid(): s += ' [' + crs.authid() + ']' self.crs = crs self.leText.setText(s) except: pass
def __init__(self, dialog, alg, default): super(ExtentSelectionPanel, self).__init__(None) self.dialog = dialog self.params = alg.parameters self.horizontalLayout = QtGui.QHBoxLayout(self) self.horizontalLayout.setSpacing(2) self.horizontalLayout.setMargin(0) self.text = QtGui.QLineEdit() self.text.setSizePolicy(QtGui.QSizePolicy.Expanding, QtGui.QSizePolicy.Expanding) if self.canUseAutoExtent(): if hasattr(self.text, 'setPlaceholderText'): self.text.setPlaceholderText( self.tr('[Leave blank to use min covering extent]')) self.horizontalLayout.addWidget(self.text) self.pushButton = QtGui.QPushButton() self.pushButton.setText('...') self.pushButton.clicked.connect(self.buttonPushed) self.horizontalLayout.addWidget(self.pushButton) self.setLayout(self.horizontalLayout) canvas = iface.mapCanvas() self.prevMapTool = canvas.mapTool() self.tool = RectangleMapTool(canvas) self.connect(self.tool, SIGNAL('rectangleCreated()'), self.fillCoords)