Пример #1
0
    def __init__(self, iface):
        # Save reference to the QGIS interface
        self.iface = iface
        # initialize plugin directory
        self.plugin_dir = QtCore.QFileInfo(QgsApplication.qgisUserDbFilePath(
        )).path() + "/python/plugins/bdtravaux"
        # initialize locale
        localePath = ""
        # locale = QtCore.QSettings().value("locale/userLocale").toString()[0:2] (ancienne phrase)
        #pb : 'unicode' object has no attribute 'toString'. Pb de compatibilité entre 1.8 et 2.0 : le type QVariant (qui utilise ".toString" n'existe plus. Simplement enlever ".toString" (si on voulait transformer en un autre format, inclure type=str ou TYPE=INT... dans la parenthèse => .value("locale/userLocale", type=int) par exemple
        locale = QtCore.QSettings().value("locale/userLocale")[0:2]

        if QtCore.QFileInfo(self.plugin_dir).exists():
            localePath = self.plugin_dir + "/i18n/bdtravaux_" + locale + ".qm"

        if QtCore.QFileInfo(localePath).exists():
            self.translator = QTranslator()
            self.translator.load(localePath)

            if qVersion() > '4.3.3':
                QCoreApplication.installTranslator(self.translator)

        # Create the dialog (after translation) and keep reference
        self.dlg = BdTravauxDialog()
        self.dlg_ope = OperationDialog(iface)
        self.dlg_prev = PrevuDialog(iface)
Пример #2
0
    def __init__(self, iface):
        # Save reference to the QGIS interface
        self.iface = iface
        # initialize plugin directory
        self.plugin_dir = QtCore.QFileInfo(QgsApplication.qgisUserDbFilePath()).path() + "/python/plugins/bdtravaux"
        # initialize locale
        localePath = ""
        # locale = QtCore.QSettings().value("locale/userLocale").toString()[0:2] (ancienne phrase)
        #pb : 'unicode' object has no attribute 'toString'. Pb de compatibilité entre 1.8 et 2.0 : le type QVariant (qui utilise ".toString" n'existe plus. Simplement enlever ".toString" (si on voulait transformer en un autre format, inclure type=str ou TYPE=INT... dans la parenthèse => .value("locale/userLocale", type=int) par exemple
        locale = QtCore.QSettings().value("locale/userLocale")[0:2]
             

        if QtCore.QFileInfo(self.plugin_dir).exists():
            localePath = self.plugin_dir + "/i18n/bdtravaux_" + locale + ".qm"

        if QtCore.QFileInfo(localePath).exists():
            self.translator = QTranslator()
            self.translator.load(localePath)

            if qVersion() > '4.3.3':
                QCoreApplication.installTranslator(self.translator)
              
        # Create the dialog (after translation) and keep reference
        self.dlg = BdTravauxDialog()
        self.dlg_ope= OperationDialog(iface)
        self.dlg_prev= PrevuDialog(iface)
