summaryrefslogtreecommitdiffstats
path: root/examples/uml
diff options
context:
space:
mode:
authorSandro S. Andrade <sandroandrade@kde.org>2013-10-29 17:17:20 -0300
committerSandro S. Andrade <sandroandrade@kde.org>2013-10-29 21:13:26 +0100
commit81fb3fce46700d98d99ae2a7f76fa4228e91032f (patch)
treec5d5a9d389fc76ed3c6ca59db07ca37dde7c9a84 /examples/uml
parent0681323548aa8e78f407a3190d4f63e0231e6d93 (diff)
Finish port of JavaScriptConsole from core to plugin
Change-Id: I12d37ffe504d6d9718d51ab957cc4a9d96919a66 Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'examples/uml')
-rw-r--r--examples/uml/duse-mt/src/app/mainwindow.ui146
-rw-r--r--examples/uml/duse-mt/src/app/shell/core.cpp11
-rw-r--r--examples/uml/duse-mt/src/app/shell/mainwindow.cpp149
-rw-r--r--examples/uml/duse-mt/src/app/shell/mainwindow.h6
-rw-r--r--examples/uml/duse-mt/src/app/shell/uicontroller.cpp12
-rw-r--r--examples/uml/duse-mt/src/app/shell/uicontroller.h1
-rw-r--r--examples/uml/duse-mt/src/libs/interfaces/iuicontroller.h6
-rw-r--r--examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp98
-rw-r--r--examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h9
-rw-r--r--examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.cpp7
-rw-r--r--examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.h1
11 files changed, 138 insertions, 308 deletions
diff --git a/examples/uml/duse-mt/src/app/mainwindow.ui b/examples/uml/duse-mt/src/app/mainwindow.ui
index aaa2f773..557ad212 100644
--- a/examples/uml/duse-mt/src/app/mainwindow.ui
+++ b/examples/uml/duse-mt/src/app/mainwindow.ui
@@ -128,58 +128,6 @@
</item>
</layout>
</widget>
- <widget class="QMenuBar" name="menuBar">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>831</width>
- <height>19</height>
- </rect>
- </property>
- <widget class="QMenu" name="menu_File">
- <property name="title">
- <string>&amp;File</string>
- </property>
- <addaction name="actionFileNewModel"/>
- <addaction name="actionFileOpenModel"/>
- <addaction name="separator"/>
- <addaction name="actionFileNewDuseDesign"/>
- <addaction name="actionFileOpenDuseDesign"/>
- <addaction name="separator"/>
- <addaction name="actionFileSave"/>
- <addaction name="actionFileSaveAs"/>
- <addaction name="separator"/>
- <addaction name="actionFileQuit"/>
- </widget>
- <widget class="QMenu" name="menu_Help">
- <property name="title">
- <string>&amp;Help</string>
- </property>
- <addaction name="actionHelpAboutDuSEMT"/>
- <addaction name="actionHelpAboutPlugins"/>
- </widget>
- <widget class="QMenu" name="menu_Edit">
- <property name="title">
- <string>&amp;Edit</string>
- </property>
- </widget>
- <widget class="QMenu" name="menu_Window">
- <property name="title">
- <string>&amp;Window</string>
- </property>
- </widget>
- <widget class="QMenu" name="menu_Actions">
- <property name="title">
- <string>&amp;Actions</string>
- </property>
- </widget>
- <addaction name="menu_File"/>
- <addaction name="menu_Edit"/>
- <addaction name="menu_Actions"/>
- <addaction name="menu_Window"/>
- <addaction name="menu_Help"/>
- </widget>
<widget class="QToolBar" name="mainToolBar">
<property name="windowTitle">
<string>Main Toolbar</string>
@@ -197,54 +145,6 @@
<addaction name="actionFileQuit"/>
</widget>
<widget class="QStatusBar" name="statusBar"/>
- <widget class="QDockWidget" name="dckXPath">
- <property name="windowTitle">
- <string>XPath Browser</string>
- </property>
- <attribute name="dockWidgetArea">
- <number>8</number>
- </attribute>
- <widget class="QWidget" name="dockWidgetContents_2">
- <layout class="QGridLayout" name="gridLayout_5">
- <property name="leftMargin">
- <number>4</number>
- </property>
- <property name="rightMargin">
- <number>4</number>
- </property>
- <property name="bottomMargin">
- <number>4</number>
- </property>
- <item row="0" column="0">
- <widget class="QTextEdit" name="txeXPath"/>
- </item>
- </layout>
- </widget>
- </widget>
- <widget class="QDockWidget" name="dckOcl">
- <property name="windowTitle">
- <string>OCL Browser</string>
- </property>
- <attribute name="dockWidgetArea">
- <number>8</number>
- </attribute>
- <widget class="QWidget" name="dockWidgetContents_3">
- <layout class="QGridLayout" name="gridLayout_6">
- <property name="leftMargin">
- <number>4</number>
- </property>
- <property name="rightMargin">
- <number>4</number>
- </property>
- <property name="bottomMargin">
- <number>4</number>
- </property>
- <item row="0" column="0">
- <widget class="QTextEdit" name="txeOcl"/>
- </item>
- </layout>
- </widget>
- </widget>
<widget class="QDockWidget" name="dckMetrics">
<property name="minimumSize">
<size>
@@ -334,6 +234,52 @@
</layout>
</widget>
</widget>
+ <widget class="QMenuBar" name="menuBar">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>831</width>
+ <height>19</height>
+ </rect>
+ </property>
+ <widget class="QMenu" name="menu_File">
+ <property name="title">
+ <string>&amp;File</string>
+ </property>
+ <addaction name="actionFileNewModel"/>
+ <addaction name="actionFileOpenModel"/>
+ <addaction name="separator"/>
+ <addaction name="actionFileNewDuseDesign"/>
+ <addaction name="actionFileOpenDuseDesign"/>
+ <addaction name="separator"/>
+ <addaction name="actionFileSave"/>
+ <addaction name="actionFileSaveAs"/>
+ <addaction name="separator"/>
+ <addaction name="actionFileQuit"/>
+ </widget>
+ <widget class="QMenu" name="menu_Help">
+ <property name="title">
+ <string>&amp;Help</string>
+ </property>
+ <addaction name="actionHelpAboutDuSEMT"/>
+ <addaction name="actionHelpAboutPlugins"/>
+ </widget>
+ <widget class="QMenu" name="menu_Edit">
+ <property name="title">
+ <string>&amp;Edit</string>
+ </property>
+ </widget>
+ <widget class="QMenu" name="menu_Actions">
+ <property name="title">
+ <string>&amp;Actions</string>
+ </property>
+ </widget>
+ <addaction name="menu_File"/>
+ <addaction name="menu_Edit"/>
+ <addaction name="menu_Actions"/>
+ <addaction name="menu_Help"/>
+ </widget>
<action name="actionFileNewModel">
<property name="icon">
<iconset theme="document-new" resource="duse-mt.qrc">
diff --git a/examples/uml/duse-mt/src/app/shell/core.cpp b/examples/uml/duse-mt/src/app/shell/core.cpp
index c68dc24b..c60edaef 100644
--- a/examples/uml/duse-mt/src/app/shell/core.cpp
+++ b/examples/uml/duse-mt/src/app/shell/core.cpp
@@ -81,14 +81,13 @@ Core::Core() :
bool Core::initializeInternal()
{
- if (!_projectController) {
+ if (!_projectController)
_projectController = new ProjectController;
- _projectController->initialize();
- }
- if (!_uiController) {
+ if (!_uiController)
_uiController = new UiController;
- _uiController->initialize();
- }
+
+ _projectController->initialize();
+ _uiController->initialize();
return true;
}
diff --git a/examples/uml/duse-mt/src/app/shell/mainwindow.cpp b/examples/uml/duse-mt/src/app/shell/mainwindow.cpp
index b5091ddf..b76b3a22 100644
--- a/examples/uml/duse-mt/src/app/shell/mainwindow.cpp
+++ b/examples/uml/duse-mt/src/app/shell/mainwindow.cpp
@@ -57,10 +57,6 @@
#include <QtGui/QKeyEvent>
-#include <QtScript/QScriptValue>
-#include <QtScript/QScriptEngine>
-//#include <QtScript/QScriptValueIterator>
-
#include <QtModeling/QXmiWriter>
#include <QtModeling/QXmiReader>
#include <QtModeling/QModelingObject>
@@ -78,52 +74,12 @@
#include <QtQuick/QQuickItem>
#include "QtQuick/private/qquickflickable_p.h"
-//#include <QtDuse/QtDuse>
-
#include <interfaces/icore.h>
#include <interfaces/iplugin.h>
#include <interfaces/iprojectcontroller.h>
#include "newdusedesign.h"
-//template <class T>
-//QScriptValue qSetToScriptValue(QScriptEngine *engine, const QSet<T *> &elements)
-//{
-// QScriptValue array = engine->newArray();
-// foreach (T *element, elements)
-// array.property(QString::fromLatin1("push")).call(array, QScriptValueList() << engine->newQObject(element));
-// return array;
-//}
-
-//template <class T>
-//void scriptValueToQSet(const QScriptValue &obj, QSet<T *> &elements)
-//{
-// QScriptValueIterator it(obj);
-// while (it.hasNext()) {
-// it.next();
-// elements.insert(qobject_cast<T *>(it.value().toQObject()));
-// }
-//}
-
-//template <class T>
-//QScriptValue qListToScriptValue(QScriptEngine *engine, const QList<T *> &elements)
-//{
-// QScriptValue array = engine->newArray();
-// foreach (T *element, elements)
-// array.property(QString::fromLatin1("push")).call(array, QScriptValueList() << engine->newQObject(element));
-// return array;
-//}
-
-//template <class T>
-//void scriptValueToQList(const QScriptValue &obj, QList<T *> &elements)
-//{
-// QScriptValueIterator it(obj);
-// while (it.hasNext()) {
-// it.next();
-// elements.append(qobject_cast<T *>(it.value().toQObject()));
-// }
-//}
-
namespace DuSE
{
@@ -137,7 +93,6 @@ MainWindow::MainWindow(QWidget *parent) :
_newModelDialog(new QDialog(this)),
_newModel(new Ui::NewModel),
_newDuseDesign(new NewDuseDesign(this)),
-// _codeCompletionView(new QListView),
_welcomeQuickView(new QQuickView),
_modelQuickView(new QQuickView),
_designSpaceQuickView(new QQuickView),
@@ -145,8 +100,6 @@ MainWindow::MainWindow(QWidget *parent) :
_paretoFrontQuickView(new QQuickView)
{
ui->setupUi(this);
-// _codeCompletionView->setParent(ui->txeJavaScript);
-// _codeCompletionView->hide();
_newModel->setupUi(_newModelDialog);
connect(_newModel->cboMetamodel, SIGNAL(currentIndexChanged(QString)), SLOT(metaModelChanged(QString)));
@@ -154,19 +107,7 @@ MainWindow::MainWindow(QWidget *parent) :
_aboutDuSEMT->setupUi(_aboutDuSEMTDialog);
// connect(ui->modelingObjectView, &QModelingObjectView::addToView, this, &MainWindow::addToView);
-// connect(ui->modelingObjectView, &QModelingObjectView::modelingObjectChanged, this, &MainWindow::modelingObjectChanged);
-
-// qScriptRegisterMetaType(&_engine, qSetToScriptValue<QObject>, scriptValueToQSet<QObject>);
-// qScriptRegisterMetaType(&_engine, qListToScriptValue<QObject>, scriptValueToQList<QObject>);
-
-// tabifyDockWidget(ui->dckIssues, ui->dckXPath);
- tabifyDockWidget(ui->dckXPath, ui->dckOcl);
-// tabifyDockWidget(ui->dckOcl, ui->dckJavaScript);
-// ui->dckIssues->raise();
-// tabifyDockWidget(ui->dckInspector, ui->dckMetrics);
-// ui->dckInspector->raise();
-// tabifyDockWidget(ui->dckPropertyEditor, ui->dckDesignSpace);
-// ui->dckPropertyEditor->raise();
+
ui->tblDesignSpace->resizeColumnToContents(0);
ui->tblDesignSpace->resizeColumnToContents(1);
ui->tblDesignSpace->resizeColumnToContents(2);
@@ -192,15 +133,6 @@ MainWindow::MainWindow(QWidget *parent) :
_paretoFrontQuickView->setResizeMode(QQuickView::SizeRootObjectToView);
_welcomeQuickView->setResizeMode(QQuickView::SizeRootObjectToView);
- foreach (QDockWidget *dockWidget, findChildren<QDockWidget *>())
- ui->menu_Window->addAction(dockWidget->toggleViewAction());
- ui->menu_Window->addSeparator();
- foreach (QToolBar *toolbar, findChildren<QToolBar *>())
- ui->menu_Window->addAction(toolbar->toggleViewAction());
-
- // Next line is needed because of bug in xcb: xcb_conn.c:186: write_vec: Assertion `!c->out.queue_len' failed.
- connect(ui->dckMetrics, SIGNAL(visibilityChanged(bool)), SLOT(dckMetricsVisibilityChanged(bool)));
-
readSettings();
}
@@ -214,7 +146,7 @@ MainWindow::~MainWindow()
void MainWindow::readSettings()
{
- QSettings settings("LiveBlue", "DuSE-MT");
+ QSettings settings("QtProject", "duse-mt");
restoreGeometry(settings.value("geometry").toByteArray());
restoreState(settings.value("windowState").toByteArray());
}
@@ -285,7 +217,6 @@ QList<QModelingElement *> MainWindow::loadXmi(QString fileName)
setWindowTitle(QFileInfo(file).fileName() + " - DuSE-MT");
QList<QModelingElement *> modelingObjectList = reader.readFile(&file);
-// ui->txeIssues->setModel(new QStringListModel(reader.errorStrings()));
setModelInspector(modelingObjectList);
return modelingObjectList;
@@ -469,12 +400,6 @@ void MainWindow::on_actionHelpAboutDuSEMT_triggered()
_aboutDuSEMTDialog->exec();
}
-//void MainWindow::on_psbJSEvaluate_clicked()
-//{
-// ui->txeJavaScriptEvaluation->setText(_engine.evaluate(ui->txeJavaScript->toPlainText()).toString());
-//// ui->modelingObjectView->updateSelected();
-//}
-
void MainWindow::on_centralWidget_currentChanged(int)
{
if (_currentFileName.isEmpty())
@@ -537,11 +462,6 @@ void MainWindow::metaModelChanged(QString newMetaModel)
_newModel->lstTopLevelContainers->setCurrentRow(0);
}
-void MainWindow::modelingObjectChanged(QModelingObject *modelingObject)
-{
-// _engine.globalObject().setProperty("self", _engine.newQObject(modelingObject));
-}
-
void MainWindow::addToView(QModelingElement *modelingObject, QQuickItem *parent)
{
QQmlContext *context = new QQmlContext(_modelQuickView->engine()->rootContext());
@@ -617,18 +537,6 @@ void MainWindow::addToPareto(QModelingElement *modelingObject, int pos)
_qmlComponent->deleteLater();
}
-void MainWindow::dckMetricsVisibilityChanged(bool visible)
-{
- if (visible) {
- ui->dckMetrics->setMaximumSize(ui->dckMetrics->size());
- ui->dckMetrics->setMinimumSize(ui->dckMetrics->size());
- }
- else {
- ui->dckMetrics->setMaximumSize(QSize(524287, 524287));
- ui->dckMetrics->setMinimumSize(QSize(180, 42));
- }
-}
-
void MainWindow::designSpaceChanged()
{
_designSpaceQuickView->setSource(QUrl("qrc:/qml/designspaceview.qml"));
@@ -642,48 +550,6 @@ void MainWindow::designSpaceChanged()
evaluateQualityMetrics();
}
-//bool MainWindow::eventFilter(QObject *obj, QEvent *event)
-//{
-// if (event->type() == QEvent::KeyPress && obj == ui->txeJavaScript) {
-// QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
-// if (keyEvent->key() == 46) {
-// QModelingObject *modelingObject = dynamic_cast<QModelingObject *>(_engine.evaluate(ui->txeJavaScript->toPlainText()).toQObject());
-// if (modelingObject) {
-// const QMetaObject *metaObject = modelingObject->metaObject();
-// int propertyCount = metaObject->propertyCount();
-// QStringList propertyList;
-// for (int i = 0; i < propertyCount; ++i)
-// propertyList << metaObject->property(i).name();
-// _codeCompletionView->setModel(new QStringListModel(propertyList));
-// QFont font;
-// QFontMetrics fm(font);
-// _codeCompletionView->setGeometry(ui->txeJavaScript->cursorRect().x(), ui->txeJavaScript->cursorRect().y()+fm.height(), 200, 100);
-// _codeCompletionView->show();
-// _codeCompletionView->setFocus();
-// }
-// }
-// return QObject::eventFilter(obj, event);
-// } else if (event->type() == QEvent::KeyPress && obj == _codeCompletionView) {
-// QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
-// if (keyEvent->key() == 16777220 || keyEvent->key() == 32) { // spacebar or enter
-// ui->txeJavaScript->insertPlainText(_codeCompletionView->model()->data(_codeCompletionView->selectionModel()->selectedIndexes().first()).toString());
-// _codeCompletionView->hide();
-// ui->txeJavaScript->setFocus();
-// return true;
-// }
-// else if (keyEvent->key() == 16777235 || keyEvent->key() == 16777237 || keyEvent->key() == 16777239 || keyEvent->key() == 16777238) { // uparrow and downarrow, pageup, pagedown
-// return QObject::eventFilter(obj, event);
-// }
-// else {
-// _codeCompletionView->hide();
-// ui->txeJavaScript->setFocus();
-// return true;
-// }
-// }
-// // standard event processing
-// return QObject::eventFilter(obj, event);
-//}
-
QTreeWidgetItem *MainWindow::itemForCategory(const QString &category)
{
int topLevelItemCount = _aboutPlugins->loadedPlugins->topLevelItemCount();
@@ -697,20 +563,9 @@ QTreeWidgetItem *MainWindow::itemForCategory(const QString &category)
void MainWindow::loadPlugins()
{
- _aboutPlugins->loadedPlugins->clear();
_aboutPlugins->loadedPlugins->setColumnWidth(1, 40);
_aboutPlugins->loadedPlugins->header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
_aboutPlugins->loadedPlugins->header()->setSectionResizeMode(2, QHeaderView::ResizeToContents);
-// _aboutPlugins->loadedPlugins->setRowCount(_metamodelPlugins.size());
-// int i = 0;
-// typedef QPair<QMetaModelPlugin *, QJsonObject> PluginData;
-// foreach (const PluginData &pair, _metamodelPlugins.values()) {
-// _aboutPlugins->loadedPlugins->setItem(i, 0, new QTableWidgetItem(pair.first->metaObject()->className()));
-// _aboutPlugins->loadedPlugins->setItem(i, 1, new QTableWidgetItem(pair.second.value("Version").toString()));
-// _aboutPlugins->loadedPlugins->setItem(i, 2, new QTableWidgetItem(pair.second.value("Vendor").toString()));
-// _aboutPlugins->loadedPlugins->setRowHeight(i, 22);
-// ++i;
-// }
DuSE::ICore *core = DuSE::ICore::self();
DuSE::IPlugin *dusePlugin;
diff --git a/examples/uml/duse-mt/src/app/shell/mainwindow.h b/examples/uml/duse-mt/src/app/shell/mainwindow.h
index 48fbbb99..1358ffe6 100644
--- a/examples/uml/duse-mt/src/app/shell/mainwindow.h
+++ b/examples/uml/duse-mt/src/app/shell/mainwindow.h
@@ -97,24 +97,18 @@ private Q_SLOTS:
void on_actionFileSave_triggered();
void on_actionHelpAboutPlugins_triggered();
void on_actionHelpAboutDuSEMT_triggered();
-// void on_psbJSEvaluate_clicked();
void on_centralWidget_currentChanged(int);
void on_btnOptimize_clicked();
void evaluateQualityMetrics();
void setModelInspector(QList<QModelingElement *> modelingObjectList);
void metaModelChanged(QString newMetaModel);
- void modelingObjectChanged(QModelingObject *modelingObject);
void addToView(QModelingElement *modelingObject, QQuickItem *parent = 0);
void addToDesignSpaceView(QModelingElement *modelingObject, QQuickItem *parent = 0);
void addToPareto(QModelingElement *modelingObject, int pos);
- void dckMetricsVisibilityChanged(bool visible);
void designSpaceChanged();
-//protected:
-// bool eventFilter(QObject *obj, QEvent *event);
-
private:
Ui::MainWindow *ui;
diff --git a/examples/uml/duse-mt/src/app/shell/uicontroller.cpp b/examples/uml/duse-mt/src/app/shell/uicontroller.cpp
index da2f8a7c..c9fc7283 100644
--- a/examples/uml/duse-mt/src/app/shell/uicontroller.cpp
+++ b/examples/uml/duse-mt/src/app/shell/uicontroller.cpp
@@ -49,7 +49,8 @@
namespace DuSE
{
-UiController::UiController()
+UiController::UiController() :
+ _lastBottomDockWidgetAdded(0)
{
}
@@ -71,15 +72,20 @@ void UiController::addDockWidget(Qt::DockWidgetArea area, QString name, QWidget
dockWidget->setWindowTitle(name);
dockWidget->setObjectName(name);
dockWidget->setWidget(widget);
+
_mainWindow.addDockWidget(area, dockWidget);
+ if (area == Qt::BottomDockWidgetArea) {
+ if (_lastBottomDockWidgetAdded)
+ _mainWindow.tabifyDockWidget(_lastBottomDockWidgetAdded, dockWidget);
+ _lastBottomDockWidgetAdded = dockWidget;
+ }
}
void UiController::removeDockWidget(QString name)
{
- foreach (QObject *child, _mainWindow.children()) {
+ foreach (QObject *child, _mainWindow.children())
if (child->objectName() == name && qobject_cast<QDockWidget *>(child) != 0)
delete child;
- }
}
}
diff --git a/examples/uml/duse-mt/src/app/shell/uicontroller.h b/examples/uml/duse-mt/src/app/shell/uicontroller.h
index 87c6a8b7..90d9be4f 100644
--- a/examples/uml/duse-mt/src/app/shell/uicontroller.h
+++ b/examples/uml/duse-mt/src/app/shell/uicontroller.h
@@ -61,6 +61,7 @@ public:
protected:
MainWindow _mainWindow;
+ QDockWidget *_lastBottomDockWidgetAdded;
};
}
diff --git a/examples/uml/duse-mt/src/libs/interfaces/iuicontroller.h b/examples/uml/duse-mt/src/libs/interfaces/iuicontroller.h
index 6e27c3ad..1a5dc538 100644
--- a/examples/uml/duse-mt/src/libs/interfaces/iuicontroller.h
+++ b/examples/uml/duse-mt/src/libs/interfaces/iuicontroller.h
@@ -45,6 +45,8 @@
#include <QtCore/QString>
+class QModelingObject;
+
class QWidget;
namespace DuSE
@@ -62,6 +64,10 @@ public:
virtual void addDockWidget(Qt::DockWidgetArea area, QString name, QWidget *widget) = 0;
virtual void removeDockWidget(QString name) = 0;
+Q_SIGNALS:
+ void currentModelingObjectChanged(QModelingObject *currentModelingObject);
+ void updateCurrentModelingObject();
+
protected:
IUiController();
};
diff --git a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp
index 48843581..29785923 100644
--- a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp
+++ b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp
@@ -43,6 +43,7 @@
#include "ui_javascriptconsole.h"
#include <interfaces/iuicontroller.h>
+#include <interfaces/iprojectcontroller.h>
#include <QtModeling/QModelingObject>
@@ -105,13 +106,17 @@ bool JavaScriptConsolePlugin::initialize(DuSE::ICore *core)
_javaScriptConsole->setupUi(javaScriptConsoleWidget);
core->uiController()->addDockWidget(Qt::BottomDockWidgetArea, tr("JavaScript Console"), javaScriptConsoleWidget);
-// javaScriptConsoleWidget->installEventFilter(this);
-// _codeCompletionView->installEventFilter(this);
+ _javaScriptConsole->txeJavaScript->installEventFilter(this);
+ _codeCompletionView->installEventFilter(this);
_javaScriptConsole->txeJavaScript->setText("self");
-// _codeCompletionView->setParent(_javaScriptConsole->txeJavaScript);
+ _codeCompletionView->setParent(_javaScriptConsole->txeJavaScript);
+ _codeCompletionView->hide();
+
connect(_javaScriptConsole->psbJSEvaluate, &QPushButton::clicked, this, &JavaScriptConsolePlugin::evaluate);
+ connect(_javaScriptConsole->psbJSEvaluate, SIGNAL(clicked()), core->uiController(), SIGNAL(updateCurrentModelingObject()));
+ connect(core->uiController(), &DuSE::IUiController::currentModelingObjectChanged, this, &JavaScriptConsolePlugin::setSelfProperty);
qScriptRegisterMetaType(&_engine, qSetToScriptValue<QObject>, scriptValueToQSet<QObject>);
qScriptRegisterMetaType(&_engine, qListToScriptValue<QObject>, scriptValueToQList<QObject>);
@@ -119,47 +124,52 @@ bool JavaScriptConsolePlugin::initialize(DuSE::ICore *core)
return true;
}
-//bool JavaScriptConsolePlugin::eventFilter(QObject *obj, QEvent *event)
-//{
-// if (event->type() == QEvent::KeyPress && obj == _javaScriptConsole->txeJavaScript) {
-// QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
-// if (keyEvent->key() == 46) {
-// QModelingObject *modelingObject = dynamic_cast<QModelingObject *>(_engine.evaluate(_javaScriptConsole->txeJavaScript->toPlainText()).toQObject());
-// if (modelingObject) {
-// const QMetaObject *metaObject = modelingObject->metaObject();
-// int propertyCount = metaObject->propertyCount();
-// QStringList propertyList;
-// for (int i = 0; i < propertyCount; ++i)
-// propertyList << metaObject->property(i).name();
-// _codeCompletionView->setModel(new QStringListModel(propertyList));
-// QFont font;
-// QFontMetrics fm(font);
-// _codeCompletionView->setGeometry(_javaScriptConsole->txeJavaScript->cursorRect().x(), _javaScriptConsole->txeJavaScript->cursorRect().y()+fm.height(), 200, 100);
-// _codeCompletionView->show();
-// _codeCompletionView->setFocus();
-// }
-// }
-// return QObject::eventFilter(obj, event);
-// } else if (event->type() == QEvent::KeyPress && obj == _codeCompletionView) {
-// QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
-// if (keyEvent->key() == 16777220 || keyEvent->key() == 32) { // spacebar or enter
-// _javaScriptConsole->txeJavaScript->insertPlainText(_codeCompletionView->model()->data(_codeCompletionView->selectionModel()->selectedIndexes().first()).toString());
-// _codeCompletionView->hide();
-// _javaScriptConsole->txeJavaScript->setFocus();
-// return true;
-// }
-// else if (keyEvent->key() == 16777235 || keyEvent->key() == 16777237 || keyEvent->key() == 16777239 || keyEvent->key() == 16777238) { // uparrow and downarrow, pageup, pagedown
-// return QObject::eventFilter(obj, event);
-// }
-// else {
-// _codeCompletionView->hide();
-// _javaScriptConsole->txeJavaScript->setFocus();
-// return true;
-// }
-// }
-// // standard event processing
-// return QObject::eventFilter(obj, event);
-//}
+void JavaScriptConsolePlugin::setSelfProperty(QModelingObject *modelingObject)
+{
+ _engine.globalObject().setProperty("self", _engine.newQObject(modelingObject));
+}
+
+bool JavaScriptConsolePlugin::eventFilter(QObject *obj, QEvent *event)
+{
+ if (event->type() == QEvent::KeyPress && obj == _javaScriptConsole->txeJavaScript) {
+ QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
+ if (keyEvent->key() == 46) {
+ QModelingObject *modelingObject = dynamic_cast<QModelingObject *>(_engine.evaluate(_javaScriptConsole->txeJavaScript->toPlainText()).toQObject());
+ if (modelingObject) {
+ const QMetaObject *metaObject = modelingObject->metaObject();
+ int propertyCount = metaObject->propertyCount();
+ QStringList propertyList;
+ for (int i = 0; i < propertyCount; ++i)
+ propertyList << metaObject->property(i).name();
+ _codeCompletionView->setModel(new QStringListModel(propertyList));
+ QFont font;
+ QFontMetrics fm(font);
+ _codeCompletionView->setGeometry(_javaScriptConsole->txeJavaScript->cursorRect().x(), _javaScriptConsole->txeJavaScript->cursorRect().y()+fm.height(), 200, 100);
+ _codeCompletionView->show();
+ _codeCompletionView->setFocus();
+ }
+ }
+ return QObject::eventFilter(obj, event);
+ } else if (event->type() == QEvent::KeyPress && obj == _codeCompletionView) {
+ QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
+ if (keyEvent->key() == 16777220 || keyEvent->key() == 32) { // spacebar or enter
+ _javaScriptConsole->txeJavaScript->insertPlainText(_codeCompletionView->model()->data(_codeCompletionView->selectionModel()->selectedIndexes().first()).toString());
+ _codeCompletionView->hide();
+ _javaScriptConsole->txeJavaScript->setFocus();
+ return true;
+ }
+ else if (keyEvent->key() == 16777235 || keyEvent->key() == 16777237 || keyEvent->key() == 16777239 || keyEvent->key() == 16777238) { // uparrow and downarrow, pageup, pagedown
+ return QObject::eventFilter(obj, event);
+ }
+ else {
+ _codeCompletionView->hide();
+ _javaScriptConsole->txeJavaScript->setFocus();
+ return true;
+ }
+ }
+ // standard event processing
+ return QObject::eventFilter(obj, event);
+}
void JavaScriptConsolePlugin::evaluate()
{
diff --git a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h
index b5d3a858..d9fc9529 100644
--- a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h
+++ b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h
@@ -47,6 +47,8 @@
class QListView;
+class QModelingObject;
+
class QModelingObjectView;
class QModelingObjectModel;
class QModelingObjectPropertyEditor;
@@ -66,8 +68,11 @@ public:
virtual bool initialize(DuSE::ICore *core);
-//protected:
-// bool eventFilter(QObject *obj, QEvent *event);
+protected:
+ bool eventFilter(QObject *obj, QEvent *event);
+
+public Q_SLOTS:
+ void setSelfProperty(QModelingObject *modelingObject);
private Q_SLOTS:
void evaluate();
diff --git a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.cpp b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.cpp
index 090d4a1f..6da737fd 100644
--- a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.cpp
+++ b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.cpp
@@ -83,7 +83,9 @@ bool ModelInspectorPlugin::initialize(DuSE::ICore *core)
connect(core->projectController(), SIGNAL(modelOpened(QList<QModelingObject*>)), _modelingObjectModel, SLOT(setModelingObjects(QList<QModelingObject*>)));
connect(core->projectController(), SIGNAL(modelOpened(QList<QModelingObject*>)), this, SLOT(populateOutputIssues()));
connect(_modelingObjectView, &QModelingObjectView::modelingObjectChanged, _propertyModel, &QModelingObjectPropertyModel::setModelingObject);
+ connect(_modelingObjectView, SIGNAL(modelingObjectChanged(QModelingObject*)), core->uiController(), SIGNAL(currentModelingObjectChanged(QModelingObject*)));
connect(_propertyModel, &QModelingObjectPropertyModel::indexChanged, _modelingObjectModel, &QModelingObjectModel::updateIndex);
+ connect(core->uiController(), SIGNAL(updateCurrentModelingObject()), this, SLOT(updateCurrentModelingObject()));
return true;
}
@@ -93,3 +95,8 @@ void ModelInspectorPlugin::populateOutputIssues()
_outputIssues->setModel(new QStringListModel(DuSE::ICore::self()->projectController()->errorStrings()));
}
+void ModelInspectorPlugin::updateCurrentModelingObject()
+{
+ _modelingObjectView->updateSelected();
+}
+
diff --git a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.h b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.h
index 416c35dd..8a6149a6 100644
--- a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.h
+++ b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.h
@@ -62,6 +62,7 @@ public:
private Q_SLOTS:
void populateOutputIssues();
+ void updateCurrentModelingObject();
private:
QModelingObjectView *_modelingObjectView;