3
3
from PyQt4 .QtGui import *
4
4
from qgis .core import *
5
5
from qgis .gui import *
6
+ from qgis .utils import *
6
7
7
8
from ui_widgetBuildVRT import Ui_GdalToolsWidget as Ui_Widget
8
9
from widgetPluginBase import GdalToolsBasePluginWidget as BasePluginWidget
@@ -38,6 +39,7 @@ def __init__(self, iface):
38
39
self .connect (self .inSelector , SIGNAL ("selectClicked()" ), self .fillInputFilesEdit )
39
40
self .connect (self .outSelector , SIGNAL ("selectClicked()" ), self .fillOutputFileEdit )
40
41
self .connect ( self .inputDirCheck , SIGNAL ( "stateChanged( int )" ), self .switchToolMode )
42
+ self .connect ( self .useSelectedLayersCheck , SIGNAL ( "stateChanged( int )" ), self .switchLayerMode )
41
43
42
44
def switchToolMode (self ):
43
45
self .recurseCheck .setVisible ( self .inputDirCheck .isChecked () )
@@ -55,6 +57,12 @@ def switchToolMode(self):
55
57
QObject .connect (self .inSelector , SIGNAL ("selectClicked()" ), self .fillInputFilesEdit )
56
58
QObject .disconnect (self .inSelector , SIGNAL ("selectClicked()" ), self .fillInputDir )
57
59
60
+ def switchLayerMode (self ):
61
+ enableInputFiles = not self .useSelectedLayersCheck .isChecked ()
62
+ self .inputDirCheck .setEnabled ( enableInputFiles )
63
+ self .inSelector .setEnabled ( enableInputFiles )
64
+ self .recurseCheck .setEnabled ( enableInputFiles )
65
+
58
66
def fillInputFilesEdit (self ):
59
67
lastUsedFilter = Utils .FileFilter .lastUsedRasterFilter ()
60
68
files = Utils .FileDialog .getOpenFileNames (self , self .tr ( "Select the files for VRT" ), Utils .FileFilter .allRastersFilter (), lastUsedFilter )
@@ -88,10 +96,13 @@ def getArguments(self):
88
96
if self .allowProjDiffCheck .isChecked ():
89
97
arguments << "-allow_projection_difference"
90
98
arguments << self .getOutputFileName ()
91
- if self .inputDirCheck .isChecked ():
92
- arguments << Utils . getRasterFiles ( self .getInputFileName (), self . recurseCheck . isChecked () )
99
+ if self .useSelectedLayersCheck .isChecked ():
100
+ arguments << self .getInputFileNamesFromSelectedLayers ( )
93
101
else :
94
- arguments << self .getInputFileName ()
102
+ if self .inputDirCheck .isChecked ():
103
+ arguments << Utils .getRasterFiles ( self .getInputFileName (), self .recurseCheck .isChecked () )
104
+ else :
105
+ arguments << self .getInputFileName ()
95
106
return arguments
96
107
97
108
def getOutputFileName (self ):
@@ -102,6 +113,14 @@ def getInputFileName(self):
102
113
return self .inSelector .filename ()
103
114
return self .inSelector .filename ().split ("," )
104
115
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
+
105
124
def addLayerIntoCanvas (self , fileInfo ):
106
125
self .iface .addRasterLayer (fileInfo .filePath ())
107
126
0 commit comments