##// END OF EJS Templates
Started PySide2 migration, builds with CMake and produces a working binary...
Started PySide2 migration, builds with CMake and produces a working binary Need to port all previous stuff from Pybind11 to PySide2/shboken Signed-off-by: Alexis Jeandet <alexis.jeandet@member.fsf.org>

File last commit:

r1477:70de8bd3d575
r1477:70de8bd3d575
Show More
main.py
102 lines | 3.6 KiB | text/x-python | PythonLexer
# This Python file uses the following encoding: utf-8
import os
print(os.getcwd())
import sys
from PySide2.QtWidgets import QApplication, QMainWindow, QDockWidget
from PySide2.QtCore import QSize, Qt
from PySide2 import QtGui
import os
from SciQLopBindings import SqpApplication, MainWindow, init_resources, load_plugins, SqpApplication_ctor
from qtconsole.rich_ipython_widget import RichJupyterWidget
from qtconsole.inprocess import QtInProcessKernelManager
class IPythonWidget(RichJupyterWidget):
"""Live IPython console widget.
.. image:: img/IPythonWidget.png
:param custom_banner: Custom welcome message to be printed at the top of
the console.
"""
def __init__(self, parent=None, custom_banner=None, *args, **kwargs):
if parent is not None:
kwargs["parent"] = parent
super(IPythonWidget, self).__init__(*args, **kwargs)
if custom_banner is not None:
self.banner = custom_banner
self.setWindowTitle(self.banner)
self.kernel_manager = kernel_manager = QtInProcessKernelManager()
kernel_manager.start_kernel()
self.kernel_client = kernel_client = self._kernel_manager.client()
kernel_client.start_channels()
def stop():
kernel_client.stop_channels()
kernel_manager.shutdown_kernel()
self.exit_requested.connect(stop)
def sizeHint(self):
"""Return a reasonable default size for usage in :class:`PlotWindow`"""
return QSize(500, 300)
def pushVariables(self, variable_dict):
""" Given a dictionary containing name / value pairs, push those
variables to the IPython console widget.
:param variable_dict: Dictionary of variables to be pushed to the
console's interactive namespace (```{variable_name: object, …}```)
"""
self.kernel_manager.kernel.shell.push(variable_dict)
class IPythonDockWidget(QDockWidget):
"""Dock Widget including a :class:`IPythonWidget` inside
a vertical layout.
.. image:: img/IPythonDockWidget.png
:param available_vars: Dictionary of variables to be pushed to the
console's interactive namespace: ``{"variable_name": object, …}``
:param custom_banner: Custom welcome message to be printed at the top of
the console
:param title: Dock widget title
:param parent: Parent :class:`qt.QMainWindow` containing this
:class:`qt.QDockWidget`
"""
def __init__(self, parent=None, available_vars=None, custom_banner=None,
title="Console"):
super(IPythonDockWidget, self).__init__(title, parent)
self.ipyconsole = IPythonWidget(custom_banner=custom_banner)
self.layout().setContentsMargins(0, 0, 0, 0)
self.setWidget(self.ipyconsole)
if available_vars is not None:
self.ipyconsole.pushVariables(available_vars)
self.ipyconsole.pushVariables({"blah":self})
def showEvent(self, event):
"""Make sure this widget is raised when it is shown
(when it is first created as a tab in PlotWindow or when it is shown
again after hiding).
"""
self.raise_()
def print_process_id():
print ('Process ID is:', os.getpid())
if __name__ == "__main__":
init_resources()
app = SqpApplication_ctor()
QtGui.qApp = app
load_plugins(app)
main_window = MainWindow()
term = IPythonDockWidget(available_vars={"app":app, "main_window":main_window}, custom_banner="SciQLop IPython Console ")
main_window.addDockWidget(Qt.BottomDockWidgetArea, term)
main_window.show()
sys.exit(app.exec_())