diff options
author | Sandro S. Andrade <sandroandrade@kde.org> | 2013-11-24 19:31:52 -0300 |
---|---|---|
committer | Sandro S. Andrade <sandroandrade@kde.org> | 2013-11-24 23:27:20 +0100 |
commit | 365cfafdb4d830e314cea37414fb8a573003f490 (patch) | |
tree | 5c47e6b5501d95d64e72471e3a33a4da723a54cb /examples/uml | |
parent | 10c42dd6e9ea8e743b97c0732dd8fcf14b0cea37 (diff) |
Populate design space explorer when creating a new DuSE Design Process
Change-Id: I887252abadf9ea1540b3c94feacf86a281fce495
Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'examples/uml')
3 files changed, 31 insertions, 23 deletions
diff --git a/examples/uml/duse-mt/src/app/SADuse.xmi b/examples/uml/duse-mt/src/app/SADuse.xmi index 8eea2091..04714586 100644 --- a/examples/uml/duse-mt/src/app/SADuse.xmi +++ b/examples/uml/duse-mt/src/app/SADuse.xmi @@ -28,7 +28,7 @@ <designDimension xmi:type="duse:DesignDimension" name="Control Law" xmi:id="SADuse-ControlLaw"> <instanceSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-ControlLaw-InstanceSelectionRule"> <language>JavaScript</language> - <body>input[0]</body> + <body>var inputLength = input.length; var selected = new Array(); for (var i = 0; i < inputLength; ++i) { if (input[i].isKindOf("QSADuseProfileProcessComponent")) selected.push(input[i].base_Component); } selected;</body> </instanceSelectionRule> <variationPoint xmi:type="duse:VariationPoint" name="Proportional" xmi:id="SADuse-ControlLaw-Proportional"> <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-ControlLaw-Proportional-ModelChange1"> @@ -106,7 +106,7 @@ <designDimension xmi:type="duse:DesignDimension" name="Tuning Approach" xmi:id="SADuse-TunningApproach"> <instanceSelectionRule xmi:type="uml:OpaqueExpression" xmi:id="SADuse-TunningApproach-InstanceSelectionRule"> <language>JavaScript</language> - <body>var inputLength = input.length; var selected = new Array(); for (var i = 0; i < inputLength; ++i) { selected.push(typeof(input[i])); } selected;</body> + <body>var inputLength = input.length; var selected = new Array(); for (var i = 0; i < inputLength; ++i) { if (input[i].isKindOf("QSADuseProfileProcessComponent")) selected.push(input[i].base_Component); } selected;</body> </instanceSelectionRule> <variationPoint xmi:type="duse:VariationPoint" name="Cohen-Coon" xmi:id="SADuse-TunningApproach-Cohen-Coon"> <modelChange xmi:type="duse:ModelChange" xmi:id="SADuse-TunningApproach-Cohen-Coon-ModelChange1"> diff --git a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp index cdbcfef2..7727bdce 100644 --- a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp +++ b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.cpp @@ -49,10 +49,12 @@ #include <QtWidgets/QAction> #include <QtWidgets/QWidget> +#include <QtWidgets/QComboBox> +#include <QtWidgets/QMessageBox> #include <QtWidgets/QHeaderView> #include <QtWidgets/QTableWidget> #include <QtWidgets/QApplication> -#include <QtWidgets/QMessageBox> + #include <QtCore/QFileInfo> @@ -67,6 +69,7 @@ #include <QtUml/QUmlProfileApplication> #include <QtDuse/QDuseDesignSpace> +#include <QtDuse/QDuseVariationPoint> #include <QtDuse/QDuseDesignDimension> #include <QtDuse/QDuseDesignDimensionInstance> @@ -261,27 +264,8 @@ void DesignSpaceExplorerPlugin::newDuseDesign() } } - //modelingObjectList.first()->setQmlContextProperties(_metricsQuickView->engine()->rootContext()); - -// _engine.globalObject().setProperty("designspace", _engine.newQObject(modelingObjectList.at(0)->asQModelingObject())); -// _engine.evaluate("var dimensionsLength = designspace.designDimensions.length; \ -// for (var dimensionCounter = 0; dimensionCounter < dimensionsLength; ++dimensionCounter) { \ -// if (designspace.designDimensions[dimensionCounter].instanceSelectionRule) { \ -// var selected = eval(designspace.designDimensions[dimensionCounter].instanceSelectionRule); \ -// var selectedLength = selected.length; \ -// for (var selectedCounter = 0; selectedCounter < selectedLength; ++selectedCounter) { \ -// var dimensionInstance = new QDuseDesignDimensionInstance(); \ -// dimensionInstance.objectName = selected[selectedCounter].name; \ -// designspace.designDimensions[dimensionCounter].addDesignDimensionInstance(dimensionInstance); \ -// } \ -// } \ -// }"); - - // evaluateQualityMetrics(); -// populateDesignSpaceView(modelingObjectList.at(0)); - -// setCursor(Qt::ArrowCursor); + populateDesignSpaceExplorer(); } } else @@ -289,6 +273,28 @@ void DesignSpaceExplorerPlugin::newDuseDesign() } while (_newDuseDesignDialog->_inputModelFileName.isEmpty() || _newDuseDesignDialog->_duseInstanceModelFileName.isEmpty()); } +void DesignSpaceExplorerPlugin::populateDesignSpaceExplorer() +{ + QDuseDesignSpace *designSpace = dynamic_cast<QDuseDesignSpace *>(_duseInstance.first()); + _designSpaceExplorer->setRowCount(0); + int row = 0; + foreach (QDuseDesignDimension *dimension, designSpace->designDimensions()) { + _designSpaceExplorer->setRowCount(_designSpaceExplorer->rowCount() + dimension->designDimensionInstances().count()); + foreach (QDuseDesignDimensionInstance *instance, dimension->designDimensionInstances()) { + _designSpaceExplorer->setItem(row, 0, new QTableWidgetItem(dimension->name())); + _designSpaceExplorer->setItem(row, 1, new QTableWidgetItem(instance->targetInstance()->asQModelingObject()->objectName())); + QComboBox *comboBox = new QComboBox; + foreach (QDuseVariationPoint *variationPoint, dimension->variationPoints()) { + comboBox->addItem(variationPoint->asQModelingObject()->objectName()); + } + _designSpaceExplorer->setCellWidget(row, 2, comboBox); + connect(comboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(designSpaceChanged())); + ++row; + } + } + _designSpaceExplorer->resizeRowsToContents(); +} + void DesignSpaceExplorerPlugin::openDuseDesign() { } diff --git a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.h b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.h index 36fef736..190d862b 100644 --- a/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.h +++ b/examples/uml/duse-mt/src/plugins/designspaceexplorer/designspaceexplorerplugin.h @@ -82,6 +82,8 @@ private: QList<QModelingElement *> _duseInstance; QScriptEngine _engine; + + void populateDesignSpaceExplorer(); }; #endif // DESIGNSPACEEXPLORERPLUGIN_H |