2010-06-04 00:31:48 +00:00
# -*- coding: utf-8 -*-
from PyQt4 . QtCore import *
from PyQt4 . QtGui import *
from qgis . core import *
from qgis . gui import *
from ui_widgetConvert import Ui_GdalToolsWidget as Ui_Widget
from widgetBatchBase import GdalToolsBaseBatchWidget as BaseBatchWidget
import GdalTools_utils as Utils
class GdalToolsDialog ( QWidget , Ui_Widget , BaseBatchWidget ) :
def __init__ ( self , iface ) :
QWidget . __init__ ( self )
self . iface = iface
self . setupUi ( self )
BaseBatchWidget . __init__ ( self , self . iface , " pct2rgb.py " )
2011-04-15 18:30:10 +00:00
# we use one widget for two tools
2010-06-04 00:31:48 +00:00
self . base . setWindowTitle ( self . tr ( " Convert paletted image to RGB " ) )
2011-04-15 18:30:10 +00:00
self . outSelector . setType ( self . outSelector . FILE )
# set the default QSpinBoxes and QProgressBar value
self . bandSpin . setValue ( 1 )
self . progressBar . setValue ( 0 )
2010-06-04 00:31:48 +00:00
2011-04-15 18:30:10 +00:00
self . progressBar . hide ( )
2010-06-04 00:31:48 +00:00
self . outputFormat = Utils . fillRasterOutputFormat ( )
self . setParamsStatus (
[
2011-04-15 18:30:10 +00:00
( self . inSelector , SIGNAL ( " filenameChanged() " ) ) ,
( self . outSelector , SIGNAL ( " filenameChanged() " ) ) ,
( self . colorsSpin , SIGNAL ( " valueChanged(int) " ) , self . colorsCheck , " -1 " ) , # hide this option
( self . bandSpin , SIGNAL ( " valueChanged(int) " ) , self . bandCheck )
2010-06-04 00:31:48 +00:00
]
)
2011-04-15 18:30:10 +00:00
self . connect ( self . inSelector , SIGNAL ( " selectClicked() " ) , self . fillInputFile )
self . connect ( self . outSelector , SIGNAL ( " selectClicked() " ) , self . fillOutputFileEdit )
2010-06-04 00:31:48 +00:00
self . connect ( self . batchCheck , SIGNAL ( " stateChanged( int ) " ) , self . switchToolMode )
# switch to batch or normal mode
def switchToolMode ( self ) :
self . setCommandViewerEnabled ( not self . batchCheck . isChecked ( ) )
2011-04-15 18:30:10 +00:00
self . progressBar . setVisible ( self . batchCheck . isChecked ( ) )
2010-06-04 00:31:48 +00:00
2011-04-15 18:30:10 +00:00
self . inSelector . setType ( self . inSelector . FILE if self . batchCheck . isChecked ( ) else self . inSelector . FILE_LAYER )
self . outSelector . clear ( )
2010-06-04 00:31:48 +00:00
if self . batchCheck . isChecked ( ) :
self . inFileLabel = self . label . text ( )
self . outFileLabel = self . label_2 . text ( )
2010-12-22 03:25:14 +00:00
self . label . setText ( QCoreApplication . translate ( " GdalTools " , " &Input directory " ) )
self . label_2 . setText ( QCoreApplication . translate ( " GdalTools " , " &Output directory " ) )
2010-06-04 00:31:48 +00:00
2011-04-15 18:30:10 +00:00
QObject . disconnect ( self . inSelector , SIGNAL ( " selectClicked() " ) , self . fillInputFile )
QObject . disconnect ( self . outSelector , SIGNAL ( " selectClicked() " ) , self . fillOutputFileEdit )
2010-06-04 00:31:48 +00:00
2011-04-15 18:30:10 +00:00
QObject . connect ( self . inSelector , SIGNAL ( " selectClicked() " ) , self . fillInputDir )
QObject . connect ( self . outSelector , SIGNAL ( " selectClicked() " ) , self . fillOutputDir )
2010-06-04 00:31:48 +00:00
else :
self . label . setText ( self . inFileLabel )
self . label_2 . setText ( self . outFileLabel )
2011-04-15 18:30:10 +00:00
QObject . disconnect ( self . inSelector , SIGNAL ( " selectClicked() " ) , self . fillInputDir )
QObject . disconnect ( self . outSelector , SIGNAL ( " selectClicked() " ) , self . fillOutputDir )
2010-06-04 00:31:48 +00:00
2011-04-15 18:30:10 +00:00
QObject . connect ( self . inSelector , SIGNAL ( " selectClicked() " ) , self . fillInputFile )
QObject . connect ( self . outSelector , SIGNAL ( " selectClicked() " ) , self . fillOutputFileEdit )
2010-06-04 00:31:48 +00:00
2011-03-14 16:01:10 +00:00
def onLayersChanged ( self ) :
2011-04-15 18:30:10 +00:00
self . inSelector . setLayers ( Utils . LayerRegistry . instance ( ) . getRasterLayers ( ) )
2010-06-04 00:31:48 +00:00
def fillInputFile ( self ) :
lastUsedFilter = Utils . FileFilter . lastUsedRasterFilter ( )
inputFile = Utils . FileDialog . getOpenFileName ( self , self . tr ( " Select the input file for convert " ) , Utils . FileFilter . allRastersFilter ( ) , lastUsedFilter )
if inputFile . isEmpty ( ) :
return
Utils . FileFilter . setLastUsedRasterFilter ( lastUsedFilter )
2011-04-15 18:30:10 +00:00
self . inSelector . setFilename ( inputFile )
2010-06-04 00:31:48 +00:00
def fillOutputFileEdit ( self ) :
lastUsedFilter = Utils . FileFilter . lastUsedRasterFilter ( )
outputFile = Utils . FileDialog . getSaveFileName ( self , self . tr ( " Select the raster file to save the results to " ) , Utils . FileFilter . allRastersFilter ( ) , lastUsedFilter )
if outputFile . isEmpty ( ) :
return
Utils . FileFilter . setLastUsedRasterFilter ( lastUsedFilter )
self . outputFormat = Utils . fillRasterOutputFormat ( lastUsedFilter , outputFile )
2011-04-15 18:30:10 +00:00
self . outSelector . setFilename ( outputFile )
2010-06-04 00:31:48 +00:00
def fillInputDir ( self ) :
2011-04-15 18:30:10 +00:00
inputDir = Utils . FileDialog . getExistingDirectory ( self , self . tr ( " Select the input directory with files for convert " ) )
2010-06-04 00:31:48 +00:00
if inputDir . isEmpty ( ) :
return
2011-04-15 18:30:10 +00:00
self . inSelector . setFilename ( inputDir )
2010-06-04 00:31:48 +00:00
def fillOutputDir ( self ) :
outputDir = Utils . FileDialog . getExistingDirectory ( self , self . tr ( " Select the output directory to save the results to " ) )
if outputDir . isEmpty ( ) :
return
2011-04-15 18:30:10 +00:00
self . outSelector . setFilename ( outputDir )
2010-06-04 00:31:48 +00:00
def getArguments ( self ) :
arguments = QStringList ( )
2011-04-15 18:30:10 +00:00
if self . bandCheck . isChecked ( ) :
2010-06-04 00:31:48 +00:00
arguments << " -b "
2011-04-15 18:30:10 +00:00
arguments << str ( self . bandSpin . value ( ) )
2010-06-04 00:31:48 +00:00
if self . isBatchEnabled ( ) :
return arguments
2011-04-15 18:30:10 +00:00
outputFn = self . getOutputFileName ( )
if not outputFn . isEmpty ( ) :
2010-06-04 00:31:48 +00:00
arguments << " -of "
arguments << self . outputFormat
arguments << self . getInputFileName ( )
2011-04-15 18:30:10 +00:00
arguments << outputFn
2010-06-04 00:31:48 +00:00
return arguments
def getInputFileName ( self ) :
2011-04-15 18:30:10 +00:00
return self . inSelector . filename ( )
2010-06-04 00:31:48 +00:00
def getOutputFileName ( self ) :
2011-04-15 18:30:10 +00:00
return self . outSelector . filename ( )
2010-06-04 00:31:48 +00:00
def addLayerIntoCanvas ( self , fileInfo ) :
self . iface . addRasterLayer ( fileInfo . filePath ( ) )
def isBatchEnabled ( self ) :
return self . batchCheck . isChecked ( )
def setProgressRange ( self , maximum ) :
self . progressBar . setRange ( 0 , maximum )
def updateProgress ( self , index , total ) :
if index < total :
self . progressBar . setValue ( index + 1 )
else :
self . progressBar . setValue ( 0 )
2011-04-15 18:30:10 +00:00