<div dir="ltr">per esempio c'e'<div><br></div><div><a href="https://github.com/sourcepole/qgis-remote-debug">https://github.com/sourcepole/qgis-remote-debug</a><br></div><div><br></div><div>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</div>

<div><br></div><div>ciao Luigi Pirelli</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On 23 June 2014 14:51, NicoPez <span dir="ltr"><<a href="mailto:nico.pezzotta@gmail.com" target="_blank">nico.pezzotta@gmail.com</a>></span> wrote:<br>

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


Sent from the Gfoss -- Geographic Free and Open Source Software - Italian mailing list mailing list archive at Nabble.com.<br>
_______________________________________________<br>
<a href="mailto:Gfoss@lists.gfoss.it">Gfoss@lists.gfoss.it</a><br>
<a href="http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss" target="_blank">http://lists.gfoss.it/cgi-bin/mailman/listinfo/gfoss</a><br>
Questa e' una lista di discussione pubblica aperta a tutti.<br>
I messaggi di questa lista non hanno relazione diretta con le posizioni dell'Associazione GFOSS.it.<br>
666+40 iscritti al 5.6.2014</blockquote></div><br></div>