24
24
25
25
from PyQt4 .QtCore import *
26
26
from PyQt4 .QtGui import *
27
+ from qgis .core import *
27
28
28
29
from .db_plugins .plugin import BaseError
29
30
from .dlg_db_error import DlgDbError
@@ -61,6 +62,12 @@ def __init__(self, iface, db, parent=None):
61
62
self .connect (self .btnClear , SIGNAL ("clicked()" ), self .clearSql )
62
63
self .connect (self .buttonBox .button (QDialogButtonBox .Close ), SIGNAL ("clicked()" ), self .close )
63
64
65
+
66
+ self .connect (self .presetStore , SIGNAL ("clicked()" ), self .storePreset )
67
+ self .connect (self .presetDelete , SIGNAL ("clicked()" ), self .deletePreset )
68
+ self .connect (self .presetCombo , SIGNAL ("activated(QString)" ), self .loadPreset )
69
+ self .connect (self .presetCombo , SIGNAL ("activated(QString)" ), self .presetName .setText )
70
+
64
71
# hide the load query as layer if feature is not supported
65
72
self ._loadAsLayerAvailable = self .db .connector .hasCustomQuerySupport ()
66
73
self .loadAsLayerGroup .setVisible ( self ._loadAsLayerAvailable )
@@ -71,6 +78,46 @@ def __init__(self, iface, db, parent=None):
71
78
self .connect (self .loadAsLayerGroup , SIGNAL ("toggled(bool)" ), self .loadAsLayerToggled )
72
79
self .loadAsLayerToggled (False )
73
80
81
+ def showEvent (self , event ):
82
+ QDialog .showEvent (self , event )
83
+ self .updatePresetsCombobox ()
84
+
85
+
86
+
87
+ def updatePresetsCombobox (self ):
88
+ entries = QgsProject .instance ().subkeyList ('DBManager' ,'savedQueries' )
89
+ self .presetCombo .clear ()
90
+ names = []
91
+ for entry in entries :
92
+ name = QgsProject .instance ().readEntry ('DBManager' ,'savedQueries/' + entry + '/name' )[0 ]
93
+ names .append ( name )
94
+
95
+ names .sort ()
96
+
97
+ for name in names :
98
+ self .presetCombo .addItem (name )
99
+
100
+ def storePreset (self ):
101
+ query = self .editSql .toPlainText ()
102
+ name = self .presetName .text ()
103
+ QgsProject .instance ().writeEntry ('DBManager' ,'savedQueries/q' + str (name .__hash__ ())+ '/name' , name )
104
+ QgsProject .instance ().writeEntry ('DBManager' ,'savedQueries/q' + str (name .__hash__ ())+ '/query' , query )
105
+ index = self .presetCombo .findText (name )
106
+ if index == - 1 :
107
+ self .presetCombo .addItem (name )
108
+ self .presetCombo .setCurrentIndex (self .presetCombo .count ()- 1 )
109
+ else :
110
+ self .presetCombo .setCurrentIndex (index )
111
+
112
+ def deletePreset (self ):
113
+ name = self .presetCombo .currentText ()
114
+ QgsProject .instance ().removeEntry ('DBManager' ,'savedQueries/q' + str (name .__hash__ ()) )
115
+ self .presetCombo .removeItem ( self .presetCombo .findText (name ) )
116
+ self .presetCombo .setCurrentIndex (- 1 )
117
+ def loadPreset (self , name ):
118
+ query = QgsProject .instance ().readEntry ('DBManager' ,'savedQueries/q' + str (name .__hash__ ())+ '/query' )[0 ]
119
+ name = QgsProject .instance ().readEntry ('DBManager' ,'savedQueries/q' + str (name .__hash__ ())+ '/name' )[0 ]
120
+ self .editSql .setText (query )
74
121
75
122
def closeEvent (self , e ):
76
123
""" save window state """
0 commit comments