Пример #3
0
class BdTravaux:
    def __init__(self, iface):
        # Save reference to the QGIS interface
        self.iface = iface
        # initialize plugin directory
        self.plugin_dir = QtCore.QFileInfo(QgsApplication.qgisUserDbFilePath(
        )).path() + "/python/plugins/bdtravaux"
        # initialize locale
        localePath = ""
        # locale = QtCore.QSettings().value("locale/userLocale").toString()[0:2] (ancienne phrase)
        #pb : 'unicode' object has no attribute 'toString'. Pb de compatibilité entre 1.8 et 2.0 : le type QVariant (qui utilise ".toString" n'existe plus. Simplement enlever ".toString" (si on voulait transformer en un autre format, inclure type=str ou TYPE=INT... dans la parenthèse => .value("locale/userLocale", type=int) par exemple
        locale = QtCore.QSettings().value("locale/userLocale")[0:2]

        if QtCore.QFileInfo(self.plugin_dir).exists():
            localePath = self.plugin_dir + "/i18n/bdtravaux_" + locale + ".qm"

        if QtCore.QFileInfo(localePath).exists():
            self.translator = QTranslator()
            self.translator.load(localePath)

            if qVersion() > '4.3.3':
                QCoreApplication.installTranslator(self.translator)

        # Create the dialog (after translation) and keep reference
        self.dlg = BdTravauxDialog()
        self.dlg_ope = OperationDialog(iface)
        self.dlg_prev = PrevuDialog(iface)

    def initGui(self):
        # Création du bouton qui va démarrer le plugin (interface "sortie")
        self.action = QtGui.QAction(
            QtGui.QIcon(":/plugins/bdtravaux/icon2.png"), u"Saisie sortie",
            self.iface.mainWindow())
        # connecte le bouton à une méthode "run"
        QtCore.QObject.connect(self.action, QtCore.SIGNAL("triggered()"),
                               self.run)
        # ajoute l'icône sur la barre d'outils et l'élément de menu.
        self.iface.addToolBarIcon(self.action)
        self.iface.addPluginToMenu(u"&Saisie_travaux", self.action)

        # Création du bouton qui va démarrer le plugin (interface "opérations")
        self.operation = QtGui.QAction(
            QtGui.QIcon(":/plugins/bdtravaux/icon3.png"), u"Saisie opérations",
            self.iface.mainWindow())
        # connecte le bouton à une méthode "run"
        QtCore.QObject.connect(self.operation, QtCore.SIGNAL("triggered()"),
                               self.run_ope)
        # ajoute l'icône sur la barre d'outils et l'élément de menu.
        self.iface.addToolBarIcon(self.operation)
        self.iface.addPluginToMenu(u"&Saisie_travaux", self.operation)

        # Création du bouton qui va démarrer le plugin (interface "gestion et suivis prévus")
        self.prevu = QtGui.QAction(
            QtGui.QIcon(":/plugins/bdtravaux/icon3.png"),
            u"Saisie gestion prévue", self.iface.mainWindow())
        # connecte le bouton à une méthode "run"
        QtCore.QObject.connect(self.prevu, QtCore.SIGNAL("triggered()"),
                               self.run_prev)
        # ajoute l'icône sur la barre d'outils et l'élément de menu.
        self.iface.addToolBarIcon(self.prevu)
        self.iface.addPluginToMenu(u"&Saisie_travaux", self.prevu)

    def unload(self):
        # Remove the plugin menu item and icon (interface "sortie")
        self.iface.removePluginMenu(u"&Saisie_travaux", self.action)
        self.iface.removeToolBarIcon(self.action)
        # Remove the plugin menu item and icon (interface "opérations")
        self.iface.removePluginMenu(u"&Saisie_travaux", self.operation)
        self.iface.removeToolBarIcon(self.operation)
        # Remove the plugin menu item and icon (interface "gestion et suivis prévus")
        self.iface.removePluginMenu(u"&Saisie_gestion_prévue", self.prevu)
        self.iface.removeToolBarIcon(self.prevu)

    # démarre la méthode qui va faire tout le travail (interface "sortie")
    def run(self):
        # show the dialog
        self.dlg.fillExSortieList(
        )  # mise à jour de la liste de sorties déjà saisies (onglet 4)
        self.dlg.show()
        # Run the dialog event loop
        result = self.dlg.exec_()
        # See if OK was pressed
        if result == 1:
            # do something useful (delete the line containing pass and
            # substitute with your code)
            pass

    # démarre la méthode qui va faire tout le travail  (interface "operation")
    def run_ope(self):
        self.verif_geom()
        if self.dlg_ope.sansgeom == 'True' or self.dlg_ope.sansgeom == 'Geom':
            # show the dialog
            self.dlg_ope.actu_cbbx()  # mise à jour de la combobox "sortie"
            self.dlg_ope.actu_listeschoix()
            print 'sansGeom =' + self.dlg_ope.sansgeom
            self.dlg_ope.actu_lblgeom(
            )  # mise à jour du label lbl_geom selon le nb et le type des entités sélectionnées
            self.dlg_ope.actu_gestprev_chxopechvol(
            )  #maj de la QListWidget gestprev selon le site choisi dans la ccbox "sortie"
            self.dlg_ope.show()
            # Run the dialog event loop
            result = self.dlg_ope.exec_()
            # See if OK was pressed
            if result == 1:
                # do something useful (delete the line containing pass and
                # substitute with your code)
                pass

    # démarre la méthode qui va faire tout le travail (interface "gestion et suivis prévus")
    def run_prev(self):
        self.verif_geom()
        if self.dlg_prev.sansgeom == 'True' or self.dlg_prev.sansgeom == 'Geom':
            # show the dialog
            self.dlg_prev.show()
            # Run the dialog event loop
            result = self.dlg_prev.exec_()
            # See if OK was pressed
            if result == 1:
                # do something useful (delete the line containing pass and
                # substitute with your code)
                pass

    def verif_geom(self):
        # layer = la couche active. Si elle n'existe pas (pas de couche sélectionnée), alors lancer le message d'erreur et fermer la fenêtre.
        layer = self.iface.activeLayer()
        self.dlg_ope.sansgeom = 'Geom'
        self.dlg_prev.sansgeom = 'Geom'
        # construction du message d'erreur, qui sera utilisé si aucune couche ou aucune entité n'est sélectionnée
        messlayer = QtGui.QMessageBox()
        messlayer.setInformativeText(
            u'Voulez-vous saisir des données sans les placer sur le terrain?')
        messlayer.setStandardButtons(QtGui.QMessageBox.Yes
                                     | QtGui.QMessageBox.No)
        messlayer.setDefaultButton(QtGui.QMessageBox.No)
        messlayer.setIcon(QtGui.QMessageBox.Question)

        if not layer:
            #S'il n'y a aucune couche active
            messlayer.setText(u'Aucune couche SIG sélectionnée')
            ret = messlayer.exec_()
            if ret == QtGui.QMessageBox.Yes:
                self.dlg_ope.sansgeom = 'True'
                self.dlg_prev.sansgeom = 'True'
            elif ret == QtGui.QMessageBox.No:
                self.dlg_ope.sansgeom = 'False'
                self.dlg_prev.sansgeom = 'False'
                return
        # Attention : au contraire de ce qu'on a fait dans operationdialog.py, ne pas utiliser "self" en premier paramètre de
        # QMessageBox (il faut le widget parent), car ici self désigne une classe qui n'est pas un QWidget.
        # Avec self.dlg_ope, la fenêtre "operation" devient parent => plus d'erreur "parameter 1 : unexpected 'instance'".
        # return permet de quitter la fonction sans exécuter la suite. D'où, plus de message d'erreur parce que
        # la méthode "geometrytype" d'un "active layer" vide n'existe pas.

        else:
            # S'il y a une couche active, mais que c'est un raster
            if layer.type() == QgsMapLayer.RasterLayer:
                messlayer.setText(u'La couche SIG sélectionnée est une image')
                ret = messlayer.exec_()
                if ret == QtGui.QMessageBox.Yes:
                    self.dlg_ope.sansgeom = 'True'
                    self.dlg_prev.sansgeom = 'True'
                elif ret == QtGui.QMessageBox.No:
                    self.dlg_ope.sansgeom = 'False'
                    self.dlg_prev.sansgeom = 'False'
                    return
            else:
                #Si la couche active est bien un vecteur, mais aucune entité n'est sélectionnée
                selection = self.iface.activeLayer().selectedFeatures()
                if not selection:
                    #QtGui.QMessageBox.warning(self.dlg_ope, 'Alerte', u'Voulez-vous saisir des données non géographiques?')
                    messlayer.setText(u'Aucune entité sélectionnée')
                    ret = messlayer.exec_()
                    if ret == QtGui.QMessageBox.Yes:
                        self.dlg_ope.sansgeom = 'True'
                        self.dlg_prev.sansgeom = 'True'
                    elif ret == QtGui.QMessageBox.No:
                        self.dlg_ope.sansgeom = 'False'
                        self.dlg_prev.sansgeom = 'False'
                        return
