def __init__(self, customDict, parent=None): """Constructor.""" super(self.__class__, self).__init__(parent) self.customDict = customDict self.setupUi(self) regex = QtCore.QRegExp('[0-9][0-9\.0-9]*') validator = QtGui.QRegExpValidator(regex, self.measureLineEdit) self.measureLineEdit.setValidator(validator)
def __init__(self, parent=None, iface=None): """Constructor for import dialog. .. versionadded: 3.3 :param parent: Optional widget to use as parent. :type parent: QWidget :param iface: An instance of QgisInterface. :type iface: QgisInterface """ QDialog.__init__(self, parent) self.parent = parent self.setupUi(self) title = self.tr('PetaBencana Downloader') self.setWindowTitle(title) icon = resources_path('img', 'icons', 'add-petabencana-layer.svg') self.setWindowIcon(QtGui.QIcon(icon)) self.iface = iface self.source = None self.radio_button_group = QButtonGroup() self.radio_button_group.addButton(self.radio_button_production) self.radio_button_group.addButton(self.radio_button_development) self.radio_button_group.setExclusive(True) self.radio_button_production.setChecked(True) self.populate_combo_box() developer_mode = setting('developer_mode', False, bool) if not developer_mode: self.radio_button_widget.hide() self.source_label.hide() self.output_group.adjustSize() # signals self.radio_button_production.clicked.connect(self.populate_combo_box) self.radio_button_development.clicked.connect(self.populate_combo_box) # Set up things for context help self.help_button = self.button_box.button( QtWidgets.QDialogButtonBox.Help) # Allow toggling the help button self.help_button.setCheckable(True) self.help_button.toggled.connect(self.help_toggled) self.main_stacked_widget.setCurrentIndex(1) # set up the validator for the file name prefix expression = QRegExp('^[A-Za-z0-9-_]*$') validator = QtGui.QRegExpValidator(expression, self.filename_prefix) self.filename_prefix.setValidator(validator) self.time_stamp = None self.restore_state()
def __init__( self, connection_settings: typing.Optional[ConnectionSettings] = None): super().__init__() self.setupUi(self) self._widgets_to_toggle_during_connection_test = [ self.test_connection_pb, self.buttonBox, self.authcfg_acs, self.options_gb, self.connection_details, self.detected_version_gb, ] self.bar = QgsMessageBar() self.bar.setSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.layout().insertWidget(0, self.bar, alignment=QtCore.Qt.AlignTop) self.discovery_task = None self._populate_wfs_version_combobox() if connection_settings is not None: self.connection_id = connection_settings.id self.remote_geonode_version = connection_settings.geonode_version self.name_le.setText(connection_settings.name) self.url_le.setText(connection_settings.base_url) self.authcfg_acs.setConfigId(connection_settings.auth_config) self.page_size_sb.setValue(connection_settings.page_size) wfs_version_index = self.wfs_version_cb.findData( connection_settings.wfs_version) self.wfs_version_cb.setCurrentIndex(wfs_version_index) if self.remote_geonode_version == network.UNSUPPORTED_REMOTE: utils.show_message( self.bar, tr("Invalid configuration. Correct GeoNode URL and/or test again." ), level=qgis.core.Qgis.Critical, ) else: self.connection_id = uuid.uuid4() self.remote_geonode_version = None self.update_connection_details() self.buttonBox.button(QtWidgets.QDialogButtonBox.Ok).setEnabled(False) ok_signals = [ self.name_le.textChanged, self.url_le.textChanged, ] for signal in ok_signals: signal.connect(self.update_ok_buttons) self.detect_wfs_version_pb.clicked.connect(self.detect_wfs_version) self.test_connection_pb.clicked.connect(self.test_connection) # disallow names that have a slash since that is not compatible with how we # are storing plugin state in QgsSettings self.name_le.setValidator( QtGui.QRegExpValidator(QtCore.QRegExp("[^\\/]+"), self.name_le)) self.update_ok_buttons()
def __init__(self, iface, parent=None): super(ResampleImageToBlockDialog, self).__init__(parent) # Set up the user interface from Designer. self.setupUi(self) self.iface = iface self.DISP_TEMP_LAYERS = read_setting(PLUGIN_NAME + '/DISP_TEMP_LAYERS', bool) self.DEBUG = config.get_debug_mode() # Catch and redirect python errors directed at the log messages python error tab. QgsApplication.messageLog().messageReceived.connect(errorCatcher) if not os.path.exists(TEMPDIR): os.mkdir(TEMPDIR) # Setup for validation messagebar on gui----------------------------- self.messageBar = QgsMessageBar(self) # leave this message bar for bailouts self.validationLayout = QtWidgets.QFormLayout(self) # new layout to gui if isinstance(self.layout(), (QtWidgets.QFormLayout, QtWidgets.QGridLayout)): # create a validation layout so multiple messages can be added and cleaned up. self.layout().insertRow(0, self.validationLayout) self.layout().insertRow(0, self.messageBar) else: self.layout().insertWidget(0, self.messageBar) # for use with Vertical/horizontal layout box # GUI Runtime Customisation ----------------------------------------------- self.mcboPolygonLayer.setFilters(QgsMapLayerProxyModel.PolygonLayer) self.mcboPolygonLayer.setExcludedProviders(['wms']) self.mcboPolygonLayer.setLayer(None) self.mcboRasterLayer.setFilters(QgsMapLayerProxyModel.RasterLayer) self.mcboRasterLayer.setExcludedProviders(['wms']) self.updateRaster() #https://stackoverflow.com/questions/13422995/set-qlineedit-to-accept-only-numbers #https://stackoverflow.com/questions/12643009/regular-expression-for-floating-point-numbers regex_validator = QtGui.QRegExpValidator(QtCore.QRegExp("[-+]?([0-9]*[.])?[0-9]+([eE][-+]?\d+)?")) self.lneNoDataVal.setValidator(regex_validator) self.setWindowIcon(QtGui.QIcon(':/plugins/pat/icons/icon_resampleToBlock.svg'))
def __init__(self, parent=None, iface=None): """Constructor for import dialog. :param parent: Optional widget to use as parent. :type parent: QWidget :param iface: An instance of QgisInterface. :type iface: QgisInterface """ QDialog.__init__(self, parent) self.parent = parent self.setupUi(self) icon = resources_path('img', 'icons', 'show-osm-download.svg') self.setWindowIcon(QtGui.QIcon(icon)) title = self.tr('InaSAFE OpenStreetMap Downloader') self.setWindowTitle(title) self.iface = iface self.progress_dialog = None # Set up things for context help self.help_button = self.button_box.button( QtWidgets.QDialogButtonBox.Help) # Allow toggling the help button self.help_button.setCheckable(True) self.help_button.toggled.connect(self.help_toggled) self.main_stacked_widget.setCurrentIndex(1) # Output directory self.directory_button.clicked.connect(self.directory_button_clicked) self.output_directory.setPlaceholderText( self.tr('[Create a temporary layer]')) # Disable boundaries group box until boundary checkbox is ticked self.boundary_group.setEnabled(False) # set up the validator for the file name prefix expression = QRegExp('^[A-Za-z0-9-_]*$') validator = QtGui.QRegExpValidator(expression, self.filename_prefix) self.filename_prefix.setValidator(validator) # Advanced panel self.line_edit_custom.setPlaceholderText(STAGING_SERVER) developer_mode = setting('developer_mode', expected_type=bool) self.group_box_advanced.setVisible(developer_mode) self.restore_state() # Setup the rectangle map tool self.canvas = iface.mapCanvas() self.rectangle_map_tool = \ RectangleMapTool(self.canvas) self.rectangle_map_tool.rectangle_created.connect( self.update_extent_from_rectangle) self.capture_button.clicked.connect(self.drag_rectangle_on_map_canvas) # Setup pan tool self.pan_tool = QgsMapToolPan(self.canvas) self.canvas.setMapTool(self.pan_tool) # Setup helper for admin_level json_file_path = resources_path('osm', 'admin_level_per_country.json') if os.path.isfile(json_file_path): with open(json_file_path, encoding='utf-8') as f: self.countries = json.load(f) self.bbox_countries = None self.populate_countries() # connect self.country_comboBox.currentIndexChanged.connect( self.update_helper_political_level) self.admin_level_comboBox.currentIndexChanged.connect( self.update_helper_political_level) self.update_extent_from_map_canvas()
def setMask(self): """ REGEx closely related to the valid chars method 'setValidCharacters' """ if self.scaleCombo.currentText() == '1000k': regex = QtCore.QRegExp('[NSns]{1}[A-Za-z]{1}\-[0-9]{1,2}') validator = QtGui.QRegExpValidator(regex, self.inomLineEdit) self.inomLineEdit.setValidator(validator) elif self.scaleCombo.currentText() == '500k': regex = QtCore.QRegExp( '[NSns]{1}[A-Za-z]{1}\-[0-9]{1,2}\-[V-Zv-z]{1}') validator = QtGui.QRegExpValidator(regex, self.inomLineEdit) self.inomLineEdit.setValidator(validator) elif self.scaleCombo.currentText() == '250k': regex = QtCore.QRegExp( '[NSns]{1}[A-Za-z]{1}\-[0-9]{1,2}\-[V-Zv-z]{1}\-[A-Da-d]{1}') validator = QtGui.QRegExpValidator(regex, self.inomLineEdit) self.inomLineEdit.setValidator(validator) elif self.scaleCombo.currentText() == '100k': regex = QtCore.QRegExp( '[NSns]{1}[A-Za-z]{1}\-[0-9]{1,2}\-[V-Zv-z]{1}\-[A-Da-d]{1}\-[IViv]{1,3}' ) validator = QtGui.QRegExpValidator(regex, self.inomLineEdit) self.inomLineEdit.setValidator(validator) elif self.scaleCombo.currentText() == '50k': self.inomLineEdit.setInputMask('NN-NN-N-N-Nnn-0') regex = QtCore.QRegExp( '[NSns]{1}[A-Za-z]{1}\-[0-9]{1,2}\-[V-Zv-z]{1}\-[A-Da-d]{1}\-[IViv]{1,3}\-[1-4]{1}' ) validator = QtGui.QRegExpValidator(regex, self.inomLineEdit) self.inomLineEdit.setValidator(validator) elif self.scaleCombo.currentText() == '25k': regex = QtCore.QRegExp( '[NSns]{1}[A-Za-z]{1}\-[0-9]{1,2}\-[V-Zv-z]{1}\-[A-Da-d]{1}\-[IViv]{1,3}\-[1-4]{1}\-[NSns]{1}[OEoe]{1}' ) validator = QtGui.QRegExpValidator(regex, self.inomLineEdit) self.inomLineEdit.setValidator(validator) elif self.scaleCombo.currentText() == '10k': regex = QtCore.QRegExp( '[NSns]{1}[A-Za-z]{1}\-[0-9]{1,2}\-[V-Zv-z]{1}\-[A-Da-d]{1}\-[IViv]{1,3}\-[1-4]{1}\-[NSns]{1}[OEoe]{1}\-[A-Fa-f]{1}' ) validator = QtGui.QRegExpValidator(regex, self.inomLineEdit) self.inomLineEdit.setValidator(validator) elif self.scaleCombo.currentText() == '5k': regex = QtCore.QRegExp( '[NSns]{1}[A-Za-z]{1}\-[0-9]{1,2}\-[V-Zv-z]{1}\-[A-Da-d]{1}\-[IViv]{1,3}\-[1-4]{1}\-[NSns]{1}[OEoe]{1}\-[A-Fa-f]{1}\-[IViv]{1,3}' ) validator = QtGui.QRegExpValidator(regex, self.inomLineEdit) self.inomLineEdit.setValidator(validator) elif self.scaleCombo.currentText() == '2k': regex = QtCore.QRegExp( '[NSns]{1}[A-Za-z]{1}\-[0-9]{1,2}\-[V-Zv-z]{1}\-[A-Da-d]{1}\-[IViv]{1,3}\-[1-4]{1}\-[NSns]{1}[OEoe]{1}\-[A-Fa-f]{1}\-[IViv]{1,3}\-[1-6]{1}' ) validator = QtGui.QRegExpValidator(regex, self.inomLineEdit) self.inomLineEdit.setValidator(validator) elif self.scaleCombo.currentText() == '1k': regex = QtCore.QRegExp( '[NSns]{1}[A-Za-z]{1}\-[0-9]{1,2}\-[V-Zv-z]{1}\-[A-Da-d]{1}\-[IViv]{1,3}\-[1-4]{1}\-[NSns]{1}[OEoe]{1}\-[A-Fa-f]{1}\-[IViv]{1,3}\-[1-6]{1}\-[A-Da-d]{1}' ) validator = QtGui.QRegExpValidator(regex, self.inomLineEdit) self.inomLineEdit.setValidator(validator)