diff --git a/GUI/Model/Job/JobModelFunctions.cpp b/GUI/Model/Job/JobModelFunctions.cpp index b978203f7f982489628fe4c8af3d868b8672e807..848b5d3b91e1bd34423b1453965521bed043d881 100644 --- a/GUI/Model/Job/JobModelFunctions.cpp +++ b/GUI/Model/Job/JobModelFunctions.cpp @@ -28,6 +28,7 @@ #include "GUI/Model/Instrument/InstrumentItems.h" #include "GUI/Model/Job/JobItem.h" #include "GUI/Model/Job/JobItemUtils.h" +#include "GUI/Model/Material/MaterialItem.h" #include "GUI/Model/Material/MaterialItemContainer.h" #include "GUI/Model/Material/MaterialItemUtils.h" #include "GUI/Model/Sample/ItemWithMaterial.h" @@ -136,7 +137,7 @@ void GUI::Model::JobFunctions::setupJobItemSampleData(JobItem* jobItem, std::map<MaterialItem*, MaterialItem*> materials; for (auto* itemWithMaterial : multilayer->itemsWithMaterial()) { auto materialIdentifier = itemWithMaterial->materialIdentifier(); - auto material = GUI::Model::MaterialItemUtils::findMaterial(materialIdentifier); + auto material = GUI::MaterialUtil::findMaterial(materialIdentifier); auto iter = materials.find(material); if (iter == materials.end()) { diff --git a/GUI/Model/Material/MaterialItemUtils.cpp b/GUI/Model/Material/MaterialItemUtils.cpp index 3050ff683927a00c7df0c69edbe662abb3222418..a389b590b6d8d6b4ad9874d282709a754c6532ec 100644 --- a/GUI/Model/Material/MaterialItemUtils.cpp +++ b/GUI/Model/Material/MaterialItemUtils.cpp @@ -13,6 +13,7 @@ // ************************************************************************************************ #include "GUI/Model/Material/MaterialItemUtils.h" +#include "GUI/Model/Material/MaterialItem.h" #include "GUI/Model/Material/MaterialItemContainer.h" #include "GUI/Model/Material/MaterialModel.h" #include "GUI/Model/Material/MaterialModelStore.h" @@ -31,7 +32,7 @@ using boost::polymorphic_cast; #include <deque> #include <random> -QColor GUI::Model::MaterialItemUtils::suggestMaterialColor(const QString& name) +QColor GUI::MaterialUtil::suggestMaterialColor(const QString& name) { if (name.contains("Vacuum")) return QColor(179, 242, 255); @@ -44,7 +45,7 @@ QColor GUI::Model::MaterialItemUtils::suggestMaterialColor(const QString& name) return randomMaterialColor(); } -QColor GUI::Model::MaterialItemUtils::randomMaterialColor() +QColor GUI::MaterialUtil::randomMaterialColor() { static std::random_device r; std::default_random_engine re(r()); @@ -53,7 +54,7 @@ QColor GUI::Model::MaterialItemUtils::randomMaterialColor() return QColor(ru(re), ru(re), ru(re)); } -QString GUI::Model::MaterialItemUtils::defaultMaterialIdentifier() +QString GUI::MaterialUtil::defaultMaterialIdentifier() { if (!GUI::Model::MaterialModelStore::materialModel()) return QString(); @@ -63,14 +64,14 @@ QString GUI::Model::MaterialItemUtils::defaultMaterialIdentifier() } std::unique_ptr<Material> -GUI::Model::MaterialItemUtils::createDomainMaterial(const QString& materialIdentifier) +GUI::MaterialUtil::createDomainMaterial(const QString& materialIdentifier) { MaterialItem* materialItem = findMaterial(materialIdentifier); return materialItem->createMaterial(); } std::unique_ptr<Material> -GUI::Model::MaterialItemUtils::createDomainMaterial(const QString& materialIdentifier, +GUI::MaterialUtil::createDomainMaterial(const QString& materialIdentifier, const MaterialItemContainer& container) { const MaterialItem* material_item = container.findMaterialById(materialIdentifier); @@ -81,10 +82,10 @@ GUI::Model::MaterialItemUtils::createDomainMaterial(const QString& materialIdent return material_item->createMaterial(); } -MaterialItem* GUI::Model::MaterialItemUtils::findMaterial(const QString& materialIdentifier) +MaterialItem* GUI::MaterialUtil::findMaterial(const QString& materialIdentifier) { if (!GUI::Model::MaterialModelStore::materialModel()) - throw Error("GUI::Model::MaterialItemUtils::findMaterial() -> Error. " + throw Error("GUI::MaterialUtil::findMaterial() -> Error. " "Attempt to access non-existing material model"); auto material = @@ -98,7 +99,7 @@ MaterialItem* GUI::Model::MaterialItemUtils::findMaterial(const QString& materia } QVector<ItemWithMaterial*> -GUI::Model::MaterialItemUtils::itemsWithMaterial(ParticleLayoutItem* item) +GUI::MaterialUtil::itemsWithMaterial(ParticleLayoutItem* item) { QVector<ItemWithMaterial*> itemsWithMaterial; @@ -120,7 +121,7 @@ GUI::Model::MaterialItemUtils::itemsWithMaterial(ParticleLayoutItem* item) if (auto shell = dynamic_cast<ParticleCoreShellItem*>(item)->shell()) itemsWithMaterial << shell; } else - throw Error("Error in GUI::Model::MaterialItemUtils::materialProperties: cannot handle " + throw Error("Error in GUI::MaterialUtil::materialProperties: cannot handle " "passed model type '" + item->modelType() + "'"); } diff --git a/GUI/Model/Material/MaterialItemUtils.h b/GUI/Model/Material/MaterialItemUtils.h index 0283dfee524cc3bb37d11404612db6a6cb409b85..96a0030a259723425dcfa44715524d5678ff8bbf 100644 --- a/GUI/Model/Material/MaterialItemUtils.h +++ b/GUI/Model/Material/MaterialItemUtils.h @@ -3,7 +3,7 @@ // BornAgain: simulate and fit reflection and scattering // //! @file GUI/Model/Material/MaterialItemUtils.h -//! @brief Defines namespace GUI::Model::MaterialItemUtils +//! @brief Defines namespace GUI::MaterialUtil //! //! @homepage http://www.bornagainproject.org //! @license GNU General Public License v3 or higher (see COPYING) @@ -15,17 +15,17 @@ #ifndef BORNAGAIN_GUI_MODELS_MATERIAL_MATERIALITEMUTILS_H #define BORNAGAIN_GUI_MODELS_MATERIAL_MATERIALITEMUTILS_H -#include "GUI/Model/Material/MaterialItem.h" #include <QColor> #include <QString> #include <memory> class Material; +class MaterialItem; class MaterialItemContainer; class ItemWithMaterial; class ParticleLayoutItem; -namespace GUI::Model::MaterialItemUtils { +namespace GUI::MaterialUtil { QColor suggestMaterialColor(const QString& name); QColor randomMaterialColor(); @@ -41,6 +41,6 @@ MaterialItem* findMaterial(const QString& materialIdentifier); //! Gather material property items from a given item QVector<ItemWithMaterial*> itemsWithMaterial(ParticleLayoutItem* item); -} // namespace GUI::Model::MaterialItemUtils +} // namespace GUI::MaterialUtil #endif // BORNAGAIN_GUI_MODELS_MATERIAL_MATERIALITEMUTILS_H diff --git a/GUI/Model/Material/MaterialModel.cpp b/GUI/Model/Material/MaterialModel.cpp index 16dbdd658b20fc34d7cae7ed341c12e702b43585..511f648b0f8a359166f74d6b683575fb06c11711 100644 --- a/GUI/Model/Material/MaterialModel.cpp +++ b/GUI/Model/Material/MaterialModel.cpp @@ -13,6 +13,7 @@ // ************************************************************************************************ #include "GUI/Model/Material/MaterialModel.h" +#include "GUI/Model/Material/MaterialItem.h" #include "GUI/Model/Material/MaterialItemUtils.h" #include "GUI/Model/Material/MaterialModelStore.h" #include <QUuid> @@ -42,7 +43,7 @@ MaterialItem* MaterialModel::addRefractiveMaterial(const QString& name, double d { auto materialItem = insertItem<MaterialItem>(); materialItem->setItemName(name); - materialItem->setColor(GUI::Model::MaterialItemUtils::suggestMaterialColor(name)); + materialItem->setColor(GUI::MaterialUtil::suggestMaterialColor(name)); materialItem->setRefractiveIndex(delta, beta); return materialItem; } @@ -51,7 +52,7 @@ MaterialItem* MaterialModel::addSLDMaterial(const QString& name, double sld, dou { auto materialItem = insertItem<MaterialItem>(); materialItem->setItemName(name); - materialItem->setColor(GUI::Model::MaterialItemUtils::suggestMaterialColor(name)); + materialItem->setColor(GUI::MaterialUtil::suggestMaterialColor(name)); materialItem->setScatteringLengthDensity(complex_t(sld, abs_term)); return materialItem; } diff --git a/GUI/Model/Sample/GUIDomainSampleVisitor.cpp b/GUI/Model/Sample/GUIDomainSampleVisitor.cpp index 9e9d51814147d544f2b537b7c98c113ba84673ff..c145decaadacfdadb3dd371706e58f26f0ad605f 100644 --- a/GUI/Model/Sample/GUIDomainSampleVisitor.cpp +++ b/GUI/Model/Sample/GUIDomainSampleVisitor.cpp @@ -15,6 +15,7 @@ #include "GUI/Model/Sample/GUIDomainSampleVisitor.h" #include "Base/Const/Units.h" #include "GUI/Model/Domain/TransformFromDomain.h" +#include "GUI/Model/Material/MaterialItem.h" #include "GUI/Model/Material/MaterialItemUtils.h" #include "GUI/Model/Material/MaterialModel.h" #include "GUI/Model/Sample/FormFactorItems.h" diff --git a/GUI/Model/Sample/ItemWithMaterial.cpp b/GUI/Model/Sample/ItemWithMaterial.cpp index 4322c7b99f3f691762040dfd3597392362b475cf..055306a4c4cd9414536fa05e64f25106b3f448b4 100644 --- a/GUI/Model/Sample/ItemWithMaterial.cpp +++ b/GUI/Model/Sample/ItemWithMaterial.cpp @@ -15,6 +15,7 @@ #include "GUI/Model/Sample/ItemWithMaterial.h" #include "GUI/Model/Job/JobItem.h" #include "GUI/Model/Job/JobModelFunctions.h" +#include "GUI/Model/Material/MaterialItem.h" #include "GUI/Model/Material/MaterialItemContainer.h" #include "GUI/Model/Material/MaterialItemUtils.h" #include "Sample/Material/Material.h" @@ -45,7 +46,7 @@ QColor ItemWithMaterial::materialColor() const if (parentJob) return parentJob->materialContainerItem()->findMaterialById(materialIdentifier())->color(); - return GUI::Model::MaterialItemUtils::findMaterial(materialIdentifier())->color(); + return GUI::MaterialUtil::findMaterial(materialIdentifier())->color(); } QString ItemWithMaterial::materialName() const @@ -56,7 +57,7 @@ QString ItemWithMaterial::materialName() const ->findMaterialById(materialIdentifier()) ->itemName(); - return GUI::Model::MaterialItemUtils::findMaterial(materialIdentifier())->itemName(); + return GUI::MaterialUtil::findMaterial(materialIdentifier())->itemName(); } QString ItemWithMaterial::materialIdentifier() const @@ -66,7 +67,7 @@ QString ItemWithMaterial::materialIdentifier() const ItemWithMaterial::ItemWithMaterial(const QString& model_type) : SessionGraphicsItem(model_type) { - addProperty(P_MATERIAL, GUI::Model::MaterialItemUtils::defaultMaterialIdentifier()) + addProperty(P_MATERIAL, GUI::MaterialUtil::defaultMaterialIdentifier()) ->setToolTip("Material this item is made of") .setEditorType(SessionItem::EDITOR_TYPE_MATERIAL); } @@ -77,7 +78,7 @@ std::unique_ptr<Material> ItemWithMaterial::domainMaterial() const const MaterialItemContainer* container = parent_job ? parent_job->materialContainerItem() : nullptr; return container - ? GUI::Model::MaterialItemUtils::createDomainMaterial(materialIdentifier(), + ? GUI::MaterialUtil::createDomainMaterial(materialIdentifier(), *container) - : GUI::Model::MaterialItemUtils::createDomainMaterial(materialIdentifier()); + : GUI::MaterialUtil::createDomainMaterial(materialIdentifier()); } diff --git a/GUI/Model/Sample/LayerItem.cpp b/GUI/Model/Sample/LayerItem.cpp index 913202225cb19ca96ce999312b6783b6d73be4ae..d76dd0b2919e27156aa6c50d56da6a4a604b93c7 100644 --- a/GUI/Model/Sample/LayerItem.cpp +++ b/GUI/Model/Sample/LayerItem.cpp @@ -59,7 +59,7 @@ QVector<ItemWithMaterial*> LayerItem::itemsWithMaterial() QVector<ItemWithMaterial*> result; result.push_back(this); for (auto layout : layouts()) - result.append(GUI::Model::MaterialItemUtils::itemsWithMaterial(layout)); + result.append(GUI::MaterialUtil::itemsWithMaterial(layout)); return result; } diff --git a/GUI/Model/Session/SessionModel.cpp b/GUI/Model/Session/SessionModel.cpp index cfaf47eb684c5cd9321a116ce24dddadf39d9242..6a30956a84cd349bc487301cd9ddf7eb28dd7e67 100644 --- a/GUI/Model/Session/SessionModel.cpp +++ b/GUI/Model/Session/SessionModel.cpp @@ -14,6 +14,7 @@ #include "GUI/Model/Session/SessionModel.h" #include "GUI/Model/Group/ItemFactory.h" +#include "GUI/Model/Material/MaterialItem.h" #include "GUI/Model/Session/SessionItemTags.h" #include "GUI/Model/Session/SessionItemUtils.h" #include "GUI/Util/Error.h" diff --git a/GUI/View/MaterialEditor/MaterialEditorDialog.cpp b/GUI/View/MaterialEditor/MaterialEditorDialog.cpp index 9b8b88445532a926ffe7a68062e730abb6b8522b..2d8b6da18509aee7885b5931af473ee4b010b9f6 100644 --- a/GUI/View/MaterialEditor/MaterialEditorDialog.cpp +++ b/GUI/View/MaterialEditor/MaterialEditorDialog.cpp @@ -14,6 +14,7 @@ #include "GUI/View/MaterialEditor/MaterialEditorDialog.h" #include "GUI/Application/GlobalSettings.h" +#include "GUI/Model/Material/MaterialItem.h" #include "GUI/Model/Material/MaterialItemUtils.h" #include "GUI/Model/Material/MaterialModel.h" #include "GUI/Model/Material/MaterialModelStore.h" diff --git a/GUI/View/PropertyEditor/CustomEditors.cpp b/GUI/View/PropertyEditor/CustomEditors.cpp index 1005f9f72d83c194f5cc1baae5a62ec590652a1f..671007d896a0c9cff49a35bed397eda0cedb78c4 100644 --- a/GUI/View/PropertyEditor/CustomEditors.cpp +++ b/GUI/View/PropertyEditor/CustomEditors.cpp @@ -15,6 +15,7 @@ #include "GUI/View/PropertyEditor/CustomEditors.h" #include "Base/Utils/Assert.h" #include "Fit/Param/RealLimits.h" +#include "GUI/Model/Material/MaterialItem.h" #include "GUI/Model/Material/MaterialItemUtils.h" #include "GUI/Model/State/SessionData.h" #include "GUI/Util/ComboProperty.h" @@ -112,7 +113,7 @@ void MaterialSelectionEditor::buttonClicked() void MaterialSelectionEditor::initEditor() { ASSERT(m_data.canConvert<QString>()); - const auto material = GUI::Model::MaterialItemUtils::findMaterial(m_data.toString()); + const auto material = GUI::MaterialUtil::findMaterial(m_data.toString()); m_textLabel->setText(material->itemName()); diff --git a/GUI/View/PropertyEditor/PropertyEditorFactory.cpp b/GUI/View/PropertyEditor/PropertyEditorFactory.cpp index d7801c9f9100f74da2509eaf810a19f003476ae7..b46d447f1c9dd1a705825150880520a730c3f941 100644 --- a/GUI/View/PropertyEditor/PropertyEditorFactory.cpp +++ b/GUI/View/PropertyEditor/PropertyEditorFactory.cpp @@ -13,6 +13,7 @@ // ************************************************************************************************ #include "GUI/View/PropertyEditor/PropertyEditorFactory.h" +#include "GUI/Model/Material/MaterialItem.h" #include "GUI/Model/Material/MaterialItemUtils.h" #include "GUI/Model/Session/SessionFlags.h" #include "GUI/Model/Session/SessionItem.h" @@ -26,8 +27,23 @@ namespace { -QWidget* createCustomStringEditor(const SessionItem& item); -double getStep(double val); +QWidget* createCustomStringEditor(const SessionItem& item) +{ + if (item.isEditable()) { + auto* editor = new QLineEdit; + editor->setText(item.value().toString()); + return editor; + } + + auto* editor = new QLabel; + editor->setText(item.value().toString()); + return editor; +} + +double getStep(double val) +{ + return val == 0.0 ? 1.0 : val / 100.; +} bool isDoubleProperty(const QVariant& variant) { @@ -82,7 +98,7 @@ QString GUI::View::PropertyEditorFactory::toString(const QModelIndex& index) { auto variant = index.data(); if (isMaterialProperty(index)) { - const auto* material = GUI::Model::MaterialItemUtils::findMaterial(variant.toString()); + const auto* material = GUI::MaterialUtil::findMaterial(variant.toString()); return material->itemName(); } if (isComboProperty(variant)) @@ -149,25 +165,3 @@ QWidget* GUI::View::PropertyEditorFactory::CreateEditor(const SessionItem& item, return result; } - -namespace { - -QWidget* createCustomStringEditor(const SessionItem& item) -{ - if (item.isEditable()) { - auto* editor = new QLineEdit; - editor->setText(item.value().toString()); - return editor; - } - - auto* editor = new QLabel; - editor->setText(item.value().toString()); - return editor; -} - -double getStep(double val) -{ - return val == 0.0 ? 1.0 : val / 100.; -} - -} // namespace diff --git a/GUI/View/SampleDesigner/MaterialInplaceForm.cpp b/GUI/View/SampleDesigner/MaterialInplaceForm.cpp index ece5122592e94f270715e4f535f4cb2bca88b87e..033ae5bd796e67ddcd2390650bc989ed74b06bde 100644 --- a/GUI/View/SampleDesigner/MaterialInplaceForm.cpp +++ b/GUI/View/SampleDesigner/MaterialInplaceForm.cpp @@ -13,6 +13,7 @@ // ************************************************************************************************ #include "GUI/View/SampleDesigner/MaterialInplaceForm.h" +#include "GUI/Model/Material/MaterialItem.h" #include "GUI/Model/Material/MaterialItemUtils.h" #include "GUI/Model/Material/MaterialModel.h" #include "GUI/Model/Material/MaterialModelStore.h" @@ -90,7 +91,7 @@ void MaterialInplaceForm::createWidgets() // -- Create UI for delta/beta resp. sldRe/sldIm DoubleDescriptors values; - auto* materialItem = GUI::Model::MaterialItemUtils::findMaterial(m_item->materialIdentifier()); + auto* materialItem = GUI::MaterialUtil::findMaterial(m_item->materialIdentifier()); if (materialItem->hasRefractiveIndex()) { DoubleDescriptor delta = materialItem->delta(); delta.set = [=](double value) { material()->delta().set(value); }; @@ -161,7 +162,7 @@ void MaterialInplaceForm::createWidgets() MaterialItem* MaterialInplaceForm::material() { - return GUI::Model::MaterialItemUtils::findMaterial(m_item->materialIdentifier()); + return GUI::MaterialUtil::findMaterial(m_item->materialIdentifier()); } void MaterialInplaceForm::onMaterialChanged(MaterialItem* materialItem) diff --git a/GUI/Widget/Common/DesignerHelper.cpp b/GUI/Widget/Common/DesignerHelper.cpp index 8235f28782c2739d3b8f20771df5848f71c61055..203ec9b295c75233a3d97a34d0038488fa496bc5 100644 --- a/GUI/Widget/Common/DesignerHelper.cpp +++ b/GUI/Widget/Common/DesignerHelper.cpp @@ -255,7 +255,7 @@ QRectF DesignerHelper::getTransformationBoundingRect() QColor DesignerHelper::getDefaultMaterialColor() { - return GUI::Model::MaterialItemUtils::randomMaterialColor(); + return GUI::MaterialUtil::randomMaterialColor(); } int DesignerHelper::getSectionFontSize() diff --git a/Tests/Unit/GUI/TestMaterialModel.cpp b/Tests/Unit/GUI/TestMaterialModel.cpp index 7b432832b160724d7570c4d7bdf3ab1455302514..a334c735e698a34f11da0446a4816f48bd3fd668 100644 --- a/Tests/Unit/GUI/TestMaterialModel.cpp +++ b/Tests/Unit/GUI/TestMaterialModel.cpp @@ -1,4 +1,5 @@ #include "GUI/Model/Material/MaterialDataItems.h" +#include "GUI/Model/Material/MaterialItem.h" #include "GUI/Model/Material/MaterialItemUtils.h" #include "GUI/Model/Material/MaterialModel.h" #include "Tests/GTestWrapper/google_test.h" @@ -131,12 +132,12 @@ TEST_F(TestMaterialModel, defaultMaterialProperty) // testing default material property from MaterialItemUtils // in the absence of any materials, property should be in invalid state - QString id = GUI::Model::MaterialItemUtils::defaultMaterialIdentifier(); + QString id = GUI::MaterialUtil::defaultMaterialIdentifier(); EXPECT_TRUE(id.isEmpty()); // adding materials to the model, default property should refer to first material in a model MaterialItem* mat1 = model.addRefractiveMaterial("Something1", 1.0, 2.0); model.addRefractiveMaterial("Something2", 3.0, 4.0); - id = GUI::Model::MaterialItemUtils::defaultMaterialIdentifier(); + id = GUI::MaterialUtil::defaultMaterialIdentifier(); EXPECT_EQ(id, mat1->identifier()); }