[QGIS Commit] r14616 - trunk/qgis/python/plugins/fTools/tools

svn_qgis at osgeo.org svn_qgis at osgeo.org
Sat Nov 13 13:31:14 EST 2010


Author: alexbruy
Date: 2010-11-13 10:31:14 -0800 (Sat, 13 Nov 2010)
New Revision: 14616

Modified:
   trunk/qgis/python/plugins/fTools/tools/doMergeShapes.py
   trunk/qgis/python/plugins/fTools/tools/frmMergeShapes.ui
Log:
option to select separate shapefiles for merging with fTools


Modified: trunk/qgis/python/plugins/fTools/tools/doMergeShapes.py
===================================================================
--- trunk/qgis/python/plugins/fTools/tools/doMergeShapes.py	2010-11-13 18:29:21 UTC (rev 14615)
+++ trunk/qgis/python/plugins/fTools/tools/doMergeShapes.py	2010-11-13 18:31:14 UTC (rev 14616)
@@ -24,6 +24,7 @@
 
     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 @@
     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 @@
       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 @@
         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 @@
 
   def setProgressRange( self, max ):
     self.progressFeatures.setRange( 0, max )
+    self.progressFeatures.setValue( 0 )
 
   def featureProcessed( self ):
     self.progressFeatures.setValue( self.progressFeatures.value() + 1 )

Modified: trunk/qgis/python/plugins/fTools/tools/frmMergeShapes.ui
===================================================================
--- trunk/qgis/python/plugins/fTools/tools/frmMergeShapes.ui	2010-11-13 18:29:21 UTC (rev 14615)
+++ trunk/qgis/python/plugins/fTools/tools/frmMergeShapes.ui	2010-11-13 18:31:14 UTC (rev 14616)
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>377</width>
-    <height>246</height>
+    <height>273</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -15,6 +15,13 @@
   </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">
       <string>Input directory</string>



More information about the QGIS-commit mailing list