-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathrestore_main_window.cpp
More file actions
executable file
·69 lines (58 loc) · 2.12 KB
/
restore_main_window.cpp
File metadata and controls
executable file
·69 lines (58 loc) · 2.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include "main_window.h"
#include "qt_host.h"
#include <QCommandLineParser>
#include <QFile>
#include <QWebChannel>
#include <QWebEnginePage>
#include <QWebEngineScript>
#include <QWebEngineScriptCollection>
#include <QWebEngineView>
MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) {
setWindowTitle("Rewritto-ide (Qt)");
webView_ = new QWebEngineView(this);
webView_->setContextMenuPolicy(Qt::NoContextMenu);
setCentralWidget(webView_);
webChannel_ = new QWebChannel(webView_->page());
qtHost_ = new QtHost(this, webView_, webChannel_);
webChannel_->registerObject(QStringLiteral("qtHost"), qtHost_);
webView_->page()->setWebChannel(webChannel_);
{
QFile bridgeFile(QStringLiteral(":/qt-app/resources/bridge.js"));
if (bridgeFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
QWebEngineScript bridgeScript;
bridgeScript.setName(QStringLiteral("rewritto-ide-qt-bridge"));
bridgeScript.setInjectionPoint(QWebEngineScript::DocumentCreation);
bridgeScript.setRunsOnSubFrames(true);
bridgeScript.setWorldId(QWebEngineScript::MainWorld);
bridgeScript.setSourceCode(QString::fromUtf8(bridgeFile.readAll()));
webView_->page()->scripts().insert(bridgeScript);
}
}
loadInitialUrl();
}
void MainWindow::loadInitialUrl() {
const QUrl url = resolveInitialUrl();
if (url.isValid()) {
webView_->setUrl(url);
} else {
webView_->setUrl(QUrl(QStringLiteral("about:blank")));
}
}
QUrl MainWindow::resolveInitialUrl() {
QCommandLineParser parser;
parser.setApplicationDescription("Rewritto-ide Qt shell (prototype)");
parser.addHelpOption();
QCommandLineOption urlOpt(QStringList{QStringLiteral("u"), QStringLiteral("url")},
QStringLiteral("URL to load (e.g. http://127.0.0.1:PORT/)"),
QStringLiteral("url"));
parser.addOption(urlOpt);
parser.process(*QCoreApplication::instance());
if (!parser.isSet(urlOpt)) {
return {};
}
return QUrl::fromUserInput(parser.value(urlOpt));
}
void MainWindow::closeEvent(QCloseEvent* event) {
qtHost_->notifyAboutToClose();
QMainWindow::closeEvent(event);
}