From 101bf2edb5eae2db01a4124e4050f4b6e3909a75 Mon Sep 17 00:00:00 2001
From: Mikhail Svechnikov <m.svechnikov@fz-juelich.de>
Date: Fri, 2 Aug 2024 15:15:09 +0200
Subject: [PATCH] upd itemize roughness

---
 GUI/Model/FromCore/ItemizeSample.cpp   | 9 +++++++++
 GUI/Model/Job/ParameterTreeBuilder.cpp | 2 +-
 GUI/Model/Sample/RoughnessItems.h      | 4 ++--
 GUI/View/Sample/RoughnessForm.cpp      | 2 +-
 4 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/GUI/Model/FromCore/ItemizeSample.cpp b/GUI/Model/FromCore/ItemizeSample.cpp
index 043e6603f9e..9cda2a84a66 100644
--- a/GUI/Model/FromCore/ItemizeSample.cpp
+++ b/GUI/Model/FromCore/ItemizeSample.cpp
@@ -287,9 +287,18 @@ void set_Roughness(LayerItem* parent, const LayerInterface* top_interface)
     parent->roughnessSelection().setCertainItem(nullptr);
     if (top_interface) {
         const LayerRoughness* roughness = top_interface->roughness();
+
         if (roughness && !(roughness->allZero())) {
             auto* t = new BasicRoughnessItem(roughness->sigma(), roughness->hurst(),
                                              roughness->lateralCorrLength());
+
+            if (dynamic_cast<const ErfRoughness*>(roughness->roughnessModel()))
+                t->roughnessModelSelection().setCertainItem(new ErfRoughnessItem);
+            else if (dynamic_cast<const TanhRoughness*>(roughness->roughnessModel()))
+                t->roughnessModelSelection().setCertainItem(new TanhRoughnessItem);
+            else
+                ASSERT_NEVER;
+
             parent->roughnessSelection().setCertainItem(t);
         }
     }
diff --git a/GUI/Model/Job/ParameterTreeBuilder.cpp b/GUI/Model/Job/ParameterTreeBuilder.cpp
index 2fd0171a087..84e3fa993c9 100644
--- a/GUI/Model/Job/ParameterTreeBuilder.cpp
+++ b/GUI/Model/Job/ParameterTreeBuilder.cpp
@@ -112,7 +112,7 @@ void ParameterTreeBuilder::addSample()
         if (!layer->isTopLayer())
             if (auto* roughnessItem = layer->roughnessSelection().certainItem()) {
                 auto* roughnessLabel = new ParameterLabelItem("Top roughness", layerLabel);
-                for (auto* property : roughnessItem->roughnessProperties())
+                for (auto* property : roughnessItem->lateralProperties())
                     addParameterItem(roughnessLabel, *property);
             }
 
diff --git a/GUI/Model/Sample/RoughnessItems.h b/GUI/Model/Sample/RoughnessItems.h
index 217642ef78e..c8e8a694b47 100644
--- a/GUI/Model/Sample/RoughnessItems.h
+++ b/GUI/Model/Sample/RoughnessItems.h
@@ -26,7 +26,7 @@ public:
 
     virtual void writeTo(QXmlStreamWriter* w) const;
     virtual void readFrom(QXmlStreamReader* r);
-    virtual DoubleProperties roughnessProperties() = 0;
+    virtual DoubleProperties lateralProperties() = 0;
 
     PolyPtr<RoughnessModelItem, RoughnessModelCatalog>& roughnessModelSelection()
     {
@@ -59,7 +59,7 @@ public:
     void writeTo(QXmlStreamWriter* w) const override;
     void readFrom(QXmlStreamReader* r) override;
 
-    DoubleProperties roughnessProperties() override
+    DoubleProperties lateralProperties() override
     {
         return {&m_sigma, &m_hurst, &m_lateral_correlation_length};
     }
diff --git a/GUI/View/Sample/RoughnessForm.cpp b/GUI/View/Sample/RoughnessForm.cpp
index b1fef4297db..10324021243 100644
--- a/GUI/View/Sample/RoughnessForm.cpp
+++ b/GUI/View/Sample/RoughnessForm.cpp
@@ -63,7 +63,7 @@ void RoughnessForm::createRoughnessWidgets()
     RoughnessItem* roughness = m_rs.certainItem();
 
     if (auto* rsi = dynamic_cast<BasicRoughnessItem*>(roughness)) {
-        m_layout->addGroupOfValues("Parameters", rsi->roughnessProperties());
+        m_layout->addGroupOfValues("Parameters", rsi->lateralProperties());
         m_layout->addSelection(roughness->roughnessModelSelection());
     }
 }
-- 
GitLab