|
26 | 26 | from builtins import str
|
27 | 27 | from hashlib import md5
|
28 | 28 |
|
29 |
| -from qgis.PyQt.QtCore import Qt, pyqtSignal |
30 |
| -from qgis.PyQt.QtWidgets import QDialog, QWidget, QAction, QApplication, QInputDialog, QStyledItemDelegate, QTableWidgetItem |
| 29 | +import os |
| 30 | + |
| 31 | +from qgis.PyQt.QtCore import Qt, pyqtSignal, QDir |
| 32 | +from qgis.PyQt.QtWidgets import QDialog, QWidget, QAction, QApplication, QInputDialog, QStyledItemDelegate, QTableWidgetItem, QFileDialog |
31 | 33 | from qgis.PyQt.QtGui import QKeySequence, QCursor, QClipboard, QIcon, QStandardItemModel, QStandardItem
|
32 | 34 | from qgis.PyQt.Qsci import QsciAPIs
|
33 | 35 |
|
@@ -116,6 +118,8 @@ def __init__(self, iface, db, parent=None):
|
116 | 118 | self.btnClear.clicked.connect(self.clearSql)
|
117 | 119 |
|
118 | 120 | self.presetStore.clicked.connect(self.storePreset)
|
| 121 | + self.presetSaveAsFile.clicked.connect(self.saveAsFilePreset) |
| 122 | + self.presetLoadFile.clicked.connect(self.loadFilePreset) |
119 | 123 | self.presetDelete.clicked.connect(self.deletePreset)
|
120 | 124 | self.presetCombo.activated[str].connect(self.loadPreset)
|
121 | 125 | self.presetCombo.activated[str].connect(self.presetName.setText)
|
@@ -224,6 +228,47 @@ def storePreset(self):
|
224 | 228 | else:
|
225 | 229 | self.presetCombo.setCurrentIndex(index)
|
226 | 230 |
|
| 231 | + def saveAsFilePreset(self): |
| 232 | + settings = QgsSettings() |
| 233 | + lastDir = settings.value('DB_Manager/lastDirSQLFIle', "") |
| 234 | + |
| 235 | + query = self._getSqlQuery() |
| 236 | + if query == "": |
| 237 | + return |
| 238 | + |
| 239 | + filename, _ = QFileDialog.getSaveFileName( |
| 240 | + self, |
| 241 | + self.tr('Save SQL Query'), |
| 242 | + lastDir, |
| 243 | + self.tr("SQL File (*.sql, *.SQL)")) |
| 244 | + |
| 245 | + if filename: |
| 246 | + if not filename.lower().endswith('.sql'): |
| 247 | + filename += ".sql" |
| 248 | + |
| 249 | + with open(filename, 'w') as f: |
| 250 | + f.write(query) |
| 251 | + lastDir = os.path.dirname(filename) |
| 252 | + settings.setValue('DB_Manager/lastDirSQLFile', lastDir) |
| 253 | + |
| 254 | + def loadFilePreset(self): |
| 255 | + settings = QgsSettings() |
| 256 | + lastDir = settings.value('DB_Manager/lastDirSQLFIle', "") |
| 257 | + |
| 258 | + filename, _ = QFileDialog.getOpenFileName( |
| 259 | + self, |
| 260 | + self.tr("Load SQL Query"), |
| 261 | + lastDir, |
| 262 | + self.tr("SQL File (*.sql, *.SQL)")) |
| 263 | + |
| 264 | + if filename: |
| 265 | + with open(filename, 'r') as f: |
| 266 | + self.editSql.clear() |
| 267 | + for line in f: |
| 268 | + self.editSql.insertText(line) |
| 269 | + lastDir = os.path.dirname(filename) |
| 270 | + settings.setValue('DB_Manager/lastDirSQLFile', lastDir) |
| 271 | + |
227 | 272 | def deletePreset(self):
|
228 | 273 | name = self.presetCombo.currentText()
|
229 | 274 | QgsProject.instance().removeEntry('DBManager', 'savedQueries/' + self.getQueryHash(name))
|
|
0 commit comments