diff --git a/GUI/Models/AxesItems.cpp b/GUI/Models/AxesItems.cpp index 644b1ab5961f4642fcf049d47ae1ae865edeea65..59c8b1614d5fcd83760f8f7b764dbe0a41804766 100644 --- a/GUI/Models/AxesItems.cpp +++ b/GUI/Models/AxesItems.cpp @@ -22,12 +22,12 @@ const QString BasicAxisItem::P_MAX_DEG = "Max [deg]"; const QString BasicAxisItem::P_TITLE = "Title"; const QString BasicAxisItem::P_TITLE_IS_VISIBLE = "Title Visibility"; +const QString BasicAxisItem::M_TYPE = "BasicAxis"; + const int max_detector_pixels = 65536; -BasicAxisItem::BasicAxisItem(const QString& type) : SessionItem(type) -{ - register_basic_properties(); -} +BasicAxisItem::BasicAxisItem() : BasicAxisItem(M_TYPE) +{} int BasicAxisItem::binCount() const { @@ -132,6 +132,11 @@ bool BasicAxisItem::isVisibilityPropertyName(const QString& name) BasicAxisItem::~BasicAxisItem() = default; +BasicAxisItem::BasicAxisItem(const QString& type) : SessionItem(type) +{ + register_basic_properties(); +} + void BasicAxisItem::register_basic_properties() { addProperty(P_IS_VISIBLE, true)->setVisible(false); @@ -147,7 +152,9 @@ void BasicAxisItem::register_basic_properties() const QString AmplitudeAxisItem::P_IS_LOGSCALE = "log10"; const QString AmplitudeAxisItem::P_LOCK_MIN_MAX = "Lock (min, max)"; -AmplitudeAxisItem::AmplitudeAxisItem() : BasicAxisItem("AmplitudeAxis") +const QString AmplitudeAxisItem::M_TYPE = "AmplitudeAxis"; + +AmplitudeAxisItem::AmplitudeAxisItem() : BasicAxisItem(M_TYPE) { addProperty(P_LOCK_MIN_MAX, false)->setVisible(false); addProperty(P_IS_LOGSCALE, true); diff --git a/GUI/Models/AxesItems.h b/GUI/Models/AxesItems.h index bf15e92b767d210523d53d060f5ad1c27c7a34ef..ac0b370adce232049ece286db577a117624ed702 100644 --- a/GUI/Models/AxesItems.h +++ b/GUI/Models/AxesItems.h @@ -30,8 +30,9 @@ private: static const QString P_TITLE_IS_VISIBLE; public: + static const QString M_TYPE; - explicit BasicAxisItem(const QString& type = "BasicAxis"); + BasicAxisItem(); virtual ~BasicAxisItem(); int binCount() const; @@ -63,6 +64,7 @@ public: static bool isVisibilityPropertyName(const QString& name); protected: + explicit BasicAxisItem(const QString& type); void register_basic_properties(); }; @@ -72,6 +74,9 @@ private: static const QString P_LOCK_MIN_MAX; public: + + static const QString M_TYPE; + AmplitudeAxisItem(); bool isLogScale() const; diff --git a/GUI/Models/BeamItems.cpp b/GUI/Models/BeamItems.cpp index 16403dc46107c60e29e9e4ef043bc68c9e6a9614..ebad6c5523e80ecb0b81b39eac4069fe9a76eedd 100644 --- a/GUI/Models/BeamItems.cpp +++ b/GUI/Models/BeamItems.cpp @@ -235,7 +235,7 @@ void SpecularBeamItem::updateFileName(const QString& filename) void SpecularBeamItem::updateToData(const IAxis& axis, QString units) { if (units == "nbins") { - inclinationAxisGroup()->setCurrentType("BasicAxis"); + inclinationAxisGroup()->setCurrentType(BasicAxisItem::M_TYPE); auto axis_item = currentInclinationAxisItem(); axis_item->setBinCount(static_cast<int>(axis.size())); return; diff --git a/GUI/Models/ComponentProxyStrategy.cpp b/GUI/Models/ComponentProxyStrategy.cpp index 413897f8f35b0d1df297044d83c5671adbcdf6bb..47cb395cea07f3972b50453349448f7207452cfd 100644 --- a/GUI/Models/ComponentProxyStrategy.cpp +++ b/GUI/Models/ComponentProxyStrategy.cpp @@ -60,7 +60,8 @@ bool ComponentProxyStrategy::processSourceIndex(const QModelIndex& index) bool ComponentProxyStrategy::isPropertyRelated(SessionItem* item) { - static QStringList propertyRelated = ComponentUtils::propertyRelatedTypes(); + static const QStringList& propertyRelated = + ComponentUtils::propertyRelatedTypes(); if (m_sourceRootIndex.isValid() && item->parent()->index() == m_sourceRootIndex && item->parent()->modelType() != "GroupProperty") diff --git a/GUI/Models/GroupInfoCatalog.cpp b/GUI/Models/GroupInfoCatalog.cpp index 9bcd400935283f7a51d3975ad9dcac18c1c82c2d..fcca8814bf4d86882b525acd44d21ac584c96115 100644 --- a/GUI/Models/GroupInfoCatalog.cpp +++ b/GUI/Models/GroupInfoCatalog.cpp @@ -13,6 +13,7 @@ // ************************************************************************************************ #include "GUI/Models/GroupInfoCatalog.h" +#include "GUI/Models/AxesItems.h" #include "GUI/Models/MaterialDataItems.h" #include "GUI/utils/GUIHelpers.h" @@ -187,9 +188,9 @@ GroupInfoCatalog::GroupInfoCatalog() addInfo(info); info = GroupInfo("Axes group"); - info.add("BasicAxis", "Uniform axis"); + info.add(BasicAxisItem::M_TYPE, "Uniform axis"); info.add("PointwiseAxis", "Non-uniform axis"); - info.setDefaultType("BasicAxis"); + info.setDefaultType(BasicAxisItem::M_TYPE); addInfo(info); info = GroupInfo("Variance group"); diff --git a/GUI/Models/InstrumentItems.cpp b/GUI/Models/InstrumentItems.cpp index 62d9031ffb7404fc445c34639a1a40989fdaa088..01acf7118c83035b3a5f9c17d2dfa70664541042 100644 --- a/GUI/Models/InstrumentItems.cpp +++ b/GUI/Models/InstrumentItems.cpp @@ -168,7 +168,8 @@ bool SpecularInstrumentItem::alignedWith(const RealDataItem* item) const { const QString native_units = item->nativeDataUnits(); if (native_units == "nbins") { - return beamItem()->currentInclinationAxisItem()->modelType() == "BasicAxis" + return beamItem()->currentInclinationAxisItem()->modelType() + == BasicAxisItem::M_TYPE && shape() == item->shape(); } else { auto axis_item = dynamic_cast<PointwiseAxisItem*>(beamItem()->currentInclinationAxisItem()); diff --git a/GUI/Models/ItemCatalog.cpp b/GUI/Models/ItemCatalog.cpp index c890517c3e2dcea5e3c4e6dac5879f6d5ba90e81..976e533e87b885560d69f1e96203e3cc6e882b94 100644 --- a/GUI/Models/ItemCatalog.cpp +++ b/GUI/Models/ItemCatalog.cpp @@ -179,9 +179,9 @@ ItemCatalog::ItemCatalog() add("DataPropertyContainer", create_new<DataPropertyContainer>); add("DataItem1DProperties", create_new<Data1DProperties>); - add("BasicAxis", create_new<BasicAxisItem>); + addItem<BasicAxisItem>(); add("PointwiseAxis", create_new<PointwiseAxisItem>); - add("AmplitudeAxis", create_new<AmplitudeAxisItem>); + addItem<AmplitudeAxisItem>(); add("BeamWavelength", create_new<BeamWavelengthItem>); add("BeamAzimuthalAngle", create_new<BeamAzimuthalAngleItem>); diff --git a/GUI/Models/SpecularBeamInclinationItem.cpp b/GUI/Models/SpecularBeamInclinationItem.cpp index 2ce2380ef9fe4271987453a7e5805e463ef5796e..efda538988d3d059d9c352b3b1353ab1a71b0f01 100644 --- a/GUI/Models/SpecularBeamInclinationItem.cpp +++ b/GUI/Models/SpecularBeamInclinationItem.cpp @@ -60,7 +60,7 @@ void SpecularBeamInclinationItem::setupAxisGroup() group_item->setCurrentType("PointwiseAxis"); setAxisPresentationDefaults(group_item->currentItem(), group_item->currentType()); - group_item->setCurrentType("BasicAxis"); + group_item->setCurrentType(BasicAxisItem::M_TYPE); setAxisPresentationDefaults(group_item->currentItem(), group_item->currentType()); group_item->setToolTip("Axis type selected"); @@ -100,7 +100,7 @@ void setAxisPresentationDefaults(SessionItem* item, const QString& type) axis_item->lowerBoundItem()->setLimits(RealLimits::limited(0., 90.)); axis_item->upperBoundItem()->setLimits(RealLimits::limited(0., 90.)); - if (type == "BasicAxis") { + if (type == BasicAxisItem::M_TYPE) { axis_item->setLowerBound(0.0); axis_item->setUpperBound(3.0); axis_item->setBinCount(500); diff --git a/GUI/Views/IntensityDataWidgets/ColorMap.cpp b/GUI/Views/IntensityDataWidgets/ColorMap.cpp index d0784512cdb0e0d6366432d44f9c482070efc2a2..b0b7cd9811ec1b235aa28c3e12427b1ad9759715 100644 --- a/GUI/Views/IntensityDataWidgets/ColorMap.cpp +++ b/GUI/Views/IntensityDataWidgets/ColorMap.cpp @@ -213,7 +213,8 @@ void ColorMap::subscribeToItem() intensityItem()->mapper()->setOnChildPropertyChange( [this](SessionItem* item, const QString name) { - if (item->modelType() == "BasicAxis" || item->modelType() == "AmplitudeAxis") + if (item->modelType() == BasicAxisItem::M_TYPE + || item->modelType() == AmplitudeAxisItem::M_TYPE) onAxisPropertyChanged(item->itemName(), name); }, this); diff --git a/GUI/Views/IntensityDataWidgets/ProjectionsPlot.cpp b/GUI/Views/IntensityDataWidgets/ProjectionsPlot.cpp index 4ae5de5281370caff527dcff39dc006a5f90d8c2..38728e340a3b6a9a912374e131c1cf4e1be8d1b7 100644 --- a/GUI/Views/IntensityDataWidgets/ProjectionsPlot.cpp +++ b/GUI/Views/IntensityDataWidgets/ProjectionsPlot.cpp @@ -89,7 +89,8 @@ void ProjectionsPlot::subscribeToItem() // Update to changed IntensityDataItem axes intensityItem()->mapper()->setOnChildPropertyChange( [this](SessionItem* item, const QString name) { - if (item->modelType() == "BasicAxis" || item->modelType() == "AmplitudeAxis") + if (item->modelType() == BasicAxisItem::M_TYPE + || item->modelType() == AmplitudeAxisItem::M_TYPE) onAxisPropertyChanged(item->itemName(), name); }, this); diff --git a/GUI/Views/PropertyEditor/ComponentUtils.cpp b/GUI/Views/PropertyEditor/ComponentUtils.cpp index f5969d8d2334c74cb9e8ea8cde158dd581a5d71d..7637cd5a17e72c5f5f529fb22b729034ff218fa3 100644 --- a/GUI/Views/PropertyEditor/ComponentUtils.cpp +++ b/GUI/Views/PropertyEditor/ComponentUtils.cpp @@ -13,6 +13,7 @@ // ************************************************************************************************ #include "GUI/Views/PropertyEditor/ComponentUtils.h" +#include "GUI/Models/AxesItems.h" #include "GUI/Models/MaterialDataItems.h" #include "GUI/Models/SessionItem.h" @@ -20,19 +21,22 @@ namespace { QList<const SessionItem*> groupItems(const SessionItem& item); } -QStringList ComponentUtils::propertyRelatedTypes() +const QStringList& ComponentUtils::propertyRelatedTypes() { - QStringList result = QStringList() << "Property" - << "GroupProperty" - << "Vector" - << "BasicAxis" - << "AmplitudeAxis" << MaterialRefractiveDataItem::M_TYPE; + static const QStringList result = + { "Property", + "GroupProperty", + "Vector", + BasicAxisItem::M_TYPE, + AmplitudeAxisItem::M_TYPE, + MaterialRefractiveDataItem::M_TYPE }; return result; } QList<const SessionItem*> ComponentUtils::componentItems(const SessionItem& item) { - static QStringList propertyRelated = ComponentUtils::propertyRelatedTypes(); + static const QStringList& propertyRelated = + ComponentUtils::propertyRelatedTypes(); QList<const SessionItem*> result; diff --git a/GUI/Views/PropertyEditor/ComponentUtils.h b/GUI/Views/PropertyEditor/ComponentUtils.h index 89fb43b0daf9c61a5b56d9208a5085841781ee6a..9eabaea5403a5134af870f6751dfa29969884840 100644 --- a/GUI/Views/PropertyEditor/ComponentUtils.h +++ b/GUI/Views/PropertyEditor/ComponentUtils.h @@ -25,7 +25,7 @@ class SessionItem; namespace ComponentUtils { //! Returns list of strings representing modelTypes suitable for editing in component editors. -QStringList propertyRelatedTypes(); +const QStringList& propertyRelatedTypes(); //! Returns list of SessionItem's children suitable for editing in property editors. QList<const SessionItem*> componentItems(const SessionItem& item); diff --git a/GUI/Views/SpecularDataWidgets/SpecularPlot.cpp b/GUI/Views/SpecularDataWidgets/SpecularPlot.cpp index 6d2b0f945d3137fd4ca517977b85eb699e4e1d97..5df339dd388fef78b8a01d3f8840ad81e6fffdc1 100644 --- a/GUI/Views/SpecularDataWidgets/SpecularPlot.cpp +++ b/GUI/Views/SpecularDataWidgets/SpecularPlot.cpp @@ -111,7 +111,8 @@ void SpecularPlot::subscribeToItem() specularItem()->mapper()->setOnChildPropertyChange( [this](SessionItem* item, const QString name) { - if (item->modelType() == "BasicAxis" || item->modelType() == "AmplitudeAxis") + if (item->modelType() == BasicAxisItem::M_TYPE + || item->modelType() == AmplitudeAxisItem::M_TYPE) modifyAxesProperties(item->itemName(), name); }, this); diff --git a/Tests/UnitTests/GUI/TestSavingSpecularData.cpp b/Tests/UnitTests/GUI/TestSavingSpecularData.cpp index a20b0bb11ddda0f3090b4261be23a27484f970bf..0285cf5af65314177293267192475f4bc3152d44 100644 --- a/Tests/UnitTests/GUI/TestSavingSpecularData.cpp +++ b/Tests/UnitTests/GUI/TestSavingSpecularData.cpp @@ -86,7 +86,7 @@ TEST_F(TestSavingSpecularData, test_SpecularInsturment) EXPECT_EQ(models.instrumentModel()->nonXMLItems().size(), 1); // hiding pointwise axis item back - axis_group->setCurrentType("BasicAxis"); + axis_group->setCurrentType(BasicAxisItem::M_TYPE); EXPECT_EQ(models.instrumentModel()->nonXMLItems().size(), 1); // checking data items of OutputDataIOService @@ -127,7 +127,7 @@ TEST_F(TestSavingSpecularData, test_InstrumentInJobItem) EXPECT_EQ(dataItems.indexOf(dataItem), 0); // hiding pointwise axis, should be saved anyway - axis_group->setCurrentType("BasicAxis"); + axis_group->setCurrentType(BasicAxisItem::M_TYPE); EXPECT_EQ(models.jobModel()->nonXMLItems().size(), 2); EXPECT_EQ(service.dataInterfaces().size(), 2); dataItems = models.nonXMLItems();