From 2a949639a5a99e99c39d240d2dac34d480adcb42 Mon Sep 17 00:00:00 2001
From: Rainer Kartmann <rainer.kartmann@kit.edu>
Date: Thu, 12 May 2022 10:41:26 +0200
Subject: [PATCH] Put linear prediction control in own group box

---
 .../armem_objects/server/instance/Visu.cpp    | 58 ++++++++++++++-----
 .../armem_objects/server/instance/Visu.h      | 15 ++++-
 2 files changed, 55 insertions(+), 18 deletions(-)

diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/Visu.cpp b/source/RobotAPI/libraries/armem_objects/server/instance/Visu.cpp
index 07ded4465..5f1a8c0ae 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/Visu.cpp
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/Visu.cpp
@@ -305,10 +305,6 @@ namespace armarx::armem::server::obj::instance
 
         useArticulatedModels.setValue(visu.useArticulatedModels);
 
-        showLinearPredictions.setValue(visu.showLinearPredictions);
-        linearPredictionTimeOffsetSeconds.setValue(visu.linearPredictionTimeOffsetSeconds);
-        linearPredictionTimeWindowSeconds.setValue(visu.linearPredictionTimeWindowSeconds);
-        linearPredictionTimeWindowSeconds.setRange(0, std::numeric_limits<float>::max());
 
         GridLayout grid;
         int row = 0;
@@ -331,17 +327,11 @@ namespace armarx::armem::server::obj::instance
         grid.add(gaussians.group, {row, 0}, {1, 4});
         row++;
 
-
         grid.add(Label("Use Articulated Models"), {row, 0}).add(useArticulatedModels, {row, 1});
         row++;
 
-        grid.add(Label("Show Linear Predictions"), {row, 0}).add(showLinearPredictions, {row, 1});
-        row++;
-        grid.add(Label("Time (seconds from now):"), {row, 0})
-            .add(linearPredictionTimeOffsetSeconds, {row, 1});
-        row++;
-        grid.add(Label("Time Window (seconds):"), {row, 0})
-            .add(linearPredictionTimeWindowSeconds, {row, 1});
+        linearPredictions.setup(visu);
+        grid.add(linearPredictions.group, {row, 0}, {1, 4});
         row++;
 
         group = GroupBox();
@@ -392,9 +382,47 @@ namespace armarx::armem::server::obj::instance
 
         visu.useArticulatedModels = useArticulatedModels.getValue();
 
-        visu.showLinearPredictions = showLinearPredictions.getValue();
-        visu.linearPredictionTimeOffsetSeconds = linearPredictionTimeOffsetSeconds.getValue();
-        visu.linearPredictionTimeWindowSeconds = linearPredictionTimeWindowSeconds.getValue();
+        linearPredictions.update(visu);
+    }
+
+
+    void Visu::RemoteGui::LinearPredictions::setup(const Visu& visu)
+    {
+        using namespace armarx::RemoteGui::Client;
+
+        show.setValue(visu.showLinearPredictions);
+        timeOffsetSeconds.setValue(visu.linearPredictionTimeOffsetSeconds);
+        timeOffsetSeconds.setRange(-1e6, 1e6);
+        timeOffsetSeconds.setSteps(2 * 2 * 1000 * 1000);
+
+        timeWindowSeconds.setValue(visu.linearPredictionTimeWindowSeconds);
+        timeWindowSeconds.setRange(0, 1e6);
+        timeWindowSeconds.setSteps(2 * 1000 * 1000);
+
+
+        GridLayout grid;
+        int row = 0;
+
+        grid.add(Label("Show"), {row, 0}).add(show, {row, 1});
+        row++;
+        grid.add(Label("Time (seconds from now):"), {row, 0})
+            .add(timeOffsetSeconds, {row, 1});
+        row++;
+        grid.add(Label("Time Window (seconds):"), {row, 0})
+            .add(timeWindowSeconds, {row, 1});
+        row++;
+
+        group = GroupBox();
+        group.setLabel("Linear Predictions");
+        group.addChild(grid);
+    }
+
+
+    void Visu::RemoteGui::LinearPredictions::update(Visu& visu)
+    {
+        visu.showLinearPredictions = show.getValue();
+        visu.linearPredictionTimeOffsetSeconds = timeOffsetSeconds.getValue();
+        visu.linearPredictionTimeWindowSeconds = timeWindowSeconds.getValue();
     }
 
 }
diff --git a/source/RobotAPI/libraries/armem_objects/server/instance/Visu.h b/source/RobotAPI/libraries/armem_objects/server/instance/Visu.h
index a88e3d2c8..56380159b 100644
--- a/source/RobotAPI/libraries/armem_objects/server/instance/Visu.h
+++ b/source/RobotAPI/libraries/armem_objects/server/instance/Visu.h
@@ -128,11 +128,20 @@ namespace armarx::armem::server::obj::instance
 
             armarx::RemoteGui::Client::CheckBox useArticulatedModels;
 
-            armarx::RemoteGui::Client::CheckBox showLinearPredictions;
 
-            armarx::RemoteGui::Client::FloatSpinBox linearPredictionTimeOffsetSeconds;
-            armarx::RemoteGui::Client::FloatSpinBox linearPredictionTimeWindowSeconds;
+            struct LinearPredictions
+            {
+                armarx::RemoteGui::Client::CheckBox show;
+
+                armarx::RemoteGui::Client::FloatSpinBox timeOffsetSeconds;
+                armarx::RemoteGui::Client::FloatSpinBox timeWindowSeconds;
+
+                armarx::RemoteGui::Client::GroupBox group;
 
+                void setup(const Visu& data);
+                void update(Visu& data);
+            };
+            LinearPredictions linearPredictions;
 
             void setup(const Visu& visu);
             void update(Visu& visu);
-- 
GitLab