28
28
29
29
from ui_widgetBuildVRT import Ui_GdalToolsWidget as Ui_Widget
30
30
from widgetPluginBase import GdalToolsBasePluginWidget as BasePluginWidget
31
+ from dialogSRS import GdalToolsSRSDialog as SRSDialog
31
32
import GdalTools_utils as Utils
32
33
33
34
@@ -41,28 +42,33 @@ def __init__(self, iface):
41
42
self .setupUi (self )
42
43
BasePluginWidget .__init__ (self , self .iface , "gdalbuildvrt" )
43
44
44
- self .inSelector .setType (self .inSelector .FILE )
45
- self .outSelector .setType (self .outSelector .FILE )
45
+ self .inSelector .setType ( self .inSelector .FILE )
46
+ self .outSelector .setType ( self .outSelector .FILE )
46
47
self .recurseCheck .hide ()
47
48
self .visibleRasterLayers = []
48
49
49
- self .setParamsStatus ([
50
- (self .inSelector , SIGNAL ("filenameChanged()" )),
51
- (self .outSelector , SIGNAL ("filenameChanged()" )),
52
- (self .resolutionComboBox , SIGNAL ("currentIndexChanged(int)" ), self .resolutionCheck ),
53
- (self .srcNoDataSpin , SIGNAL ("valueChanged(int)" ), self .srcNoDataCheck , 1700 ),
54
- (self .inputDirCheck , SIGNAL ("stateChanged(int)" )),
55
- (self .separateCheck , SIGNAL ("stateChanged(int)" ), None , 1700 ),
56
- (self .allowProjDiffCheck , SIGNAL ("stateChanged(int)" ), None , 1700 ),
57
- (self .recurseCheck , SIGNAL ("stateChanged(int)" ), self .inputDirCheck ),
58
- (self .inputSelLayersCheck , SIGNAL ("stateChanged(int)" ))
59
- ])
50
+ self .setParamsStatus (
51
+ [
52
+ (self .inSelector , SIGNAL ("filenameChanged()" )),
53
+ (self .outSelector , SIGNAL ("filenameChanged()" )),
54
+ (self .resolutionComboBox , SIGNAL ("currentIndexChanged(int)" ), self .resolutionCheck ),
55
+ (self .srcNoDataSpin , SIGNAL ("valueChanged(int)" ), self .srcNoDataCheck , 1700 ),
56
+ (self .inputDirCheck , SIGNAL ("stateChanged(int)" )),
57
+ (self .separateCheck , SIGNAL ("stateChanged(int)" ), None , 1700 ),
58
+ (self .targetSRSEdit , SIGNAL ("textChanged(const QString &)" ), self .targetSRSCheck ),
59
+ (self .allowProjDiffCheck , SIGNAL ("stateChanged(int)" ), None , 1700 ),
60
+ (self .recurseCheck , SIGNAL ("stateChanged(int)" ), self .inputDirCheck ),
61
+ (self .inputSelLayersCheck , SIGNAL ("stateChanged(int)" ))
62
+ ]
63
+ )
60
64
61
65
self .connect (self .inSelector , SIGNAL ("selectClicked()" ), self .fillInputFilesEdit )
62
66
self .connect (self .outSelector , SIGNAL ("selectClicked()" ), self .fillOutputFileEdit )
63
- self .connect (self .inputDirCheck , SIGNAL ("stateChanged( int )" ), self .switchToolMode )
64
- self .connect (self .inputSelLayersCheck , SIGNAL ("stateChanged( int )" ), self .switchLayerMode )
65
- self .connect (self .iface .mapCanvas (), SIGNAL ("stateChanged( int )" ), self .switchLayerMode )
67
+ self .connect ( self .inputDirCheck , SIGNAL ( "stateChanged( int )" ), self .switchToolMode )
68
+ self .connect ( self .inputSelLayersCheck , SIGNAL ( "stateChanged( int )" ), self .switchLayerMode )
69
+ self .connect ( self .iface .mapCanvas (), SIGNAL ( "stateChanged( int )" ), self .switchLayerMode )
70
+ self .connect (self .selectTargetSRSButton , SIGNAL ("clicked()" ), self .fillTargetSRSEdit )
71
+
66
72
67
73
def initialize (self ):
68
74
# connect to mapCanvas.layerChanged() signal
@@ -75,57 +81,63 @@ def onClosing(self):
75
81
self .disconnect (self .iface .mapCanvas (), SIGNAL ("layersChanged()" ), self .onVisibleLayersChanged )
76
82
BasePluginWidget .onClosing (self )
77
83
84
+
78
85
def onVisibleLayersChanged (self ):
79
86
# refresh list of visible raster layers
80
87
self .visibleRasterLayers = []
81
88
for layer in self .iface .mapCanvas ().layers ():
82
- if Utils .LayerRegistry .isRaster (layer ):
83
- self .visibleRasterLayers .append (layer .source ())
89
+ if Utils .LayerRegistry .isRaster ( layer ):
90
+ self .visibleRasterLayers .append ( layer .source () )
84
91
85
92
# refresh the text in the command viewer
86
93
self .someValueChanged ()
87
94
88
95
def switchToolMode (self ):
89
- self .recurseCheck .setVisible (self .inputDirCheck .isChecked ())
96
+ self .recurseCheck .setVisible ( self .inputDirCheck .isChecked () )
90
97
self .inSelector .clear ()
91
98
92
99
if self .inputDirCheck .isChecked ():
93
100
self .inFileLabel = self .label .text ()
94
- self .label .setText (QCoreApplication .translate ("GdalTools" , "&Input directory" ) )
101
+ self .label .setText ( QCoreApplication .translate ( "GdalTools" , "&Input directory" ) )
95
102
96
103
QObject .disconnect (self .inSelector , SIGNAL ("selectClicked()" ), self .fillInputFilesEdit )
97
104
QObject .connect (self .inSelector , SIGNAL ("selectClicked()" ), self .fillInputDir )
98
105
else :
99
- self .label .setText (self .inFileLabel )
106
+ self .label .setText ( self .inFileLabel )
100
107
101
108
QObject .connect (self .inSelector , SIGNAL ("selectClicked()" ), self .fillInputFilesEdit )
102
109
QObject .disconnect (self .inSelector , SIGNAL ("selectClicked()" ), self .fillInputDir )
103
110
104
111
def switchLayerMode (self ):
105
112
enableInputFiles = not self .inputSelLayersCheck .isChecked ()
106
- self .inputDirCheck .setEnabled (enableInputFiles )
107
- self .inSelector .setEnabled (enableInputFiles )
108
- self .recurseCheck .setEnabled (enableInputFiles )
113
+ self .inputDirCheck .setEnabled ( enableInputFiles )
114
+ self .inSelector .setEnabled ( enableInputFiles )
115
+ self .recurseCheck .setEnabled ( enableInputFiles )
109
116
110
117
def fillInputFilesEdit (self ):
111
118
lastUsedFilter = Utils .FileFilter .lastUsedRasterFilter ()
112
- files = Utils .FileDialog .getOpenFileNames (self , self .tr ("Select the files for VRT" ), Utils .FileFilter .allRastersFilter (), lastUsedFilter )
119
+ files = Utils .FileDialog .getOpenFileNames (self , self .tr ( "Select the files for VRT" ), Utils .FileFilter .allRastersFilter (), lastUsedFilter )
113
120
if files == '' :
114
121
return
115
122
Utils .FileFilter .setLastUsedRasterFilter (lastUsedFilter )
116
123
self .inSelector .setFilename ("," .join (files ))
117
124
118
125
def fillOutputFileEdit (self ):
119
- outputFile = Utils .FileDialog .getSaveFileName (self , self .tr ("Select where to save the VRT" ), self .tr ("VRT (*.vrt)" ))
126
+ outputFile = Utils .FileDialog .getSaveFileName (self , self .tr ( "Select where to save the VRT" ), self .tr ( "VRT (*.vrt)" ))
120
127
if outputFile == '' :
121
128
return
122
129
self .outSelector .setFilename (outputFile )
123
130
124
- def fillInputDir (self ):
125
- inputDir = Utils .FileDialog .getExistingDirectory (self , self .tr ("Select the input directory with files for VRT" ))
131
+ def fillInputDir ( self ):
132
+ inputDir = Utils .FileDialog .getExistingDirectory ( self , self .tr ( "Select the input directory with files for VRT" ))
126
133
if inputDir == '' :
127
134
return
128
- self .inSelector .setFilename (inputDir )
135
+ self .inSelector .setFilename ( inputDir )
136
+
137
+ def fillTargetSRSEdit (self ):
138
+ dialog = SRSDialog ( "Select the target SRS" , self )
139
+ if dialog .exec_ ():
140
+ self .targetSRSEdit .setText (dialog .getProjection ())
129
141
130
142
def getArguments (self ):
131
143
arguments = []
@@ -136,14 +148,17 @@ def getArguments(self):
136
148
arguments .append ("-separate" )
137
149
if self .srcNoDataCheck .isChecked ():
138
150
arguments .append ("-srcnodata" )
139
- arguments .append (unicode (self .srcNoDataSpin .value ()))
151
+ arguments .append (str (self .srcNoDataSpin .value ()))
152
+ if self .targetSRSCheck .isChecked () and self .targetSRSEdit .text ():
153
+ arguments .append ("-a_srs" )
154
+ arguments .append (self .targetSRSEdit .text ())
140
155
if self .allowProjDiffCheck .isChecked ():
141
156
arguments .append ("-allow_projection_difference" )
142
157
arguments .append (self .getOutputFileName ())
143
158
if self .inputSelLayersCheck .isChecked ():
144
159
arguments .extend (self .visibleRasterLayers )
145
160
elif self .inputDirCheck .isChecked ():
146
- arguments .extend (Utils .getRasterFiles (self .getInputFileName (), self .recurseCheck .isChecked ()))
161
+ arguments .extend (Utils .getRasterFiles ( self .getInputFileName (), self .recurseCheck .isChecked () ))
147
162
else :
148
163
arguments .extend (self .getInputFileName ())
149
164
return arguments
0 commit comments