Skip to content
Snippets Groups Projects
Commit aa8d72e9 authored by David Li's avatar David Li Committed by Pospelov, Gennady
Browse files

Experimenting with group item

Merge branch 'GUIFixes2' into Fitting
parent 0f0527d0
No related branches found
No related tags found
No related merge requests found
......@@ -29,7 +29,7 @@ void GroupItem::setGroup(GroupProperty_t group)
setValue(QVariant::fromValue(group));
}
GroupProperty_t GroupItem::group()
GroupProperty_t GroupItem::group() const
{
return value().value<GroupProperty_t>();
}
......@@ -25,7 +25,7 @@ class BA_CORE_API_ GroupItem : public SessionItem
public:
GroupItem();
void setGroup(GroupProperty_t group);
GroupProperty_t group();
GroupProperty_t group() const;
};
#endif
......
......@@ -15,6 +15,9 @@
#include "ModelPath.h"
#include "SessionItem.h"
#include "GroupProperty.h"
#include "GroupItem.h"
#include <QModelIndex>
#include <QStringList>
#include <sstream>
......@@ -26,13 +29,26 @@ QStringList ModelPath::getParameterTreeList(const SessionItem *item, QString pre
QStringList result;
if (item->modelType() == Constants::PropertyType
&& item->value().type() == QVariant::Double) {
result << prefix + item->itemName();
} else {
result << prefix;
}
// else if (item->modelType() == Constants::GroupItemType) {
// if (const GroupItem *groupItem = dynamic_cast<const GroupItem*>(item)) {
// if (const SessionItem *subItem = groupItem->group()->getCurrentItem()) {
// QString child_prefix = prefix + subItem->itemName() + QString("/");
// result << getParameterTreeList(subItem, child_prefix);
// }
// }
// }
else {
if (item->hasChildren()) {
for (auto p_child : item->childItems()) {
QString child_name = p_child->itemName();
QString child_prefix = prefix + child_name + QString("/");
result << getParameterTreeList(p_child, child_prefix);
if(p_child->isVisible()) {
QString child_name = p_child->itemName();
QString child_prefix = prefix + child_name + QString("/");
result << getParameterTreeList(p_child, child_prefix);
}
}
}
}
......
......@@ -55,6 +55,13 @@ ParticleDistributionItem::ParticleDistributionItem()
{
updateParameterList();
});
mapper()->setOnChildrenChange(
[this]()
{
updateParameterList();
});
}
ParticleDistributionItem::~ParticleDistributionItem()
......@@ -128,6 +135,7 @@ QStringList ParticleDistributionItem::getChildParameterNames() const
QStringList result;
QVector<SessionItem *> children = getItems();
if (children.size() > 1) {
Q_ASSERT(0);
qDebug() << "ParticleDistributionItem::getChildParameterNames(): "
<< "More than one child item";
return result;
......
......@@ -7,13 +7,14 @@
#include "TestFormFactorItems.h"
#include "TestFTDistributionItems.h"
#include "TestParameterizedItem.h"
#include "TestParticleItems.h"
#include "TestParticleItem.h"
#include "TestLayerRoughnessItems.h"
#include "TestParaCrystalItems.h"
#include "TestSessionModel.h"
#include "TestSessionItem.h"
#include "TestGUICoreObjectCorrespondence.h"
#include "TestMapperForItem.h"
#include "TestParticleDistributionItem.h"
int main(int argc, char** argv) {
QCoreApplication app(argc, argv);
......@@ -23,7 +24,7 @@ int main(int argc, char** argv) {
TestFormFactorItems testFormFactorItems;
TestFTDistributionItems testFTDistributionItems;
TestParameterizedItem testParameterizedItem;
TestParticleItems testParticleItems;
TestParticleItem testParticleItem;
TestLayerRoughnessItems testLayerRoughnessItems;
TestParaCrystalItems testParaCrystalItems;
TestSessionModel testSessionModel;
......@@ -31,22 +32,24 @@ int main(int argc, char** argv) {
TestSessionItem testSessionItem;
TestMapperCases testMapperCases;
TestMapperForItem testMapperForItem;
TestParticleDistributionItem testParticleDistributionItem;
bool status(false);
status |= QTest::qExec(&testFormFactorItems, argc, argv);
status |= QTest::qExec(&testFTDistributionItems, argc, argv);
status |= QTest::qExec(&testParameterizedItem, argc, argv);
status |= QTest::qExec(&testParticleItems, argc, argv);
status |= QTest::qExec(&testLayerRoughnessItems, argc, argv);
status |= QTest::qExec(&testParaCrystalItems, argc, argv);
status |= QTest::qExec(&testSessionModel, argc, argv);
status |= QTest::qExec(&testGUICoreObjectCorrespondence, argc, argv);
status |= QTest::qExec(&testSessionItem);
//status |= QTest::qExec(&testPropertyAttributes, argc, argv);
status |= QTest::qExec(&testMapperCases, argc, argv);
//status |= QTest::qExec(&testSessionModel, argc, argv);
status |= QTest::qExec(&testMapperForItem, argc, argv);
// status |= QTest::qExec(&testFormFactorItems, argc, argv);
// status |= QTest::qExec(&testFTDistributionItems, argc, argv);
// status |= QTest::qExec(&testParameterizedItem, argc, argv);
status |= QTest::qExec(&testParticleItem, argc, argv);
// status |= QTest::qExec(&testLayerRoughnessItems, argc, argv);
// status |= QTest::qExec(&testParaCrystalItems, argc, argv);
// status |= QTest::qExec(&testSessionModel, argc, argv);
// status |= QTest::qExec(&testGUICoreObjectCorrespondence, argc, argv);
// status |= QTest::qExec(&testSessionItem);
// //status |= QTest::qExec(&testPropertyAttributes, argc, argv);
// status |= QTest::qExec(&testMapperCases, argc, argv);
// //status |= QTest::qExec(&testSessionModel, argc, argv);
// status |= QTest::qExec(&testMapperForItem, argc, argv);
// status |= QTest::qExec(&testParticleDistributionItem, argc, argv);
return status;
......
......@@ -7,7 +7,6 @@
#include "item_constants.h"
#include "ParticleItem.h"
#include "ParticleCompositionItem.h"
#include "ParticleDistributionItem.h"
#include "InterferenceFunctionItems.h"
#include "ParticleLayoutItem.h"
#include "DetectorItems.h"
......
......@@ -219,9 +219,9 @@ inline void TestMapperForItem::test_onChildrenChange()
SampleModel model;
SessionItem *multilayer = model.insertNewItem(Constants::MultiLayerType);
// Mapper is looking on child; adding new child to parent
// Mapper is looking on parent; adding new child to parent
setItem(multilayer);
SessionItem *layer = model.insertNewItem(Constants::LayerType, model.indexOfItem(multilayer));
model.insertNewItem(Constants::LayerType, model.indexOfItem(multilayer));
QVERIFY(m_onPropertyChangeCount == 0);
QVERIFY(m_onChildPropertyChangeCount == 2);
......
#ifndef TESTPARTICLEDISTRIBUTIONITEM_H
#define TESTPARTICLEDISTRIBUTIONITEM_H
#include <QtTest>
#include "SampleModel.h"
#include "ParticleDistributionItem.h"
#include "ComboProperty.h"
#include <QDebug>
class TestParticleDistributionItem : public QObject {
Q_OBJECT
private slots:
void test_InitialState();
void test_AddParticle();
};
inline void TestParticleDistributionItem::test_InitialState()
{
SampleModel model;
SessionItem *item = model.insertNewItem(Constants::ParticleDistributionType);
QCOMPARE(item->displayName(), Constants::ParticleDistributionType);
QCOMPARE(item->displayName(), item->itemName());
QCOMPARE(item->childItems().size(), 5); // xpos, ypos, P_ABUNDANCE, P_DISTRIBUTION, P_DISTRIBUTED_PARAMETER
QCOMPARE(item->defaultTag(), ParticleDistributionItem::T_PARTICLES);
QCOMPARE(item->acceptableDefaultItemTypes(),
QVector<QString>() << Constants::ParticleType
<< Constants::ParticleCoreShellType << Constants::ParticleCompositionType);
ComboProperty prop = item->getItemValue(ParticleDistributionItem::P_DISTRIBUTED_PARAMETER)
.value<ComboProperty>();
QCOMPARE(prop.getValues(), QStringList() << QStringLiteral("None"));
QCOMPARE(prop.getValue(), QStringLiteral("None"));
QVERIFY(prop.getCachedValue().isEmpty());
}
inline void TestParticleDistributionItem::test_AddParticle()
{
SampleModel model;
SessionItem *item = model.insertNewItem(Constants::ParticleDistributionType);
SessionItem *particle = model.insertNewItem(Constants::ParticleType, item->index());
QCOMPARE(item->childItems().size(), 6); // xpos, ypos, P_ABUNDANCE, P_DISTRIBUTION, T_PARTICLES, P_DISTRIBUTED_PARAMETER
ComboProperty prop = item->getItemValue(ParticleDistributionItem::P_DISTRIBUTED_PARAMETER)
.value<ComboProperty>();
qDebug() << prop.getValues();
}
#endif
#ifndef TESTPARTICLEITEMS_H
#define TESTPARTICLEITEMS_H
#ifndef TESTPARTICLEITEM_H
#define TESTPARTICLEITEM_H
#include <QtTest>
#include "Particle.h"
#include "ParticleLayout.h"
#include "ParticleCoreShell.h"
#include "SessionModel.h"
#include "GUIObjectBuilder.h"
#include "SampleModel.h"
#include "SessionItem.h"
#include "ParticleItem.h"
#include "TransformToDomain.h"
#include "MaterialSvc.h"
#include "MaterialModel.h"
#include "GroupProperty.h"
#include "FormFactorItems.h"
#include "GroupItem.h"
class TestParticleItems : public QObject {
class TestParticleItem : public QObject {
Q_OBJECT
private slots:
void test_ParticleToDomain();
void test_FormFactorGroupProperty();
void test_InitialState();
};
inline void TestParticleItems::test_ParticleToDomain()
inline void TestParticleItem::test_InitialState()
{
SampleModel model;
SessionItem *item = model.insertNewItem(Constants::ParticleType);
QCOMPARE(item->displayName(), Constants::ParticleType);
QCOMPARE(item->displayName(), item->itemName());
QCOMPARE(item->childItems().size(), 6); // xpos, ypos, P_FORM_FACTOR, P_MATERIAL, P_ABUNDANCE, P_POSITION
QCOMPARE(item->defaultTag(), ParticleItem::T_TRANSFORMATION);
GroupItem *group = dynamic_cast<GroupItem *>(item->getItem(ParticleItem::P_FORM_FACTOR));
QCOMPARE(group->displayName(), ParticleItem::P_FORM_FACTOR);
QCOMPARE(group->childItems().size(), 1);
// QCOMPARE(item->acceptableDefaultItemTypes(),
// QVector<QString>() << Constants::ParticleType
// << Constants::ParticleCoreShellType << Constants::ParticleCompositionType);
}
//inline void TestParticleItems::test_ParticleToDomain()
//{
// MaterialModel materialModel;
// MaterialEditor editor(&materialModel);
// Q_UNUSED(editor);
......@@ -38,11 +53,11 @@ inline void TestParticleItems::test_ParticleToDomain()
// QCOMPARE(depth, 10.0);
// QCOMPARE(abundance, 5.0);
// Q_UNUSED(particle);
}
//}
inline void TestParticleItems::test_FormFactorGroupProperty()
{
//inline void TestParticleItems::test_FormFactorGroupProperty()
//{
// // FIXME remove MaterialEditor and model from SessionItem
// MaterialModel materialModel;
// MaterialEditor editor(&materialModel);
......@@ -104,7 +119,7 @@ inline void TestParticleItems::test_FormFactorGroupProperty()
// QCOMPARE(spyPropertyItem.count(), 0);
}
//}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment