def ask_url(self, default_text=None): text, ok = QInputDialog.getText( self, tr("Add new model repository"), tr("Repository URL:"), QLineEdit.Normal, default_text ) return text, ok
def on_clone_btn_clicked(self): title = (self.selected_proj_def['title'] + ' (copy)' if 'title' in self.selected_proj_def else '(copy)') title, ok = QInputDialog().getText(self, tr('Assign a title'), tr('Project definition title'), text=title) if ok: self.add_proj_def(title, self.selected_proj_def)
def chooseLayerForRemoval(self, iface, mdl): if mdl.rowCount() < 2: if mdl.rowCount() == 1: return 0 return None list1 = [] for i in range(0,mdl.rowCount()): list1.append(str(i +1) + " : " + mdl.item(i,2).data(QtCore.Qt.EditRole)) testqt, ok = QInputDialog.getItem(iface.mainWindow(), "Layer selector", "Choose the Layer", list1, False) if ok: for i in range(0,mdl.rowCount()): if testqt == (str(i+1) + " : " + mdl.item(i,2).data(QtCore.Qt.EditRole)): return i return None
def addLayer(self , iface, mdl, layer1 = None): if layer1 == None: templist=[] j=0 # Ask the layer by a input dialog for i in range(0, iface.mapCanvas().layerCount()): donothing = False layer = iface.mapCanvas().layer(i) if isProfilable(layer): for j in range(0, mdl.rowCount()): if str(mdl.item(j,2).data(QtCore.Qt.EditRole)) == str(layer.name()): donothing = True else: donothing = True if donothing == False: templist += [[layer, layer.name()]] if len(templist) == 0: QMessageBox.warning(iface.mainWindow(), "Profile tool", "No raster to add") return else: testqt, ok = QInputDialog.getItem(iface.mainWindow(), "Layer selector", "Choose layer", [templist[k][1] for k in range( len(templist) )], False) if ok: for i in range (0,len(templist)): if templist[i][1] == testqt: layer2 = templist[i][0] else: return else : if isProfilable(layer1): layer2 = layer1 else: QMessageBox.warning(iface.mainWindow(), "Profile tool", "Active layer is not a profilable layer") return # Ask the Band by a input dialog #First, if isProfilable, considerate the real band number (instead of band + 1 for raster) if layer2.type() == layer2.PluginLayer and isProfilable(layer2): self.bandoffset = 0 typename = 'parameter' elif layer2.type() == layer2.RasterLayer: self.bandoffset = 1 typename = 'band' elif layer2.type() == layer2.VectorLayer: self.bandoffset = 0 typename = 'field' if layer2.type() == layer2.RasterLayer and layer2.bandCount() != 1: listband = [] for i in range(0,layer2.bandCount()): listband.append(str(i+self.bandoffset)) testqt, ok = QInputDialog.getItem(iface.mainWindow(), typename + " selector", "Choose the " + typename, listband, False) if ok : choosenBand = int(testqt) - self.bandoffset else: return 2 elif layer2.type() == layer2.VectorLayer : fieldstemp = [field.name() for field in layer2.fields() ] if int(QtCore.QT_VERSION_STR[0]) == 4 : #qgis2 fields = [field.name() for field in layer2.fields() if field.type() in [2,3,4,5,6]] elif int(QtCore.QT_VERSION_STR[0]) == 5 : #qgis3 fields = [field.name() for field in layer2.fields() if field.isNumeric()] if len(fields)==0: QMessageBox.warning(iface.mainWindow(), "Profile tool", "Active layer is not a profilable layer") return elif len(fields) == 1 : choosenBand = fieldstemp.index(fields[0]) else: testqt, ok = QInputDialog.getItem(iface.mainWindow(), typename + " selector", "Choose the " + typename, fields, False) if ok : choosenBand = fieldstemp.index(testqt) else: return 2 else: choosenBand = 0 #Complete the tableview row = mdl.rowCount() mdl.insertRow(row) mdl.setData( mdl.index(row, 0, QModelIndex()) ,True, QtCore.Qt.CheckStateRole) mdl.item(row,0).setFlags(QtCore.Qt.ItemIsSelectable) lineColour = QtCore.Qt.red if layer2.type() == layer2.PluginLayer and layer2.LAYER_TYPE == 'crayfish_viewer': lineColour = QtCore.Qt.blue mdl.setData( mdl.index(row, 1, QModelIndex()) ,QColor(lineColour) , QtCore.Qt.BackgroundRole) mdl.item(row,1).setFlags(QtCore.Qt.NoItemFlags) mdl.setData( mdl.index(row, 2, QModelIndex()) ,layer2.name()) mdl.item(row,2).setFlags(QtCore.Qt.NoItemFlags) mdl.setData( mdl.index(row, 3, QModelIndex()) ,choosenBand + self.bandoffset) mdl.item(row,3).setFlags(QtCore.Qt.NoItemFlags) if layer2.type() == layer2.VectorLayer : #mdl.setData( mdl.index(row, 4, QModelIndex()) ,QVariant(100.0)) mdl.setData( mdl.index(row, 4, QModelIndex()) ,100.0) #mdl.item(row,3).setFlags(Qt.NoItemFlags) else: mdl.setData( mdl.index(row, 4, QModelIndex()) ,'') mdl.item(row,4).setFlags(QtCore.Qt.NoItemFlags) mdl.setData( mdl.index(row, 5, QModelIndex()) ,layer2) mdl.item(row,5).setFlags(QtCore.Qt.NoItemFlags) self.layerAddedOrRemoved.emit()
def on_add_proj_def_btn_clicked(self): title, ok = QInputDialog().getText( self, tr('Assign a title'), tr('Project definition title')) if ok: self.add_proj_def(title)
def addLayer(self, iface, mdl, layer1=None): if layer1 is None: templist = [] j = 0 # Ask the layer by a input dialog for i in range(0, iface.mapCanvas().layerCount()): donothing = False layer = iface.mapCanvas().layer(i) if isProfilable(layer): for j in range(0, mdl.rowCount()): if str(mdl.item(j, 2).data(QtCore.Qt.EditRole)) == str( layer.name()): donothing = True else: donothing = True if donothing == False: templist += [[layer, layer.name()]] if len(templist) == 0: QMessageBox.warning(iface.mainWindow(), "Profile tool", "No raster to add") return else: testqt, ok = QInputDialog.getItem( iface.mainWindow(), "Layer selector", "Choose layer", [templist[k][1] for k in range(len(templist))], False) if ok: for i in range(0, len(templist)): if templist[i][1] == testqt: layer2 = templist[i][0] else: return else: if isProfilable(layer1): layer2 = layer1 else: text = "Active layer is not a profilable layer." if layer1.type() == layer1.MeshLayer: text += "\n(MeshLayer support requires QGis version 3.6 or newer.)" QMessageBox.warning(iface.mainWindow(), "Profile tool", text) return # Ask the Band by a input dialog #First, if isProfilable, considerate the real band number (instead of band + 1 for raster) if layer2.type() == layer2.PluginLayer and isProfilable(layer2) or \ layer2.type() == layer2.MeshLayer: self.bandoffset = 0 typename = 'parameter' elif layer2.type() == layer2.RasterLayer: self.bandoffset = 1 typename = 'band' elif layer2.type() == layer2.VectorLayer: self.bandoffset = 0 typename = 'field' if layer2.type() == layer2.RasterLayer and layer2.bandCount() != 1: listband = [] for i in range(0, layer2.bandCount()): listband.append(str(i + self.bandoffset)) testqt, ok = QInputDialog.getItem( iface.mainWindow(), typename.capitalize() + " selector", "Choose the " + typename, listband, False) if ok: choosenBand = int(testqt) - self.bandoffset else: return 2 elif layer2.type() == layer2.VectorLayer: fieldstemp = [field.name() for field in layer2.fields()] if int(QtCore.QT_VERSION_STR[0]) == 4: #qgis2 fields = [ field.name() for field in layer2.fields() if field.type() in [2, 3, 4, 5, 6] ] elif int(QtCore.QT_VERSION_STR[0]) == 5: #qgis3 fields = [ field.name() for field in layer2.fields() if field.isNumeric() ] if len(fields) == 0: QMessageBox.warning(iface.mainWindow(), "Profile tool", "Active layer is not a profilable layer") return elif len(fields) == 1: choosenBand = fieldstemp.index(fields[0]) else: try: defaultfield = fieldstemp.index('z') except ValueError: defaultfield = 2 testqt, ok = QInputDialog.getItem( iface.mainWindow(), typename.capitalize() + " selector", "Choose the " + typename, fields, defaultfield) if ok: choosenBand = fieldstemp.index(testqt) else: return defaultfield else: choosenBand = 0 #Complete the tableview row = mdl.rowCount() mdl.insertRow(row) mdl.setData(mdl.index(row, 0, QModelIndex()), True, QtCore.Qt.CheckStateRole) mdl.item(row, 0).setFlags(QtCore.Qt.ItemIsSelectable) lineColour = QtCore.Qt.red #QGis2 if layer2.type() == layer2.PluginLayer and layer2.LAYER_TYPE == 'crayfish_viewer' or \ layer2.type() == layer2.MeshLayer: #QGis3 lineColour = QtCore.Qt.blue mdl.setData(mdl.index(row, 1, QModelIndex()), QColor(lineColour), QtCore.Qt.BackgroundRole) mdl.item(row, 1).setFlags(QtCore.Qt.NoItemFlags) mdl.setData(mdl.index(row, 2, QModelIndex()), layer2.name()) mdl.item(row, 2).setFlags(QtCore.Qt.NoItemFlags) mdl.setData(mdl.index(row, 3, QModelIndex()), choosenBand + self.bandoffset) mdl.item(row, 3).setFlags(QtCore.Qt.NoItemFlags) if layer2.type() == layer2.VectorLayer: #mdl.setData( mdl.index(row, 4, QModelIndex()) ,QVariant(100.0)) mdl.setData(mdl.index(row, 4, QModelIndex()), 3.0) '''listPlotTypes = ['Line','Point'] i = mdl.index(row, 5) plotTypes = QComboBox() pix = QPersistentModelIndex(i) plotTypes.currentIndexChanged[str].connect(lambda txt, pix=pix:mdl.setData(QModelIndex(pix), txt)) plotTypes.addItems(listPlotTypes) self.tableview.setIndexWidget(i, plotTypes) sizeOptions = QComboBox() listSize = listband.append('') sizeOptions.addItems(listSize) sizeOptions.setCurrentIndex(listSize.index(0)) mdl.setData(mdl.index(row, 6, QModelIndex()), sizeOptions) listband = [] for i in range(0,layer2.bandCount()): listband.append(str(i+self.bandoffset)) colorOptions = QComboBox() listColor = listband.append('') colorOptions.addItems(listSize) colorOptions.setCurrentIndex(listColor.index(0)) mdl.setData(mdl.index(row, 6, QModelIndex()), colorOptions) mdl.setData(mdl.index(row, 7, QModelIndex()), colorOptions)''' #mdl.item(row,3).setFlags(Qt.NoItemFlags) mdl.setData(mdl.index(row, 5, QModelIndex()), 'Line') mdl.setData(mdl.index(row, 6, QModelIndex()), 'Standard') mdl.setData(mdl.index(row, 7, QModelIndex()), 'Selected') else: mdl.setData(mdl.index(row, 4, QModelIndex()), '') mdl.item(row, 4).setFlags(QtCore.Qt.NoItemFlags) mdl.setData(mdl.index(row, 5, QModelIndex()), '') mdl.item(row, 5).setFlags(QtCore.Qt.NoItemFlags) mdl.setData(mdl.index(row, 6, QModelIndex()), '') mdl.item(row, 6).setFlags(QtCore.Qt.NoItemFlags) mdl.setData(mdl.index(row, 7, QModelIndex()), '') mdl.item(row, 7).setFlags(QtCore.Qt.NoItemFlags) mdl.setData(mdl.index(row, 8, QModelIndex()), layer2) mdl.item(row, 8).setFlags(QtCore.Qt.NoItemFlags) self.layerAddedOrRemoved.emit()
def addLayer( self, iface, mdl, layer1=None ): #se activa cuando se agrega una nueva capa a la tabla dandole sus caracteristicas if layer1 == None: templist = [] j = 0 #Pregunta a la capa mediante un diálogo de entrada. for i in range(0, iface.mapCanvas().layerCount()): donothing = False layer = iface.mapCanvas().layer(i) if isProfilable( layer ): #si la capa es aceptada por el plugin (capas raster, capas geometricas) for j in range(0, mdl.rowCount()): if str(mdl.item(j, 2).data(QtCore.Qt.EditRole)) == str( layer.name( )): #ingresa el nombre de la capa a la tabla donothing = True else: donothing = True if donothing == False: templist += [[layer, layer.name()]] if len(templist) == 0: QMessageBox.warning(iface.mainWindow(), "SigFox Profile tool", "No raster to add") return else: testqt, ok = QInputDialog.getItem( iface.mainWindow(), "Layer selector", "Choose layer", [templist[k][1] for k in range(len(templist))], False) if ok: for i in range(0, len(templist)): if templist[i][1] == testqt: layer2 = templist[i][0] else: return else: if isProfilable(layer1): layer2 = layer1 else: QMessageBox.warning(iface.mainWindow(), "SigFox Profile tool", "Active layer is not a profilable layer") return #pregunta la banda de la capa raster o el campo que se desea calcular en la capa vectorial if layer2.type() == layer2.PluginLayer and isProfilable(layer2): self.bandoffset = 0 typename = 'parameter' elif layer2.type() == layer2.RasterLayer: self.bandoffset = 1 typename = 'band' elif layer2.type() == layer2.VectorLayer: self.bandoffset = 0 typename = 'field' if layer2.type() == layer2.RasterLayer and layer2.bandCount( ) != 1: #si hay mas de una banda en la capa raster listband = [] for i in range(0, layer2.bandCount()): listband.append(str(i + self.bandoffset)) testqt, ok = QInputDialog.getItem(iface.mainWindow(), typename + " selector", "Choose the " + typename, listband, False) if ok: choosenBand = int(testqt) - self.bandoffset else: return 2 elif layer2.type( ) == layer2.VectorLayer: #elegir cual es el campo que se desea de la capa vectorial mediante una ventana de dialogo fieldstemp = [field.name() for field in layer2.fields()] if int(QtCore.QT_VERSION_STR[0]) == 4: #qgis2 fields = [ field.name() for field in layer2.fields() if field.type() in [2, 3, 4, 5, 6] ] elif int(QtCore.QT_VERSION_STR[0]) == 5: #qgis3 fields = [ field.name() for field in layer2.fields() if field.isNumeric() ] if len(fields) == 0: QMessageBox.warning(iface.mainWindow(), "Profile tool", "Active layer is not a profilable layer") return elif len(fields) == 1: choosenBand = fieldstemp.index(fields[0]) else: testqt, ok = QInputDialog.getItem(iface.mainWindow(), typename + " selector", "Choose the " + typename, fields, False) if ok: #choosenBand = fieldstemp.index(testqt) choosenBand = testqt else: return 2 else: choosenBand = 0 #Completa la tabla de layers row = mdl.rowCount() mdl.insertRow(row) mdl.setData(mdl.index(row, 0, QModelIndex()), True, QtCore.Qt.CheckStateRole) mdl.item(row, 0).setFlags(QtCore.Qt.ItemIsSelectable) if layer2.type() == layer2.RasterLayer: lineColour = QtCore.Qt.green #Da el color a la capa raster cargada elif layer2.type() == layer2.VectorLayer: lineColour = QtCore.Qt.blue #Da el color a la capa vectorial cargada else: lineColour = QtCore.Qt.blue mdl.setData(mdl.index(row, 1, QModelIndex()), QColor(lineColour), QtCore.Qt.BackgroundRole) mdl.item(row, 1).setFlags(QtCore.Qt.NoItemFlags) mdl.setData(mdl.index(row, 2, QModelIndex()), layer2.name()) mdl.item(row, 2).setFlags(QtCore.Qt.NoItemFlags) if layer2.type() == layer2.VectorLayer: mdl.setData(mdl.index(row, 3, QModelIndex()), choosenBand) mdl.item(row, 3).setFlags(QtCore.Qt.NoItemFlags) mdl.setData(mdl.index(row, 4, QModelIndex()), 100.0) else: mdl.setData(mdl.index(row, 3, QModelIndex()), choosenBand + self.bandoffset) mdl.item(row, 3).setFlags(QtCore.Qt.NoItemFlags) mdl.setData(mdl.index(row, 4, QModelIndex()), '') mdl.item(row, 4).setFlags(QtCore.Qt.NoItemFlags) mdl.setData(mdl.index(row, 5, QModelIndex()), layer2) mdl.item(row, 5).setFlags(QtCore.Qt.NoItemFlags) self.layerAddedOrRemoved.emit()