Skip to content

Commit 9da5d03

Browse files
etienneskybrushtyler
authored andcommitted
allow to use loaded layers as input files (instead of file selector) for GDALTools Build Virtual Raster
1 parent 892cc39 commit 9da5d03

File tree

2 files changed

+40
-14
lines changed

2 files changed

+40
-14
lines changed

python/plugins/GdalTools/tools/doBuildVRT.py

+22-3
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from PyQt4.QtGui import *
44
from qgis.core import *
55
from qgis.gui import *
6+
from qgis.utils import *
67

78
from ui_widgetBuildVRT import Ui_GdalToolsWidget as Ui_Widget
89
from widgetPluginBase import GdalToolsBasePluginWidget as BasePluginWidget
@@ -38,6 +39,7 @@ def __init__(self, iface):
3839
self.connect(self.inSelector, SIGNAL("selectClicked()"), self.fillInputFilesEdit)
3940
self.connect(self.outSelector, SIGNAL("selectClicked()"), self.fillOutputFileEdit)
4041
self.connect( self.inputDirCheck, SIGNAL( "stateChanged( int )" ), self.switchToolMode )
42+
self.connect( self.useSelectedLayersCheck, SIGNAL( "stateChanged( int )" ), self.switchLayerMode )
4143

4244
def switchToolMode(self):
4345
self.recurseCheck.setVisible( self.inputDirCheck.isChecked() )
@@ -55,6 +57,12 @@ def switchToolMode(self):
5557
QObject.connect(self.inSelector, SIGNAL("selectClicked()"), self.fillInputFilesEdit)
5658
QObject.disconnect(self.inSelector, SIGNAL("selectClicked()"), self.fillInputDir)
5759

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+
5866
def fillInputFilesEdit(self):
5967
lastUsedFilter = Utils.FileFilter.lastUsedRasterFilter()
6068
files = Utils.FileDialog.getOpenFileNames(self, self.tr( "Select the files for VRT" ), Utils.FileFilter.allRastersFilter(), lastUsedFilter)
@@ -88,10 +96,13 @@ def getArguments(self):
8896
if self.allowProjDiffCheck.isChecked():
8997
arguments << "-allow_projection_difference"
9098
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()
93101
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()
95106
return arguments
96107

97108
def getOutputFileName(self):
@@ -102,6 +113,14 @@ def getInputFileName(self):
102113
return self.inSelector.filename()
103114
return self.inSelector.filename().split(",")
104115

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+
105124
def addLayerIntoCanvas(self, fileInfo):
106125
self.iface.addRasterLayer(fileInfo.filePath())
107126

python/plugins/GdalTools/tools/widgetBuildVRT.ui

+18-11
Original file line numberDiff line numberDiff line change
@@ -26,13 +26,20 @@
2626
<enum>QLayout::SetNoConstraint</enum>
2727
</property>
2828
<item row="0" column="0" colspan="2">
29+
<widget class="QCheckBox" name="useSelectedLayersCheck">
30+
<property name="text">
31+
<string>Use selected layers for input</string>
32+
</property>
33+
</widget>
34+
</item>
35+
<item row="1" column="0" colspan="2">
2936
<widget class="QCheckBox" name="inputDirCheck">
3037
<property name="text">
3138
<string>Choose input directory instead of files</string>
3239
</property>
3340
</widget>
3441
</item>
35-
<item row="1" column="0">
42+
<item row="2" column="0">
3643
<widget class="QLabel" name="label">
3744
<property name="text">
3845
<string>&amp;Input files</string>
@@ -42,14 +49,14 @@
4249
</property>
4350
</widget>
4451
</item>
45-
<item row="2" column="1">
52+
<item row="3" column="1">
4653
<widget class="QCheckBox" name="recurseCheck">
4754
<property name="text">
4855
<string>Recurse subdirectories</string>
4956
</property>
5057
</widget>
5158
</item>
52-
<item row="3" column="0">
59+
<item row="4" column="0">
5360
<widget class="QLabel" name="label_2">
5461
<property name="text">
5562
<string>&amp;Output file</string>
@@ -59,14 +66,14 @@
5966
</property>
6067
</widget>
6168
</item>
62-
<item row="4" column="0">
69+
<item row="5" column="0">
6370
<widget class="QCheckBox" name="resolutionCheck">
6471
<property name="text">
6572
<string>&amp;Resolution</string>
6673
</property>
6774
</widget>
6875
</item>
69-
<item row="4" column="1">
76+
<item row="5" column="1">
7077
<widget class="QComboBox" name="resolutionComboBox">
7178
<property name="sizePolicy">
7279
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
@@ -94,14 +101,14 @@
94101
</item>
95102
</widget>
96103
</item>
97-
<item row="5" column="0">
104+
<item row="6" column="0">
98105
<widget class="QCheckBox" name="srcNoDataCheck">
99106
<property name="text">
100107
<string>&amp;Source No Data</string>
101108
</property>
102109
</widget>
103110
</item>
104-
<item row="5" column="1">
111+
<item row="6" column="1">
105112
<widget class="QSpinBox" name="srcNoDataSpin">
106113
<property name="minimum">
107114
<number>-100000</number>
@@ -111,20 +118,20 @@
111118
</property>
112119
</widget>
113120
</item>
114-
<item row="6" column="0">
121+
<item row="7" column="0">
115122
<widget class="QCheckBox" name="separateCheck">
116123
<property name="text">
117124
<string>Se&amp;parate</string>
118125
</property>
119126
</widget>
120127
</item>
121-
<item row="1" column="1">
128+
<item row="2" column="1">
122129
<widget class="GdalToolsInOutSelector" name="inSelector" native="true"/>
123130
</item>
124-
<item row="3" column="1">
131+
<item row="4" column="1">
125132
<widget class="GdalToolsInOutSelector" name="outSelector" native="true"/>
126133
</item>
127-
<item row="7" column="0" colspan="2">
134+
<item row="8" column="0" colspan="2">
128135
<widget class="QCheckBox" name="allowProjDiffCheck">
129136
<property name="text">
130137
<string>Allow projection difference</string>

0 commit comments

Comments
 (0)