Skip to content

Commit ef77d9c

Browse files
author
alexbruy
committedNov 13, 2010
option to select separate shapefiles for merging with fTools
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@14616 c8812cc2-4d05-0410-92ff-de0c093fc19c

File tree

2 files changed

+51
-14
lines changed

2 files changed

+51
-14
lines changed
 

‎python/plugins/fTools/tools/doMergeShapes.py

Lines changed: 43 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ def __init__( self, iface ):
2424

2525
QObject.connect( self.btnSelectDir, SIGNAL( "clicked()" ), self.inputDir )
2626
QObject.connect( self.btnSelectFile, SIGNAL( "clicked()" ), self.outFile )
27+
QObject.connect( self.chkListMode, SIGNAL( "stateChanged( int )" ), self.changeMode )
2728

2829
def inputDir( self ):
2930
inDir = QFileDialog.getExistingDirectory( self,
@@ -33,18 +34,18 @@ def inputDir( self ):
3334
if inDir.isEmpty():
3435
return
3536

36-
#workDir = QDir( inDir )
37-
#workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
38-
#nameFilter = QStringList() << "*.shp" << "*.SHP"
39-
#workDir.setNameFilters( nameFilter )
40-
#self.inputFiles = workDir.entryList()
41-
#if self.inputFiles.count() == 0:
42-
# QMessageBox.warning( self, self.tr( "No shapefiles found" ),
43-
# self.tr( "There are no shapefiles in this directory. Please select another one." ) )
44-
# self.inputFiles = None
45-
# return
46-
47-
#self.progressFiles.setRange( 0, self.inputFiles.count() )
37+
workDir = QDir( inDir )
38+
workDir.setFilter( QDir.Files | QDir.NoSymLinks | QDir.NoDotAndDotDot )
39+
nameFilter = QStringList() << "*.shp" << "*.SHP"
40+
workDir.setNameFilters( nameFilter )
41+
self.inputFiles = workDir.entryList()
42+
if self.inputFiles.count() == 0:
43+
QMessageBox.warning( self, self.tr( "No shapefiles found" ),
44+
self.tr( "There are no shapefiles in this directory. Please select another one." ) )
45+
self.inputFiles = None
46+
return
47+
48+
self.progressFiles.setRange( 0, self.inputFiles.count() )
4849
self.leInputDir.setText( inDir )
4950

5051
def outFile( self ):
@@ -53,6 +54,30 @@ def outFile( self ):
5354
return
5455
self.leOutShape.setText( self.outFileName )
5556

57+
def inputFile( self ):
58+
files = QFileDialog.getOpenFileNames( self, self.tr( "Select files to merge" ), ".", "Shapefiles(*.shp *.SHP)" )
59+
if files.isEmpty():
60+
self.inputFiles = None
61+
return
62+
63+
self.inputFiles = QStringList()
64+
for f in files:
65+
fileName = QFileInfo( f ).fileName()
66+
self.inputFiles.append( fileName )
67+
68+
self.progressFiles.setRange( 0, self.inputFiles.count() )
69+
self.leInputDir.setText( files.join( ";" ) )
70+
71+
def changeMode( self ):
72+
if self.chkListMode.isChecked():
73+
self.label.setText( self.tr( "Input files" ) )
74+
QObject.disconnect( self.btnSelectDir, SIGNAL( "clicked()" ), self.inputDir )
75+
QObject.connect( self.btnSelectDir, SIGNAL( "clicked()" ), self.inputFile )
76+
else:
77+
self.label.setText( self.tr( "Input directory" ) )
78+
QObject.disconnect( self.btnSelectDir, SIGNAL( "clicked()" ), self.inputFile )
79+
QObject.connect( self.btnSelectDir, SIGNAL( "clicked()" ), self.inputDir )
80+
5681
def reject( self ):
5782
QDialog.reject( self )
5883

@@ -77,7 +102,11 @@ def accept( self ):
77102
QMessageBox.warning( self, self.tr( "Delete error" ), self.tr( "Can't delete file %1" ).arg( outFileName ) )
78103
return
79104

80-
baseDir = self.leInputDir.text()
105+
if self.chkListMode.isChecked():
106+
files = self.leInputDir.text().split( ";" )
107+
baseDir = QFileInfo( files[ 0 ] ).absolutePath()
108+
else:
109+
baseDir = self.leInputDir.text()
81110

82111
QApplication.setOverrideCursor( QCursor( Qt.WaitCursor ) )
83112
self.btnOk.setEnabled( False )
@@ -97,6 +126,7 @@ def accept( self ):
97126

98127
def setProgressRange( self, max ):
99128
self.progressFeatures.setRange( 0, max )
129+
self.progressFeatures.setValue( 0 )
100130

101131
def featureProcessed( self ):
102132
self.progressFeatures.setValue( self.progressFeatures.value() + 1 )

‎python/plugins/fTools/tools/frmMergeShapes.ui

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,20 @@
77
<x>0</x>
88
<y>0</y>
99
<width>377</width>
10-
<height>246</height>
10+
<height>273</height>
1111
</rect>
1212
</property>
1313
<property name="windowTitle">
1414
<string>Merge shapefiles</string>
1515
</property>
1616
<layout class="QVBoxLayout" name="verticalLayout">
17+
<item>
18+
<widget class="QCheckBox" name="chkListMode">
19+
<property name="text">
20+
<string>Select by layers in the folder</string>
21+
</property>
22+
</widget>
23+
</item>
1724
<item>
1825
<widget class="QLabel" name="label">
1926
<property name="text">

0 commit comments

Comments
 (0)
Please sign in to comment.