@@ -46,6 +46,9 @@ def __init__(self, inLayer, outDb, outUri, parent=None):
46
46
47
47
self .mode = self .ASK_FOR_INPUT_MODE if self .inLayer is None else self .HAS_INPUT_MODE
48
48
49
+ # used to delete the inlayer whether created inside this dialog
50
+ self .inLayerMustBeDestroyed = False
51
+
49
52
self .populateSchemas ()
50
53
self .populateTables ()
51
54
self .populateLayers ()
@@ -107,19 +110,21 @@ def populateLayers(self):
107
110
self .cboInputLayer .addItem ( layer .name (), index )
108
111
109
112
def deleteInputLayer (self ):
110
- """ destroy the input layer instance, but only if it was
113
+ """ unset the input layer, then destroy it but only if it was
111
114
created from this dialog """
112
115
if self .mode == self .ASK_FOR_INPUT_MODE and self .inLayer :
113
- self .inLayer .deleteLater ()
116
+ if self .inLayerMustBeDestroyed :
117
+ self .inLayer .deleteLater ()
114
118
self .inLayer = None
119
+ self .inLayerMustBeDestroyed = False
115
120
return True
116
121
return False
117
122
118
123
def chooseInputFile (self ):
119
124
vectorFormats = qgis .core .QgsProviderRegistry .instance ().fileVectorFilters ()
120
125
# get last used dir and format
121
126
settings = QSettings ()
122
- lastDir = settings .value ("/db_manager/lastUsedDir" , "" ).toString ()
127
+ lastDir = settings .value ("/db_manager/lastUsedDir" , "" ).toString ()
123
128
lastVectorFormat = settings .value ("/UI/lastVectorFileFilter" , "" ).toString ()
124
129
# ask for a filename
125
130
filename = QFileDialog .getOpenFileName (self , "Choose the file to import" , lastDir , vectorFormats , lastVectorFormat )
@@ -159,10 +164,12 @@ def updateInputLayer(self):
159
164
return False
160
165
161
166
self .inLayer = layer
167
+ self .inLayerMustBeDestroyed = True
162
168
163
169
else :
164
170
legendIndex = self .cboInputLayer .itemData ( index ).toInt ()[0 ]
165
171
self .inLayer = iface .legendInterface ().layers ()[ legendIndex ]
172
+ self .inLayerMustBeDestroyed = False
166
173
167
174
# update the output table name
168
175
self .cboTable .setEditText (self .inLayer .name ())
0 commit comments