Exemplo n.º 1
0
 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)
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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)
Exemplo n.º 6
0
    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()
Exemplo n.º 7
0
    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()