29
29
import os
30
30
31
31
from qgis .PyQt import uic
32
- from qgis .PyQt .QtCore import QCoreApplication , QDir
32
+ from qgis .PyQt .QtCore import QCoreApplication , QDir , pyqtSignal
33
33
from qgis .PyQt .QtWidgets import QDialog , QMenu , QAction , QFileDialog , QInputDialog
34
34
from qgis .PyQt .QtGui import QCursor
35
35
from qgis .gui import QgsEncodingSelectionDialog
@@ -62,6 +62,8 @@ class DestinationSelectionPanel(BASE, WIDGET):
62
62
SKIP_OUTPUT = QCoreApplication .translate (
63
63
'DestinationSelectionPanel' , '[Skip output]' )
64
64
65
+ skipOutputChanged = pyqtSignal (bool )
66
+
65
67
def __init__ (self , parameter , alg ):
66
68
super (DestinationSelectionPanel , self ).__init__ (None )
67
69
self .setupUi (self )
@@ -89,10 +91,17 @@ def __init__(self, parameter, alg):
89
91
def textChanged (self ):
90
92
self .use_temporary = False
91
93
94
+ def outputIsSkipped (self ):
95
+ """
96
+ Returns true if output is set to be skipped
97
+ signal """
98
+ return not self .leText .text () and not self .use_temporary
99
+
92
100
def skipOutput (self ):
93
101
self .leText .setPlaceholderText (self .SKIP_OUTPUT )
94
102
self .leText .setText ('' )
95
103
self .use_temporary = False
104
+ self .skipOutputChanged .emit (True )
96
105
97
106
def selectOutput (self ):
98
107
if isinstance (self .parameter , QgsProcessingParameterFolderDestination ):
@@ -152,6 +161,7 @@ def saveToTemporary(self):
152
161
self .leText .setPlaceholderText (self .SAVE_TO_TEMP_FILE )
153
162
self .leText .setText ('' )
154
163
self .use_temporary = True
164
+ self .skipOutputChanged .emit (False )
155
165
156
166
def saveToPostGIS (self ):
157
167
dlg = PostgisTableSelector (self , self .parameter .name ().lower ())
@@ -176,6 +186,8 @@ def saveToPostGIS(self):
176
186
QgsCredentials .instance ().put (connInfo , user , passwd )
177
187
self .leText .setText ("postgis:" + uri .uri ())
178
188
189
+ self .skipOutputChanged .emit (False )
190
+
179
191
def saveToGeopackage (self ):
180
192
file_filter = self .tr ('GeoPackage files (*.gpkg);;All files (*.*)' , 'OutputFile' )
181
193
@@ -205,6 +217,8 @@ def saveToGeopackage(self):
205
217
'geom' if isinstance (self .parameter , QgsProcessingParameterFeatureSink ) and self .parameter .hasGeometry () else None )
206
218
self .leText .setText ("ogr:" + uri .uri ())
207
219
220
+ self .skipOutputChanged .emit (False )
221
+
208
222
def selectFile (self ):
209
223
file_filter = getFileFilter (self .parameter )
210
224
settings = QgsSettings ()
@@ -245,6 +259,8 @@ def selectFile(self):
245
259
if not last_ext_path is None :
246
260
settings .setValue (last_ext_path , os .path .splitext (filename )[1 ].lower ())
247
261
262
+ self .skipOutputChanged .emit (False )
263
+
248
264
def selectEncoding (self ):
249
265
dialog = QgsEncodingSelectionDialog (
250
266
self , self .tr ('File encoding' ), self .encoding )
@@ -266,12 +282,15 @@ def selectDirectory(self):
266
282
self .leText .setText (QDir .toNativeSeparators (dirName ))
267
283
settings .setValue ('/Processing/LastOutputPath' , dirName )
268
284
285
+ self .skipOutputChanged .emit (False )
286
+
269
287
def setValue (self , value ):
270
288
if value == 'memory:' :
271
289
self .saveToTemporary ()
272
290
else :
273
291
self .leText .setText (value )
274
292
self .use_temporary = False
293
+ self .skipOutputChanged .emit (False )
275
294
276
295
def getValue (self ):
277
296
key = None
0 commit comments