[QGIS Commit] r14963 - trunk/qgis/python/plugins/GdalTools/tools
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Tue Dec 21 22:25:14 EST 2010
Author: brushtyler
Date: 2010-12-21 19:25:14 -0800 (Tue, 21 Dec 2010)
New Revision: 14963
Modified:
trunk/qgis/python/plugins/GdalTools/tools/GdalTools_utils.py
trunk/qgis/python/plugins/GdalTools/tools/doBuildVRT.py
trunk/qgis/python/plugins/GdalTools/tools/doOverview.py
trunk/qgis/python/plugins/GdalTools/tools/doPctRgb.py
trunk/qgis/python/plugins/GdalTools/tools/doProjection.py
trunk/qgis/python/plugins/GdalTools/tools/doRgbPct.py
trunk/qgis/python/plugins/GdalTools/tools/doTranslate.py
trunk/qgis/python/plugins/GdalTools/tools/doWarp.py
trunk/qgis/python/plugins/GdalTools/tools/widgetBatchBase.py
trunk/qgis/python/plugins/GdalTools/tools/widgetBuildVRT.ui
Log:
create VRT with recurse scan of dirs, to fix #3095
some code cleanup,
updated labels when in batch mode to follow up the QGis HIG guideline
Modified: trunk/qgis/python/plugins/GdalTools/tools/GdalTools_utils.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/GdalTools_utils.py 2010-12-21 17:20:33 UTC (rev 14962)
+++ trunk/qgis/python/plugins/GdalTools/tools/GdalTools_utils.py 2010-12-22 03:25:14 UTC (rev 14963)
@@ -117,6 +117,32 @@
count = count +1
return (layers, names)
+def getRasterFiles(path, recursive=False):
+ rasters = QStringList()
+ if not QFileInfo(path).exists():
+ return rasters
+
+ filter = getRasterExtensions()
+ workDir = QDir( path )
+ workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
+ workDir.setNameFilters( filter )
+ files = workDir.entryList()
+ for f in files:
+ rasters << path + "/" + f
+
+ if recursive:
+ import os
+ for myRoot, myDirs, myFiles in os.walk( unicode(path) ):
+ for dir in myDirs:
+ workDir = QDir( myRoot + "/" + dir )
+ workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
+ workDir.setNameFilters( filter )
+ workFiles = workDir.entryList()
+ for f in workFiles:
+ rasters << myRoot + "/" + dir + "/" + f
+
+ return rasters
+
def fillRasterOutputFormat(aFilter = None, filename = None):
shortName = QString()
Modified: trunk/qgis/python/plugins/GdalTools/tools/doBuildVRT.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doBuildVRT.py 2010-12-21 17:20:33 UTC (rev 14962)
+++ trunk/qgis/python/plugins/GdalTools/tools/doBuildVRT.py 2010-12-22 03:25:14 UTC (rev 14963)
@@ -18,19 +18,43 @@
self.setupUi(self)
BasePluginWidget.__init__(self, self.iface, "gdalbuildvrt")
+ self.recurseCheck.hide()
+
self.setParamsStatus(
[
(self.inputFilesEdit, SIGNAL("textChanged(const QString &)")),
(self.outputFileEdit, SIGNAL("textChanged(const QString &)")),
(self.resolutionComboBox, SIGNAL("currentIndexChanged(int)"), self.resolutionCheck),
(self.srcNoDataSpin, SIGNAL("valueChanged(int)"), self.srcNoDataCheck, "1.7.0"),
- (self.separateCheck, SIGNAL("stateChanged(int)"), None, "1.7.0")
+ (self.separateCheck, SIGNAL("stateChanged(int)"), None, "1.7.0"),
+ (self.inputDirCheck, SIGNAL("stateChanged(int)")),
+ (self.recurseCheck, SIGNAL("stateChanged(int)"), self.inputDirCheck)
]
)
self.connect(self.selectInputFilesButton, SIGNAL("clicked()"), self.fillInputFilesEdit)
self.connect(self.selectOutputFileButton, SIGNAL("clicked()"), self.fillOutputFileEdit)
+ self.connect( self.inputDirCheck, SIGNAL( "stateChanged( int )" ), self.switchToolMode )
+ def switchToolMode(self):
+ self.inputFilesEdit.clear()
+
+ if self.inputDirCheck.isChecked():
+ self.inFileLabel = self.label.text()
+ self.label.setText( QCoreApplication.translate( "GdalTools", "&Input directory" ) )
+
+ self.recurseCheck.show()
+
+ QObject.disconnect( self.selectInputFilesButton, SIGNAL( "clicked()" ), self.fillInputFilesEdit )
+ QObject.connect( self.selectInputFilesButton, SIGNAL( "clicked()" ), self.fillInputDir )
+ else:
+ self.label.setText( self.inFileLabel )
+
+ self.recurseCheck.hide()
+
+ QObject.connect( self.selectInputFilesButton, SIGNAL( "clicked()" ), self.fillInputFilesEdit )
+ QObject.disconnect( self.selectInputFilesButton, SIGNAL( "clicked()" ), self.fillInputDir )
+
def fillInputFilesEdit(self):
lastUsedFilter = Utils.FileFilter.lastUsedRasterFilter()
files = Utils.FileDialog.getOpenFileNames(self, self.tr( "Select the files for VRT" ), Utils.FileFilter.allRastersFilter(), lastUsedFilter)
@@ -47,6 +71,13 @@
self.outputFileEdit.setText(outputFile)
+ def fillInputDir( self ):
+ inputDir = Utils.FileDialog.getExistingDirectory( self, self.tr( "Select the input directory with files for VRT" ))
+ if inputDir.isEmpty():
+ return
+
+ self.inputFilesEdit.setText( inputDir )
+
def getArguments(self):
arguments = QStringList()
if self.resolutionCheck.isChecked() and self.resolutionComboBox.currentIndex() >= 0:
@@ -58,7 +89,10 @@
arguments << "-srcnodata"
arguments << str(self.srcNoDataSpin.value())
arguments << self.outputFileEdit.text()
- arguments << self.inputFilesEdit.text().split(",")
+ if self.inputDirCheck.isChecked():
+ arguments << Utils.getRasterFiles( self.inputFilesEdit.text(), self.recurseCheck.isChecked() )
+ else:
+ arguments << self.inputFilesEdit.text().split(",")
return arguments
def getOutputFileName(self):
Modified: trunk/qgis/python/plugins/GdalTools/tools/doOverview.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doOverview.py 2010-12-21 17:20:33 UTC (rev 14962)
+++ trunk/qgis/python/plugins/GdalTools/tools/doOverview.py 2010-12-22 03:25:14 UTC (rev 14963)
@@ -56,7 +56,7 @@
self.inputLayerCombo.setCurrentIndex(-1)
if self.batchCheck.isChecked():
self.inFileLabel = self.label.text()
- self.label.setText( QCoreApplication.translate( "GdalTools", "&Input directory:" ) )
+ self.label.setText( QCoreApplication.translate( "GdalTools", "&Input directory" ) )
self.progressBar.show()
Modified: trunk/qgis/python/plugins/GdalTools/tools/doPctRgb.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doPctRgb.py 2010-12-21 17:20:33 UTC (rev 14962)
+++ trunk/qgis/python/plugins/GdalTools/tools/doPctRgb.py 2010-12-22 03:25:14 UTC (rev 14963)
@@ -53,8 +53,8 @@
if self.batchCheck.isChecked():
self.inFileLabel = self.label.text()
self.outFileLabel = self.label_2.text()
- self.label.setText( QCoreApplication.translate( "GdalTools", "&Input directory:" ) )
- self.label_2.setText( QCoreApplication.translate( "GdalTools", "&Output directory:" ) )
+ self.label.setText( QCoreApplication.translate( "GdalTools", "&Input directory" ) )
+ self.label_2.setText( QCoreApplication.translate( "GdalTools", "&Output directory" ) )
self.progressBar.show()
Modified: trunk/qgis/python/plugins/GdalTools/tools/doProjection.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doProjection.py 2010-12-21 17:20:33 UTC (rev 14962)
+++ trunk/qgis/python/plugins/GdalTools/tools/doProjection.py 2010-12-22 03:25:14 UTC (rev 14963)
@@ -11,128 +11,21 @@
import os.path
-class GdalToolsBatchProjectionWidget(BaseBatchWidget):
- def __init__(self, iface, commandName, helpFileBaseName = None):
- BaseBatchWidget.__init__(self, iface, commandName, helpFileBaseName)
- layerMap = QgsMapLayerRegistry.instance().mapLayers()
- self.layerList = []
- for name, layer in layerMap.iteritems():
- if layer.type() == QgsMapLayer.RasterLayer:
- self.layerList.append( unicode( layer.name() ) )
+class GdalToolsDialog( QWidget, Ui_Widget, BaseBatchWidget ):
- def batchRun(self):
- self.base.enableRun( False )
- self.base.setCursor( Qt.WaitCursor )
-
- inDir = self.getInputFileName()
- outDir = self.getOutputFileName()
-
- filter = Utils.getRasterExtensions()
- self.inFiles = []
- self.outFiles = []
-
- if self.recurseCheck.isChecked():
- workDir = QDir( inDir )
- workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
- workDir.setNameFilters( filter )
- workFiles = workDir.entryList()
- for f in workFiles:
- self.inFiles.append( QString( inDir + "/" + f ) )
- for myRoot, myDirs, myFiles in os.walk( str( inDir ) ):
- for dir in myDirs:
- workDir = QDir( myRoot + "/" + dir )
- workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
- workDir.setNameFilters( filter )
- workFiles = workDir.entryList()
- for f in workFiles:
- self.inFiles.append( QString( myRoot + "/" + dir + "/" + f ) )
- for f in self.inFiles:
- if outDir != None:
- outFile = QString( f ).insert( f.indexOf( "." ), "_1" ).replace( QRegExp( "\.[a-zA-Z]{3,4}$" ), ".tif" )
- self.outFiles.append( outFile )
- else:
- workDir = QDir( inDir )
- workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
- workDir.setNameFilters( filter )
- files = workDir.entryList()
- for f in files:
- self.inFiles.append( inDir + "/" + f )
- if outDir != None:
- outFile = QString( f ).insert( f.indexOf( "." ), "_1" ).replace( QRegExp( "\.[a-zA-Z]{3,4}$" ), ".tif" )
- self.outFiles.append( outDir + "/" + outFile )
-
- #files = QStringList()
- #for myRoot, myDirs, myFiles in os.walk( str( inDir ) ):
- # for dir in myDirs:
- # print "DIR", dir
- # workDir = QDir( myRoot + "/" + dir )
- # workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
- # workDir.setNameFilters( filter )
- # workFiles = workDir.entryList()
- # print "ENTRY", workFiles.join( " " )
- # for f in workFiles:
- # files.append( QString( myRoot + "/" + dir + "/" + f ) )
-
- #print "FILES", files.join( "\n" )
-
- #filter = Utils.getRasterExtensions()
- #workDir = QDir( inDir )
- #workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
- #workDir.setNameFilters( filter )
- #files = workDir.entryList()
-
- #self.inFiles = []
- #self.outFiles = []
-
- #for f in files:
- # self.inFiles.append( inDir + "/" + f )
- # if outDir != None:
- # outFile = QString( f ).insert( f.indexOf( "." ), "_1" ).replace( QRegExp( "\.[a-zA-Z]{3,4}$" ), ".tif" )
- # self.outFiles.append( outDir + "/" + outFile )
-
- self.errors = QStringList()
- self.batchIndex = 0
- self.batchTotal = len( self.inFiles )
- self.setProgressRange( self.batchTotal )
-
- self.runItem( self.batchIndex, self.batchTotal )
-
- def runItem(self, index, total):
- if index >= total:
- self.outFiles = self.inFiles
-
- BaseBatchWidget.runItem(self, index, total)
-
- def onFinished(self, exitCode, status):
- if not self.isBatchEnabled():
- BaseBatchWidget.onFinished(self, exitCode, status)
- return
-
- oldFile = QFile( self.inFiles[self.batchIndex] )
- newFile = QFile( self.outFiles[self.batchIndex] )
- if oldFile.remove():
- newFile.rename(self.inFiles[self.batchIndex])
-
- BaseBatchWidget.onFinished(self, exitCode, status)
-
-
-class GdalToolsDialog( QWidget, Ui_Widget, GdalToolsBatchProjectionWidget ):
-
def __init__( self, iface ):
QWidget.__init__( self )
self.iface = iface
self.setupUi( self )
- GdalToolsBatchProjectionWidget.__init__( self, self.iface, "gdalwarp" )
+ BaseBatchWidget.__init__( self, self.iface, "gdalwarp" )
# set the default QSpinBoxes and QProgressBar value
self.progressBar.setValue(0)
self.progressBar.hide()
self.recurseCheck.hide()
- # store temporary file name
- self.tempFile = QString()
self.setParamsStatus(
[
@@ -155,7 +48,7 @@
if self.batchCheck.isChecked():
self.inFileLabel = self.label.text()
- self.label.setText( QCoreApplication.translate( "GdalTools", "&Input directory:" ) )
+ self.label.setText( QCoreApplication.translate( "GdalTools", "&Input directory" ) )
self.progressBar.show()
self.recurseCheck.show()
@@ -163,7 +56,7 @@
QObject.disconnect( self.selectInputFileButton, SIGNAL( "clicked()" ), self.fillInputFileEdit )
QObject.connect( self.selectInputFileButton, SIGNAL( "clicked()" ), self.fillInputDir )
- QObject.disconnect( self.base.buttonBox.button( QDialogButtonBox.Ok ), SIGNAL( "clicked()" ), self.checkLayer )
+ #QObject.disconnect( self.base.buttonBox.button( QDialogButtonBox.Ok ), SIGNAL( "clicked()" ), self.checkLayer )
else:
self.label.setText( self.inFileLabel )
@@ -173,7 +66,7 @@
QObject.connect( self.selectInputFileButton, SIGNAL( "clicked()" ), self.fillInputFileEdit )
QObject.disconnect( self.selectInputFileButton, SIGNAL( "clicked()" ), self.fillInputDir )
- QObject.connect( self.base.buttonBox.button( QDialogButtonBox.Ok ), SIGNAL( "clicked()" ), self.checkLayer )
+ #QObject.connect( self.base.buttonBox.button( QDialogButtonBox.Ok ), SIGNAL( "clicked()" ), self.checkLayer )
def enableRecurse( self ):
if self.recurseCheck.isChecked():
@@ -186,29 +79,20 @@
def fillInputFileEdit( self ):
lastUsedFilter = Utils.FileFilter.lastUsedRasterFilter()
- file = Utils.FileDialog.getOpenFileName( self, self.tr( "Select the file to analyse" ), Utils.FileFilter.allRastersFilter(), lastUsedFilter )
- if file.isEmpty():
+ inputFile = Utils.FileDialog.getOpenFileName( self, self.tr( "Select the file to analyse" ), Utils.FileFilter.allRastersFilter(), lastUsedFilter )
+ if inputFile.isEmpty():
return
-
- outFile = QString( file ).insert( file.indexOf( "." ), "_1" ).replace( QRegExp( "\.[a-zA-Z]{3,4}$" ), ".tif" )
- self.tempFile = outFile
- #self.outputFormat = Utils.fillOutputFormat( lastUsedFilter, file )
Utils.FileFilter.setLastUsedRasterFilter( lastUsedFilter )
- self.inputFileEdit.setText( file )
+ #self.outputFormat = Utils.fillOutputFormat( lastUsedFilter, file )
+ self.inputFileEdit.setText( inputFile )
def fillInputDir( self ):
inputDir = Utils.FileDialog.getExistingDirectory( self, self.tr( "Select the input directory with files to Assign projection" ))
if inputDir.isEmpty():
return
- self.inputPath = inputDir
self.inputFileEdit.setText( inputDir )
- filter = Utils.getRasterExtensions()
- workDir = QDir( inputDir )
- workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
- workDir.setNameFilters( filter )
-
def fillDesiredSRSEdit( self ):
dialog = SRSDialog( "Select desired SRS" )
if dialog.exec_():
@@ -225,6 +109,7 @@
if self.batchCheck.isChecked():
return arguments
arguments << self.inputFileEdit.text()
+ self.tempFile = self.inputFileEdit.text().replace( QRegExp( "\.[a-zA-Z]{2,4}$" ), ".tif" ).append( ".tmp" )
arguments << self.tempFile
return arguments
@@ -234,25 +119,34 @@
def getOutputFileName( self ):
return self.inputFileEdit.text()
+ def getBatchOutputFileName(self, fn):
+ # get GeoTiff
+ fn = QString( fn ).replace( QRegExp( "\.[a-zA-Z]{2,4}$" ), ".tif" )
+ return BaseBatchWidget.getBatchOutputFileName( self, fn )
+
def addLayerIntoCanvas(self, fileInfo):
self.iface.addRasterLayer(fileInfo.filePath())
def checkLayer( self ):
- layerMap = QgsMapLayerRegistry.instance().mapLayers()
layerList = []
+
+ layerMap = QgsMapLayerRegistry.instance().mapLayers()
for name, layer in layerMap.iteritems():
if layer.type() == QgsMapLayer.RasterLayer:
- layerList.append( unicode( layer.name() ) )
- fileName = QString( os.path.split( str( self.inputFileEdit.text() ) )[ 1 ] )
- fileName = fileName.left( fileName.indexOf( "." ) )
- if fileName in layerList:
+ layerList.append( unicode( layer.source() ) )
+
+ if unicode( self.inputFileEdit.text() ) in layerList:
QMessageBox.warning( self, self.tr( "Assign projection" ), self.tr( "This raster already found in map canvas" ) )
return
+
self.onRun()
def isBatchEnabled(self):
return self.batchCheck.isChecked()
+ def isRecursiveScanEnabled(self):
+ return self.recurseCheck.isChecked()
+
def setProgressRange(self, maximum):
self.progressBar.setRange(0, maximum)
@@ -268,65 +162,3 @@
if oldFile.remove():
newFile.rename( self.inputFileEdit.text() )
-# def batchRun( self ):
-# self.base.buttonBox.button( QDialogButtonBox.Ok ).setEnabled( False )
-# self.base.setCursor( Qt.WaitCursor )
-#
-# filter = Utils.getRasterExtensions()
-# inDir = self.inputFileEdit.text()
-# outDir = inDir
-# workDir = QDir( inDir )
-# workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
-# workDir.setNameFilters( filter )
-# files = workDir.entryList()
-#
-# inFiles = []
-# self.outFiles = []
-# for f in files:
-# inFiles.append( inDir + "/" + f )
-# outFile = QString( f ).insert( f.indexOf( "." ), "_1" ).replace( QRegExp( "\.[a-zA-Z]{3,4}$" ), ".tif" )
-# #outFile = f.replace( QRegExp( "\.[a-zA-Z0-9]{2,4}" ), ".tif" )
-# self.outFiles.append( outDir + "/" + outFile )
-#
-# args = QStringList()
-# for i in range( self.base.arguments.count() ):
-# args.append( self.base.arguments[ i ] )
-#
-# self.errors = QStringList()
-# count = 1
-# total = len( inFiles )
-# for i, item in enumerate( inFiles ):
-# #print "PROCESS", i
-# #self.lblProgress.setText( self.tr( "Processed: %1 from %2" ).arg( count ).arg( total ) )
-# #QCoreApplication.processEvents()
-# count = count + 1
-#
-# itemArgs = QStringList()
-# itemArgs << args
-# itemArgs << item
-# itemArgs << self.outFiles[ i ]
-#
-# self.base.process.start( self.base.command, itemArgs, QIODevice.ReadOnly )
-# if self.base.process.waitForFinished():
-# msg = QString( self.base.process.readAllStandardError() )
-# if not msg.isEmpty():
-# self.errors.append( item )
-# self.base.process.close()
-#
-# oldFile = QFile( item )
-# newFile = QFile( self.outFiles[ i ] )
-# if oldFile.remove():
-# newFile.rename( item )
-#
-# #self.lblProgress.setText( self.tr( "Finished" ) )
-# self.batchFinished()
-#
-# def batchFinished( self ):
-# self.base.buttonBox.button( QDialogButtonBox.Ok ).setEnabled( True )
-# self.base.setCursor( Qt.ArrowCursor )
-#
-# if not self.errors.isEmpty():
-# message = QErrorMessage( self )
-# msg = QString( "Processing of the following files ended with error:\n\n" ).append( self.errors.join( "\n" ) )
-# message.showMessage( msg )
-
Modified: trunk/qgis/python/plugins/GdalTools/tools/doRgbPct.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doRgbPct.py 2010-12-21 17:20:33 UTC (rev 14962)
+++ trunk/qgis/python/plugins/GdalTools/tools/doRgbPct.py 2010-12-22 03:25:14 UTC (rev 14963)
@@ -51,8 +51,8 @@
if self.batchCheck.isChecked():
self.inFileLabel = self.label.text()
self.outFileLabel = self.label_2.text()
- self.label.setText( QCoreApplication.translate( "GdalTools", "&Input directory:" ) )
- self.label_2.setText( QCoreApplication.translate( "GdalTools", "&Output directory:" ) )
+ self.label.setText( QCoreApplication.translate( "GdalTools", "&Input directory" ) )
+ self.label_2.setText( QCoreApplication.translate( "GdalTools", "&Output directory" ) )
self.progressBar.show()
Modified: trunk/qgis/python/plugins/GdalTools/tools/doTranslate.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doTranslate.py 2010-12-21 17:20:33 UTC (rev 14962)
+++ trunk/qgis/python/plugins/GdalTools/tools/doTranslate.py 2010-12-22 03:25:14 UTC (rev 14963)
@@ -74,8 +74,8 @@
if self.batchCheck.isChecked():
self.inFileLabel = self.label_3.text()
self.outFileLabel = self.label_2.text()
- self.label_3.setText( QCoreApplication.translate( "GdalTools", "&Input directory:" ) )
- self.label_2.setText( QCoreApplication.translate( "GdalTools", "&Output directory:" ) )
+ self.label_3.setText( QCoreApplication.translate( "GdalTools", "&Input directory" ) )
+ self.label_2.setText( QCoreApplication.translate( "GdalTools", "&Output directory" ) )
self.progressBar.show()
self.formatLabel.show()
Modified: trunk/qgis/python/plugins/GdalTools/tools/doWarp.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/doWarp.py 2010-12-21 17:20:33 UTC (rev 14962)
+++ trunk/qgis/python/plugins/GdalTools/tools/doWarp.py 2010-12-22 03:25:14 UTC (rev 14963)
@@ -65,8 +65,8 @@
if self.batchCheck.isChecked():
self.inFileLabel = self.label.text()
self.outFileLabel = self.label_2.text()
- self.label.setText( QCoreApplication.translate( "GdalTools", "&Input directory:" ) )
- self.label_2.setText( QCoreApplication.translate( "GdalTools", "&Output directory:" ) )
+ self.label.setText( QCoreApplication.translate( "GdalTools", "&Input directory" ) )
+ self.label_2.setText( QCoreApplication.translate( "GdalTools", "&Output directory" ) )
self.progressBar.show()
Modified: trunk/qgis/python/plugins/GdalTools/tools/widgetBatchBase.py
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/widgetBatchBase.py 2010-12-21 17:20:33 UTC (rev 14962)
+++ trunk/qgis/python/plugins/GdalTools/tools/widgetBatchBase.py 2010-12-22 03:25:14 UTC (rev 14963)
@@ -23,12 +23,25 @@
def isBatchEnabled(self):
return False
- def setProgressRange(self, maximum ):
+ def isRecursiveScanEnabled(self):
+ return False
+
+ def setProgressRange(self, maximum):
pass
def updateProgress(self, value, maximum):
pass
+ def getBatchOutputFileName(self, fn):
+ inDir = self.getInputFileName()
+ outDir = self.getOutputFileName()
+
+ # if overwrites existent files
+ if outDir == None or outDir == inDir:
+ return QString( fn ).append( ".tmp" )
+
+ return QString( fn ).mid( len(inDir) ).prepend( outDir )
+
def onRun( self ):
if not self.isBatchEnabled():
BasePluginWidget.onRun(self)
@@ -41,22 +54,18 @@
self.base.setCursor( Qt.WaitCursor )
inDir = self.getInputFileName()
- outDir = self.getOutputFileName()
filter = Utils.getRasterExtensions()
workDir = QDir( inDir )
workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
workDir.setNameFilters( filter )
- files = workDir.entryList()
+ workFiles = workDir.entryList()
- self.inFiles = []
+ self.inFiles = Utils.getRasterFiles( inDir, self.isRecursiveScanEnabled() )
self.outFiles = []
- for f in files:
- self.inFiles.append( inDir + "/" + f )
- if outDir != None:
- outFile = f.replace( QRegExp( "\.[a-zA-Z0-9]{2,4}" ), ".tif" )
- self.outFiles.append( outDir + "/" + outFile )
+ for f in self.inFiles:
+ self.outFiles.append( self.getBatchOutputFileName( f ) )
self.errors = QStringList()
self.batchIndex = 0
@@ -91,6 +100,15 @@
self.base.process.close()
+ # overwrite existent files
+ inDir = self.getInputFileName()
+ outDir = self.getOutputFileName()
+ if outDir == None or inDir == outDir:
+ oldFile = QFile( self.inFiles[self.batchIndex] )
+ newFile = QFile( self.outFiles[self.batchIndex] )
+ if oldFile.remove():
+ newFile.rename(self.inFiles[self.batchIndex])
+
self.batchIndex += 1
self.runItem( self.batchIndex, self.batchTotal )
@@ -101,6 +119,11 @@
msg = QString( "Processing of the following files ended with error: <br><br>" ).append( self.errors.join( "<br><br>" ) )
QErrorMessage( self ).showMessage( msg )
+ inDir = self.getInputFileName()
+ outDir = self.getOutputFileName()
+ if outDir == None or inDir == outDir:
+ self.outFiles = self.inFiles
+
# load layers managing the render flag to avoid waste of time
canvas = self.iface.mapCanvas()
previousRenderFlag = canvas.renderFlag()
Modified: trunk/qgis/python/plugins/GdalTools/tools/widgetBuildVRT.ui
===================================================================
--- trunk/qgis/python/plugins/GdalTools/tools/widgetBuildVRT.ui 2010-12-21 17:20:33 UTC (rev 14962)
+++ trunk/qgis/python/plugins/GdalTools/tools/widgetBuildVRT.ui 2010-12-22 03:25:14 UTC (rev 14963)
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>352</width>
- <height>182</height>
+ <width>344</width>
+ <height>234</height>
</rect>
</property>
<property name="sizePolicy">
@@ -25,7 +25,14 @@
<property name="sizeConstraint">
<enum>QLayout::SetNoConstraint</enum>
</property>
- <item row="0" column="0">
+ <item row="0" column="0" colspan="2">
+ <widget class="QCheckBox" name="inputDirCheck">
+ <property name="text">
+ <string>Choose input directory instead of files</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>&Input files</string>
@@ -35,7 +42,7 @@
</property>
</widget>
</item>
- <item row="0" column="1">
+ <item row="1" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_3">
<item>
<widget class="QLineEdit" name="inputFilesEdit">
@@ -56,7 +63,14 @@
</item>
</layout>
</item>
- <item row="1" column="0">
+ <item row="2" column="1">
+ <widget class="QCheckBox" name="recurseCheck">
+ <property name="text">
+ <string>Recurse subdirectories</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0">
<widget class="QLabel" name="label_2">
<property name="text">
<string>&Output file</string>
@@ -66,7 +80,7 @@
</property>
</widget>
</item>
- <item row="1" column="1">
+ <item row="3" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLineEdit" name="outputFileEdit">
@@ -87,14 +101,14 @@
</item>
</layout>
</item>
- <item row="2" column="0">
+ <item row="4" column="0">
<widget class="QCheckBox" name="resolutionCheck">
<property name="text">
<string>&Resolution</string>
</property>
</widget>
</item>
- <item row="2" column="1">
+ <item row="4" column="1">
<widget class="QComboBox" name="resolutionComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
@@ -122,21 +136,21 @@
</item>
</widget>
</item>
- <item row="3" column="0">
+ <item row="5" column="0">
<widget class="QCheckBox" name="srcNoDataCheck">
<property name="text">
<string>&Source No Data</string>
</property>
</widget>
</item>
- <item row="3" column="1">
+ <item row="5" column="1">
<widget class="QSpinBox" name="srcNoDataSpin">
<property name="maximum">
<number>65000</number>
</property>
</widget>
</item>
- <item row="4" column="0">
+ <item row="6" column="0">
<widget class="QCheckBox" name="separateCheck">
<property name="text">
<string>Se&parate</string>
More information about the QGIS-commit
mailing list