def writeSettings(self): url = self.server_url() username = self.ui.username.text() password = self.ui.password.text() settings = QSettings() settings.setValue('Mergin/auth_token', None) # reset token settings.setValue('Mergin/saveCredentials', str(self.ui.save_credentials.isChecked())) settings.setValue("Mergin/username", username) if self.ui.save_credentials.isChecked(): set_mergin_auth(url, username, password) try: mc = create_mergin_client() except (URLError, ClientError, LoginError): mc = None else: try: mc = MerginClient(url, None, username, password, get_plugin_version()) settings.setValue('Mergin/auth_token', mc._auth_session['token']) settings.setValue('Mergin/server', url) except (URLError, ClientError, LoginError) as e: QgsApplication.messageLog().logMessage(f"Mergin plugin: {str(e)}") mc = None QgsExpressionContextUtils.setGlobalVariable('mergin_url', url) if mc: QgsExpressionContextUtils.setGlobalVariable('mergin_username', username) else: QgsExpressionContextUtils.removeGlobalVariable('mergin_username') return mc
def initGui(self): """Create the menu entries and toolbar icons inside the QGIS GUI.""" icon_path = os.path.join(self.plugin_dir, 'res', 'icon.png') self.add_action(icon_path, text=self.tr(u'go2mapillary'), callback=self.run, parent=self.iface.mainWindow()) self.dlg = go2mapillaryDockWidget() self.dockwidget = QDockWidget("go2mapillary", self.iface.mainWindow()) self.dockwidget.setObjectName("go2mapillary") self.dockwidget.setWidget(self.dlg) self.dlg.webView.page().setNetworkAccessManager( QgsNetworkAccessManager.instance()) self.dlg.webView.page().mainFrame().setScrollBarPolicy( Qt.Vertical, Qt.ScrollBarAlwaysOff) self.dlg.webView.page().mainFrame().setScrollBarPolicy( Qt.Horizontal, Qt.ScrollBarAlwaysOff) self.canvas.mapToolSet.connect(self.toggleViewer) self.viewer = mapillaryViewer(self.dlg.webView) self.viewer.messageArrived.connect(self.viewerConnection) QgsExpressionContextUtils.setGlobalVariable("mapillaryCurrentKey", "noKey") self.mapSelectionTool = None self.coverage = mapillary_coverage(self.iface) self.mapillaryOverview = None self.mapillaryCoverage = None self.mapillaryLocations = None
def __init__(self, parentInstance, parent=None): """Constructor.""" super(mapillarySettings, self).__init__(parent) # Set up the user interface from Designer. # After setupUI you can access any designer object by doing # self.<objectname>, and you can use autoconnect slots - see # http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.html # #widgets-and-dialogs-with-auto-connect self.setupUi(self) self.parentInstance = parentInstance self.iface = parentInstance.iface self.setWindowTitle("go2mapillary settings") self.fileWidget.setStorageMode(QgsFileWidget.SaveFile) self.fileWidget.setFilter("SHP files (*.shp)") self.buttonBox.accepted.connect(self.applySettings) self.addCategoryButton.clicked.connect(self.addCategoryAction) self.removeCategoryButton.clicked.connect(self.removeCategoryAction) self.tableWidget.setColumnWidth(1, 150) self.newCategoryEdit.setMaxLength(20) self.settings = { 'sample_source': 'memory', 'auto_open_form': True, 'categories': { 'cat_a': '#ff0000', 'cat_b': '#0000ff', 'cat_c': '#00ff00', } } if not QgsExpressionContextUtils.globalScope().hasVariable( 'mapillarySettings'): QgsExpressionContextUtils.setGlobalVariable( "mapillarySettings", json.dumps(self.settings)) self.loadSettings()
def loadAlgorithms(self): # Add flag used by initAlgorithm method of algs # so that they do not get data from database to fill in their combo boxes QgsExpressionContextUtils.setGlobalVariable('gobs_get_database_data', 'no') self.addAlgorithm(ConfigurePlugin()) self.addAlgorithm(CreateDatabaseStructure()) self.addAlgorithm(UpgradeDatabaseStructure()) self.addAlgorithm(CreateDatabaseLocalInterface()) self.addAlgorithm(ImportSpatialLayerData()) self.addAlgorithm(GetSpatialLayerVectorData()) self.addAlgorithm(GetSeriesData()) self.addAlgorithm(GetSeriesList()) self.addAlgorithm(GetAggregatedData()) self.addAlgorithm(RemoveSeriesData()) self.addAlgorithm(RemoveSpatialLayerData()) # Put the flag back to yes QgsExpressionContextUtils.setGlobalVariable('gobs_get_database_data', 'yes')
def __init__(self, iface): self.iface = iface self.plugin_dir = os.path.dirname(__file__) self.data_item_provider = None self.actions = [] self.menu = u'Mergin Plugin' self.iface.projectRead.connect(set_project_variables) settings = QSettings() QgsExpressionContextUtils.setGlobalVariable( 'mergin_username', settings.value("Mergin/username", "")) QgsExpressionContextUtils.setGlobalVariable( 'mergin_url', settings.value('Mergin/server', ""))
def processAlgorithm(self, parameters, context, feedback): connection_name = parameters[self.CONNECTION_NAME] # Set global variable QgsExpressionContextUtils.setGlobalVariable('gobs_connection_name', connection_name) feedback.pushInfo( tr('PostgreSQL connection to G-Obs database') + ' = ' + connection_name) msg = tr('Configuration has been saved') feedback.pushInfo(msg) status = 1 return {self.OUTPUT_STATUS: status, self.OUTPUT_STRING: msg}
def setUp(self) -> None: self.connection = psycopg2.connect( user='******', password='******', host='db', port='5432', database='gis' ) self.current_value = QgsExpressionContextUtils.globalScope().variable('raepa_connection_name') QgsExpressionContextUtils.setGlobalVariable('raepa_connection_name', 'test') self.cursor = self.connection.cursor() self.provider = RaepaProvider() registry = QgsApplication.processingRegistry() if not registry.providerById(self.provider.id()): registry.addProvider(self.provider)
def applySettings(self): self.settings = {} if self.radioButtonMemorySource.isChecked(): self.settings['sample_source'] = 'memory' else: self.settings['sample_source'] = self.fileWidget.filePath() self.settings['auto_open_form'] = self.autoOpenCheckBox.isChecked() categories = {} for row in range(0, self.tableWidget.rowCount()): categories[self.tableWidget.item( row, 1).text()[:20]] = self.tableWidget.item( row, 0).background().color().name() self.settings['categories'] = categories self.parentInstance.sample_cursor.update_ds( self.settings['sample_source']) QgsExpressionContextUtils.setGlobalVariable("mapillarySettings", json.dumps(self.settings))
def processAlgorithm(self, parameters, context, feedback): """ Here is where the processing itself takes place. """ connection_name = parameters[self.CONNECTION_NAME] # Set global variable # noinspection PyCallByClass,PyArgumentList QgsExpressionContextUtils.setGlobalVariable('raepa_connection_name', connection_name) feedback.pushInfo('Connection PostgreSQL à la base RAEPA "{}"'.format( connection_name)) msg = 'La configuration a été faite' feedback.pushInfo(msg) status = 1 return {self.OUTPUT_STATUS: status, self.OUTPUT_STRING: msg}
def __init__(self, iface): self.iface = iface self.plugin_dir = os.path.dirname(__file__) self.data_item_provider = None self.actions = [] self.actions_always_on = [] self.menu = "Mergin Plugin" self.mergin_proj_dir = None self.mc = None self.manager = None self.toolbar = self.iface.addToolBar("Mergin Toolbar") self.toolbar.setToolTip("Mergin Toolbar") self.toolbar.setObjectName("MerginToolbar") self.iface.projectRead.connect(self.on_qgis_project_changed) self.iface.newProjectCreated.connect(self.on_qgis_project_changed) QgsProject.instance().projectSaved.connect(self.on_qgis_project_changed) settings = QSettings() QgsExpressionContextUtils.setGlobalVariable("mergin_username", settings.value("Mergin/username", "")) QgsExpressionContextUtils.setGlobalVariable("mergin_url", settings.value("Mergin/server", ""))
def unload(self): QgsExpressionContextUtils.setGlobalVariable('gobs_get_database_data', 'no')
def accept(self): if (self.lineEdit.text() == "" or self.mLineEdit.text() == ""): QMessageBox.warning( self, 'Advertencia', b'Ingresa usuario y/o contrase\xc3\xb1a'.decode("utf-8")) return try: API_ENDPOINT = AccesoToken.ip_server + "/Api/Login/authenticate" data_body = { 'Usuario': self.lineEdit.text(), 'Contrasena': self.mLineEdit.text() } r = requests.post(url=API_ENDPOINT, data=data_body) if (r.status_code == 401): QMessageBox.critical( self, 'Mensaje', b'Usuario y/o contrase\xc3\xb1a err\xc3\xb3neos'.decode( "utf-8")) return except requests.exceptions.HTTPError as errh: self.iface.messageBar().pushMessage("Error", "Http Error:" + str(errh), level=Qgis.Critical) return except requests.exceptions.ConnectionError as errc: self.iface.messageBar().pushMessage("Error", "Error Connecting:" + str(errc), level=Qgis.Critical) return except requests.exceptions.Timeout as errt: self.iface.messageBar().pushMessage("Error", "Timeout Error:" + str(errt), level=Qgis.Critical) return except requests.exceptions.RequestException as err: self.iface.messageBar().pushMessage("Error", "OOps: Something Else" + str(err), level=Qgis.Critical) return data = r.json() AccesoToken.acces_key = data['access_token'] QgsExpressionContextUtils.setGlobalVariable('user_mtc', self.lineEdit.text()) QMessageBox.information(self, 'Mensaje', 'Bienvenido ' + self.lineEdit.text()) action = [ i for i in self.menu.actions() if i.text() == 'Cargar Capas' ][0] action.setEnabled(True) action = [ i for i in self.menu.actions() if i.text() == b'Cerrar Sesi\xc3\xb3n'.decode("utf-8") ][0] action.setEnabled(True) action = [ i for i in self.menu.actions() if i.text() == b'Iniciar Sesi\xc3\xb3n'.decode("utf-8") ][0] action.setEnabled(False) self.close()
def tearDown(self) -> None: QgsApplication.processingRegistry().removeProvider(self.provider) QgsExpressionContextUtils.setGlobalVariable('raepa_connection_name', self.current_value)