From b6be3e89f6511aa44e9dc5124e7db7a0ec145654 Mon Sep 17 00:00:00 2001 From: "Sandro S. Andrade" Date: Wed, 27 Nov 2013 23:51:59 -0300 Subject: Add major improvements in DuSE-MT basic workflow Change-Id: Ib2da2cd01e98e4e3ed6d51057228e2dae854cb60 Reviewed-by: Sandro S. Andrade --- .../uml/duse-mt/src/app/shell/plugincontroller.cpp | 3 +- .../uml/duse-mt/src/libs/duseinterfaces/iplugin.h | 2 +- .../architecturerecoverycoreplugin.cpp | 5 +- .../architecturerecoverycoreplugin.h | 2 +- .../concretesyntaxviewplugin.cpp | 15 +++-- .../concretesyntaxview/concretesyntaxviewplugin.h | 3 +- .../designoptimizer/designoptimizerplugin.cpp | 4 +- .../designoptimizer/designoptimizerplugin.h | 2 +- .../designspaceexplorerplugin.cpp | 65 +++++++++++++++------- .../designspaceexplorerplugin.h | 10 ++-- .../gccxmlarchitecturerecoverybackendplugin.cpp | 4 +- .../gccxmlarchitecturerecoverybackendplugin.h | 2 +- .../plugins/javascriptconsole/javascriptconsole.ui | 6 +- .../javascriptconsole/javascriptconsoleplugin.cpp | 49 ++++++++++------ .../javascriptconsole/javascriptconsoleplugin.h | 7 ++- .../modelinspector/modelinspectorplugin.cpp | 24 ++++---- .../plugins/modelinspector/modelinspectorplugin.h | 2 +- .../duseplugin/umlconcretesyntaxplugin.cpp | 3 +- .../duseplugin/umlconcretesyntaxplugin.h | 2 +- .../welcomedashboard/welcomedashboardplugin.cpp | 4 +- .../welcomedashboard/welcomedashboardplugin.h | 2 +- 21 files changed, 131 insertions(+), 85 deletions(-) (limited to 'examples/uml') diff --git a/examples/uml/duse-mt/src/app/shell/plugincontroller.cpp b/examples/uml/duse-mt/src/app/shell/plugincontroller.cpp index abfba092..e67141cf 100644 --- a/examples/uml/duse-mt/src/app/shell/plugincontroller.cpp +++ b/examples/uml/duse-mt/src/app/shell/plugincontroller.cpp @@ -113,7 +113,6 @@ bool PluginController::initialize() } // Initialize DuSE-MT plugins - ICore *core = ICore::self(); IPlugin *dusePlugin; int previousPluginListSize = 0; while (pluginList.size() != previousPluginListSize) { @@ -131,7 +130,7 @@ bool PluginController::initialize() } } if (loadedDependencies == dependencyCount) { - if (dusePlugin->initialize(core)) { + if (dusePlugin->initialize()) { _dusemtPlugins << dusePlugin; pluginList.removeAll(plugin); } diff --git a/examples/uml/duse-mt/src/libs/duseinterfaces/iplugin.h b/examples/uml/duse-mt/src/libs/duseinterfaces/iplugin.h index b4fa794d..136271e1 100644 --- a/examples/uml/duse-mt/src/libs/duseinterfaces/iplugin.h +++ b/examples/uml/duse-mt/src/libs/duseinterfaces/iplugin.h @@ -58,7 +58,7 @@ public: IPlugin(QObject *parent = 0); virtual ~IPlugin(); - virtual bool initialize(ICore *core) = 0; + virtual bool initialize() = 0; }; } diff --git a/examples/uml/duse-mt/src/plugins/architecturerecoverycore/architecturerecoverycoreplugin.cpp b/examples/uml/duse-mt/src/plugins/architecturerecoverycore/architecturerecoverycoreplugin.cpp index 54f7995c..f3aa5cbe 100644 --- a/examples/uml/duse-mt/src/plugins/architecturerecoverycore/architecturerecoverycoreplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/architecturerecoverycore/architecturerecoverycoreplugin.cpp @@ -50,10 +50,9 @@ ArchitectureRecoveryCorePlugin::ArchitectureRecoveryCorePlugin(QObject *parent) { } -bool ArchitectureRecoveryCorePlugin::initialize(DuSE::ICore *core) +bool ArchitectureRecoveryCorePlugin::initialize() { - Q_UNUSED(core); - qDebug() << core->pluginController()->pluginsByType(); + qDebug() << DuSE::ICore::self()->pluginController()->pluginsByType(); return true; } diff --git a/examples/uml/duse-mt/src/plugins/architecturerecoverycore/architecturerecoverycoreplugin.h b/examples/uml/duse-mt/src/plugins/architecturerecoverycore/architecturerecoverycoreplugin.h index 141d45d8..e5ff7aae 100644 --- a/examples/uml/duse-mt/src/plugins/architecturerecoverycore/architecturerecoverycoreplugin.h +++ b/examples/uml/duse-mt/src/plugins/architecturerecoverycore/architecturerecoverycoreplugin.h @@ -51,7 +51,7 @@ class ArchitectureRecoveryCorePlugin : public DuSE::IPlugin public: ArchitectureRecoveryCorePlugin(QObject *parent = 0); - virtual bool initialize(DuSE::ICore *core); + virtual bool initialize(); }; #endif // ARCHITECTURERECOVERYCOREPLUGIN diff --git a/examples/uml/duse-mt/src/plugins/concretesyntaxview/concretesyntaxviewplugin.cpp b/examples/uml/duse-mt/src/plugins/concretesyntaxview/concretesyntaxviewplugin.cpp index 6f0a76ab..ff8ca7f0 100644 --- a/examples/uml/duse-mt/src/plugins/concretesyntaxview/concretesyntaxviewplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/concretesyntaxview/concretesyntaxviewplugin.cpp @@ -41,6 +41,7 @@ #include "concretesyntaxviewplugin.h" #include +#include #include #include @@ -60,17 +61,23 @@ ConcreteSyntaxViewPlugin::ConcreteSyntaxViewPlugin(QObject *parent) : { } -bool ConcreteSyntaxViewPlugin::initialize(DuSE::ICore *core) +bool ConcreteSyntaxViewPlugin::initialize() { - _concreteSyntaxQuickView->setSource(QUrl("qrc:/concretesyntaxview/concretesyntaxview.qml")); _concreteSyntaxQuickView->setResizeMode(QQuickView::SizeRootObjectToView); + DuSE::ICore::self()->uiController()->addCentralWidgetTab(QWidget::createWindowContainer(_concreteSyntaxQuickView), "Concrete Syntax"); + initializeQuickView(); - core->uiController()->addCentralWidgetTab(QWidget::createWindowContainer(_concreteSyntaxQuickView), "Concrete Syntax"); - connect(core->uiController(), &DuSE::IUiController::addToView, this, &ConcreteSyntaxViewPlugin::addToView); + connect(DuSE::ICore::self()->uiController(), &DuSE::IUiController::addToView, this, &ConcreteSyntaxViewPlugin::addToView); + connect(DuSE::ICore::self()->projectController(), SIGNAL(modelAboutToBeClosed(QList)), this, SLOT(initializeQuickView())); return true; } +void ConcreteSyntaxViewPlugin::initializeQuickView() +{ + _concreteSyntaxQuickView->setSource(QUrl("qrc:/concretesyntaxview/concretesyntaxview.qml")); +} + void ConcreteSyntaxViewPlugin::addToView(QObject *selectedModelingObject, QQuickItem *parent) { QQmlContext *context = new QQmlContext(_concreteSyntaxQuickView->engine()->rootContext()); diff --git a/examples/uml/duse-mt/src/plugins/concretesyntaxview/concretesyntaxviewplugin.h b/examples/uml/duse-mt/src/plugins/concretesyntaxview/concretesyntaxviewplugin.h index d4f27464..d0b72354 100644 --- a/examples/uml/duse-mt/src/plugins/concretesyntaxview/concretesyntaxviewplugin.h +++ b/examples/uml/duse-mt/src/plugins/concretesyntaxview/concretesyntaxviewplugin.h @@ -54,9 +54,10 @@ class ConcreteSyntaxViewPlugin : public DuSE::IPlugin public: ConcreteSyntaxViewPlugin(QObject *parent = 0); - virtual bool initialize(DuSE::ICore *core); + virtual bool initialize(); private Q_SLOTS: + void initializeQuickView(); void addToView(QObject *selectedModelingObject, QQuickItem *parent = 0); private: diff --git a/examples/uml/duse-mt/src/plugins/designoptimizer/designoptimizerplugin.cpp b/examples/uml/duse-mt/src/plugins/designoptimizer/designoptimizerplugin.cpp index abd0a803..597b51c1 100644 --- a/examples/uml/duse-mt/src/plugins/designoptimizer/designoptimizerplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/designoptimizer/designoptimizerplugin.cpp @@ -52,12 +52,12 @@ DesignOptimizerPlugin::DesignOptimizerPlugin(QObject *parent) : { } -bool DesignOptimizerPlugin::initialize(DuSE::ICore *core) +bool DesignOptimizerPlugin::initialize() { _paretoFrontQuickView->setSource(QUrl("qrc:/designoptimizer/paretofront.qml")); _paretoFrontQuickView->setResizeMode(QQuickView::SizeRootObjectToView); - core->uiController()->addCentralWidgetTab(QWidget::createWindowContainer(_paretoFrontQuickView), "Pareto Front"); + DuSE::ICore::self()->uiController()->addCentralWidgetTab(QWidget::createWindowContainer(_paretoFrontQuickView), "Pareto Front"); return true; } diff --git a/examples/uml/duse-mt/src/plugins/designoptimizer/designoptimizerplugin.h b/examples/uml/duse-mt/src/plugins/designoptimizer/designoptimizerplugin.h index 15053cf9..19d26ad8 100644 --- a/examples/uml/duse-mt/src/plugins/designoptimizer/designoptimizerplugin.h +++ b/examples/uml/duse-mt/src/plugins/designoptimizer/designoptimizerplugin.h @@ -53,7 +53,7 @@ class DesignOptimizerPlugin : public DuSE::IPlugin public: DesignOptimizerPlugin(QObject *parent = 0); - virtual bool initialize(DuSE::ICore *core); + virtual bool initialize(); private: QQuickView *_paretoFrontQuickView; diff --git a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp index f1fd43bc..52330511 100644 --- a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp @@ -125,7 +125,8 @@ DesignSpaceExplorerPlugin::DesignSpaceExplorerPlugin(QObject *parent) : _designSpaceExplorer(new QTableWidget), _currentDesignSpaceLocationView(new QModelingObjectView), _currentDesignSpaceLocationQtModel(new QModelingObjectModel), - _newDuseDesignDialog(new NewDuseDesignDialog) + _newDuseDesignDialog(new NewDuseDesignDialog), + _engine(0) { _currentDesignSpaceLocationView->setModel(_currentDesignSpaceLocationQtModel); } @@ -133,29 +134,29 @@ DesignSpaceExplorerPlugin::DesignSpaceExplorerPlugin(QObject *parent) : DesignSpaceExplorerPlugin::~DesignSpaceExplorerPlugin() { delete _newDuseDesignDialog; + delete _engine; } Q_SCRIPT_DECLARE_QMETAOBJECT(QSADuseProfileProcessComponentObject, QSADuseProfileProcessComponent *); -bool DesignSpaceExplorerPlugin::initialize(DuSE::ICore *core) +bool DesignSpaceExplorerPlugin::initialize() { - _core = core; - _currentDesignSpaceLocationQuickView->setSource(QUrl("qrc:/designspaceexplorer/currentdesignspacelocation.qml")); _currentDesignSpaceLocationQuickView->setResizeMode(QQuickView::SizeRootObjectToView); - core->uiController()->addCentralWidgetTab(QWidget::createWindowContainer(_currentDesignSpaceLocationQuickView), "Current Design Space Location"); + DuSE::ICore::self()->uiController()->addCentralWidgetTab(QWidget::createWindowContainer(_currentDesignSpaceLocationQuickView), "Current Design Space Location"); _metricsQuickView->setSource(QUrl("qrc:/designspaceexplorer/qualitymetrics/qualitymetrics.qml")); _metricsQuickView->setResizeMode(QQuickView::SizeRootObjectToView); - core->uiController()->addDockWidget(Qt::LeftDockWidgetArea, tr("Quality Metrics"), QWidget::createWindowContainer(_metricsQuickView)); + DuSE::ICore::self()->uiController()->addDockWidget(Qt::LeftDockWidgetArea, tr("Quality Metrics"), QWidget::createWindowContainer(_metricsQuickView)); - core->uiController()->addDockWidget(Qt::LeftDockWidgetArea, tr("Current Location Inspector"), _currentDesignSpaceLocationView); + DuSE::ICore::self()->uiController()->addDockWidget(Qt::LeftDockWidgetArea, tr("Current Location Inspector"), _currentDesignSpaceLocationView); _designSpaceExplorer->setAlternatingRowColors(true); _designSpaceExplorer->horizontalHeader()->setStretchLastSection(true); _designSpaceExplorer->verticalHeader()->setVisible(false); + _designSpaceExplorer->setRowCount(0); _designSpaceExplorer->setColumnCount(3); _designSpaceExplorer->setHorizontalHeaderItem(0, new QTableWidgetItem(tr("Design Dimension"))); _designSpaceExplorer->setHorizontalHeaderItem(1, new QTableWidgetItem(tr("Dimension Instance Target"))); @@ -164,7 +165,7 @@ bool DesignSpaceExplorerPlugin::initialize(DuSE::ICore *core) _designSpaceExplorer->resizeColumnToContents(1); _designSpaceExplorer->resizeColumnToContents(2); - core->uiController()->addDockWidget(Qt::RightDockWidgetArea, "Design Space Explorer", _designSpaceExplorer); + DuSE::ICore::self()->uiController()->addDockWidget(Qt::RightDockWidgetArea, "Design Space Explorer", _designSpaceExplorer); QString iconThemeName; @@ -181,7 +182,7 @@ bool DesignSpaceExplorerPlugin::initialize(DuSE::ICore *core) } _actionFileNewDuseDesign->setIcon(icon8); connect(_actionFileNewDuseDesign, &QAction::triggered, this, &DesignSpaceExplorerPlugin::newDuseDesign); - core->uiController()->addAction(_actionFileNewDuseDesign, "menu_File"); + DuSE::ICore::self()->uiController()->addAction(_actionFileNewDuseDesign, "menu_File"); QAction *_actionFileOpenDuseDesign = new QAction(0); _actionFileOpenDuseDesign->setText(QApplication::translate("MainWindow", "Open DuSE Design ...", 0)); @@ -196,14 +197,37 @@ bool DesignSpaceExplorerPlugin::initialize(DuSE::ICore *core) } _actionFileOpenDuseDesign->setIcon(icon9); connect(_actionFileOpenDuseDesign, &QAction::triggered, this, &DesignSpaceExplorerPlugin::openDuseDesign); - core->uiController()->addAction(_actionFileOpenDuseDesign, "menu_File"); + DuSE::ICore::self()->uiController()->addAction(_actionFileOpenDuseDesign, "menu_File"); - qScriptRegisterMetaType(&_engine, qSetToScriptValue, scriptValueToQSet); - qScriptRegisterMetaType(&_engine, qListToScriptValue, scriptValueToQList); + connect(DuSE::ICore::self()->projectController(), SIGNAL(modelOpened(QList)), this, SLOT(initializeEngine(QList))); + connect(DuSE::ICore::self()->projectController(), SIGNAL(modelAboutToBeClosed(QList)), this, SLOT(destroyEngine())); + connect(DuSE::ICore::self()->projectController(), SIGNAL(modelClosed()), _currentDesignSpaceLocationQtModel, SLOT(clear())); + connect(DuSE::ICore::self()->projectController(), SIGNAL(modelClosed()), this, SLOT(resetDesignSpaceExplorer())); return true; } +void DesignSpaceExplorerPlugin::initializeEngine(QList modelingObjects) +{ + Q_UNUSED(modelingObjects); + _engine = new QScriptEngine; + qScriptRegisterMetaType(_engine, qSetToScriptValue, scriptValueToQSet); + qScriptRegisterMetaType(_engine, qListToScriptValue, scriptValueToQList); + currentDesignSpaceLocationChanged(); +} + +void DesignSpaceExplorerPlugin::destroyEngine() +{ + delete _engine; + _engine = 0; +} + +void DesignSpaceExplorerPlugin::resetDesignSpaceExplorer() +{ + _designSpaceExplorer->setRowCount(0); + _designSpaceExplorer->clearContents(); +} + void DesignSpaceExplorerPlugin::newDuseDesign() { do { @@ -224,13 +248,14 @@ void DesignSpaceExplorerPlugin::newDuseDesign() return; } - if (!_core->projectController()->openModel(_newDuseDesignDialog->_inputModelFileName)) { + DuSE::ICore::self()->projectController()->closeModel(); + if (!DuSE::ICore::self()->projectController()->openModel(_newDuseDesignDialog->_inputModelFileName)) { QMessageBox::critical(0, tr("Create new DuSE design"), QStringLiteral("Error loading input file %1 !").arg(_newDuseDesignDialog->_inputModelFileName)); return; } bool found = false; - QUmlModel *package = dynamic_cast(_core->projectController()->currentModelElements().first()); + QUmlModel *package = dynamic_cast(DuSE::ICore::self()->projectController()->currentModelElements().first()); QDuseDesignSpace *designSpace = dynamic_cast(_duseInstance.first()); foreach (QUmlProfileApplication *profileApplication, package->profileApplications()) { if (profileApplication->appliedProfile()->name() == designSpace->requiredProfile()) { @@ -244,14 +269,14 @@ void DesignSpaceExplorerPlugin::newDuseDesign() return; } - QScriptValue array = _engine.newArray(); - foreach (QObject *modelingObject, _core->projectController()->currentModelObjects()) - array.property(QString::fromLatin1("push")).call(array, QScriptValueList() << _engine.newQObject(modelingObject)); - _engine.globalObject().setProperty("input", array); + QScriptValue array = _engine->newArray(); + foreach (QObject *modelingObject, DuSE::ICore::self()->projectController()->currentModelObjects()) + array.property(QString::fromLatin1("push")).call(array, QScriptValueList() << _engine->newQObject(modelingObject)); + _engine->globalObject().setProperty("input", array); foreach (QDuseDesignDimension *designDimension, designSpace->designDimensions()) { foreach (const QString &body, designDimension->instanceSelectionRule()->bodies()) { - QScriptValue value = _engine.evaluate(body); + QScriptValue value = _engine->evaluate(body); if (value.toVariant().canConvert(QMetaType::type("QVariantList"))) { foreach (const QVariant &variant, value.toVariant().value()) { if (variant.canConvert(QMetaType::type("QObject*"))) { @@ -315,7 +340,7 @@ void DesignSpaceExplorerPlugin::currentDesignSpaceLocationChanged() for (int i = 0; i < rowCount; ++i) _currentDesignSpaceLocation[_designSpaceExplorer->item(i, 1)->text()][qmodelingelementproperty_cast(designSpaceObject->findChild(_designSpaceExplorer->item(i, 0)->text()))] = qmodelingelementproperty_cast(designSpaceObject->findChild((dynamic_cast(_designSpaceExplorer->cellWidget(i, 2)))->currentText())); - foreach (QModelingElement *element, _core->projectController()->currentModelElements()) + foreach (QModelingElement *element, DuSE::ICore::self()->projectController()->currentModelElements()) _currentDesignSpaceLocationMofModel << element->clone(); QList currentModelObjects; diff --git a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.h b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.h index f9602ca4..87542736 100644 --- a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.h +++ b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.h @@ -50,6 +50,7 @@ class NewDuseDesignDialog; class QQuickView; class QTableWidget; +class QModelingObject; class QModelingElement; class QModelingObjectModel; @@ -71,16 +72,17 @@ public: DesignSpaceExplorerPlugin(QObject *parent = 0); virtual ~DesignSpaceExplorerPlugin(); - virtual bool initialize(DuSE::ICore *core); + virtual bool initialize(); private Q_SLOTS: + void initializeEngine(QList modelingObjects); + void destroyEngine(); + void resetDesignSpaceExplorer(); void newDuseDesign(); void openDuseDesign(); void currentDesignSpaceLocationChanged(); private: - DuSE::ICore *_core; - QQuickView *_currentDesignSpaceLocationQuickView; QQuickView *_metricsQuickView; QTableWidget *_designSpaceExplorer; @@ -92,7 +94,7 @@ private: QList _currentDesignSpaceLocationMofModel; QHash > _currentDesignSpaceLocation; - QScriptEngine _engine; + QScriptEngine *_engine; void populateDesignSpaceExplorer(); }; diff --git a/examples/uml/duse-mt/src/plugins/gccxmlarchitecturerecoverybackend/gccxmlarchitecturerecoverybackendplugin.cpp b/examples/uml/duse-mt/src/plugins/gccxmlarchitecturerecoverybackend/gccxmlarchitecturerecoverybackendplugin.cpp index e70d218b..06c89d33 100644 --- a/examples/uml/duse-mt/src/plugins/gccxmlarchitecturerecoverybackend/gccxmlarchitecturerecoverybackendplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/gccxmlarchitecturerecoverybackend/gccxmlarchitecturerecoverybackendplugin.cpp @@ -53,11 +53,11 @@ GccXmlArchitectureRecoveryBackendPlugin::GccXmlArchitectureRecoveryBackendPlugin { } -bool GccXmlArchitectureRecoveryBackendPlugin::initialize(DuSE::ICore *core) +bool GccXmlArchitectureRecoveryBackendPlugin::initialize() { QAction *newArchitectureRecoveryProcessAction = new QAction(QIcon(), tr("New architecture recovery process"), this); connect(newArchitectureRecoveryProcessAction, SIGNAL(triggered()), this, SLOT(newArchitectureRecoveryProcess())); - core->uiController()->addAction(newArchitectureRecoveryProcessAction, tr("menu_File")); + DuSE::ICore::self()->uiController()->addAction(newArchitectureRecoveryProcessAction, tr("menu_File")); return true; } diff --git a/examples/uml/duse-mt/src/plugins/gccxmlarchitecturerecoverybackend/gccxmlarchitecturerecoverybackendplugin.h b/examples/uml/duse-mt/src/plugins/gccxmlarchitecturerecoverybackend/gccxmlarchitecturerecoverybackendplugin.h index db3409ea..1fffe753 100644 --- a/examples/uml/duse-mt/src/plugins/gccxmlarchitecturerecoverybackend/gccxmlarchitecturerecoverybackendplugin.h +++ b/examples/uml/duse-mt/src/plugins/gccxmlarchitecturerecoverybackend/gccxmlarchitecturerecoverybackendplugin.h @@ -58,7 +58,7 @@ class GccXmlArchitectureRecoveryBackendPlugin : public DuSE::IPlugin, public IAr public: GccXmlArchitectureRecoveryBackendPlugin(QObject *parent = 0); - virtual bool initialize(DuSE::ICore *core); + virtual bool initialize(); void setRootProjectDir(const QDir &rootProjectDir); diff --git a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsole.ui b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsole.ui index 11a0798c..6a1de49c 100644 --- a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsole.ui +++ b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsole.ui @@ -25,6 +25,9 @@ + + false + &Evaluate @@ -41,9 +44,6 @@ - - true - true diff --git a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp index 828ccc60..5c5b239e 100644 --- a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.cpp @@ -97,68 +97,81 @@ void scriptValueToQList(const QScriptValue &obj, QList &elements) JavaScriptConsolePlugin::JavaScriptConsolePlugin(QObject *parent) : DuSE::IPlugin(parent), _javaScriptConsole(new Ui::JavaScriptConsole), - _codeCompletionView(new QListView) + _codeCompletionView(new QListView), + _engine(0) { } JavaScriptConsolePlugin::~JavaScriptConsolePlugin() { delete _javaScriptConsole; + delete _engine; } -bool JavaScriptConsolePlugin::initialize(DuSE::ICore *core) +bool JavaScriptConsolePlugin::initialize() { QWidget *javaScriptConsoleWidget = new QWidget; _javaScriptConsole->setupUi(javaScriptConsoleWidget); - core->uiController()->addDockWidget(Qt::BottomDockWidgetArea, tr("JavaScript Console"), javaScriptConsoleWidget); + DuSE::ICore::self()->uiController()->addDockWidget(Qt::BottomDockWidgetArea, tr("JavaScript Console"), javaScriptConsoleWidget); _javaScriptConsole->txeJavaScript->installEventFilter(this); _codeCompletionView->installEventFilter(this); - _javaScriptConsole->txeJavaScript->setText("self"); - _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); - connect(core->projectController(), SIGNAL(modelOpened(QList)), this, SLOT(setRootAndInputProperties(QList))); + connect(_javaScriptConsole->psbJSEvaluate, SIGNAL(clicked()), DuSE::ICore::self()->uiController(), SIGNAL(updateCurrentModelingObject())); - qScriptRegisterMetaType(&_engine, qSetToScriptValue, scriptValueToQSet); - qScriptRegisterMetaType(&_engine, qListToScriptValue, scriptValueToQList); + connect(DuSE::ICore::self()->uiController(), &DuSE::IUiController::currentModelingObjectChanged, this, &JavaScriptConsolePlugin::setSelfProperty); + connect(DuSE::ICore::self()->projectController(), SIGNAL(modelOpened(QList)), this, SLOT(initializeEngine(QList))); + connect(DuSE::ICore::self()->projectController(), SIGNAL(modelAboutToBeClosed(QList)), this, SLOT(destroyEngine())); return true; } void JavaScriptConsolePlugin::setSelfProperty(QModelingObject *modelingObject) { - _engine.globalObject().setProperty("self", _engine.newQObject(modelingObject)); + _engine->globalObject().setProperty("self", _engine->newQObject(modelingObject)); } -void JavaScriptConsolePlugin::setRootAndInputProperties(QList modelingObjects) +void JavaScriptConsolePlugin::initializeEngine(QList modelingObjects) { if (modelingObjects.size() == 0) return; + _engine = new QScriptEngine; + qScriptRegisterMetaType(_engine, qSetToScriptValue, scriptValueToQSet); + qScriptRegisterMetaType(_engine, qListToScriptValue, scriptValueToQList); + QModelingObject *modelingObject = modelingObjects.at(0); - _engine.globalObject().setProperty(modelingObject->objectName(), _engine.newQObject(modelingObject)); + _engine->globalObject().setProperty(modelingObject->objectName(), _engine->newQObject(modelingObject)); - QScriptValue array = _engine.newArray(); + QScriptValue array = _engine->newArray(); foreach (QModelingObject *modelingObject, modelingObjects) - array.property(QString::fromLatin1("push")).call(array, QScriptValueList() << _engine.newQObject(modelingObject)); - _engine.globalObject().setProperty("input", array); + array.property(QString::fromLatin1("push")).call(array, QScriptValueList() << _engine->newQObject(modelingObject)); + _engine->globalObject().setProperty("input", array); _javaScriptConsole->txeJavaScript->setText("self"); + _javaScriptConsole->psbJSEvaluate->setEnabled(true); QTimer::singleShot(0, this, SLOT(evaluate())); } +void JavaScriptConsolePlugin::destroyEngine() +{ + delete _engine; + _engine = 0; + _javaScriptConsole->txeJavaScript->clear(); + _javaScriptConsole->txeJavaScriptEvaluation->clear(); + _javaScriptConsole->psbJSEvaluate->setEnabled(false); +} + 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()); + QModelingObject *modelingObject = dynamic_cast(_engine->evaluate(_javaScriptConsole->txeJavaScript->toPlainText()).toQObject()); if (modelingObject) { const QMetaObject *metaObject = modelingObject->metaObject(); int propertyCount = metaObject->propertyCount(); @@ -197,5 +210,5 @@ bool JavaScriptConsolePlugin::eventFilter(QObject *obj, QEvent *event) void JavaScriptConsolePlugin::evaluate() { - _javaScriptConsole->txeJavaScriptEvaluation->setText(_engine.evaluate(_javaScriptConsole->txeJavaScript->toPlainText()).toString()); + _javaScriptConsole->txeJavaScriptEvaluation->setText(_engine->evaluate(_javaScriptConsole->txeJavaScript->toPlainText()).toString()); } diff --git a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h index 5e2d60b5..36742f15 100644 --- a/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h +++ b/examples/uml/duse-mt/src/plugins/javascriptconsole/javascriptconsoleplugin.h @@ -67,14 +67,15 @@ public: JavaScriptConsolePlugin(QObject *parent = 0); virtual ~JavaScriptConsolePlugin(); - virtual bool initialize(DuSE::ICore *core); + virtual bool initialize(); protected: bool eventFilter(QObject *obj, QEvent *event); public Q_SLOTS: void setSelfProperty(QModelingObject *modelingObject); - void setRootAndInputProperties(QList modelingObjects); + void initializeEngine(QList modelingObjects); + void destroyEngine(); private Q_SLOTS: void evaluate(); @@ -82,7 +83,7 @@ private Q_SLOTS: private: Ui::JavaScriptConsole *_javaScriptConsole; QListView *_codeCompletionView; - QScriptEngine _engine; + QScriptEngine *_engine; }; #endif // JAVASCRIPTCONSOLEPLUGIN_H diff --git a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.cpp b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.cpp index 9adec971..86428a75 100644 --- a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.cpp @@ -80,25 +80,25 @@ ModelInspectorPlugin::~ModelInspectorPlugin() delete _outputIssues; } -bool ModelInspectorPlugin::initialize(DuSE::ICore *core) +bool ModelInspectorPlugin::initialize() { - core->uiController()->addDockWidget(Qt::LeftDockWidgetArea, tr("Model Inspector"), _modelingObjectView); - core->uiController()->addDockWidget(Qt::RightDockWidgetArea, tr("Property Editor"), _propertyEditor); - core->uiController()->addDockWidget(Qt::BottomDockWidgetArea, tr("Issues"), _outputIssues); + DuSE::ICore::self()->uiController()->addDockWidget(Qt::LeftDockWidgetArea, tr("Model Inspector"), _modelingObjectView); + DuSE::ICore::self()->uiController()->addDockWidget(Qt::RightDockWidgetArea, tr("Property Editor"), _propertyEditor); + DuSE::ICore::self()->uiController()->addDockWidget(Qt::BottomDockWidgetArea, tr("Issues"), _outputIssues); - connect(core->projectController(), SIGNAL(modelOpened(QList)), _modelingObjectModel, SLOT(setModelingObjects(QList))); - connect(core->projectController(), SIGNAL(modelOpened(QList)), this, SLOT(populateOutputIssues())); + connect(DuSE::ICore::self()->projectController(), SIGNAL(modelOpened(QList)), _modelingObjectModel, SLOT(setModelingObjects(QList))); + connect(DuSE::ICore::self()->projectController(), SIGNAL(modelOpened(QList)), this, SLOT(populateOutputIssues())); - connect(core->projectController(), SIGNAL(modelClosed()), _modelingObjectModel, SLOT(clear())); - connect(core->projectController(), SIGNAL(modelClosed()), _propertyModel, SLOT(clear())); - connect(core->projectController(), SIGNAL(modelClosed()), this, SLOT(populateOutputIssues())); + connect(DuSE::ICore::self()->projectController(), SIGNAL(modelClosed()), _modelingObjectModel, SLOT(clear())); + connect(DuSE::ICore::self()->projectController(), SIGNAL(modelClosed()), _propertyModel, SLOT(clear())); + connect(DuSE::ICore::self()->projectController(), SIGNAL(modelClosed()), this, SLOT(populateOutputIssues())); connect(_modelingObjectView, &QModelingObjectView::modelingObjectChanged, _propertyModel, &QModelingObjectPropertyModel::setModelingObject); - connect(_modelingObjectView, SIGNAL(modelingObjectChanged(QModelingObject*)), core->uiController(), SIGNAL(currentModelingObjectChanged(QModelingObject*))); + connect(_modelingObjectView, SIGNAL(modelingObjectChanged(QModelingObject*)), DuSE::ICore::self()->uiController(), SIGNAL(currentModelingObjectChanged(QModelingObject*))); connect(_propertyModel, &QModelingObjectPropertyModel::indexChanged, _modelingObjectModel, &QModelingObjectModel::updateIndex); - connect(core->uiController(), SIGNAL(updateCurrentModelingObject()), _modelingObjectView, SLOT(updateSelected())); - connect(_modelingObjectView, SIGNAL(addToView(QObject*,QQuickItem*)), core->uiController(), SIGNAL(addToView(QObject*,QQuickItem*))); + connect(DuSE::ICore::self()->uiController(), SIGNAL(updateCurrentModelingObject()), _modelingObjectView, SLOT(updateSelected())); + connect(_modelingObjectView, SIGNAL(addToView(QObject*,QQuickItem*)), DuSE::ICore::self()->uiController(), SIGNAL(addToView(QObject*,QQuickItem*))); return true; } diff --git a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.h b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.h index 4cabb9b1..17f76b21 100644 --- a/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.h +++ b/examples/uml/duse-mt/src/plugins/modelinspector/modelinspectorplugin.h @@ -59,7 +59,7 @@ public: ModelInspectorPlugin(QObject *parent = 0); virtual ~ModelInspectorPlugin(); - virtual bool initialize(DuSE::ICore *core); + virtual bool initialize(); private Q_SLOTS: void populateOutputIssues(); diff --git a/examples/uml/duse-mt/src/plugins/umlconcretesyntax/duseplugin/umlconcretesyntaxplugin.cpp b/examples/uml/duse-mt/src/plugins/umlconcretesyntax/duseplugin/umlconcretesyntaxplugin.cpp index 783e1b46..8541196b 100644 --- a/examples/uml/duse-mt/src/plugins/umlconcretesyntax/duseplugin/umlconcretesyntaxplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/umlconcretesyntax/duseplugin/umlconcretesyntaxplugin.cpp @@ -45,9 +45,8 @@ UmlConcreteSyntaxPlugin::UmlConcreteSyntaxPlugin(QObject *parent) : { } -bool UmlConcreteSyntaxPlugin::initialize(DuSE::ICore *core) +bool UmlConcreteSyntaxPlugin::initialize() { - Q_UNUSED(core); return true; } diff --git a/examples/uml/duse-mt/src/plugins/umlconcretesyntax/duseplugin/umlconcretesyntaxplugin.h b/examples/uml/duse-mt/src/plugins/umlconcretesyntax/duseplugin/umlconcretesyntaxplugin.h index 0c243822..44662f8d 100644 --- a/examples/uml/duse-mt/src/plugins/umlconcretesyntax/duseplugin/umlconcretesyntaxplugin.h +++ b/examples/uml/duse-mt/src/plugins/umlconcretesyntax/duseplugin/umlconcretesyntaxplugin.h @@ -51,7 +51,7 @@ class UmlConcreteSyntaxPlugin : public DuSE::IPlugin public: UmlConcreteSyntaxPlugin(QObject *parent = 0); - virtual bool initialize(DuSE::ICore *core); + virtual bool initialize(); }; #endif // UMLCONCRETESYNTAXPLUGIN_H diff --git a/examples/uml/duse-mt/src/plugins/welcomedashboard/welcomedashboardplugin.cpp b/examples/uml/duse-mt/src/plugins/welcomedashboard/welcomedashboardplugin.cpp index 69a63575..12704bc7 100644 --- a/examples/uml/duse-mt/src/plugins/welcomedashboard/welcomedashboardplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/welcomedashboard/welcomedashboardplugin.cpp @@ -52,12 +52,12 @@ WelcomeDashboardPlugin::WelcomeDashboardPlugin(QObject *parent) : { } -bool WelcomeDashboardPlugin::initialize(DuSE::ICore *core) +bool WelcomeDashboardPlugin::initialize() { _welcomeQuickView->setSource(QUrl("qrc:/welcomedashboard/welcomedashboard.qml")); _welcomeQuickView->setResizeMode(QQuickView::SizeRootObjectToView); - core->uiController()->addCentralWidgetTab(QWidget::createWindowContainer(_welcomeQuickView), "Welcome", 0); + DuSE::ICore::self()->uiController()->addCentralWidgetTab(QWidget::createWindowContainer(_welcomeQuickView), "Welcome", 0); return true; } diff --git a/examples/uml/duse-mt/src/plugins/welcomedashboard/welcomedashboardplugin.h b/examples/uml/duse-mt/src/plugins/welcomedashboard/welcomedashboardplugin.h index 96fb4a62..98095f56 100644 --- a/examples/uml/duse-mt/src/plugins/welcomedashboard/welcomedashboardplugin.h +++ b/examples/uml/duse-mt/src/plugins/welcomedashboard/welcomedashboardplugin.h @@ -53,7 +53,7 @@ class WelcomeDashboardPlugin : public DuSE::IPlugin public: WelcomeDashboardPlugin(QObject *parent = 0); - virtual bool initialize(DuSE::ICore *core); + virtual bool initialize(); private: QQuickView *_welcomeQuickView; -- cgit v1.2.3