cutter/src/widgets/JupyterWidget.cpp

66 lines
1.7 KiB
C++
Raw Normal View History

2017-12-13 17:36:00 +00:00
#include "ui_JupyterWidget.h"
#include "JupyterWidget.h"
#include <QWebEngineSettings>
2018-02-22 18:39:20 +00:00
#include <QTabWidget>
#include <QHBoxLayout>
#include <QLabel>
2017-12-13 17:36:00 +00:00
JupyterWidget::JupyterWidget(QWidget *parent, Qt::WindowFlags flags) :
QDockWidget(parent, flags),
ui(new Ui::JupyterWidget)
{
ui->setupUi(this);
jupyter = new JupyterConnection(this);
connect(jupyter, &JupyterConnection::urlReceived, this, &JupyterWidget::urlReceived);
2018-02-22 18:39:20 +00:00
connect(jupyter, &JupyterConnection::creationFailed, this, &JupyterWidget::creationFailed);
2017-12-13 17:36:00 +00:00
jupyter->start();
}
JupyterWidget::~JupyterWidget()
{
}
JupyterWebView *JupyterWidget::createNewTab()
{
auto webView = new JupyterWebView(this);
ui->tabWidget->addTab(webView, "Tab");
return webView;
}
void JupyterWidget::urlReceived(const QString &url)
{
createNewTab()->load(QUrl(url));
}
2018-02-22 18:39:20 +00:00
void JupyterWidget::creationFailed()
{
QWidget *failPage = new QWidget(this);
QLabel *label = new QLabel(failPage);
label->setText(tr("An error occurred while opening jupyter. Make sure Jupyter is installed system-wide."));
QHBoxLayout *layout = new QHBoxLayout();
layout->addWidget(label);
layout->setAlignment(label, Qt::AlignCenter);
failPage->setLayout(layout);
ui->tabWidget->addTab(failPage, tr("Error"));
}
2017-12-13 17:36:00 +00:00
JupyterWebView::JupyterWebView(JupyterWidget *mainWidget, QWidget *parent) : QWebEngineView(parent)
{
this->mainWidget = mainWidget;
}
QWebEngineView *JupyterWebView::createWindow(QWebEnginePage::WebWindowType type)
{
switch (type)
{
case QWebEnginePage::WebBrowserTab:
return mainWidget->createNewTab();
default:
return nullptr;
}
}