Skip to content

Commit 0330202

Browse files
committed
make the python console working as standalone application (useful for testing)
1 parent c6195be commit 0330202

File tree

1 file changed

+23
-12
lines changed

1 file changed

+23
-12
lines changed

python/console.py

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,16 @@ def show_console():
3434
""" called from QGIS to open the console """
3535
global _console
3636
if _console is None:
37-
_console = PythonConsole(iface.mainWindow())
37+
parent = iface.mainWindow() if iface else None
38+
_console = PythonConsole( parent )
3839
_console.show() # force show even if it was restored as hidden
3940
else:
4041
_console.setVisible(not _console.isVisible())
42+
4143
# set focus to the edit box so the user can start typing
4244
if _console.isVisible():
4345
_console.activateWindow()
44-
_console.edit.setFocus()
46+
_console.setFocus()
4547

4648
_old_stdout = sys.stdout
4749
_console_output = None
@@ -70,10 +72,23 @@ class PythonConsole(QDockWidget):
7072
def __init__(self, parent=None):
7173
QDockWidget.__init__(self, parent)
7274
self.setObjectName("PythonConsole")
73-
#self.setAllowedAreas(Qt.BottomDockWidgetArea)
75+
self.setWindowTitle(QCoreApplication.translate("PythonConsole", "Python Console"))
76+
#self.setAllowedAreas(Qt.BottomDockWidgetArea)
77+
78+
self.console = PythonConsoleWidget(self)
79+
self.setWidget( self.console )
80+
81+
# try to restore position from stored main window state
82+
if iface and not iface.mainWindow().restoreDockWidget(self):
83+
iface.mainWindow().addDockWidget(Qt.BottomDockWidgetArea, self)
84+
85+
86+
class PythonConsoleWidget(QWidget):
87+
def __init__(self, parent=None):
88+
QWidget.__init__(self, parent)
89+
self.setWindowTitle(QCoreApplication.translate("PythonConsole", "Python Console"))
7490

7591
self.widgetButton = QWidget()
76-
self.widgetEdit = QWidget()
7792

7893
self.toolBar = QToolBar()
7994
self.toolBar.setEnabled(True)
@@ -90,7 +105,7 @@ def __init__(self, parent=None):
90105
#self.toolBar.setObjectName(_fromUtf8("toolMappa"))
91106

92107
self.b = QVBoxLayout(self.widgetButton)
93-
self.e = QHBoxLayout(self.widgetEdit)
108+
self.e = QHBoxLayout(self)
94109

95110
self.e.setMargin(0)
96111
self.e.setSpacing(0)
@@ -238,15 +253,13 @@ def __init__(self, parent=None):
238253

239254
self.b.addWidget(self.toolBar)
240255
self.edit = PythonEdit()
241-
242-
self.setWidget(self.widgetEdit)
256+
self.setFocusProxy( self.edit )
243257

244258
self.e.addWidget(self.widgetButton)
245259
self.e.addWidget(self.edit)
246260

247261
self.edit.setFocus()
248262

249-
self.setWindowTitle(QCoreApplication.translate("PythonConsole", "Python Console"))
250263
self.clearButton.triggered.connect(self.edit.clearConsole)
251264
#self.currentLayerButton.triggered.connect(self.cLayer)
252265
self.loadIfaceButton.triggered.connect(self.iface)
@@ -257,9 +270,6 @@ def __init__(self, parent=None):
257270
self.openFileButton.triggered.connect(self.openScriptFile)
258271
self.saveFileButton.triggered.connect(self.saveScriptFile)
259272
self.helpButton.triggered.connect(self.openHelp)
260-
# try to restore position from stored main window state
261-
if not iface.mainWindow().restoreDockWidget(self):
262-
iface.mainWindow().addDockWidget(Qt.BottomDockWidgetArea, self)
263273

264274
def cLayer(self):
265275
self.edit.commandConsole('cLayer')
@@ -327,5 +337,6 @@ def closeEvent(self, event):
327337

328338
if __name__ == '__main__':
329339
a = QApplication(sys.argv)
330-
show_console()
340+
console = PythonConsoleWidget()
341+
console.show()
331342
a.exec_()

0 commit comments

Comments
 (0)