3
3
from PyQt4 .QtGui import *
4
4
from qgis .core import *
5
5
from qgis .gui import *
6
- from qgis .utils import *
7
6
8
7
from ui_widgetBuildVRT import Ui_GdalToolsWidget as Ui_Widget
9
8
from widgetPluginBase import GdalToolsBasePluginWidget as BasePluginWidget
@@ -22,6 +21,7 @@ def __init__(self, iface):
22
21
self .inSelector .setType ( self .inSelector .FILE )
23
22
self .outSelector .setType ( self .outSelector .FILE )
24
23
self .recurseCheck .hide ()
24
+ self .visibleRasterLayers = QStringList ()
25
25
26
26
self .setParamsStatus (
27
27
[
@@ -32,14 +32,38 @@ def __init__(self, iface):
32
32
(self .inputDirCheck , SIGNAL ("stateChanged(int)" )),
33
33
(self .separateCheck , SIGNAL ("stateChanged(int)" ), None , "1.7.0" ),
34
34
(self .allowProjDiffCheck , SIGNAL ("stateChanged(int)" ), None , "1.7.0" ),
35
- (self .recurseCheck , SIGNAL ("stateChanged(int)" ), self .inputDirCheck )
35
+ (self .recurseCheck , SIGNAL ("stateChanged(int)" ), self .inputDirCheck ),
36
+ (self .inputSelLayersCheck , SIGNAL ("stateChanged(int)" ))
36
37
]
37
38
)
38
39
39
40
self .connect (self .inSelector , SIGNAL ("selectClicked()" ), self .fillInputFilesEdit )
40
41
self .connect (self .outSelector , SIGNAL ("selectClicked()" ), self .fillOutputFileEdit )
41
42
self .connect ( self .inputDirCheck , SIGNAL ( "stateChanged( int )" ), self .switchToolMode )
42
- self .connect ( self .useSelectedLayersCheck , SIGNAL ( "stateChanged( int )" ), self .switchLayerMode )
43
+ self .connect ( self .inputSelLayersCheck , SIGNAL ( "stateChanged( int )" ), self .switchLayerMode )
44
+ self .connect ( self .iface .mapCanvas (), SIGNAL ( "stateChanged( int )" ), self .switchLayerMode )
45
+
46
+
47
+ def initialize (self ):
48
+ # connect to mapCanvas.layerChanged() signal
49
+ self .connect (self .iface .mapCanvas (), SIGNAL ("layersChanged()" ), self .onVisibleLayersChanged )
50
+ BasePluginWidget .initialize (self )
51
+
52
+ def onClosing (self ):
53
+ # disconnect from mapCanvas.layerChanged() signal
54
+ self .disconnect (self .iface .mapCanvas (), SIGNAL ("layersChanged()" ), self .onVisibleLayersChanged )
55
+ BasePluginWidget .onClosing (self )
56
+
57
+
58
+ def onVisibleLayersChanged (self ):
59
+ # refresh list of visible raster layers
60
+ self .visibleRasterLayers = QStringList ()
61
+ for layer in self .iface .mapCanvas ().layers ():
62
+ if Utils .LayerRegistry .isRaster ( layer ):
63
+ self .visibleRasterLayers << layer .source ()
64
+
65
+ # refresh the text in the command viewer
66
+ self .someValueChanged ()
43
67
44
68
def switchToolMode (self ):
45
69
self .recurseCheck .setVisible ( self .inputDirCheck .isChecked () )
@@ -58,7 +82,7 @@ def switchToolMode(self):
58
82
QObject .disconnect (self .inSelector , SIGNAL ("selectClicked()" ), self .fillInputDir )
59
83
60
84
def switchLayerMode (self ):
61
- enableInputFiles = not self .useSelectedLayersCheck .isChecked ()
85
+ enableInputFiles = not self .inputSelLayersCheck .isChecked ()
62
86
self .inputDirCheck .setEnabled ( enableInputFiles )
63
87
self .inSelector .setEnabled ( enableInputFiles )
64
88
self .recurseCheck .setEnabled ( enableInputFiles )
@@ -96,13 +120,12 @@ def getArguments(self):
96
120
if self .allowProjDiffCheck .isChecked ():
97
121
arguments << "-allow_projection_difference"
98
122
arguments << self .getOutputFileName ()
99
- if self .useSelectedLayersCheck .isChecked ():
100
- arguments << self .getInputFileNamesFromSelectedLayers ()
123
+ if self .inputSelLayersCheck .isChecked ():
124
+ arguments << self .visibleRasterLayers
125
+ elif self .inputDirCheck .isChecked ():
126
+ arguments << Utils .getRasterFiles ( self .getInputFileName (), self .recurseCheck .isChecked () )
101
127
else :
102
- if self .inputDirCheck .isChecked ():
103
- arguments << Utils .getRasterFiles ( self .getInputFileName (), self .recurseCheck .isChecked () )
104
- else :
105
- arguments << self .getInputFileName ()
128
+ arguments << self .getInputFileName ()
106
129
return arguments
107
130
108
131
def getOutputFileName (self ):
@@ -113,14 +136,6 @@ def getInputFileName(self):
113
136
return self .inSelector .filename ()
114
137
return self .inSelector .filename ().split ("," )
115
138
116
- def getInputFileNamesFromSelectedLayers (self ):
117
- layers = iface .mapCanvas ().layers ()
118
- files = list ()
119
- for layer in layers :
120
- if layer .type () == QgsMapLayer .RasterLayer and layer .providerType () == "gdal" :
121
- files .append ( str (layer .source ()) )
122
- return files
123
-
124
139
def addLayerIntoCanvas (self , fileInfo ):
125
140
self .iface .addRasterLayer (fileInfo .filePath ())
126
141
0 commit comments