Пример #4
0
class BdTravaux:

    def __init__(self, iface):
        # Save reference to the QGIS interface
        self.iface = iface
        # initialize plugin directory
        self.plugin_dir = QtCore.QFileInfo(QgsApplication.qgisUserDbFilePath()).path() + "/python/plugins/bdtravaux"
        # initialize locale
        localePath = ""
        # locale = QtCore.QSettings().value("locale/userLocale").toString()[0:2] (ancienne phrase)
        #pb : 'unicode' object has no attribute 'toString'. Pb de compatibilité entre 1.8 et 2.0 : le type QVariant (qui utilise ".toString" n'existe plus. Simplement enlever ".toString" (si on voulait transformer en un autre format, inclure type=str ou TYPE=INT... dans la parenthèse => .value("locale/userLocale", type=int) par exemple
        locale = QtCore.QSettings().value("locale/userLocale")[0:2]
             

        if QtCore.QFileInfo(self.plugin_dir).exists():
            localePath = self.plugin_dir + "/i18n/bdtravaux_" + locale + ".qm"

        if QtCore.QFileInfo(localePath).exists():
            self.translator = QTranslator()
            self.translator.load(localePath)

            if qVersion() > '4.3.3':
                QCoreApplication.installTranslator(self.translator)
              
        # Create the dialog (after translation) and keep reference
        self.dlg = BdTravauxDialog()
        self.dlg_ope= OperationDialog(iface)
        self.dlg_prev= PrevuDialog(iface)
        
    def initGui(self):
        # Création du bouton qui va démarrer le plugin (interface "sortie")
        self.action = QtGui.QAction(
            QtGui.QIcon(":/plugins/bdtravaux/icon2.png"),
            u"Saisie sortie", self.iface.mainWindow())
        # connecte le bouton à une méthode "run" 
        QtCore.QObject.connect(self.action, QtCore.SIGNAL("triggered()"), self.run)
        # ajoute l'icône sur la barre d'outils et l'élément de menu.
        self.iface.addToolBarIcon(self.action)
        self.iface.addPluginToMenu(u"&Saisie_travaux", self.action)
        
        # Création du bouton qui va démarrer le plugin (interface "opérations")
        self.operation = QtGui.QAction(
            QtGui.QIcon(":/plugins/bdtravaux/icon3.png"),
            u"Saisie opérations", self.iface.mainWindow())
        # connecte le bouton à une méthode "run" 
        QtCore.QObject.connect(self.operation, QtCore.SIGNAL("triggered()"), self.run_ope)
        # ajoute l'icône sur la barre d'outils et l'élément de menu.
        self.iface.addToolBarIcon(self.operation)
        self.iface.addPluginToMenu(u"&Saisie_travaux", self.operation)
        
        # Création du bouton qui va démarrer le plugin (interface "gestion et suivis prévus")
        self.prevu = QtGui.QAction(
            QtGui.QIcon(":/plugins/bdtravaux/icon3.png"),
            u"Saisie gestion prévue", self.iface.mainWindow())
        # connecte le bouton à une méthode "run" 
        QtCore.QObject.connect(self.prevu, QtCore.SIGNAL("triggered()"), self.run_prev)
        # ajoute l'icône sur la barre d'outils et l'élément de menu.
        self.iface.addToolBarIcon(self.prevu)
        self.iface.addPluginToMenu(u"&Saisie_travaux", self.prevu)


    def unload(self):
        # Remove the plugin menu item and icon (interface "sortie")
        self.iface.removePluginMenu(u"&Saisie_travaux", self.action)
        self.iface.removeToolBarIcon(self.action)
        # Remove the plugin menu item and icon (interface "opérations")
        self.iface.removePluginMenu(u"&Saisie_travaux", self.operation)
        self.iface.removeToolBarIcon(self.operation)
        # Remove the plugin menu item and icon (interface "gestion et suivis prévus")
        self.iface.removePluginMenu(u"&Saisie_gestion_prévue", self.prevu)
        self.iface.removeToolBarIcon(self.prevu)


    # démarre la méthode qui va faire tout le travail (interface "sortie")
    def run(self):
        # show the dialog
        self.dlg.fillExSortieList()    # mise à jour de la liste de sorties déjà saisies (onglet 4)
        self.dlg.show()
        # Run the dialog event loop
        result = self.dlg.exec_()
        # See if OK was pressed
        if result == 1:
            # do something useful (delete the line containing pass and
            # substitute with your code)
            pass


    # démarre la méthode qui va faire tout le travail  (interface "operation")
    def run_ope(self):
        self.verif_geom()
        if self.dlg_ope.sansgeom=='True' or self.dlg_ope.sansgeom=='Geom':
            # show the dialog
            self.dlg_ope.actu_cbbx()    # mise à jour de la combobox "sortie"
            self.dlg_ope.actu_listeschoix() 
            print 'sansGeom ='+self.dlg_ope.sansgeom
            self.dlg_ope.actu_lblgeom() # mise à jour du label lbl_geom selon le nb et le type des entités sélectionnées
            self.dlg_ope.actu_gestprev_chxopechvol()#maj de la QListWidget gestprev selon le site choisi dans la ccbox "sortie"
            self.dlg_ope.show()
            # Run the dialog event loop
            result = self.dlg_ope.exec_()
            # See if OK was pressed
            if result == 1:
                # do something useful (delete the line containing pass and
                # substitute with your code)
                pass


    # démarre la méthode qui va faire tout le travail (interface "gestion et suivis prévus")
    def run_prev(self):
        self.verif_geom()
        if self.dlg_prev.sansgeom=='True' or self.dlg_prev.sansgeom=='Geom':
            # show the dialog
            self.dlg_prev.show()
            # Run the dialog event loop
            result = self.dlg_prev.exec_()
            # See if OK was pressed
            if result == 1:
                # do something useful (delete the line containing pass and
                # substitute with your code)
                pass


    def verif_geom(self):
        # layer = la couche active. Si elle n'existe pas (pas de couche sélectionnée), alors lancer le message d'erreur et fermer la fenêtre.
        layer=self.iface.activeLayer()
        self.dlg_ope.sansgeom='Geom'
        self.dlg_prev.sansgeom='Geom'
        # construction du message d'erreur, qui sera utilisé si aucune couche ou aucune entité n'est sélectionnée
        messlayer=QtGui.QMessageBox()
        messlayer.setInformativeText(u'Voulez-vous saisir des données sans les placer sur le terrain?')
        messlayer.setStandardButtons(QtGui.QMessageBox.Yes | QtGui.QMessageBox.No)
        messlayer.setDefaultButton(QtGui.QMessageBox.No)
        messlayer.setIcon(QtGui.QMessageBox.Question)

        if not layer:
            #S'il n'y a aucune couche active
            messlayer.setText(u'Aucune couche SIG sélectionnée')
            ret = messlayer.exec_()
            if ret == QtGui.QMessageBox.Yes:
                self.dlg_ope.sansgeom='True'
                self.dlg_prev.sansgeom='True'
            elif ret == QtGui.QMessageBox.No:
                self.dlg_ope.sansgeom='False'
                self.dlg_prev.sansgeom='False'
                return
        # Attention : au contraire de ce qu'on a fait dans operationdialog.py, ne pas utiliser "self" en premier paramètre de
        # QMessageBox (il faut le widget parent), car ici self désigne une classe qui n'est pas un QWidget. 
        # Avec self.dlg_ope, la fenêtre "operation" devient parent => plus d'erreur "parameter 1 : unexpected 'instance'".
        # return permet de quitter la fonction sans exécuter la suite. D'où, plus de message d'erreur parce que 
        # la méthode "geometrytype" d'un "active layer" vide n'existe pas.
        
        else:
            # S'il y a une couche active, mais que c'est un raster
            if layer.type() == QgsMapLayer.RasterLayer:
                messlayer.setText(u'La couche SIG sélectionnée est une image')
                ret = messlayer.exec_()
                if ret == QtGui.QMessageBox.Yes:
                    self.dlg_ope.sansgeom='True'
                    self.dlg_prev.sansgeom='True'
                elif ret == QtGui.QMessageBox.No:
                    self.dlg_ope.sansgeom='False'
                    self.dlg_prev.sansgeom='False'
                    return
            else:
                #Si la couche active est bien un vecteur, mais aucune entité n'est sélectionnée
                selection=self.iface.activeLayer().selectedFeatures()
                if not selection:
                    #QtGui.QMessageBox.warning(self.dlg_ope, 'Alerte', u'Voulez-vous saisir des données non géographiques?')
                    messlayer.setText(u'Aucune entité sélectionnée')
                    ret = messlayer.exec_()
                    if ret == QtGui.QMessageBox.Yes:
                        self.dlg_ope.sansgeom='True'
                        self.dlg_prev.sansgeom='True'
                    elif ret == QtGui.QMessageBox.No:
                        self.dlg_ope.sansgeom='False'
                        self.dlg_prev.sansgeom='False'
                        return