diff --git a/python/plugins/db_manager/dlg_import_vector.py b/python/plugins/db_manager/dlg_import_vector.py index ae606a14b342..c84763dd41e3 100644 --- a/python/plugins/db_manager/dlg_import_vector.py +++ b/python/plugins/db_manager/dlg_import_vector.py @@ -46,6 +46,9 @@ def __init__(self, inLayer, outDb, outUri, parent=None): self.mode = self.ASK_FOR_INPUT_MODE if self.inLayer is None else self.HAS_INPUT_MODE + # used to delete the inlayer whether created inside this dialog + self.inLayerMustBeDestroyed = False + self.populateSchemas() self.populateTables() self.populateLayers() @@ -107,11 +110,13 @@ def populateLayers(self): self.cboInputLayer.addItem( layer.name(), index ) def deleteInputLayer(self): - """ destroy the input layer instance, but only if it was + """ unset the input layer, then destroy it but only if it was created from this dialog """ if self.mode == self.ASK_FOR_INPUT_MODE and self.inLayer: - self.inLayer.deleteLater() + if self.inLayerMustBeDestroyed: + self.inLayer.deleteLater() self.inLayer = None + self.inLayerMustBeDestroyed = False return True return False @@ -119,7 +124,7 @@ def chooseInputFile(self): vectorFormats = qgis.core.QgsProviderRegistry.instance().fileVectorFilters() # get last used dir and format settings = QSettings() - lastDir = settings.value("/db_manager/lastUsedDir", "").toString() + lastDir = settings.value("/db_manager/lastUsedDir", "").toString() lastVectorFormat = settings.value("/UI/lastVectorFileFilter", "").toString() # ask for a filename filename = QFileDialog.getOpenFileName(self, "Choose the file to import", lastDir, vectorFormats, lastVectorFormat) @@ -159,10 +164,12 @@ def updateInputLayer(self): return False self.inLayer = layer + self.inLayerMustBeDestroyed = True else: legendIndex = self.cboInputLayer.itemData( index ).toInt()[0] self.inLayer = iface.legendInterface().layers()[ legendIndex ] + self.inLayerMustBeDestroyed = False # update the output table name self.cboTable.setEditText(self.inLayer.name())