Example #1
0
    def __init__(self, iface):
        
        QtGui.QDialog.__init__(self)
        # Configure l'interface utilisateur issue de QTDesigner.
        self.ui = Ui_GestPrev()
        self.ui.setupUi(self)
        # Référencement de iface dans l'interface (iface = interface de QGIS)
        self.iface = iface
        self.canvas = self.iface.mapCanvas()

        #Quand la classe est fermée, elle est effacée. permet de réinitialiser toutes les valeurs si on réappuie sur le bouton.
        #self.setAttribute(QtCore.Qt.WA_QuitOnClose, True)
        
        # Type de BD, hôte, utilisateur, mot de passe...
        self.db = QtSql.QSqlDatabase.addDatabase("QPSQL") # QPSQL = nom du pilote postgreSQL
        self.db.setHostName("127.0.0.1") 
        self.db.setDatabaseName("sitescsn")
        self.db.setUserName("postgres")
        self.db.setPassword("postgres")
        ok = self.db.open()
        if not ok:
            QtGui.QMessageBox.warning(self, 'Alerte', u'La connexion est échouée')

        # Remplir la combobox "site" avec les codes et noms de sites 
        # issus de la table "sites"
        query = QtSql.QSqlQuery(self.db)
        # on affecte à la variable query la méthode QSqlQuery (paramètre = nom de l'objet "base")
        if query.exec_('select idchamp, codesite, nomsite from sites_cen.t_sitescen order by codesite'):
            while query.next():
                self.ui.prevcbo_codesite.addItem(query.value(1) + " " + query.value(2), query.value(1) )

        # On connecte les signaux des boutons a nos methodes definies ci dessous
        # connexion du signal du bouton OK
        self.connect(self.ui.buttonBox, QtCore.SIGNAL('accepted()'), self.sauverOpePrev)
        self.connect(self.ui.buttonBox, QtCore.SIGNAL('rejected()'), self.close)
Example #2
0
class PrevuDialog(QtGui.QDialog):
    def __init__(self, iface):
        
        QtGui.QDialog.__init__(self)
        # Configure l'interface utilisateur issue de QTDesigner.
        self.ui = Ui_GestPrev()
        self.ui.setupUi(self)
        # Référencement de iface dans l'interface (iface = interface de QGIS)
        self.iface = iface
        self.canvas = self.iface.mapCanvas()

        #Quand la classe est fermée, elle est effacée. permet de réinitialiser toutes les valeurs si on réappuie sur le bouton.
        #self.setAttribute(QtCore.Qt.WA_QuitOnClose, True)
        
        # Type de BD, hôte, utilisateur, mot de passe...
        self.db = QtSql.QSqlDatabase.addDatabase("QPSQL") # QPSQL = nom du pilote postgreSQL
        self.db.setHostName("127.0.0.1") 
        self.db.setDatabaseName("sitescsn")
        self.db.setUserName("postgres")
        self.db.setPassword("postgres")
        ok = self.db.open()
        if not ok:
            QtGui.QMessageBox.warning(self, 'Alerte', u'La connexion est échouée')

        # Remplir la combobox "site" avec les codes et noms de sites 
        # issus de la table "sites"
        query = QtSql.QSqlQuery(self.db)
        # on affecte à la variable query la méthode QSqlQuery (paramètre = nom de l'objet "base")
        if query.exec_('select idchamp, codesite, nomsite from sites_cen.t_sitescen order by codesite'):
            while query.next():
                self.ui.prevcbo_codesite.addItem(query.value(1) + " " + query.value(2), query.value(1) )

        # On connecte les signaux des boutons a nos methodes definies ci dessous
        # connexion du signal du bouton OK
        self.connect(self.ui.buttonBox, QtCore.SIGNAL('accepted()'), self.sauverOpePrev)
        self.connect(self.ui.buttonBox, QtCore.SIGNAL('rejected()'), self.close)


    def sauverOpePrev(self):
        # Fonction à lancer quans le bouton "OK" est cliqué
        # Entre en base les infos sélectionnées dans QGIS, et saisies dans le formulaire par l'utilisateur

        if self.iface.activeLayer().geometryType()==0:
            nom_table='list_gestprev_pts'
        elif self.iface.activeLayer().geometryType()==1:
            nom_table='list_gestprev_lgn'
        elif self.iface.activeLayer().geometryType()==2:
            nom_table='list_gestprev_surf'

        coucheactive=self.iface.activeLayer()

        #lancement de la requête SQL qui introduit les données géographiques et du formulaire dans la base de données.
        querysauvope = QtSql.QSqlQuery(self.db)
        query = u"""insert into bdtravaux.{zr_nomtable} (prev_codesite, prev_codeope, prev_typeope, prev_lblope, prev_annprev, prev_pdg, the_geom) values ({zr_codesite}, '{zr_codeope}', '{zr_typeope}', '{zr_lblope}', '{zr_annprev}', '{zr_pdg}', st_setsrid(st_geometryfromtext ('{zr_the_geom}'),2154)')""".format (zr_nomtable=nom_table,\
        zr_codesite = self.ui.prevcbo_codesite.itemData(self.ui.prevcombo_codesite.currentIndex()),\
        zr_codeope = self.ui.prevledit_gh.text(),\
        zr_typeope = self.ui.prevlist_typeope.currentItem().text(),\
        zr_lblope = self.ui.prevtedit_lblope.toPlainText(),\
        zr_annprev = self.ui.prevledit_annprev.text(),\
        zr_pdg = self.ui.prevlist_pdg.currentItem().text(),\
        zr_the_geom = coucheactive.selectedFeatures().exportToWkt())
        ok = querysauvope.exec_(query)
        if not ok:
            QtGui.QMessageBox.warning(self, 'Alerte', u'Requête ratée')
            print query
        self.iface.setActiveLayer(coucheactive)
        self.close