From 81fb3fce46700d98d99ae2a7f76fa4228e91032f Mon Sep 17 00:00:00 2001 From: "Sandro S. Andrade" Date: Tue, 29 Oct 2013 17:17:20 -0300 Subject: Finish port of JavaScriptConsole from core to plugin Change-Id: I12d37ffe504d6d9718d51ab957cc4a9d96919a66 Reviewed-by: Sandro S. Andrade --- examples/uml/duse-mt/src/app/mainwindow.ui | 146 +++++++------------- examples/uml/duse-mt/src/app/shell/core.cpp | 11 +- examples/uml/duse-mt/src/app/shell/mainwindow.cpp | 149 +-------------------- examples/uml/duse-mt/src/app/shell/mainwindow.h | 6 - .../uml/duse-mt/src/app/shell/uicontroller.cpp | 12 +- examples/uml/duse-mt/src/app/shell/uicontroller.h | 1 + .../duse-mt/src/libs/interfaces/iuicontroller.h | 6 + .../javascriptconsole/javascriptconsoleplugin.cpp | 98 ++++++++------ .../javascriptconsole/javascriptconsoleplugin.h | 9 +- .../modelinspector/modelinspectorplugin.cpp | 7 + .../plugins/modelinspector/modelinspectorplugin.h | 1 + 11 files changed, 138 insertions(+), 308 deletions(-) (limited to 'examples/uml') 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 @@ - - - - 0 - 0 - 831 - 19 - - - - - &File - - - - - - - - - - - - - - - &Help - - - - - - - &Edit - - - - - &Window - - - - - &Actions - - - - - - - - Main Toolbar @@ -197,54 +145,6 @@ - - - XPath Browser - - - 8 - - - - - 4 - - - 4 - - - 4 - - - - - - - - - - OCL Browser - - - 8 - - - - - 4 - - - 4 - - - 4 - - - - - - - @@ -334,6 +234,52 @@ + + + + 0 + 0 + 831 + 19 + + + + + &File + + + + + + + + + + + + + + + &Help + + + + + + + &Edit + + + + + &Actions + + + + + + + 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 -#include -#include -//#include - #include #include #include @@ -78,52 +74,12 @@ #include #include "QtQuick/private/qquickflickable_p.h" -//#include - #include #include #include #include "newdusedesign.h" -//template -//QScriptValue qSetToScriptValue(QScriptEngine *engine, const QSet &elements) -//{ -// QScriptValue array = engine->newArray(); -// foreach (T *element, elements) -// array.property(QString::fromLatin1("push")).call(array, QScriptValueList() << engine->newQObject(element)); -// return array; -//} - -//template -//void scriptValueToQSet(const QScriptValue &obj, QSet &elements) -//{ -// QScriptValueIterator it(obj); -// while (it.hasNext()) { -// it.next(); -// elements.insert(qobject_cast(it.value().toQObject())); -// } -//} - -//template -//QScriptValue qListToScriptValue(QScriptEngine *engine, const QList &elements) -//{ -// QScriptValue array = engine->newArray(); -// foreach (T *element, elements) -// array.property(QString::fromLatin1("push")).call(array, QScriptValueList() << engine->newQObject(element)); -// return array; -//} - -//template -//void scriptValueToQList(const QScriptValue &obj, QList &elements) -//{ -// QScriptValueIterator it(obj); -// while (it.hasNext()) { -// it.next(); -// elements.append(qobject_cast(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, scriptValueToQSet); -// qScriptRegisterMetaType(&_engine, qListToScriptValue, scriptValueToQList); - -// 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()) - ui->menu_Window->addAction(dockWidget->toggleViewAction()); - ui->menu_Window->addSeparator(); - foreach (QToolBar *toolbar, findChildren()) - 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 MainWindow::loadXmi(QString fileName) setWindowTitle(QFileInfo(file).fileName() + " - DuSE-MT"); QList 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(event); -// if (keyEvent->key() == 46) { -// QModelingObject *modelingObject = dynamic_cast(_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(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 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 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(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 +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 +#include #include @@ -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, scriptValueToQSet); qScriptRegisterMetaType(&_engine, qListToScriptValue, scriptValueToQList); @@ -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(event); -// if (keyEvent->key() == 46) { -// QModelingObject *modelingObject = dynamic_cast(_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(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(event); + if (keyEvent->key() == 46) { + QModelingObject *modelingObject = dynamic_cast(_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(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)), _modelingObjectModel, SLOT(setModelingObjects(QList))); connect(core->projectController(), SIGNAL(modelOpened(QList)), 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; -- cgit v1.2.3