@@ -24,6 +24,7 @@ def __init__( self, iface ):
24
24
25
25
QObject .connect ( self .btnSelectDir , SIGNAL ( "clicked()" ), self .inputDir )
26
26
QObject .connect ( self .btnSelectFile , SIGNAL ( "clicked()" ), self .outFile )
27
+ QObject .connect ( self .chkListMode , SIGNAL ( "stateChanged( int )" ), self .changeMode )
27
28
28
29
def inputDir ( self ):
29
30
inDir = QFileDialog .getExistingDirectory ( self ,
@@ -33,18 +34,18 @@ def inputDir( self ):
33
34
if inDir .isEmpty ():
34
35
return
35
36
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 () )
48
49
self .leInputDir .setText ( inDir )
49
50
50
51
def outFile ( self ):
@@ -53,6 +54,30 @@ def outFile( self ):
53
54
return
54
55
self .leOutShape .setText ( self .outFileName )
55
56
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
+
56
81
def reject ( self ):
57
82
QDialog .reject ( self )
58
83
@@ -77,7 +102,11 @@ def accept( self ):
77
102
QMessageBox .warning ( self , self .tr ( "Delete error" ), self .tr ( "Can't delete file %1" ).arg ( outFileName ) )
78
103
return
79
104
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 ()
81
110
82
111
QApplication .setOverrideCursor ( QCursor ( Qt .WaitCursor ) )
83
112
self .btnOk .setEnabled ( False )
@@ -97,6 +126,7 @@ def accept( self ):
97
126
98
127
def setProgressRange ( self , max ):
99
128
self .progressFeatures .setRange ( 0 , max )
129
+ self .progressFeatures .setValue ( 0 )
100
130
101
131
def featureProcessed ( self ):
102
132
self .progressFeatures .setValue ( self .progressFeatures .value () + 1 )
0 commit comments