# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'ui_postgisconnection.ui' # # Created: Fri Aug 15 14:12:27 2014 # by: PyQt4 UI code generator 4.10.2 # # WARNING! All changes made in this file will be lost! from PyQt4 import QtCore, QtGui from PyQt4.QtGui import * #from qgis.core import * import sys import os import psycopg2 import xlrd import csv from ui_srid import Ui_Srid #from importation import Importation try: _fromUtf8 = QtCore.QString.fromUtf8 except AttributeError: def _fromUtf8(s): return s try: _encoding = QtGui.QApplication.UnicodeUTF8 def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig, _encoding) except AttributeError: def _translate(context, text, disambig): return QtGui.QApplication.translate(context, text, disambig) class Ui_PostgisConnection(QtGui.QDialog): importRequested = QtCore.pyqtSignal(tuple) def __init__(self, parent=None): super(Ui_PostgisConnection, self).__init__(parent) self.setObjectName(_fromUtf8("PostgisConnection")) self.resize(916, 419) self.verticalLayoutWidget = QtGui.QWidget(self) self.verticalLayoutWidget.setGeometry(QtCore.QRect(20, 20, 881, 341)) self.verticalLayoutWidget.setObjectName(_fromUtf8("verticalLayoutWidget")) self.verticalLayout = QtGui.QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setMargin(0) self.verticalLayout.setObjectName(_fromUtf8("verticalLayout")) self.gridLayout = QtGui.QGridLayout() self.gridLayout.setObjectName(_fromUtf8("gridLayout")) #gpb_Layers self.gpb_Layers = QtGui.QGroupBox(self.verticalLayoutWidget) self.gpb_Layers.setObjectName(_fromUtf8("gpb_Layers")) self.gpb_Layers.setEnabled(False) self.gridLayoutWidget_3 = QtGui.QWidget(self.gpb_Layers) self.gridLayoutWidget_3.setGeometry(QtCore.QRect(10, 20, 421, 281)) self.gridLayoutWidget_3.setObjectName(_fromUtf8("gridLayoutWidget_3")) self.gridLayout_3 = QtGui.QGridLayout(self.gridLayoutWidget_3) self.gridLayout_3.setMargin(0) self.gridLayout_3.setObjectName(_fromUtf8("gridLayout_3")) self.rbt_projects = QtGui.QRadioButton(self.gridLayoutWidget_3) self.rbt_projects.setObjectName(_fromUtf8("rbt_projects")) self.gridLayout_3.addWidget(self.rbt_projects, 0, 0, 1, 1) self.bnt_Layers = QtGui.QPushButton(self.gridLayoutWidget_3) self.bnt_Layers.setObjectName(_fromUtf8("bnt_Layers")) self.bnt_Layers.setEnabled(False) self.gridLayout_3.addWidget(self.bnt_Layers,4, 1, 1, 1) self.listView = QtGui.QListWidget(self.gridLayoutWidget_3) self.listView.setWindowTitle('Projects ') self.listView.setObjectName(_fromUtf8("listView")) self.listView.setEnabled(False) self.item = QtGui.QListWidgetItem() self.selection= [] self.booolean= False try: conn = psycopg2.connect("dbname='qgis_db' user='postgres' host='localhost' password='postgresql'") except Exception as e: print "I am unable to connect to the database", e cur = conn.cursor() conn.set_isolation_level(0) try: cur.execute("select pt_projname from point group by pt_projname") except psycopg2.ProgrammingError as e: print e self.project =cur.fetchall() for i in self.project: self.item = QtGui.QListWidgetItem(i[0]) self.item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled) self.item.setCheckState(QtCore.Qt.Unchecked) self.item.setSelected(True) self.listView.insertItem(0,self.item) self.listView.show() self.gridLayout_3.addWidget(self.listView, 3, 0, 1, 1) self.rbt_all_project = QtGui.QRadioButton(self.gridLayoutWidget_3) self.rbt_all_project.setObjectName(_fromUtf8("rbt_all_project")) self.gridLayout_3.addWidget(self.rbt_all_project, 0, 1, 1, 1) self.checkBox = QtGui.QCheckBox(self.gridLayoutWidget_3) self.checkBox.setObjectName(_fromUtf8("checkBox")) self.checkBox.setChecked(False) self.gridLayout_3.addWidget(self.checkBox, 1, 0, 1, 1) self.gridLayout.addWidget(self.gpb_Layers, 2, 1, 1, 1) self.rbn_Load = QtGui.QRadioButton(self.verticalLayoutWidget) self.rbn_Load.setObjectName(_fromUtf8("rbn_Load")) self.gridLayout.addWidget(self.rbn_Load, 0, 1, 1, 1) #grp import self.rbn_Import = QtGui.QRadioButton(self.verticalLayoutWidget) self.rbn_Import.setObjectName(_fromUtf8("rbn_Import")) self.gridLayout.addWidget(self.rbn_Import, 0, 0, 1, 1) self.gpb_Import = QtGui.QGroupBox(self.verticalLayoutWidget) self.gpb_Import.setObjectName(_fromUtf8("gpb_Import")) self.gpb_Import.setEnabled(False) self.gridLayoutWidget_2 = QtGui.QWidget(self.gpb_Import) self.gridLayoutWidget_2.setGeometry(QtCore.QRect(10, 20, 421, 291)) self.gridLayoutWidget_2.setObjectName(_fromUtf8("gridLayoutWidget_2")) self.gridLayout_2 = QtGui.QGridLayout(self.gridLayoutWidget_2) self.gridLayout_2.setMargin(0) self.gridLayout_2.setObjectName(_fromUtf8("gridLayout_2")) self.radioButton_3 = QtGui.QRadioButton(self.gridLayoutWidget_2) self.radioButton_3.setObjectName(_fromUtf8("radioButton_3")) self.gridLayout_2.addWidget(self.radioButton_3, 1, 2, 1, 1) self.btn_srid = QtGui.QPushButton(self.gridLayoutWidget_2) self.btn_srid.setObjectName(_fromUtf8("btn_srid")) self.gridLayout_2.addWidget(self.btn_srid, 2, 0, 1, 1) self.lnE_srid = QtGui.QLineEdit(self.gridLayoutWidget_2) self.lnE_srid.setObjectName(_fromUtf8("lnE_srid")) self.gridLayout_2.addWidget(self.lnE_srid, 2, 1, 1, 2) self.rbn_1 = QtGui.QRadioButton(self.gridLayoutWidget_2) self.rbn_1.setObjectName(_fromUtf8("rbn_1")) self.gridLayout_2.addWidget(self.rbn_1, 1, 0, 1, 1) self.btn_browse = QtGui.QPushButton(self.gridLayoutWidget_2) self.btn_browse.setObjectName(_fromUtf8("btn_browse")) self.gridLayout_2.addWidget(self.btn_browse, 0, 0, 1, 1) self.lnE_browse = QtGui.QLineEdit(self.gridLayoutWidget_2) self.lnE_browse.setObjectName(_fromUtf8("lnE_browse")) self.gridLayout_2.addWidget(self.lnE_browse, 0, 1, 1, 2) self.rbn_2 = QtGui.QRadioButton(self.gridLayoutWidget_2) self.rbn_2.setObjectName(_fromUtf8("rbn_2")) self.gridLayout_2.addWidget(self.rbn_2, 1, 1, 1, 1) self.btn_Import = QtGui.QPushButton(self.gridLayoutWidget_2) self.btn_Import.setObjectName(_fromUtf8("btn_Import")) self.btn_Import.setEnabled(False) self.gridLayout_2.addWidget(self.btn_Import, 3, 2, 1, 1) self.gridLayout.addWidget(self.gpb_Import, 2, 0, 1, 1) self.verticalLayout.addLayout(self.gridLayout) self.horizontalLayoutWidget = QtGui.QWidget(self) self.horizontalLayoutWidget.setGeometry(QtCore.QRect(20, 380, 881, 31)) self.horizontalLayoutWidget.setObjectName(_fromUtf8("horizontalLayoutWidget")) self.horizontalLayout = QtGui.QHBoxLayout(self.horizontalLayoutWidget) self.horizontalLayout.setMargin(0) self.horizontalLayout.setObjectName(_fromUtf8("horizontalLayout")) self.btn_help = QtGui.QPushButton(self.horizontalLayoutWidget) self.btn_help.setObjectName(_fromUtf8("btn_help")) self.horizontalLayout.addWidget(self.btn_help) self.buttonBox = QtGui.QDialogButtonBox(self.horizontalLayoutWidget) self.buttonBox.setOrientation(QtCore.Qt.Horizontal) self.buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) self.buttonBox.setObjectName(_fromUtf8("buttonBox")) self.horizontalLayout.addWidget(self.buttonBox) self.gpBtn_1= QtGui.QButtonGroup(self) self.gpBtn_1.addButton(self.rbn_Import, 1) self.gpBtn_1.addButton(self.rbn_Load, 2) self.gpBtn_2= QtGui.QButtonGroup(self) self.gpBtn_2.addButton(self.rbn_1, 1) self.gpBtn_2.addButton(self.rbn_2, 2) self.gpBtn_2.addButton(self.radioButton_3, 3) self.gpBtn_3= QtGui.QButtonGroup(self) self.gpBtn_3.addButton(self.rbt_projects, 1) self.gpBtn_3.addButton(self.rbt_all_project, 2) self.retranslateUi() #self.index = False QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("accepted()"),self.accept) QtCore.QObject.connect(self.buttonBox, QtCore.SIGNAL("rejected()"),self.reject) #QtCore.QObject.connect(self.btn_Import, QtCore.SIGNAL("Clicked()"),self.buttonImport) #QtCore.QObject.connect(self.bnt_Layers, QtCore.SIGNAL("Clicked()"),self.buttonPostgis) self.gpBtn_1.buttonClicked[(int)].connect(self.action_selected) self.gpBtn_3.buttonClicked[(int)].connect(self.projects_selected) self.gpBtn_2.buttonClicked[(int)].connect(self.on_sheet_selected) self.btn_browse.clicked.connect(self.browseDialog) self.lnE_browse.textChanged.connect(self.on_file_edit_changed) self.btn_srid .clicked.connect(self.sridDialog) self.lnE_srid.textChanged.connect(self.on_srid_edit_changed) self.listView.itemClicked.connect(self.on_list_selected) self.btn_Import.clicked.connect(self.val_import) self.bnt_Layers.clicked.connect(self.val_load) self.checkBox.stateChanged.connect(self.on_all_selected) QtCore.QMetaObject.connectSlotsByName(self) self.show() def retranslateUi(self): self.setWindowTitle(_translate("PostGis_Plugin", "Dialog", None)) self.gpb_Layers.setTitle(_translate("PostGis_Plugin", "Loading Layers Box", None)) self.rbt_projects.setText(_translate("PostGis_Plugin", "Select projects", None)) self.bnt_Layers.setText(_translate("PostGis_Plugin", "Load", None)) self.rbt_all_project.setText(_translate("PostGis_Plugin", "All projects", None)) self.checkBox.setText(_translate("PostGis_Plugin", "Select all ", None)) self.rbn_Load.setText(_translate("PostGis_Plugin", "Load layers", None)) self.rbn_Import.setText(_translate("PostGis_Plugin", "Import new data", None)) self.gpb_Import.setTitle(_translate("PostGis_Plugin", "Importation Box", None)) self.radioButton_3.setText(_translate("PostGis_Plugin", "sheet3", None)) self.btn_srid.setText(_translate("PostGis_Plugin", "Spatial referential", None)) self.rbn_1.setText(_translate("PostGis_Plugin", "sheet 1", None)) self.btn_browse.setText(_translate("PostGis_Plugin", "Browse a file", None)) self.rbn_2.setText(_translate("PostGis_Plugin", "sheet2", None)) self.btn_Import.setText(_translate("PostGis_Plugin", "Import", None)) self.btn_help.setText(_translate("PostGis_Plugin", "Help", None)) ## Action Enable/UnEnable def action_selected (self,idx): self.index = idx if idx ==1: self.gpb_Import.setEnabled(True) self.gpb_Layers.setEnabled(False) else: self.gpb_Layers.setEnabled(True) self.gpb_Import.setEnabled(False) def on_file_edit_changed(self, txt): if os.path.isfile(unicode(txt)): self.lnE_browse.setStyleSheet("QLineEdit {color: black;}") if self.lnE_srid.text() and self.index: self.btn_Import.setEnabled(True) else: self.lnE_browse.setStyleSheet("QLineEdit {color: red;}") self.btn_Import.setEnabled(False) def on_sheet_selected(self, idx): self.index = idx if all([self.lnE_browse.text(), self.lnE_srid]): self.btn_Import.setEnabled(True) def on_srid_selected(self, value): self.lnE_srid.setText(value) def on_srid_edit_changed(self, txt): if self.lnE_srid.text() and self.index: self.btn_Import.setEnabled(True) def projects_selected(self,idx): self.index = idx if idx ==1: self.listView.setEnabled(True) if idx==2: self.bnt_Layers.setEnabled(True) #Action dans la partie Importation def browseDialog( self): """Selection du fichier et affichage du chemin d'accès""" self.pathfile = QtGui.QFileDialog.getOpenFileName(self, 'Open file', '/home') #Version du chemin pour les requêtes postgresql + xrl self.correctedpathfile= self.pathfile.replace('\\', '/') self.lnE_browse.setText(str(self.correctedpathfile)) def sridDialog(self): """Ouvre la fenetre de selection du code srid """ self.selected = None self.dlg_srid = Ui_Srid(self) self.dlg_srid.show() self.dlg_srid.exec_() if self.selected is not None: self.on_srid_selected(self.selected) def val_import(self): values = (unicode(self.lnE_browse.text()), unicode(self.lnE_srid.text()), self.index) if all(values): self.importRequested.emit(values) else: self.btn_Import.setEnabled(False) #Action sur le telechargement des points def on_list_selected(self, item): if self.item.checkState() == QtCore.Qt.Checked: self.selection.append(item.text()) self.bnt_Layers.setEnabled(True) def on_all_selected(self,state): self.boolean= (state == QtCore.Qt.Checked) self.bnt_Layers.setEnabled(True) print self.boolean if self.boolean == True: for i in self.project: self.item = self.listView.takeItem(self.listView.currentRow()) print item self.item = QtGui.QListWidgetItem((i[0])) self.item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled) self.item.setCheckState(QtCore.Qt.Checked) self.item.setSelected(False) self.listView.insertItem(0,self.item) self.selection.append(self.item.text()) else : for i in self.project: self.item = self.listView.takeItem(self.listView.currentRow()) self.item = QtGui.QListWidgetItem((i[0])) self.item.setFlags(QtCore.Qt.ItemIsUserCheckable | QtCore.Qt.ItemIsEnabled) self.item.setCheckState(QtCore.Qt.Unchecked) self.item.setSelected(True) self.listView.insertItem(0,self.item) self.selection.remove(self.item.text()) def val_load(self,idx): if self.rbt_all_project.isChecked(): # 1 Affichage de tous les points uri = QgsDataSourceURI() uri.setConnection("localhost", "5432", "qgis_db", "postgres", "postgresql") uri.setDataSource("public", "point", "pt_point")# On peut ajouter une contrainte en 4eme argument layer = QgsVectorLayer(uri.uri(), "All_Localisation_wgs84", "postgres") layer.isValid() QgsMapLayerRegistry.instance().addMapLayer(layer) if self.rbt_projects.isChecked(): print self.selection #OK ## tri rapide pour SRID #http://python.jpvweb.com/mesrecettespython/doku.php?id=dichotomie if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) #MainWindow = QtGui.QDialog() ui = Ui_PostgisConnection() #MainWindow.show() sys.exit(app.exec_())