[Gfoss] Creazione plugin problema

Gino Pirelli luipir a gmail.com
Lun 23 Giu 2014 16:08:27 CEST


per esempio c'e'

https://github.com/sourcepole/qgis-remote-debug

non lo trovi nel repo dei plugin e non saprei dire perche'... morale
clonati il repo nella directory dei plugin e segui le istruzioni del readme

ciao Luigi Pirelli


On 23 June 2014 14:51, NicoPez <nico.pezzotta a gmail.com> wrote:

> Buon pomeriggio a tutti. Mi sto cimentando per la prima volta con la
> creazione di plugin e finora sono riuscito sempre a risolvere i problemi
> "grazie" agli errori segnalati da QGIS al momento dell'avvio o quando vado
> a
> far girare il plugin. Ora invece non mi da nessun errore, ma non il plugin
> non elabora. Se vi incollo il codice, potreste aiutarmi e capire dove è il
> problema? Fino alla "def search()" sembrava andare tutto come doveva. P.S.:
> c'è un modo per fare il debug del codice fino ad un certo punto, oppure
> eseguire il codice passo passo (come in VBA)? Grazie in anticipo!
>
> from PyQt4 import QtCore, QtGui
> from qgis.core import *
> from PyQt4.QtCore import *
> from PyQt4.QtGui import *
> from qgis.core import *
> from qgis.gui import *
>
> from ui_searchparcels2 import Ui_SearchParcels2
> # create the dialog for zoom to point
>
>
> class SearchParcels2Dialog(QtGui.QDialog, Ui_SearchParcels2):
>     def __init__(self):
>         QtGui.QDialog.__init__(self)
>         self.setupUi(self)
>
>         QObject.connect(self.uptadeButton, SIGNAL("clicked()"),
> self.chooseLayer)
>         QObject.connect(self.comboBox,
> SIGNAL("currentIndexChanged(QString)"), self.chooseField)
>         QObject.connect(self.comboBox,
> SIGNAL("currentIndexChanged(QString)"), self.chooseField2)
>         QObject.connect(self.selectBox, SIGNAL("stateChanged(int)"),
> self.OnSelectBoxClicked)
>         QObject.connect(self.cancelButton, SIGNAL("clicked()"),
> self.cancelSearch)
>         QObject.connect(self.goButton, SIGNAL("clicked()"), self.search)
>
>         self.chooseLayer()
>
>     # in first comboBox show the list of layers (list of names)
>     def chooseLayer(self):
>         layerList = []     # crea una lista vuota
>         self.comboBox.clear()     # svuota la lista del combo box
>         layerList = self.getLayerNames()     # a layerList assegna il
> risultato della procedura getLayerNames()
>         self.comboBox.addItems(layerList)
>         self.FoglioLine.clear()
>         self.ParticelLine.clear()
>         self.OnSelectBoxClicked()
>         return
>
>     # Get the list of layers (list of names) in QgsMapLayerRegistry
>     def getLayerNames(self):
>         layermap = QgsMapLayerRegistry.instance().mapLayers()   # assegna a
> layermap l'insieme dei layers caricati
>         layerLst = []
>         for i, layer in layermap.iteritems():
>             if layer.type() == QgsMapLayer.VectorLayer:    # considera solo
> i layers vettoriali
>                 layerLst.append( unicode( layer.name() ) )   # prende il
> nome di ogni layer a lo aggiunge alla lista layerLst
>         return layerLst
>
>     # in second comboBox show the list fields (list of names)
>     def chooseField(self):
>         fieldList = []
>         self.campo1.clear()
>         fieldList = self.getFieldNames()
>         self.campo1.addItems( fieldList )
>         return
>
>     # Get the list fields (list of names) for the selected layer
>     def getFieldNames(self):
>         layermap = QgsMapLayerRegistry.instance().mapLayers()
>         fieldLst = []
>         for i, layer in layermap.iteritems():
>             if layer.type() == QgsMapLayer.VectorLayer and layer.name() ==
> self.comboBox.currentText():
>                 if layer.isValid():
>                     fields = layer.dataProvider().fields()
>                     for i in range(fields.count()):
>                         field = fields[i]
>                         fieldLst.append(field.name())
>         return fieldLst
>
>     # in third comboBox show the list fields (list of names)
>     def chooseField2(self):
>         fieldList = []
>         self.campo2.clear()
>         fieldList = self.getFieldNames()
>         self.campo2.addItems( fieldList )
>         return
>
>     def OnSelectBoxClicked(self):
>         layermap = QgsMapLayerRegistry.instance().mapLayers()
>         for i, layer in layermap.iteritems():
>             if layer.type() == QgsMapLayer.VectorLayer and layer.name() ==
> self.comboBox.currentText():
>                 if layer.isValid():
>                     if not self.selectBox.isChecked():
>                         self.panBox.setEnabled(False)
>                         self.scaleBox.setEnabled(False)
>                     else:
>                         self.panBox.setEnabled(layer.hasGeometryType())
>                         self.scaleBox.setEnabled(layer.hasGeometryType())
>         return
>
>     def cancelSearch(self):
>         self.continueSearch = False
>         return
>
>     def search(self):
>         i = self.comboBox.currentIndex()
>         if i < 0:
>             return None
>         layerId = self.comboBox.itemData(i)
>         layer = QgsMapLayerRegistry.instance().mapLayer(layerId)
>         if layer is None:
>             return
>         toFind = self.FoglioLine.text()
>         toFind2 = self.ParticelLine.text()
>         f = QgsFeature()
>         results = []
>         fieldIndex = self.campo1.currentIndex()
>         fieldName = self.campo1.itemData(fieldIndex)
>         fieldIndex2 = self.campo2.currentIndex()
>         fieldName2 = self.campo2.itemData(fieldIndex2)
>         if fieldName == "" or fieldName2 == "":
>             QMessageBox
>             msgBox.setText("Search Parcels 2: Seleziona un campo.")
>             msgBox.exec_()
>             return
>         try:
>             float(toFind)
>         except ValueError:
>             QMessageBox
>             msgBox.setText("Search Parcels 2: Inserisci un valore
> numerico.")
>             msgBox.exec_()
>             return
>         try:
>             float(toFind2)
>         except ValueError:
>             QMessageBox
>             msgBox.setText("Search Parcels 2: Inserisci un valore
> numerico.")
>             msgBox.exec_()
>             return
>          show progress bar
>         self.progressBar.setMinimum(0)
>         self.progressBar.setMaximum(layer.featureCount())
>         self.progressBar.setValue(0)
>         self.widget_2.show()
>         # disable rest of UI
>         self.layerWidgetGroup.setEnabled(False)
>         self.SearchWidgetGroup.setEnabled(False)
>         self.CheckWidgetGroup.setEnabled(False)
>         # create feature request
>         featReq = QgsFeatureRequest()
>         featReq.setFlags(QgsFeatureRequest.NoGeometry)
>         Req = featReq.setSubsetOfAttributes([fieldIndex])
>         Re2 = featReq.setSubsetOfAttributes([fieldIndex2])
>         iter = layer.getFeatures(featReq)
>         # process
>         k = 0
>         n = 0
>         self.continueSearch = True
>         while iter.nextFeature(f) and self.continueSearch:
>             k += 1
>             if self.evaluate(f[fieldName], toFind):
>                 results.append(f.id())
>         f2 = QgisFeature(f.id())
>         while iter.nextFeature(f2) and self.continueSearh:
>             n += 1
>             if self.evaluate(f[fieldName2], toFind2):
>                 results2.append(f2.id())
>             self.progressBar.setValue(n)
>             QCoreApplication.processEvents()
>         # reset UI
>         self.widget_2.hide()
>         self.layerWidgetGroup.setEnabled(True)
>         self.SearchWidgetGroup.setEnabled(True)
>         self.CheckWidgetGroup.setEnabled(True)
>         # process results
>         if self.continueSearch:
>             QMessageBox
>             msgBox.setText("Search Parcels 2: %u particelle trovate.")
>             msgBox.exec_()
>             self.processResults(results2)
>         return
>
>     def evaluate(self, v1, v2):
>         return float(v1) == float(v2)
>
>     def processResults(self, results2):
>         if layer is None:
>             return
>         if self.selectBox.isChecked():
>             layer.setSelectedFeatures(results2)
>             if len(results2) == 0:
>                 return
>
>             if self.panBox.isEnabled() and self.panBox.isChecked():
>                 canvas = self.iface.mapCanvas()
>                 rect =
> canvas.mapRenderer().layerExtentToOutputExtent(layer,
> layer.boundingBoxOfSelected())
>                 if rect is not None:
>                     if self.scaleBox.isEnabled() and
> self.scaleBox.isChecked():
>                         rect.scale(1.5)
>                         canvas.setExtent(rect)
>                     else:
>                         canvas.setExtent(QgsRectangle(rect.center(),
> rect.center()))
>                 canvas.refresh()
>         if self.formBox.isChecked():
>             f = QgsFeature()
>             for id in results2:
>                 if
> layer.getFeatures(QgsFeatureRequest().setFilterFid(id)).nextFeature(f):
>                     self.IdentifyResult(layer, f)
>         return
>
>
>
>
> --
> View this message in context:
> http://gfoss-geographic-free-and-open-source-software-italian-mailing.3056002.n2.nabble.com/Creazione-plugin-problema-tp7588499.html
> Sent from the Gfoss -- Geographic Free and Open Source Software - Italian
> mailing list mailing list archive at Nabble.com.
> _______________________________________________
> Gfoss a lists.gfoss.it
> http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss
> Questa e' una lista di discussione pubblica aperta a tutti.
> I messaggi di questa lista non hanno relazione diretta con le posizioni
> dell'Associazione GFOSS.it.
> 666+40 iscritti al 5.6.2014
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.gfoss.it/pipermail/gfoss/attachments/20140623/075d31ce/attachment-0001.html>


Maggiori informazioni sulla lista Gfoss