option to select separate shapefiles for merging with fTools

git-svn-id: http://svn.osgeo.org/qgis/trunk@14616 c8812cc2-4d05-0410-92ff-de0c093fc19c
This commit is contained in:
alexbruy 2010-11-13 18:31:14 +00:00
parent ad55d774a0
commit 1c99de498c
2 changed files with 50 additions and 13 deletions

View File

@ -24,6 +24,7 @@ class Dialog( QDialog, Ui_Dialog ):
QObject.connect( self.btnSelectDir, SIGNAL( "clicked()" ), self.inputDir )
QObject.connect( self.btnSelectFile, SIGNAL( "clicked()" ), self.outFile )
QObject.connect( self.chkListMode, SIGNAL( "stateChanged( int )" ), self.changeMode )
def inputDir( self ):
inDir = QFileDialog.getExistingDirectory( self,
@ -33,18 +34,18 @@ class Dialog( QDialog, Ui_Dialog ):
if inDir.isEmpty():
return
#workDir = QDir( inDir )
#workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
#nameFilter = QStringList() << "*.shp" << "*.SHP"
#workDir.setNameFilters( nameFilter )
#self.inputFiles = workDir.entryList()
#if self.inputFiles.count() == 0:
# QMessageBox.warning( self, self.tr( "No shapefiles found" ),
# self.tr( "There are no shapefiles in this directory. Please select another one." ) )
# self.inputFiles = None
# return
workDir = QDir( inDir )
workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
nameFilter = QStringList() << "*.shp" << "*.SHP"
workDir.setNameFilters( nameFilter )
self.inputFiles = workDir.entryList()
if self.inputFiles.count() == 0:
QMessageBox.warning( self, self.tr( "No shapefiles found" ),
self.tr( "There are no shapefiles in this directory. Please select another one." ) )
self.inputFiles = None
return
#self.progressFiles.setRange( 0, self.inputFiles.count() )
self.progressFiles.setRange( 0, self.inputFiles.count() )
self.leInputDir.setText( inDir )
def outFile( self ):
@ -53,6 +54,30 @@ class Dialog( QDialog, Ui_Dialog ):
return
self.leOutShape.setText( self.outFileName )
def inputFile( self ):
files = QFileDialog.getOpenFileNames( self, self.tr( "Select files to merge" ), ".", "Shapefiles(*.shp *.SHP)" )
if files.isEmpty():
self.inputFiles = None
return
self.inputFiles = QStringList()
for f in files:
fileName = QFileInfo( f ).fileName()
self.inputFiles.append( fileName )
self.progressFiles.setRange( 0, self.inputFiles.count() )
self.leInputDir.setText( files.join( ";" ) )
def changeMode( self ):
if self.chkListMode.isChecked():
self.label.setText( self.tr( "Input files" ) )
QObject.disconnect( self.btnSelectDir, SIGNAL( "clicked()" ), self.inputDir )
QObject.connect( self.btnSelectDir, SIGNAL( "clicked()" ), self.inputFile )
else:
self.label.setText( self.tr( "Input directory" ) )
QObject.disconnect( self.btnSelectDir, SIGNAL( "clicked()" ), self.inputFile )
QObject.connect( self.btnSelectDir, SIGNAL( "clicked()" ), self.inputDir )
def reject( self ):
QDialog.reject( self )
@ -77,7 +102,11 @@ class Dialog( QDialog, Ui_Dialog ):
QMessageBox.warning( self, self.tr( "Delete error" ), self.tr( "Can't delete file %1" ).arg( outFileName ) )
return
baseDir = self.leInputDir.text()
if self.chkListMode.isChecked():
files = self.leInputDir.text().split( ";" )
baseDir = QFileInfo( files[ 0 ] ).absolutePath()
else:
baseDir = self.leInputDir.text()
QApplication.setOverrideCursor( QCursor( Qt.WaitCursor ) )
self.btnOk.setEnabled( False )
@ -97,6 +126,7 @@ class Dialog( QDialog, Ui_Dialog ):
def setProgressRange( self, max ):
self.progressFeatures.setRange( 0, max )
self.progressFeatures.setValue( 0 )
def featureProcessed( self ):
self.progressFeatures.setValue( self.progressFeatures.value() + 1 )

View File

@ -7,13 +7,20 @@
<x>0</x>
<y>0</y>
<width>377</width>
<height>246</height>
<height>273</height>
</rect>
</property>
<property name="windowTitle">
<string>Merge shapefiles</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QCheckBox" name="chkListMode">
<property name="text">
<string>Select by layers in the folder</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label">
<property name="text">