[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