summaryrefslogtreecommitdiffstats
path: root/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp')
-rw-r--r--examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp65
1 files changed, 45 insertions, 20 deletions
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<QObject>, scriptValueToQSet<QObject>);
- qScriptRegisterMetaType(&_engine, qListToScriptValue<QObject>, scriptValueToQList<QObject>);
+ connect(DuSE::ICore::self()->projectController(), SIGNAL(modelOpened(QList<QModelingObject*>)), this, SLOT(initializeEngine(QList<QModelingObject*>)));
+ connect(DuSE::ICore::self()->projectController(), SIGNAL(modelAboutToBeClosed(QList<QModelingObject*>)), 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<QModelingObject *> modelingObjects)
+{
+ Q_UNUSED(modelingObjects);
+ _engine = new QScriptEngine;
+ qScriptRegisterMetaType(_engine, qSetToScriptValue<QObject>, scriptValueToQSet<QObject>);
+ qScriptRegisterMetaType(_engine, qListToScriptValue<QObject>, scriptValueToQList<QObject>);
+ 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<QUmlModel *>(_core->projectController()->currentModelElements().first());
+ QUmlModel *package = dynamic_cast<QUmlModel *>(DuSE::ICore::self()->projectController()->currentModelElements().first());
QDuseDesignSpace *designSpace = dynamic_cast<QDuseDesignSpace *>(_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<QVariantList>()) {
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<QDuseDesignDimension *>(designSpaceObject->findChild<QModelingObject *>(_designSpaceExplorer->item(i, 0)->text()))] = qmodelingelementproperty_cast<QDuseVariationPoint *>(designSpaceObject->findChild<QModelingObject *>((dynamic_cast<QComboBox *>(_designSpaceExplorer->cellWidget(i, 2)))->currentText()));
- foreach (QModelingElement *element, _core->projectController()->currentModelElements())
+ foreach (QModelingElement *element, DuSE::ICore::self()->projectController()->currentModelElements())
_currentDesignSpaceLocationMofModel << element->clone();
QList<QModelingObject *> currentModelObjects;