Add QgsMessageBar for pyqgis console

This commit is contained in:
Salvatore Larosa 2013-01-15 12:15:51 +01:00
parent 0357f0fd24
commit 6768327edb
3 changed files with 27 additions and 9 deletions

View File

@ -340,6 +340,7 @@ class PythonConsoleWidget(QWidget):
sF.write('\n')
sF.write(s)
sF.close()
self.callWidgetMessageBar('Script was correctly saved.')
def openHelp(self):
self.helpDlg.show()
@ -351,6 +352,9 @@ class PythonConsoleWidget(QWidget):
def prefChanged(self):
self.edit.refreshLexerProperties()
self.textEditOut.refreshLexerProperties()
def callWidgetMessageBar(self, text):
self.textEditOut.widgetMessageBar(iface, text)
if __name__ == '__main__':
a = QApplication(sys.argv)

View File

@ -25,6 +25,7 @@ from PyQt4.Qsci import (QsciScintilla,
QsciScintillaBase,
QsciLexerPython)
from qgis.core import QgsApplication
from qgis.gui import QgsMessageBar
import sys
class writeOut:
@ -72,6 +73,17 @@ class EditorOutput(QsciScintilla):
self.parent = parent
self.edit = self.parent.edit
# Creates layout for message bar
self.layout = QGridLayout(self)
self.layout.setContentsMargins(0, 0, 0, 0)
spacerItem = QSpacerItem(20, 40, QSizePolicy.Minimum, QSizePolicy.Expanding)
self.layout.addItem(spacerItem, 1, 0, 1, 1)
# messageBar instance
self.infoBar = QgsMessageBar()
sizePolicy = QSizePolicy(QSizePolicy.Minimum, QSizePolicy.Fixed)
self.infoBar.setSizePolicy(sizePolicy)
self.layout.addWidget(self.infoBar, 0, 0, 1, 1)
# Enable non-ascii chars for editor
self.setUtf8(True)
@ -265,7 +277,10 @@ class EditorOutput(QsciScintilla):
link = i.replace('<a href="',"").strip()
if link:
QApplication.clipboard().setText(link)
print "## URL copied to clipboard ##"
self.parent.callWidgetMessageBar('URL copied to clipboard')
except urllib2.URLError, e:
print "## Connection error ##"
print "## " + str(e.args) + " ##"
self.parent.callWidgetMessageBar('Connection error: ' + str(e.args))
def widgetMessageBar(self, iface, text):
timeout = iface.messageTimeout()
self.infoBar.pushMessage(text, QgsMessageBar.INFO, timeout)

View File

@ -40,6 +40,8 @@ class PythonEdit(QsciScintilla, code.InteractiveInterpreter):
super(PythonEdit,self).__init__(parent)
code.InteractiveInterpreter.__init__(self, locals=None)
self.parent = parent
# Enable non-ascii chars for editor
self.setUtf8(True)
@ -500,17 +502,14 @@ class PythonEdit(QsciScintilla, code.InteractiveInterpreter):
if cmd in ('_save', '_clear', '_clearAll', '_pyqgis', '_api'):
if cmd == '_save':
self.writeHistoryFile()
print QCoreApplication.translate("PythonConsole",
"## History saved successfully ##")
self.parent.callWidgetMessageBar('History saved successfully')
elif cmd == '_clear':
self.clearHistoryFile()
print QCoreApplication.translate("PythonConsole",
"## History cleared successfully ##")
self.parent.callWidgetMessageBar('History cleared successfully')
elif cmd == '_clearAll':
self.history = QStringList()
self.clearHistoryFile()
print QCoreApplication.translate("PythonConsole",
"## Session and file history cleared successfully ##")
self.parent.callWidgetMessageBar('Session and file history cleared successfully')
elif cmd == '_pyqgis':
webbrowser.open( "http://www.qgis.org/pyqgis-cookbook/" )
elif cmd == '_api':