gestione delle finestre di dialogo QgsAttributeForm tramite phyton

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

gestione delle finestre di dialogo QgsAttributeForm tramite phyton

aciali
Salve, sto cercando di creare una init function in phyton da collegare ad una finestra di attributi (QgsAttributeForm) in qgis per inserire alcune funzioni di controllo sull’inserimento di valori; ho utilizzato il form di Nathan che è riportato anche nell’help di qgis per la customizzazione delle finestre di dialogo. La domanda è questa: quando la procedura di validazione fallisce vorrei che il form degli attributi rimanesse aperto per correggere i valori non validi, invece si chiude e si crea comunque un record in tabella. Sotto la parte di form che valida l’inserimento dati:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
 
myDialog = None
pkey_spuF  = None
 
def formOpen(dialog,layerid,featureid):
        global myDialog
        myDialog = dialog
        global pkey_spuF, quotaF, mod_cF, desc_cF
        pkey_spuF = dialog.findChild(QLineEdit,"pkey_spu")
        quotaF = dialog.findChild(QLineEdit,"quota_slm")
        mod_cF = dialog.findChild(QComboBox,"mod_identcoord")
        desc_cF = dialog.findChild(QLineEdit,"desc_modcoord")
        buttonBox = dialog.findChild(QDialogButtonBox,"buttonBox")

        # Disconnect the signal that QGIS has wired up for the dialog to the button box.
        buttonBox.accepted.disconnect(myDialog.accept)
        # Wire up our own signals.
        buttonBox.accepted.connect(validate)
        buttonBox.rejected.connect(myDialog.reject)

def validate():
        # Make sure that the pkey_spu isn't empty.
        if not len(pkey_spuF.text()) > 0 or pkey_spuF.text() == 'NULL':
            pkey_spuF.setStyleSheet("background-color: rgba(255, 107, 107, 150);")
            msgBox = QMessageBox()
            msgBox.setText("il campo chiave primaria deve essere valorizzato")
            msgBox.exec_()
            myDialog.resetValues()
        else:
            # Make sure that the quota_slm isn't empty.
             if not len(quotaF.text()) > 0 or quotaF.text() == 'NULL':
                 quotaF.setStyleSheet("background-color: rgba(255, 107, 107, 150);")
                 msgBox = QMessageBox()
                 msgBox.setText("il campo Quota slm deve essere valorizzato")
                 msgBox.exec_()
            # myDialog.reject
             else:
            # Return the form as accpeted to QGIS.
                 myDialog.accept()

Il problema, credo, sta nel fatto che la riga  “ myDialog.reject “ o “myDialog.resetValues()” (ho provato sia l’una che l’altra); qualcuno sa aiutarmi?
Grazie in anticipo

Alessandro Ciali


_______________________________________________
[hidden email]
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.
750 iscritti al 18.3.2015