mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
db manager: fix drag and drop import (fixes #13712)
This commit is contained in:
parent
4677a3ac12
commit
1f0fce7852
@ -41,8 +41,8 @@ except:
|
||||
|
||||
|
||||
class TreeItem(QObject):
|
||||
itemRemoved = pyqtSignal()
|
||||
itemChanged = pyqtSignal()
|
||||
deleted = pyqtSignal()
|
||||
changed = pyqtSignal()
|
||||
|
||||
def __init__(self, data, parent=None):
|
||||
QObject.__init__(self, parent)
|
||||
@ -53,13 +53,13 @@ class TreeItem(QObject):
|
||||
parent.appendChild(self)
|
||||
|
||||
def childRemoved(self):
|
||||
self.itemWasChanged()
|
||||
self.itemChanged()
|
||||
|
||||
def itemWasChanged(self):
|
||||
self.itemChanged.emit()
|
||||
def itemChanged(self):
|
||||
self.changed.emit()
|
||||
|
||||
def itemWasRemoved(self):
|
||||
self.itemRemoved.emit()
|
||||
def itemDeleted(self):
|
||||
self.deleted.emit()
|
||||
|
||||
def populate(self):
|
||||
self.populated = True
|
||||
@ -70,7 +70,7 @@ class TreeItem(QObject):
|
||||
|
||||
def appendChild(self, child):
|
||||
self.childItems.append(child)
|
||||
child.itemRemoved.connect(self.childRemoved)
|
||||
child.deleted.connect(self.childRemoved)
|
||||
|
||||
def child(self, row):
|
||||
return self.childItems[row]
|
||||
@ -78,7 +78,7 @@ class TreeItem(QObject):
|
||||
def removeChild(self, row):
|
||||
if row >= 0 and row < len(self.childItems):
|
||||
self.childItems[row].itemData.deleteLater()
|
||||
self.childItems[row].itemRemoved.disconnect(self.childRemoved)
|
||||
self.childItems[row].deleted.disconnect(self.childRemoved)
|
||||
del self.childItems[row]
|
||||
|
||||
def childCount(self):
|
||||
@ -140,8 +140,8 @@ class ConnectionItem(TreeItem):
|
||||
|
||||
def __init__(self, connection, parent=None):
|
||||
TreeItem.__init__(self, connection, parent)
|
||||
connection.changed.connect(self.itemWasChanged)
|
||||
connection.deleted.connect(self.itemWasRemoved)
|
||||
connection.changed.connect(self.itemChanged)
|
||||
connection.deleted.connect(self.itemDeleted)
|
||||
|
||||
# load (shared) icon with first instance of table item
|
||||
if not hasattr(ConnectionItem, 'connectedIcon'):
|
||||
@ -169,8 +169,8 @@ class ConnectionItem(TreeItem):
|
||||
return False
|
||||
|
||||
database = connection.database()
|
||||
database.changed.connect(self.itemWasChanged)
|
||||
database.deleted.connect(self.itemWasRemoved)
|
||||
database.changed.connect(self.itemChanged)
|
||||
database.deleted.connect(self.itemDeleted)
|
||||
|
||||
schemas = database.schemas()
|
||||
if schemas is not None:
|
||||
@ -195,8 +195,8 @@ class SchemaItem(TreeItem):
|
||||
|
||||
def __init__(self, schema, parent):
|
||||
TreeItem.__init__(self, schema, parent)
|
||||
schema.changed.connect(self.itemWasChanged)
|
||||
schema.deleted.connect(self.itemWasRemoved)
|
||||
schema.changed.connect(self.itemChanged)
|
||||
schema.deleted.connect(self.itemDeleted)
|
||||
|
||||
# load (shared) icon with first instance of schema item
|
||||
if not hasattr(SchemaItem, 'schemaIcon'):
|
||||
@ -225,8 +225,8 @@ class TableItem(TreeItem):
|
||||
|
||||
def __init__(self, table, parent):
|
||||
TreeItem.__init__(self, table, parent)
|
||||
table.changed.connect(self.itemWasChanged)
|
||||
table.deleted.connect(self.itemWasRemoved)
|
||||
table.changed.connect(self.itemChanged)
|
||||
table.deleted.connect(self.itemDeleted)
|
||||
self.populate()
|
||||
|
||||
# load (shared) icon with first instance of table item
|
||||
@ -303,7 +303,7 @@ class DBModel(QAbstractItemModel):
|
||||
for dbtype in supportedDbTypes():
|
||||
dbpluginclass = createDbPlugin(dbtype)
|
||||
item = PluginItem(dbpluginclass, self.rootItem)
|
||||
item.itemChanged.connect(partial(self.refreshItem, item))
|
||||
item.changed.connect(partial(self.refreshItem, item))
|
||||
|
||||
def refreshItem(self, item):
|
||||
if isinstance(item, TreeItem):
|
||||
@ -487,7 +487,7 @@ class DBModel(QAbstractItemModel):
|
||||
if prevPopulated or force:
|
||||
if item.populate():
|
||||
for child in item.childItems:
|
||||
child.itemChanged.connect(partial(self.refreshItem, child))
|
||||
child.changed.connect(partial(self.refreshItem, child))
|
||||
self._onDataChanged(index)
|
||||
else:
|
||||
self.notPopulated.emit(index)
|
||||
@ -559,7 +559,7 @@ class DBModel(QAbstractItemModel):
|
||||
uri = QgsDataSourceURI()
|
||||
uri.setDatabase(filename)
|
||||
item.getItemData().addConnection(conn_name, uri)
|
||||
item.itemChanged.emit(item)
|
||||
item.changed.emit()
|
||||
added += 1
|
||||
continue
|
||||
|
||||
|
@ -63,8 +63,19 @@ class SpatiaLiteDBConnector(DBConnector):
|
||||
conn = sqlite.connect(path)
|
||||
except self.connection_error_types():
|
||||
return False
|
||||
|
||||
isValid = False
|
||||
|
||||
try:
|
||||
c = conn.cursor()
|
||||
c.execute("SELECT count(*) FROM sqlite_master")
|
||||
c.fetchone()
|
||||
isValid = True
|
||||
except sqlite.DatabaseError:
|
||||
pass
|
||||
|
||||
conn.close()
|
||||
return True
|
||||
return isValid
|
||||
|
||||
def _checkSpatial(self):
|
||||
""" check if it's a valid spatialite db """
|
||||
|
Loading…
x
Reference in New Issue
Block a user