1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
|
-*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore
from PyQt4 import QtGui
from PyQt4.QtGui import QAbstractItemView
from PyQt4.QtCore import QObject, pyqtSignal
from PyQt4.QtCore import QEvent
import psycopg2
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_Srid(QtGui.QDialog):
signal_srid = pyqtSignal(str)
def __init__(self, parent=None):
super(Ui_Srid, self).__init__(parent)
self.text = ''
self.main = parent
self.setObjectName(_fromUtf8("self"))
self.setWindowModality(QtCore.Qt.WindowModal)
self.resize(781,427)
self.gridLayoutWidget = QtGui.QWidget(self)
self.gridLayoutWidget.setGeometry(QtCore.QRect(10, 30, 761, 371))
self.gridLayoutWidget.setObjectName(_fromUtf8("gridLayoutWidget"))
self.gridLayout = QtGui.QGridLayout(self.gridLayoutWidget)
self.gridLayout.setMargin(0)
self.gridLayout.setObjectName(_fromUtf8("gridLayout"))
self.lineEdit = QtGui.QLineEdit(self.gridLayoutWidget)
self.lineEdit.setObjectName(_fromUtf8("lineEdit"))
self.gridLayout.addWidget(self.lineEdit, 0, 1, 1, 1)
self.tableWidget = QtGui.QTableWidget(self.gridLayoutWidget)
self.tableWidget.setObjectName(_fromUtf8("tableWidget"))
self.tableWidget.setColumnCount(0)
self.tableWidget.setRowCount(0)
self.gridLayout.addWidget(self.tableWidget, 1, 1, 1, 1)
self.label = QtGui.QLabel(self.gridLayoutWidget)
self.label.setObjectName(_fromUtf8("label"))
self.gridLayout.addWidget(self.label, 0, 0, 1, 1)
self.retranslateUi()
#Rempli la table
self.sridData()
#Double cliaue : Selection de l'élement et fermeture de la fenêtre
self.tableWidget.cellDoubleClicked.connect(self.returnSRID)
QtCore.QObject.connect(self.tableWidget, QtCore.SIGNAL(_fromUtf8("doubleClicked(QModelIndex)")), self.close)
QtCore.QMetaObject.connectSlotsByName(self)
#Entré d'un texte dans la barre de recherche
self.lineEdit.textChanged.connect(self.on_qline_edit)
self.lineEdit.editingFinished.connect(self.sridData)
#Affiche le tout
self.show()
def retranslateUi(self):
self.setWindowTitle(_translate("Srid", "Srid", None))
def sridData(self): ##REMPLISSAGE
self.text = self.lineEdit.text()
if self.text=="":
try:
conn = psycopg2.connect("dbname='qgis_db' user='postgres' host='localhost' password='postgresql'")
except:
print "I am unable to connect to the database"
cur = conn.cursor()
data= cur.execute("SELECT srid_label, srid_text FROM spatial_ref_sys;")
data = cur.fetchall()
lignes = len(data)
columns = len(data[0])
i = 0
j = 0
self.tableWidget.setRowCount(lignes)
self.tableWidget.setColumnCount(columns)
self.tableWidget.setHorizontalHeaderLabels(['Label sird', 'srid'])
self.tableWidget.horizontalHeader().setResizeMode(0, QtGui.QHeaderView.Stretch)
for i in range(lignes):
for j in range(columns):
item = QtGui.QTableWidgetItem(data[i][j])
self.tableWidget.setItem(i, j, item)
else :
self.on_qline_edit(self.text)
def returnSRID(self, row, col): # Apellé seulemment lorsque l'on selection une ligne
column = col or 1
self.srid_selected = self.tableWidget.item(row, column).text()
self.main.selected = self.srid_selected
def on_qline_edit(self, text):
if text :
items = self.tableWidget.findItems(self.lineEdit.text(), QtCore.Qt.MatchContains) # Qt::MatchRegExp ou Qt::MatchWrap
if items:
#Récupère les élements de la recherche
self.data_ligne=[]
self.data_col=[]
self.data_seach =[]
for item in items :
row = item.row()+1
self.data_ligne.append(self.tableWidget.item(item.row(), item.column()).text())
self.data_col.append(self.tableWidget.item(item.row(), item.column()).text())
#Elements de la recherche
self.data_seach={'A':self.data_ligne, 'B':self.data_col}
#Remplissage du tableau avec les résultats de la recherche rapide
self.tableWidget.setRowCount(len(self.data_ligne))
self.tableWidget.setColumnCount(len(self.data_seach))
self.tableWidget.setHorizontalHeaderLabels(['Label sird', 'srid'])
n=0
for key in self.data_seach:
m = 0
for item in self.data_seach[key]:
self.item = QtGui.QTableWidgetItem(item)
self.tableWidget.setItem(m, n, self.item)
m += 1
n += 1
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QDialog()
ui = Ui_Srid()
sys.exit(app.exec_()) |
Partager