def browseAction(self,row): ''' method to open qgis browser dialog to get new datasource/provider ''' layerId = self.dlg.layerTable.cellWidget(row,0).text() layerName = self.dlg.layerTable.cellWidget(row,1).text() newType,newProvider,newDatasource = dataSourceBrowser.uri(title = layerName) #check if databrowser return a incompatible layer type rowLayer = QgsMapLayerRegistry.instance().mapLayer(layerId) enumLayerTypes = ("vector","raster","plugin") if newType and enumLayerTypes[rowLayer.type()] != newType: self.iface.messageBar().pushMessage("Error", "Layer type mismatch %s/%s" % (enumLayerTypes[rowLayer.type()], newType), level=QgsMessageBar.CRITICAL, duration=4) return None if newDatasource: self.dlg.layerTable.cellWidget(row,3).setText(newDatasource) if newProvider: self.dlg.layerTable.cellWidget(row,2).setText(newProvider)
def openFileBrowser(self): ''' method used to open datasource browser dialog to get new provider/uri for the single layer ''' type,provider,fileName = dataSourceBrowser.uri() enumLayerTypes = ("vector","raster","plugin") if type and enumLayerTypes[self.layer.type()] != type: self.iface.messageBar().pushMessage("Error", "Layer type mismatch: %s/%s" % (enumLayerTypes[self.layer.type()],type), level=QgsMessageBar.CRITICAL, duration=4) else: if fileName: self.lineEdit.setPlainText(fileName) if provider: allSources = [self.selectDatasourceCombo.itemText(i) for i in range(self.selectDatasourceCombo.count())] if type in allSources: self.selectDatasourceCombo.setCurrentIndex(allSources.index(provider)) else: self.selectDatasourceCombo.addItem(provider) self.selectDatasourceCombo.setCurrentIndex(self.selectDatasourceCombo.count()-1)