[chronojump] ForceSensor AI table with all info. No more values on graph
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] ForceSensor AI table with all info. No more values on graph
- Date: Wed, 20 Nov 2019 17:56:20 +0000 (UTC)
commit c7ceb7e07165befc68edd140c3453b3256278d72
Author: Xavier de Blas <xaviblas gmail com>
Date: Wed Nov 20 14:39:04 2019 +0100
ForceSensor AI table with all info. No more values on graph
glade/app1.glade | 1392 ++++++++++++++++++++++++-----------------
src/forceSensor.cs | 34 +-
src/gui/forceSensorAnalyze.cs | 331 +++++-----
3 files changed, 1021 insertions(+), 736 deletions(-)
---
diff --git a/glade/app1.glade b/glade/app1.glade
index fc08b700..62404c86 100644
--- a/glade/app1.glade
+++ b/glade/app1.glade
@@ -20993,18 +20993,6 @@ Concentric</property>
<property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
- <widget class="GtkScrolledWindow"
id="scrolledwindow8">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property
name="hscrollbar_policy">automatic</property>
- <property
name="vscrollbar_policy">automatic</property>
- <property name="shadow_type">in</property>
- <child>
- <widget class="GtkViewport"
id="viewport_force_sensor_ai_graph">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="shadow_type">none</property>
- <child>
<widget class="GtkVBox" id="vbox123">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -21022,97 +21010,27 @@ Concentric</property>
</packing>
</child>
<child>
- <widget class="GtkTable"
id="label_force_sensor_ai">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="n_rows">6</property>
- <property name="n_columns">6</property>
- <property name="column_spacing">8</property>
- <property name="row_spacing">4</property>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_force_a">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="width_chars">8</property>
- </widget>
- <packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options"/>
- </packing>
- </child>
- <child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_force_b">
+ <widget class="GtkHBox" id="hbox338">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="width_chars">8</property>
- </widget>
- <packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options"/>
- <property name="y_options"/>
- </packing>
- </child>
+ <property name="spacing">20</property>
<child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_time_a">
+ <widget class="GtkHBox" id="hbox339">
<property name="visible">True</property>
<property name="can_focus">False</property>
- </widget>
- <packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options"/>
- <property name="y_options"/>
- </packing>
- </child>
<child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_time_b">
+ <widget class="GtkLabel" id="label360">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="label">A</property>
</widget>
<packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options"/>
- <property name="y_options"/>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox273">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">4</property>
- <child>
<widget class="GtkHScale"
id="hscale_force_sensor_ai_a">
<property name="visible">True</property>
<property name="can_focus">True</property>
@@ -21124,16 +21042,16 @@ Concentric</property>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
- <property name="position">0</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox277">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">8</property>
+ <property name="spacing">4</property>
<child>
- <widget class="GtkHBox" id="hbox233">
+ <widget class="GtkHBox" id="hbox234">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">4</property>
@@ -21187,7 +21105,7 @@ Concentric</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox234">
+ <widget class="GtkHBox" id="hbox235">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">4</property>
@@ -21244,23 +21162,60 @@ Concentric</property>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">1</property>
+ <property name="position">2</property>
</packing>
</child>
</widget>
<packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="y_options"/>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox283">
+ <widget class="GtkHBox" id="hbox340">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">4</property>
+ <child>
+ <widget class="GtkHBox" id="hbox341">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkCheckButton"
id="checkbutton_force_sensor_ai_b">
+ <property name="width_request">30</property>
+ <property name="visible">True</property>
+ <property name="sensitive">False</property>
+ <property name="can_focus">True</property>
+ <property
name="receives_default">False</property>
+ <property name="xalign">1</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled"
handler="on_checkbutton_force_sensor_ai_b_toggled" swapped="no"/>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label361">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">B</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
<child>
<widget class="GtkHScale"
id="hscale_force_sensor_ai_b">
<property name="can_focus">True</property>
@@ -21272,15 +21227,15 @@ Concentric</property>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
- <property name="position">0</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
<widget class="GtkHBox"
id="hbox_buttons_scale_force_sensor_ai_b">
<property name="can_focus">False</property>
- <property name="spacing">8</property>
+ <property name="spacing">4</property>
<child>
- <widget class="GtkHBox" id="hbox235">
+ <widget class="GtkHBox" id="hbox270">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">4</property>
@@ -21354,8 +21309,8 @@ Concentric</property>
</child>
</widget>
<packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
<property name="position">0</property>
</packing>
</child>
@@ -21382,8 +21337,8 @@ Concentric</property>
</child>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
@@ -21391,173 +21346,105 @@ Concentric</property>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">1</property>
+ <property name="position">2</property>
</packing>
</child>
</widget>
<packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="y_options"/>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_force_average">
+ <widget class="GtkHBox" id="hbox342">
+ <property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="width_chars">8</property>
+ <child>
+ <widget class="GtkLabel" id="label380">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">A+B</property>
</widget>
<packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options"/>
- <property name="y_options"/>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_force_max">
- <property name="can_focus">False</property>
- <property name="width_chars">8</property>
+ <widget class="GtkHScale"
id="hscale_force_sensor_ai_ab">
+ <property name="can_focus">True</property>
+ <property name="adjustment">1 1 300 1 10
0</property>
+ <property name="digits">0</property>
+ <property name="draw_value">False</property>
+ <signal name="value_changed"
handler="on_hscale_force_sensor_ai_ab_value_changed" swapped="no"/>
</widget>
<packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="x_options"/>
- <property name="y_options"/>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_force_diff">
- <property name="can_focus">False</property>
- <property name="width_chars">8</property>
+ <widget class="GtkButton"
id="button_force_sensor_ai_zoom">
+ <property name="label">Zoom [A-B]</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <signal name="clicked"
handler="on_button_force_sensor_ai_zoom_clicked" swapped="no"/>
</widget>
<packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options"/>
- <property name="y_options"/>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
</packing>
</child>
- <child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_average">
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label"
translatable="yes">Average</property>
</widget>
<packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
</packing>
</child>
- <child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_max">
- <property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label"
translatable="yes">Maximum</property>
</widget>
<packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options"/>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="padding">8</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_time_diff">
- <property name="can_focus">False</property>
- <property name="width_chars">8</property>
- </widget>
- <packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options"/>
- <property name="y_options"/>
- </packing>
- </child>
+ <widget class="GtkScrolledWindow"
id="scrolledwindow_force_sensor_ai">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property
name="hscrollbar_policy">automatic</property>
+ <property
name="vscrollbar_policy">never</property>
<child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_rfd_a">
+ <widget class="GtkViewport" id="viewport3">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="width_chars">8</property>
- </widget>
- <packing>
- <property name="left_attach">5</property>
- <property name="right_attach">6</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options"/>
- </packing>
- </child>
<child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_rfd_b">
+ <widget class="GtkHBox" id="hbox233">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="width_chars">8</property>
- </widget>
- <packing>
- <property name="left_attach">5</property>
- <property name="right_attach">6</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options"/>
- </packing>
- </child>
+ <property name="spacing">20</property>
<child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_rfd_diff">
+ <widget class="GtkTable" id="table17">
+ <property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="width_chars">8</property>
- </widget>
- <packing>
- <property name="left_attach">5</property>
- <property name="right_attach">6</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options"/>
- <property name="y_options"/>
- </packing>
+ <property name="n_rows">6</property>
+ <property name="n_columns">8</property>
+ <property name="column_spacing">12</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <placeholder/>
</child>
<child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_rfd_average">
- <property name="can_focus">False</property>
- <property name="width_chars">8</property>
- </widget>
- <packing>
- <property name="left_attach">5</property>
- <property name="right_attach">6</property>
- <property name="top_attach">4</property>
- <property name="bottom_attach">5</property>
- <property name="x_options"/>
- <property name="y_options"/>
- </packing>
+ <placeholder/>
</child>
<child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_rfd_max">
- <property name="can_focus">False</property>
- <property name="width_chars">8</property>
- </widget>
- <packing>
- <property name="left_attach">5</property>
- <property name="right_attach">6</property>
- <property name="top_attach">5</property>
- <property name="bottom_attach">6</property>
- <property name="x_options"/>
- <property name="y_options"/>
- </packing>
+ <placeholder/>
</child>
<child>
<widget class="GtkHBox" id="hbox284">
@@ -21590,8 +21477,8 @@ Concentric</property>
</child>
</widget>
<packing>
- <property name="left_attach">3</property>
- <property name="right_attach">4</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
<property name="x_options"/>
<property name="y_options"/>
</packing>
@@ -21627,9 +21514,10 @@ Concentric</property>
</child>
</widget>
<packing>
- <property name="left_attach">4</property>
- <property name="right_attach">5</property>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
<property name="x_options"/>
+ <property name="y_options"/>
</packing>
</child>
<child>
@@ -21663,23 +21551,21 @@ Concentric</property>
</child>
</widget>
<packing>
- <property name="left_attach">5</property>
- <property name="right_attach">6</property>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
<property name="x_options"/>
+ <property name="y_options"/>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox297">
- <property name="visible">True</property>
+ <widget class="GtkHBox"
id="hbox_force_sensor_ai_position">
<property name="can_focus">False</property>
<property name="spacing">4</property>
<child>
- <widget class="GtkHScale"
id="hscale_force_sensor_ai_ab">
- <property name="can_focus">True</property>
- <property name="adjustment">1 1 300 1 10
0</property>
- <property name="digits">0</property>
- <property name="draw_value">False</property>
- <signal name="value_changed"
handler="on_hscale_force_sensor_ai_ab_value_changed" swapped="no"/>
+ <widget class="GtkLabel" id="label108">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"
translatable="yes">Position</property>
</widget>
<packing>
<property name="expand">True</property>
@@ -21688,53 +21574,87 @@ Concentric</property>
</packing>
</child>
<child>
- <widget class="GtkLabel"
id="label_force_sensor_ai_diff">
+ <widget class="GtkLabel" id="label254">
+ <property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">1</property>
- <property name="label"
translatable="yes">Difference</property>
+ <property name="label">(m)</property>
</widget>
<packing>
- <property name="expand">False</property>
+ <property name="expand">True</property>
<property name="fill">True</property>
- <property name="pack_type">end</property>
<property name="position">1</property>
</packing>
</child>
</widget>
<packing>
- <property name="left_attach">2</property>
- <property name="right_attach">3</property>
- <property name="top_attach">3</property>
- <property name="bottom_attach">4</property>
- <property name="x_options">GTK_FILL</property>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
+ <property name="x_options"/>
<property name="y_options"/>
</packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_force_a">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <widget class="GtkCheckButton"
id="checkbutton_force_sensor_ai_b">
- <property name="width_request">30</property>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_rfd_a">
<property name="visible">True</property>
- <property name="sensitive">False</property>
- <property name="can_focus">True</property>
- <property
name="receives_default">False</property>
- <property name="xalign">1</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled"
handler="on_checkbutton_force_sensor_ai_b_toggled" swapped="no"/>
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_force_b">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
</widget>
<packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label360">
+ <widget class="GtkLabel"
id="label_force_sensor_ai_rfd_b">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_time_a">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label">A</property>
</widget>
<packing>
<property name="left_attach">1</property>
@@ -21742,13 +21662,12 @@ Concentric</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label361">
- <property name="visible">True</property>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_time_b">
<property name="can_focus">False</property>
- <property name="label">B</property>
</widget>
<packing>
<property name="left_attach">1</property>
@@ -21756,440 +21675,723 @@ Concentric</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label380">
- <property name="visible">True</property>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_force_diff">
<property name="can_focus">False</property>
- <property name="label">A+B</property>
+ <property name="width_chars">8</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
</packing>
</child>
<child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_time_diff">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_rfd_diff">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_force_average">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_rfd_average">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_force_max">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">2</property>
+ <property name="right_attach">3</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_rfd_max">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">3</property>
+ <property name="right_attach">4</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_b">
+ <property name="can_focus">False</property>
+ <property name="label">B</property>
+ </widget>
+ <packing>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options"/>
+ <property name="y_options"/>
+ </packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox270">
+ <widget class="GtkLabel" id="label270">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="label">A</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options"/>
+ </packing>
+ </child>
<child>
- <widget class="GtkButton"
id="button_force_sensor_ai_zoom">
- <property name="label">Zoom [A-B]</property>
- <property name="can_focus">True</property>
- <property name="receives_default">True</property>
- <signal name="clicked"
handler="on_button_force_sensor_ai_zoom_clicked" swapped="no"/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_diff">
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label"
translatable="yes">Difference</property>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
</packing>
</child>
+ <child>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_average">
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label"
translatable="yes">Average</property>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
</packing>
</child>
<child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
- </child>
- <child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_max">
+ <property name="can_focus">False</property>
+ <property name="xalign">1</property>
+ <property name="label"
translatable="yes">Maximum</property>
+ </widget>
+ <packing>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
- </child>
+ <widget class="GtkHBox"
id="hbox_force_sensor_ai_speed">
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
<child>
- <placeholder/>
+ <widget class="GtkLabel" id="label266">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"
translatable="yes">Speed</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel" id="label382">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">(m/s)</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
</child>
- <child>
- <placeholder/>
+ </widget>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
+ <property name="x_options"/>
+ <property name="y_options"/>
+ </packing>
</child>
<child>
- <placeholder/>
- </child>
+ <widget class="GtkHBox"
id="hbox_force_sensor_ai_accel">
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
<child>
- <placeholder/>
+ <widget class="GtkLabel" id="label384">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"
translatable="yes">Acceleration</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel" id="label394">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">(m/s^2)</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
</child>
- <child>
- <placeholder/>
+ </widget>
+ <packing>
+ <property name="left_attach">6</property>
+ <property name="right_attach">7</property>
+ <property name="x_options"/>
+ <property name="y_options"/>
+ </packing>
</child>
<child>
- <placeholder/>
- </child>
+ <widget class="GtkHBox"
id="hbox_force_sensor_ai_power">
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
<child>
- <placeholder/>
+ <widget class="GtkLabel" id="label399">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"
translatable="yes">Power</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel" id="label400">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">(W)</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
</child>
- <child>
- <placeholder/>
+ </widget>
+ <packing>
+ <property name="left_attach">7</property>
+ <property name="right_attach">8</property>
+ <property name="x_options"/>
+ <property name="y_options"/>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_position_a">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_position_b">
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_speed_a">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_speed_b">
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_accel_a">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">6</property>
+ <property name="right_attach">7</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_accel_b">
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">6</property>
+ <property name="right_attach">7</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_power_a">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">7</property>
+ <property name="right_attach">8</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_power_b">
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">7</property>
+ <property name="right_attach">8</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_position_diff">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">4</property>
+ <property name="right_attach">5</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
<placeholder/>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_speed_diff">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_accel_diff">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">6</property>
+ <property name="right_attach">7</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_power_diff">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="left_attach">7</property>
+ <property name="right_attach">8</property>
+ <property name="top_attach">3</property>
+ <property name="bottom_attach">4</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
<placeholder/>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_speed_average">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_accel_average">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">6</property>
+ <property name="right_attach">7</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_power_average">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">7</property>
+ <property name="right_attach">8</property>
+ <property name="top_attach">4</property>
+ <property name="bottom_attach">5</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_speed_max">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">5</property>
+ <property name="right_attach">6</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_accel_max">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">6</property>
+ <property name="right_attach">7</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_power_max">
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="left_attach">7</property>
+ <property name="right_attach">8</property>
+ <property name="top_attach">5</property>
+ <property name="bottom_attach">6</property>
+ <property name="x_options"/>
+ <property name="y_options">GTK_SHRINK</property>
+ </packing>
</child>
- <child>
- <placeholder/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <placeholder/>
- </child>
+ <widget class="GtkVBox"
id="vbox_force_sensor_ai_impulse_variability_and_feedback">
+ <property name="can_focus">False</property>
+ <property name="spacing">12</property>
<child>
- <placeholder/>
- </child>
+ <widget class="GtkVBox" id="vbox148">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
- <placeholder/>
- </child>
+ <widget class="GtkHBox" id="hbox273">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_impulse">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"
translatable="yes">Impulse</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel" id="label401">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">(N*s)</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
</child>
- <child>
- <placeholder/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_impulse_values">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
</child>
- <child>
- <placeholder/>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <placeholder/>
- </child>
+ <widget class="GtkVBox" id="vbox149">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
- <placeholder/>
- </child>
+ <widget class="GtkHBox" id="hbox283">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_variability">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"
translatable="yes">Variability</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel" id="label411">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">(N)</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
</child>
- <child>
- <placeholder/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_variability_values">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
</child>
- <child>
- <placeholder/>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
</child>
<child>
- <placeholder/>
- </child>
+ <widget class="GtkVBox"
id="vbox_force_sensor_ai_feedback">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
<child>
- <placeholder/>
- </child>
+ <widget class="GtkHBox" id="hbox297">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_feedback">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"
translatable="yes">Feedback</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel" id="label412">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">(N)</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
</child>
- <child>
- <placeholder/>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
</child>
<child>
- <placeholder/>
+ <widget class="GtkLabel"
id="label_force_sensor_ai_feedback_values">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="width_chars">8</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
</child>
- <child>
- <placeholder/>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
</child>
</widget>
<packing>
@@ -22204,6 +22406,13 @@ Concentric</property>
</child>
</widget>
<packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
<property name="expand">True</property>
<property name="fill">True</property>
<property name="position">0</property>
@@ -24240,18 +24449,6 @@ Concentric</property>
<property name="can_focus">False</property>
<property name="spacing">6</property>
<child>
- <widget class="GtkLabel"
id="label_video_encoder_tests_will_be_filmed">
- <property name="can_focus">False</property>
- <property name="label" translatable="yes">Tests
will be filmed</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="pack_type">end</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
<widget class="GtkHBox"
id="hbox_video_encoder_capturing">
<property name="can_focus">False</property>
<property name="spacing">4</property>
@@ -24288,6 +24485,18 @@ Concentric</property>
</packing>
</child>
<child>
+ <widget class="GtkLabel"
id="label_video_encoder_tests_will_be_filmed">
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Tests
will be filmed</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
<widget class="GtkHBox"
id="hbox_video_encoder_no_capturing">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -31289,6 +31498,21 @@ then click this button.</property>
<child>
<placeholder/>
</child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
</widget>
<packing>
<property name="expand">False</property>
diff --git a/src/forceSensor.cs b/src/forceSensor.cs
index c3a515d6..920e52b6 100644
--- a/src/forceSensor.cs
+++ b/src/forceSensor.cs
@@ -1300,6 +1300,12 @@ public class ForceSensorAnalyzeInstant
{
public double ForceAVG;
public double ForceMAX;
+ public double SpeedAVG;
+ public double SpeedMAX;
+ public double AccelAVG;
+ public double AccelMAX;
+ public double PowerAVG;
+ public double PowerMAX;
//for elastic
public bool CalculedElasticPSAP;
@@ -1404,7 +1410,7 @@ public class ForceSensorAnalyzeInstant
}
times.RemoveAt(0); //always (not-elastic and elastic) 1st has to be removed, because time is
not ok there.
- if(fsd.CalculedElasticPSAP)
+ if(CalculedElasticPSAP)
times = times.GetRange(fsd.RemoveNValues -1, times.Count -2*fsd.RemoveNValues);
int i = 0;
foreach(int time in times)
@@ -1496,9 +1502,35 @@ public class ForceSensorAnalyzeInstant
fscAIPoints.GetAverageAndMaxForce(countA, countB, out ForceAVG, out ForceMAX);
+ if(CalculedElasticPSAP)
+ {
+ calculeElasticPSAPAveragesAndMax(countA, countB, Speed_l, out SpeedAVG, out SpeedMAX);
+ calculeElasticPSAPAveragesAndMax(countA, countB, Accel_l, out AccelAVG, out AccelMAX);
+ calculeElasticPSAPAveragesAndMax(countA, countB, Power_l, out PowerAVG, out PowerMAX);
+ }
+
return true;
}
+ private void calculeElasticPSAPAveragesAndMax(int countA, int countB, List<double> list, out double
avg, out double max)
+ {
+ if(countA == countB) {
+ avg = list[countA];
+ max = list[countA];
+ return;
+ }
+
+ double sum = 0;
+ max = 0;
+ for(int i = countA; i <= countB; i ++) {
+ sum += list[i];
+ if(list[i] > max)
+ max = list[i];
+ }
+
+ avg = sum / ((countB - countA) +1);
+ }
+
public double CalculateRFD(int countA, int countB)
{
return fscAIPoints.GetRFD(countA, countB);
diff --git a/src/gui/forceSensorAnalyze.cs b/src/gui/forceSensorAnalyze.cs
index af43dc09..c50e29e9 100644
--- a/src/gui/forceSensorAnalyze.cs
+++ b/src/gui/forceSensorAnalyze.cs
@@ -39,6 +39,7 @@ public partial class ChronoJumpWindow
[Widget] Gtk.Viewport viewport_force_sensor_graph;
[Widget] Gtk.Button button_force_sensor_image_save_rfd_auto;
[Widget] Gtk.Button button_force_sensor_image_save_rfd_manual;
+ [Widget] Gtk.ScrolledWindow scrolledwindow_force_sensor_ai;
[Widget] Gtk.Button button_force_sensor_analyze_AB_save;
[Widget] Gtk.Button button_force_sensor_ai_zoom;
@@ -116,6 +117,17 @@ public partial class ChronoJumpWindow
[Widget] Gtk.Button button_hscale_force_sensor_ai_b_post;
[Widget] Gtk.Button button_hscale_force_sensor_ai_b_last;
+ [Widget] Gtk.HBox hbox_force_sensor_ai_position;
+ [Widget] Gtk.HBox hbox_force_sensor_ai_speed;
+ [Widget] Gtk.HBox hbox_force_sensor_ai_accel;
+ [Widget] Gtk.HBox hbox_force_sensor_ai_power;
+
+ [Widget] Gtk.VBox vbox_force_sensor_ai_impulse_variability_and_feedback;
+ [Widget] Gtk.VBox vbox_force_sensor_ai_feedback;
+ [Widget] Gtk.Label label_force_sensor_ai_impulse_values;
+ [Widget] Gtk.Label label_force_sensor_ai_variability_values;
+ [Widget] Gtk.Label label_force_sensor_ai_feedback_values;
+
/*
* analyze options -------------------------->
*/
@@ -480,7 +492,26 @@ public partial class ChronoJumpWindow
[Widget] Gtk.Label label_force_sensor_ai_time_a;
[Widget] Gtk.Label label_force_sensor_ai_force_a;
[Widget] Gtk.Label label_force_sensor_ai_rfd_a;
+ [Widget] Gtk.Label label_force_sensor_ai_position_a;
+ [Widget] Gtk.Label label_force_sensor_ai_speed_a;
+ [Widget] Gtk.Label label_force_sensor_ai_accel_a;
+ [Widget] Gtk.Label label_force_sensor_ai_power_a;
[Widget] Gtk.HBox hbox_buttons_scale_force_sensor_ai_b;
+ [Widget] Gtk.Label label_force_sensor_ai_b;
+ [Widget] Gtk.Label label_force_sensor_ai_position_b;
+ [Widget] Gtk.Label label_force_sensor_ai_position_diff;
+ [Widget] Gtk.Label label_force_sensor_ai_speed_b;
+ [Widget] Gtk.Label label_force_sensor_ai_speed_diff;
+ [Widget] Gtk.Label label_force_sensor_ai_speed_average;
+ [Widget] Gtk.Label label_force_sensor_ai_speed_max;
+ [Widget] Gtk.Label label_force_sensor_ai_accel_b;
+ [Widget] Gtk.Label label_force_sensor_ai_accel_diff;
+ [Widget] Gtk.Label label_force_sensor_ai_accel_average;
+ [Widget] Gtk.Label label_force_sensor_ai_accel_max;
+ [Widget] Gtk.Label label_force_sensor_ai_power_b;
+ [Widget] Gtk.Label label_force_sensor_ai_power_diff;
+ [Widget] Gtk.Label label_force_sensor_ai_power_average;
+ [Widget] Gtk.Label label_force_sensor_ai_power_max;
[Widget] Gtk.Label label_force_sensor_ai_diff;
[Widget] Gtk.Label label_force_sensor_ai_average;
[Widget] Gtk.Label label_force_sensor_ai_max;
@@ -581,6 +612,8 @@ public partial class ChronoJumpWindow
//to update values
on_hscale_force_sensor_ai_a_value_changed (new object (), new EventArgs ());
+
+ manage_force_sensor_ai_table_visibilities();
}
Gdk.Colormap colormapForceAI;// = Gdk.Colormap.System;
@@ -835,8 +868,6 @@ public partial class ChronoJumpWindow
if(checkbutton_force_sensor_ai_b.Active)
button_force_sensor_analyze_AB_save.Visible = true;
-// forcePaintHVLines(ForceSensorGraphs.ANALYSIS_GENERAL, forceSensorValues.ForceMax,
forceSensorValues.ForceMin, forceSensorValues.TimeLast);
-
//draw horizontal rectangle of feedback
if(check_force_sensor_capture_feedback.Active)
forceSensorSignalPlotFeedbackRectangle(fsAI.FscAIPoints, force_sensor_ai_drawingarea,
force_sensor_ai_pixmap, pen_yellow_light_force_ai);
@@ -901,78 +932,23 @@ public partial class ChronoJumpWindow
layout_force_ai_text_big);
}
- // 6) if only A calculate RFD and exit
- if(! checkbutton_force_sensor_ai_b.Active)
+ if(fsAI.CalculedElasticPSAP)
{
- //calculate the instantaneous RFD of A and return
- int instant = Convert.ToInt32(hscale_force_sensor_ai_a.Value);
- if(instant > 0 && instant < fsAI.GetLength() -1)
- {
- int verticalPos = -20;
- if(fsAI.CalculedElasticPSAP)
- verticalPos = -60;
-
- layout_force_ai_text.SetMarkup(string.Format("RFD: {0:0.#} N/s",
- Math.Round(fsAI.CalculateRFD(instant -1, instant +1),
1) ));
- textWidth = 1;
- textHeight = 1;
- layout_force_ai_text.GetPixelSize(out textWidth, out textHeight);
- force_sensor_ai_pixmap.DrawLayout (pen_blue_force_ai,
- allocation.Width -textWidth -10, allocation.Height/2 +
verticalPos,
- layout_force_ai_text);
-
- //showing on elastic: position, speed, accel, power (but not on the beginning
and end)
- //if(fsAI.CalculedElasticPSAP && (instant > 2 && instant < fsAI.GetLength()
-3))
- if(fsAI.CalculedElasticPSAP)
- {
- //position
- layout_force_ai_text.SetMarkup(string.Format("Position: {0:0.###} m",
- Math.Round(fsAI.Position_l[instant], 3)));
- textWidth = 1;
- textHeight = 1;
- layout_force_ai_text.GetPixelSize(out textWidth, out textHeight);
- verticalPos += 40;
- force_sensor_ai_pixmap.DrawLayout (pen_blue_force_ai,
- allocation.Width -textWidth -10, allocation.Height/2
+ verticalPos,
- layout_force_ai_text);
-
- //speed
- layout_force_ai_text.SetMarkup(string.Format("Speed: {0:0.###} m/s",
- Math.Round(fsAI.Speed_l[instant], 3)));
- textWidth = 1;
- textHeight = 1;
- layout_force_ai_text.GetPixelSize(out textWidth, out textHeight);
- verticalPos += 20;
- force_sensor_ai_pixmap.DrawLayout (pen_blue_force_ai,
- allocation.Width -textWidth -10, allocation.Height/2
+ verticalPos,
- layout_force_ai_text);
-
- //accel
- layout_force_ai_text.SetMarkup(string.Format("Accel: {0:0.###} m/s^2",
- Math.Round(fsAI.Accel_l[instant], 3)));
- textWidth = 1;
- textHeight = 1;
- verticalPos += 20;
- layout_force_ai_text.GetPixelSize(out textWidth, out textHeight);
- force_sensor_ai_pixmap.DrawLayout (pen_blue_force_ai,
- allocation.Width -textWidth -10, allocation.Height/2
+ verticalPos,
- layout_force_ai_text);
-
- //power
- layout_force_ai_text.SetMarkup(string.Format("Power: {0:0.###} W",
- Math.Round(fsAI.Power_l[instant], 3)));
- textWidth = 1;
- textHeight = 1;
- verticalPos += 20;
- layout_force_ai_text.GetPixelSize(out textWidth, out textHeight);
- force_sensor_ai_pixmap.DrawLayout (pen_blue_force_ai,
- allocation.Width -textWidth -10, allocation.Height/2
+ verticalPos,
- layout_force_ai_text);
- }
- }
- return;
+ hbox_force_sensor_ai_position.Visible = true;
+ hbox_force_sensor_ai_speed.Visible = true;
+ hbox_force_sensor_ai_accel.Visible = true;
+ hbox_force_sensor_ai_power.Visible = true;
+ } else {
+ hbox_force_sensor_ai_position.Visible = false;
+ hbox_force_sensor_ai_speed.Visible = false;
+ hbox_force_sensor_ai_accel.Visible = false;
+ hbox_force_sensor_ai_power.Visible = false;
}
+ // 6) if only A calculate exit
+ if(! checkbutton_force_sensor_ai_b.Active)
+ return;
+
/*
* 7) Invert AB if needed to paint correctly blue and red lines
* making it work also when B is higher than A
@@ -996,37 +972,14 @@ public partial class ChronoJumpWindow
xposA, fsAI.GetPxAtForce(forceA),
xposB, fsAI.GetPxAtForce(forceB));
- layout_force_ai_text.SetMarkup(string.Format("A-B statistics"));
- textWidth = 1;
- textHeight = 1;
- layout_force_ai_text.GetPixelSize(out textWidth, out textHeight);
- force_sensor_ai_pixmap.DrawLayout (pen_black_force_ai,
- allocation.Width -textWidth -10, allocation.Height/2 -60,
- layout_force_ai_text);
-
- layout_force_ai_text.SetMarkup(string.Format("RFD AVG: {0} N/s",
label_force_sensor_ai_rfd_average.Text));
- textWidth = 1;
- textHeight = 1;
- layout_force_ai_text.GetPixelSize(out textWidth, out textHeight);
- force_sensor_ai_pixmap.DrawLayout (pen_blue_force_ai,
- allocation.Width -textWidth -10, allocation.Height/2 -40,
- layout_force_ai_text);
-
// 9) calculate and paint max RFD (circle and line)
//value of count that produce the max RFD (between the previous and next value)
if(hscaleLower <= 0 || hscaleHigher >= fsAI.GetLength() -1)
return;
- layout_force_ai_text.SetMarkup(string.Format("RFD Max: {0} N/s",
- Math.Round(fsAI.LastRFDMax, 1) ));
int countRFDMax = fsAI.LastRFDMaxCount;
- layout_force_ai_text.GetPixelSize(out textWidth, out textHeight);
- force_sensor_ai_pixmap.DrawLayout (pen_red_force_ai,
- allocation.Width -textWidth -10, allocation.Height/2 -20,
- layout_force_ai_text);
-
int rfdX = fsAI.GetXFromSampleCount(countRFDMax, fsAI.GetLength());
int rfdY = fsAI.GetPxAtForce(fsAI.GetForceAtCount(countRFDMax));
@@ -1036,15 +989,6 @@ public partial class ChronoJumpWindow
12, 12, 90 * 64, 360 * 64);
// plot tangent line
- /*
- * This method is not working
- int xAtBottom = fsAI.CalculateXOfTangentLine(rfdX, rfdY,
fsAI.GetForceAtCount(countRFDMax), allocation.Height, allocation.Height);
- int xAtTop = fsAI.CalculateXOfTangentLine(rfdX, rfdY,
fsAI.GetForceAtCount(countRFDMax), 0, allocation.Height);
- force_sensor_ai_pixmap.DrawLine(pen_red_force_ai,
- xAtBottom, allocation.Height,
- xAtTop, 0);
- */
-
if(countRFDMax -1 >= 0 && countRFDMax +1 < fsAI.GetLength() -1)
{
//calculate line
@@ -1056,45 +1000,6 @@ public partial class ChronoJumpWindow
if(debug)
plotRFDLineDebugConstruction(countRFDMax);
}
-
-
- // 10) calculate and paint impulse
- layout_force_ai_text.SetMarkup(string.Format("Impulse: {0:0.#} N*s",
- Math.Round(fsAI.CalculateImpulse(
- hscaleLower, hscaleHigher), 1) ));
-
- layout_force_ai_text.GetPixelSize(out textWidth, out textHeight);
- force_sensor_ai_pixmap.DrawLayout (pen_black_force_ai,
- allocation.Width -textWidth -10, allocation.Height/2,
- layout_force_ai_text);
-
- // 11) calculate and paint variability
- double variability = 0;
- double feedbackDiff = 0;
- int feedbackF = Convert.ToInt32(spin_force_sensor_capture_feedback_at.Value);
-
- fsAI.CalculateVariabilityAndAccuracy(hscaleLower, hscaleHigher, feedbackF, out
variability, out feedbackDiff);
-
- layout_force_ai_text.SetMarkup(string.Format("Variability: {0:0.###} N",
- Math.Round(variability, 3) ));
-
- layout_force_ai_text.GetPixelSize(out textWidth, out textHeight);
- force_sensor_ai_pixmap.DrawLayout (pen_black_force_ai,
- allocation.Width -textWidth -10, allocation.Height/2 + 20,
- layout_force_ai_text);
-
- // 12) calculate and paint Accuracy (Feedback difference)
- if(check_force_sensor_capture_feedback.Active && feedbackF > 0)
- {
- layout_force_ai_text.SetMarkup(string.Format("Error (Feedback): {0:0.###} N",
- Math.Round(feedbackDiff, 3) ));
-
- layout_force_ai_text.GetPixelSize(out textWidth, out textHeight);
- force_sensor_ai_pixmap.DrawLayout (pen_black_force_ai,
- allocation.Width -textWidth -10, allocation.Height/2 + 40,
- layout_force_ai_text);
- }
-
}
LogB.Information("forceSensorAnalyzeManualGraphDo() END");
}
@@ -1135,6 +1040,19 @@ public partial class ChronoJumpWindow
label_force_sensor_ai_time_a.Text = Math.Round(fsAI.GetTimeMS(count), 1).ToString();
label_force_sensor_ai_force_a.Text = Math.Round(fsAI.GetForceAtCount(count), 1).ToString();
+ if(fsAI.CalculedElasticPSAP)
+ {
+ label_force_sensor_ai_position_a.Text = Math.Round(fsAI.Position_l[count],
3).ToString();
+ label_force_sensor_ai_speed_a.Text = Math.Round(fsAI.Speed_l[count], 3).ToString();
+ label_force_sensor_ai_accel_a.Text = Math.Round(fsAI.Accel_l[count], 3).ToString();
+ label_force_sensor_ai_power_a.Text = Math.Round(fsAI.Power_l[count], 3).ToString();
+ } else {
+ label_force_sensor_ai_position_a.Text = "";
+ label_force_sensor_ai_speed_a.Text = "";
+ label_force_sensor_ai_accel_a.Text = "";
+ label_force_sensor_ai_power_a.Text = "";
+ }
+
if(count > 0 && count < fsAI.GetLength() -1)
label_force_sensor_ai_rfd_a.Text = Math.Round(fsAI.CalculateRFD(count -1, count +1),
1).ToString();
else
@@ -1165,6 +1083,19 @@ public partial class ChronoJumpWindow
label_force_sensor_ai_time_b.Text = Math.Round(fsAI.GetTimeMS(count), 1).ToString();
label_force_sensor_ai_force_b.Text = Math.Round(fsAI.GetForceAtCount(count), 1).ToString();
+ if(fsAI.CalculedElasticPSAP)
+ {
+ label_force_sensor_ai_position_b.Text = Math.Round(fsAI.Position_l[count],
3).ToString();
+ label_force_sensor_ai_speed_b.Text = Math.Round(fsAI.Speed_l[count], 3).ToString();
+ label_force_sensor_ai_accel_b.Text = Math.Round(fsAI.Accel_l[count], 3).ToString();
+ label_force_sensor_ai_power_b.Text = Math.Round(fsAI.Power_l[count], 3).ToString();
+ } else {
+ label_force_sensor_ai_position_b.Text = "";
+ label_force_sensor_ai_speed_b.Text = "";
+ label_force_sensor_ai_accel_b.Text = "";
+ label_force_sensor_ai_power_b.Text = "";
+ }
+
if(count > 0 && count < fsAI.GetLength() -1)
label_force_sensor_ai_rfd_b.Text = Math.Round(fsAI.CalculateRFD(count -1, count +1),
1).ToString();
else
@@ -1267,12 +1198,31 @@ public partial class ChronoJumpWindow
int count = Convert.ToInt32(hscale_force_sensor_ai_b.Value);
label_force_sensor_ai_time_b.Text = Math.Round(fsAI.GetTimeMS(count), 1).ToString();
label_force_sensor_ai_force_b.Text = Math.Round(fsAI.GetForceAtCount(count), 1).ToString();
+ if(fsAI.CalculedElasticPSAP)
+ label_force_sensor_ai_position_b.Text = Math.Round(fsAI.Position_l[count],
3).ToString();
+ manage_force_sensor_ai_table_visibilities();
+
+ if(fsAI != null)
+ force_sensor_analyze_instant_calculate_params();
+
+ forceSensorAIChanged = true; //to actually plot
+
+ //this two help to make the table shrink when B is unchecked
+ scrolledwindow_force_sensor_ai.Hide();
+ scrolledwindow_force_sensor_ai.Show();
+
+ force_sensor_ai_drawingarea.QueueDraw(); // -- refresh
+ }
+
+ private void manage_force_sensor_ai_table_visibilities()
+ {
bool visible = checkbutton_force_sensor_ai_b.Active;
hscale_force_sensor_ai_b.Visible = visible;
hbox_buttons_scale_force_sensor_ai_b.Visible = visible;
hscale_force_sensor_ai_ab.Visible = visible;
+ label_force_sensor_ai_b.Visible = visible;
label_force_sensor_ai_diff.Visible = visible;
label_force_sensor_ai_average.Visible = visible;
label_force_sensor_ai_max.Visible = visible;
@@ -1289,18 +1239,31 @@ public partial class ChronoJumpWindow
label_force_sensor_ai_rfd_average.Visible = visible;
label_force_sensor_ai_rfd_max.Visible = visible;
+ bool visibleElastic = (visible && fsAI.CalculedElasticPSAP);
+
+ label_force_sensor_ai_position_b.Visible = visibleElastic;
+ label_force_sensor_ai_position_diff.Visible = visibleElastic;
+ label_force_sensor_ai_speed_b.Visible = visibleElastic;
+ label_force_sensor_ai_speed_diff.Visible = visibleElastic;
+ label_force_sensor_ai_speed_average.Visible = visibleElastic;
+ label_force_sensor_ai_speed_max.Visible = visibleElastic;
+
+ label_force_sensor_ai_accel_b.Visible = visibleElastic;
+ label_force_sensor_ai_accel_diff.Visible = visibleElastic;
+ label_force_sensor_ai_accel_average.Visible = visibleElastic;
+ label_force_sensor_ai_accel_max.Visible = visibleElastic;
+
+ label_force_sensor_ai_power_b.Visible = visibleElastic;
+ label_force_sensor_ai_power_diff.Visible = visibleElastic;
+ label_force_sensor_ai_power_average.Visible = visibleElastic;
+ label_force_sensor_ai_power_max.Visible = visibleElastic;
+
button_force_sensor_ai_zoom.Visible = visible;
if(visible && canDoForceSensorAnalyzeAB())
button_force_sensor_analyze_AB_save.Visible = true;
else
button_force_sensor_analyze_AB_save.Visible = false;
-
- if(fsAI != null)
- force_sensor_analyze_instant_calculate_params();
-
- forceSensorAIChanged = true; //to actually plot
- force_sensor_ai_drawingarea.QueueDraw(); // -- refresh
}
private void force_sensor_analyze_instant_calculate_params()
@@ -1320,8 +1283,48 @@ public partial class ChronoJumpWindow
if(success) {
label_force_sensor_ai_time_diff.Text = Math.Round(timeB - timeA, 1).ToString();
label_force_sensor_ai_force_diff.Text = Math.Round(forceB - forceA, 1).ToString();
- label_force_sensor_ai_force_average.Text = Math.Round(fsAI.ForceAVG, 1).ToString();
- label_force_sensor_ai_force_max.Text = Math.Round(fsAI.ForceMAX, 1).ToString();
+
+ if(countA != countB) {
+ label_force_sensor_ai_force_average.Text = Math.Round(fsAI.ForceAVG,
1).ToString();
+ label_force_sensor_ai_force_max.Text = Math.Round(fsAI.ForceMAX,
1).ToString();
+ } else {
+ label_force_sensor_ai_force_average.Text = "";
+ label_force_sensor_ai_force_max.Text = "";
+ }
+ }
+
+ if(fsAI.CalculedElasticPSAP && success)
+ {
+ double positionA = fsAI.Position_l[countA];
+ double positionB = fsAI.Position_l[countB];
+ label_force_sensor_ai_position_diff.Text = Math.Round(positionB - positionA,
3).ToString();
+
+ double speedA = fsAI.Speed_l[countA];
+ double speedB = fsAI.Speed_l[countB];
+ label_force_sensor_ai_speed_diff.Text = Math.Round(speedB - speedA, 3).ToString();
+ if(countA != countB) {
+ label_force_sensor_ai_speed_average.Text = Math.Round(fsAI.SpeedAVG,
3).ToString();
+ label_force_sensor_ai_speed_max.Text = Math.Round(fsAI.SpeedMAX,
3).ToString();
+ label_force_sensor_ai_accel_average.Text = Math.Round(fsAI.AccelAVG,
3).ToString();
+ label_force_sensor_ai_accel_max.Text = Math.Round(fsAI.AccelMAX,
3).ToString();
+ label_force_sensor_ai_power_average.Text = Math.Round(fsAI.PowerAVG,
3).ToString();
+ label_force_sensor_ai_power_max.Text = Math.Round(fsAI.PowerMAX,
3).ToString();
+ } else {
+ label_force_sensor_ai_speed_average.Text = "";
+ label_force_sensor_ai_speed_max.Text = "";
+ label_force_sensor_ai_accel_average.Text = "";
+ label_force_sensor_ai_accel_max.Text = "";
+ label_force_sensor_ai_power_average.Text = "";
+ label_force_sensor_ai_power_max.Text = "";
+ }
+
+ double accelA = fsAI.Accel_l[countA];
+ double accelB = fsAI.Accel_l[countB];
+ label_force_sensor_ai_accel_diff.Text = Math.Round(accelB - accelA, 3).ToString();
+
+ double powerA = fsAI.Power_l[countA];
+ double powerB = fsAI.Power_l[countB];
+ label_force_sensor_ai_power_diff.Text = Math.Round(powerB - powerA, 3).ToString();
}
double rfdA = 0;
@@ -1374,10 +1377,36 @@ public partial class ChronoJumpWindow
label_force_sensor_ai_rfd_max.Text = Math.Round(fsAI.LastRFDMax, 1).ToString();
} else {
- label_force_sensor_ai_rfd_diff.Text = "";
+ label_force_sensor_ai_rfd_diff.Text = "0";
label_force_sensor_ai_rfd_average.Text = "";
label_force_sensor_ai_rfd_max.Text = "";
}
+
+ vbox_force_sensor_ai_impulse_variability_and_feedback.Visible = (countA != countB);
+
+ if(countA != countB)
+ {
+ // 10) calculate impulse
+ label_force_sensor_ai_impulse_values.Text = Math.Round(fsAI.CalculateImpulse(
+ countA, countB), 1).ToString();
+
+ // 11) calculate variability
+ double variability = 0;
+ double feedbackDiff = 0;
+ int feedbackF = Convert.ToInt32(spin_force_sensor_capture_feedback_at.Value);
+
+ fsAI.CalculateVariabilityAndAccuracy(countA, countB, feedbackF, out variability, out
feedbackDiff);
+
+ label_force_sensor_ai_variability_values.Text = Math.Round(variability, 3).ToString();
+
+ // 12) calculate Accuracy (Feedback difference)
+ if(check_force_sensor_capture_feedback.Active && feedbackF > 0)
+ {
+ label_force_sensor_ai_feedback_values.Text = Math.Round(feedbackDiff,
3).ToString();
+ vbox_force_sensor_ai_feedback.Visible = true;
+ } else
+ vbox_force_sensor_ai_feedback.Visible = false;
+ }
}
private bool canDoForceSensorAnalyzeAB()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]