# -*- coding: utf-8 -*- """ /*************************************************************************** Name : DB Manager Description : Database manager plugin for QGIS Date : May 23, 2011 copyright : (C) 2011 by Giuseppe Sucameli email : brush.tyler@gmail.com ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ """ from PyQt4.QtCore import * from PyQt4.QtGui import * from .db_plugins.plugin import BaseError, DbError, DBPlugin, Schema, Table from .dlg_db_error import DlgDbError class InfoViewer(QTextBrowser): def __init__(self, parent=None): QTextBrowser.__init__(self, parent) self.setOpenLinks(False) self.item = None self.dirty = False self._clear() self._showPluginInfo() self.connect(self, SIGNAL("anchorClicked(const QUrl&)"), self._linkClicked) def _linkClicked(self, url): if self.item == None: return if url.scheme() == "action": QApplication.setOverrideCursor(Qt.WaitCursor) try: if self.item.runAction( url.path() ): self.refresh() except BaseError, e: DlgDbError.showError(e, self) return finally: QApplication.restoreOverrideCursor() def refresh(self): self.setDirty(True) self.showInfo( self.item ) def showInfo(self, item): if item == self.item and not self.dirty: return self._clear() if item is None: return if isinstance(item, DBPlugin): self._showDatabaseInfo(item) elif isinstance(item, Schema): self._showSchemaInfo(item) elif isinstance(item, Table): self._showTableInfo(item) else: return self.item = item self.connect(self.item, SIGNAL('aboutToChange'), self.setDirty) def setDirty(self, val=True): self.dirty = val def _clear(self): if self.item is not None: self.disconnect(self.item, SIGNAL('aboutToChange'), self.setDirty) self.item = None self.dirty = False self.item = None self.setHtml("") def _showPluginInfo(self): from .db_plugins import getDbPluginErrors html = u'
%s" % msg self.setHtml(html) def _showDatabaseInfo(self, connection): html = u'
%s
' % unicode(e).replace('\n', '%s
' % unicode(e).replace('\n', '%s
' % unicode(e).replace('\n', '