@@ -44,26 +44,27 @@ def __init__(self, inLayer, outDb, outUri, parent=None):
44
44
self .default_pk = "id"
45
45
self .default_geom = "geom"
46
46
47
- # updates of UI
48
- self .setupWorkingMode ()
47
+ self .mode = self .ASK_FOR_INPUT_MODE if self .inLayer is None else self .HAS_INPUT_MODE
49
48
50
- self .cboTable .setEditText (self .outUri .table ())
51
-
52
- self .populateLayers ()
49
+ # updates of UI
50
+ self .setupWorkingMode ( self .mode )
53
51
54
52
self .connect (self .cboSchema , SIGNAL ("currentIndexChanged(int)" ), self .populateTables )
55
53
self .populateSchemas ()
56
54
self .populateTables ()
57
-
55
+ self . populateLayers ()
58
56
self .populateEncodings ()
59
57
60
58
61
- def setupWorkingMode (self ):
62
- """ display the widget to select a layer/file if there's no input layer """
63
- self .mode = self .ASK_FOR_INPUT_MODE if self .inLayer is None else self .HAS_INPUT_MODE
64
- self .wdgInput .setVisible ( self .mode == self .ASK_FOR_INPUT_MODE )
59
+ def setupWorkingMode (self , mode ):
60
+ """ hide the widget to select a layer/file if the input layer
61
+ is already set """
62
+ self .wdgInput .setVisible ( mode == self .ASK_FOR_INPUT_MODE )
63
+ self .resize ( 200 , 200 )
64
+
65
+ self .cboTable .setEditText (self .outUri .table ())
65
66
66
- if not self .inLayer :
67
+ if mode == self .ASK_FOR_INPUT_MODE :
67
68
QObject .connect ( self .btnChooseInputFile , SIGNAL ("clicked()" ), self .chooseInputFile )
68
69
#QObject.connect( self.cboInputLayer.lineEdit(), SIGNAL("editingFinished()"), self.updateInputLayer )
69
70
QObject .connect ( self .cboInputLayer , SIGNAL ("editTextChanged(const QString &)" ), self .inputPathChanged )
@@ -114,7 +115,7 @@ def deleteInputLayer(self):
114
115
return False
115
116
116
117
def chooseInputFile (self ):
117
- vectorFormats = qgis .core .QgsVectorFileWriter . fileFilterString ()
118
+ vectorFormats = qgis .core .QgsProviderRegistry . instance (). fileVectorFilters ()
118
119
# get last used dir and format
119
120
settings = QSettings ()
120
121
lastDir = settings .value ("/db_manager/lastUsedDir" , "" ).toString ()
@@ -216,12 +217,19 @@ def populateEncodings(self):
216
217
self .cboEncoding .setCurrentIndex (2 )
217
218
218
219
def accept (self ):
220
+ if self .mode == self .ASK_FOR_INPUT_MODE :
221
+ # create the input layer (if not already done) and
222
+ # update available options w/o changing the tablename!
223
+ self .cboTable .blockSignals (True )
224
+ table = self .cboTable .currentText ()
225
+ self .updateInputLayer ()
226
+ self .cboTable .setEditText (table )
227
+ self .cboTable .blockSignals (False )
228
+
219
229
# sanity checks
220
230
if self .inLayer is None :
221
- # create the input layer and update available options
222
- if not self .updateInputLayer ():
223
- QMessageBox .information (self , "Import to database" , "Input layer missing or not valid" )
224
- return
231
+ QMessageBox .information (self , "Import to database" , "Input layer missing or not valid" )
232
+ return
225
233
226
234
if self .cboTable .currentText () == "" :
227
235
QMessageBox .information (self , "Import to database" , "Output table name is required" )
0 commit comments