@@ -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 )
0 commit comments