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
18#include <QListWidget>18#include <QListWidget>
19 19
20#include "Application.h"20#include "Application.h"
21#include "MainWindow.h"
21#include "WindowScriptingInterface.h"22#include "WindowScriptingInterface.h"
22#include "WebWindowClass.h"23#include "WebWindowClass.h"
23 24
@@ -33,26 +34,40 @@ void ScriptEventBridge::emitScriptEvent(const QString& data) { · 9 unmodified lines
33}34}
34 35
35 36
36WebWindowClass::WebWindowClass(const QString& title, const QString& url, int width, int height)37WebWindowClass::WebWindowClass(const QString& title, const QString& url, int width, int height, bool isToolWindow)
37 : QObject(NULL),38 : QObject(NULL),
38 _eventBridge(new ScriptEventBridge(this)) {39 _eventBridge(new ScriptEventBridge(this)),
40 _isToolWindow(isToolWindow) {
39 41
40 ToolWindow* toolWindow = Application::getInstance()->getToolWindow();42 if (_isToolWindow) {
43 ToolWindow* toolWindow = Application::getInstance()->getToolWindow();
41 44
42 _dockWidget = new QDockWidget(title, toolWindow);45 auto dockWidget = new QDockWidget(title, toolWindow);
43 _dockWidget->setFeatures(QDockWidget::DockWidgetMovable);46 dockWidget->setFeatures(QDockWidget::DockWidgetMovable);
44 47
45 _webView = new QWebView(_dockWidget);48 _webView = new QWebView(dockWidget);
46 _webView->setUrl(url);49 addEventBridgeToWindowObject();
47 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);
48 59
49 _dockWidget->setWidget(_webView);60 _webView = new QWebView(_windowWidget);
61 addEventBridgeToWindowObject();
62 }
63
64 _webView->setPage(new InterfaceWebPage());
65 _webView->setUrl(url);
50 66
51 toolWindow->addDockWidget(Qt::RightDockWidgetArea, _dockWidget);
52 67
68 connect(this, &WebWindowClass::destroyed, _windowWidget, &QWidget::deleteLater);
53 connect(_webView->page()->mainFrame(), &QWebFrame::javaScriptWindowObjectCleared,69 connect(_webView->page()->mainFrame(), &QWebFrame::javaScriptWindowObjectCleared,
54 this, &WebWindowClass::addEventBridgeToWindowObject);70 this, &WebWindowClass::addEventBridgeToWindowObject);
55 connect(this, &WebWindowClass::destroyed, _dockWidget, &QWidget::deleteLater);
56}71}
57 72
58WebWindowClass::~WebWindowClass() {73WebWindowClass::~WebWindowClass() {
@@ -67,7 +82,7 @@ void WebWindowClass::setVisible(bool visible) { · 8 unmodified lines
67 QMetaObject::invokeMethod(82 QMetaObject::invokeMethod(
68 Application::getInstance()->getToolWindow(), "setVisible", Qt::BlockingQueuedConnection, Q_ARG(bool, visible));83 Application::getInstance()->getToolWindow(), "setVisible", Qt::BlockingQueuedConnection, Q_ARG(bool, visible));
69 }84 }
70 QMetaObject::invokeMethod(_dockWidget, "setVisible", Qt::BlockingQueuedConnection, Q_ARG(bool, visible));85 QMetaObject::invokeMethod(_windowWidget, "setVisible", Qt::BlockingQueuedConnection, Q_ARG(bool, visible));
71}86}
72 87
73QScriptValue WebWindowClass::constructor(QScriptContext* context, QScriptEngine* engine) {88QScriptValue WebWindowClass::constructor(QScriptContext* context, QScriptEngine* engine) {
@@ -78,7 +93,8 @@ QScriptValue WebWindowClass::constructor(QScriptContext* context, QScriptEngine* · 4 unmodified lines
78 Q_ARG(const QString&, file),93 Q_ARG(const QString&, file),
79 Q_ARG(QString, context->argument(1).toString()),94 Q_ARG(QString, context->argument(1).toString()),
80 Q_ARG(int, context->argument(2).toInteger()),95 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()));
82 98
83 connect(engine, &QScriptEngine::destroyed, retVal, &WebWindowClass::deleteLater);99 connect(engine, &QScriptEngine::destroyed, retVal, &WebWindowClass::deleteLater);
84 100