History

Add option for non-tool window WebWindows

Ryan Huffman committed 11 years ago

Commit 93cdb3a1 parent 33f255f4 files · +35 −18Browse files

Showing the changes to interface/src/scripting/WebWindowClass.cpp (1 of 4 files). Show all

Unified · Split

interface/src/scripting/WebWindowClass.cpp+29−13
@@ -18,6 +18,7 @@ · 17 unmodified lines
1818 #include <QListWidget>
1919
2020 #include "Application.h"
21+#include "MainWindow.h"
2122 #include "WindowScriptingInterface.h"
2223 #include "WebWindowClass.h"
2324
@@ -33,26 +34,40 @@ void ScriptEventBridge::emitScriptEvent(const QString& data) { · 9 unmodified lines
3334 }
3435
3536
36−WebWindowClass::WebWindowClass(const QString& title, const QString& url, int width, int height)
37+WebWindowClass::WebWindowClass(const QString& title, const QString& url, int width, int height, bool isToolWindow)
3738 : QObject(NULL),
38− _eventBridge(new ScriptEventBridge(this)) {
39+ _eventBridge(new ScriptEventBridge(this)),
40+ _isToolWindow(isToolWindow) {
3941
40− ToolWindow* toolWindow = Application::getInstance()->getToolWindow();
42+ if (_isToolWindow) {
43+ ToolWindow* toolWindow = Application::getInstance()->getToolWindow();
4144
42− _dockWidget = new QDockWidget(title, toolWindow);
43− _dockWidget->setFeatures(QDockWidget::DockWidgetMovable);
45+ auto dockWidget = new QDockWidget(title, toolWindow);
46+ dockWidget->setFeatures(QDockWidget::DockWidgetMovable);
4447
45− _webView = new QWebView(_dockWidget);
46− _webView->setUrl(url);
47− addEventBridgeToWindowObject();
48+ _webView = new QWebView(dockWidget);
49+ addEventBridgeToWindowObject();
50+
51+ dockWidget->setWidget(_webView);
52+
53+ toolWindow->addDockWidget(Qt::RightDockWidgetArea, dockWidget);
54+
55+ _windowWidget = dockWidget;
56+ } else {
57+ _windowWidget = new QWidget(Application::getInstance()->getWindow(), Qt::Window);
58+ _windowWidget->setMinimumSize(width, height);
4859
49− _dockWidget->setWidget(_webView);
60+ _webView = new QWebView(_windowWidget);
61+ addEventBridgeToWindowObject();
62+ }
63+
64+ _webView->setPage(new InterfaceWebPage());
65+ _webView->setUrl(url);
5066
51− toolWindow->addDockWidget(Qt::RightDockWidgetArea, _dockWidget);
5267
68+ connect(this, &WebWindowClass::destroyed, _windowWidget, &QWidget::deleteLater);
5369 connect(_webView->page()->mainFrame(), &QWebFrame::javaScriptWindowObjectCleared,
5470 this, &WebWindowClass::addEventBridgeToWindowObject);
55− connect(this, &WebWindowClass::destroyed, _dockWidget, &QWidget::deleteLater);
5671 }
5772
5873 WebWindowClass::~WebWindowClass() {
@@ -67,7 +82,7 @@ void WebWindowClass::setVisible(bool visible) { · 8 unmodified lines
6782 QMetaObject::invokeMethod(
6883 Application::getInstance()->getToolWindow(), "setVisible", Qt::BlockingQueuedConnection, Q_ARG(bool, visible));
6984 }
70− QMetaObject::invokeMethod(_dockWidget, "setVisible", Qt::BlockingQueuedConnection, Q_ARG(bool, visible));
85+ QMetaObject::invokeMethod(_windowWidget, "setVisible", Qt::BlockingQueuedConnection, Q_ARG(bool, visible));
7186 }
7287
7388 QScriptValue WebWindowClass::constructor(QScriptContext* context, QScriptEngine* engine) {
@@ -78,7 +93,8 @@ QScriptValue WebWindowClass::constructor(QScriptContext* context, QScriptEngine* · 4 unmodified lines
7893 Q_ARG(const QString&, file),
7994 Q_ARG(QString, context->argument(1).toString()),
8095 Q_ARG(int, context->argument(2).toInteger()),
81− Q_ARG(int, context->argument(3).toInteger()));
96+ Q_ARG(int, context->argument(3).toInteger()),
97+ Q_ARG(bool, context->argument(4).toBool()));
8298
8399 connect(engine, &QScriptEngine::destroyed, retVal, &WebWindowClass::deleteLater);
84100