[QGIS Commit] r14998 - trunk/qgis/python
svn_qgis at osgeo.org
svn_qgis at osgeo.org
Wed Jan 5 18:26:18 EST 2011
Author: wonder
Date: 2011-01-05 15:26:18 -0800 (Wed, 05 Jan 2011)
New Revision: 14998
Modified:
trunk/qgis/python/console.py
Log:
Docking of Python console - contributed by Nathan Woodrow - with some improvements.
Modified: trunk/qgis/python/console.py
===================================================================
--- trunk/qgis/python/console.py 2011-01-05 08:01:08 UTC (rev 14997)
+++ trunk/qgis/python/console.py 2011-01-05 23:26:18 UTC (rev 14998)
@@ -24,6 +24,7 @@
from PyQt4.QtCore import *
from PyQt4.QtGui import *
+from qgis.utils import iface
import sys
import traceback
import code
@@ -31,24 +32,27 @@
_init_commands = ["from qgis.core import *", "import qgis.utils"]
-
_console = None
def show_console():
""" called from QGIS to open the console """
global _console
if _console is None:
- _console = PythonConsole()
- _console.show()
- _console.raise_()
- _console.setWindowState( _console.windowState() & ~Qt.WindowMinimized )
- _console.activateWindow()
-
+ _console = PythonConsole(iface.mainWindow())
+ _console.show() # force show even if it was restored as hidden
+ else:
+ _console.setVisible(not _console.isVisible())
+ # set focus to the edit box so the user can start typing
+ if _console.isVisible():
+ _console.activateWindow()
+ _console.edit.setFocus()
+
_old_stdout = sys.stdout
_console_output = None
+
# hook for python console so all output will be redirected
# and then shown in console
def console_displayhook(obj):
@@ -69,26 +73,26 @@
sys.stdout = QgisOutputCatcher()
-
-class PythonConsole(QWidget):
+class PythonConsole(QDockWidget):
def __init__(self, parent=None):
- QWidget.__init__(self, parent)
-
+ QDockWidget.__init__(self, parent)
+ self.setObjectName("Python Console")
+ self.setAllowedAreas(Qt.BottomDockWidgetArea)
+ self.widget = QWidget()
+ self.l = QVBoxLayout(self.widget)
self.edit = PythonEdit()
- self.l = QVBoxLayout()
self.l.addWidget(self.edit)
- self.setLayout(self.l)
+ self.setWidget(self.widget)
self.setWindowTitle(QCoreApplication.translate("PythonConsole", "Python Console"))
+ # try to restore position from stored main window state
+ if not iface.mainWindow().restoreDockWidget(self):
+ iface.mainWindow().addDockWidget(Qt.BottomDockWidgetArea, self)
+
- s = QSettings()
- self.restoreGeometry(s.value("/python/console/geometry").toByteArray())
-
def sizeHint(self):
return QSize(500,300)
def closeEvent(self, event):
- s = QSettings()
- s.setValue("/python/console/geometry", QVariant(self.saveGeometry()))
QWidget.closeEvent(self, event)
More information about the QGIS-commit
mailing list