[chronojump] DB: 2.19 encoderExercise with type (encoderGI). SQL, GUI, code. encoderExercises are separated by mo
- From: Xavier de Blas <xaviblas src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [chronojump] DB: 2.19 encoderExercise with type (encoderGI). SQL, GUI, code. encoderExercises are separated by mo
- Date: Mon, 19 Apr 2021 14:55:21 +0000 (UTC)
commit b438f4873c8cd6fc4bce7e96d38df017f2502675
Author: Xavier de Blas <xaviblas gmail com>
Date: Mon Apr 19 16:50:37 2021 +0200
DB: 2.19 encoderExercise with type (encoderGI). SQL, GUI, code. encoderExercises are separated by mode.
glade/app1.glade | 1005 ++++++++++++++++++++++++++++++++++----------
src/encoder.cs | 10 +-
src/gui/app1/chronojump.cs | 14 +-
src/gui/app1/encoder.cs | 279 ++++++------
src/gui/app1/icons.cs | 6 +
src/gui/networks.cs | 10 +-
src/json/compujump.cs | 9 +-
src/sqlite/encoder.cs | 60 ++-
src/sqlite/main.cs | 27 +-
src/sqlite/preferences.cs | 2 +-
10 files changed, 1033 insertions(+), 389 deletions(-)
---
diff --git a/glade/app1.glade b/glade/app1.glade
index a8f7a73f..40cec88f 100644
--- a/glade/app1.glade
+++ b/glade/app1.glade
@@ -25077,6 +25077,21 @@ Concentric</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>
@@ -31244,18 +31259,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>
@@ -31292,6 +31295,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>
@@ -32777,24 +32792,136 @@ then click this button.</property>
<property name="border_width">4</property>
<property name="shadow_type">none</property>
<child>
- <widget class="GtkTable" id="table1">
+ <widget class="GtkVBox" id="vbox8">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="n_rows">3</property>
+ <property name="spacing">16</property>
+ <child>
+ <widget class="GtkTable" id="table21">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">2</property>
<property name="n_columns">2</property>
<property name="column_spacing">20</property>
<property name="row_spacing">16</property>
<child>
- <widget class="GtkVBox" id="vbox8">
+ <widget class="GtkHBox"
id="hbox_encoder_exercise_encoder">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">16</property>
- <property name="homogeneous">True</property>
+ <property name="spacing">8</property>
+ <child>
+ <widget class="GtkButton"
id="button_encoder_select">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="can_default">True</property>
+ <property name="receives_default">True</property>
+ <property name="relief">half</property>
+ <property name="use_underline">True</property>
+ <property name="xalign">0</property>
+ <signal name="clicked"
handler="on_button_encoder_select_clicked" swapped="no"/>
+ <child>
+ <widget class="GtkHBox" id="hbox36">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <widget class="GtkImage"
id="image_encoder_configuration">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property
name="stock">gtk-missing-image</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel"
id="label_button_encoder_select">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"
translatable="yes">Configure gravitatory encoder</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox121">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkImage"
id="image_encoder_selected_type">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip"
translatable="yes">Extra mass</property>
+ <property
name="stock">gtk-missing-image</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel"
id="label_encoder_selected">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ </widget>
+ <packing>
+ <property name="expand">False</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">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel"
id="label_encoder_exercise_encoder">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label"
translatable="yes">Encoder</property>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ </packing>
+ </child>
<child>
<widget class="GtkHBox" id="hbox86">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">20</property>
+ <property name="spacing">30</property>
+ <child>
+ <widget class="GtkHBox"
id="hbox_encoder_exercise_select">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">25</property>
<child>
<widget class="GtkHBox"
id="hbox_combo_encoder_exercise_capture">
<property name="visible">True</property>
@@ -32810,7 +32937,7 @@ then click this button.</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox229">
+ <widget class="GtkHBox" id="hbox332">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">8</property>
@@ -32888,38 +33015,36 @@ then click this button.</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>
</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>
<child>
- <widget class="GtkHBox" id="hbox123">
- <property name="visible">True</property>
+ <widget class="GtkHBox"
id="hbox_encoder_exercise_actions">
<property name="can_focus">False</property>
- <property name="spacing">8</property>
+ <property name="spacing">20</property>
<child>
- <widget class="GtkRadioButton"
id="radio_encoder_eccon_concentric">
+ <widget class="GtkButton"
id="button_encoder_exercise_actions_cancel">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property
name="receives_default">False</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
- <signal name="toggled"
handler="on_radio_encoder_eccon_toggled" swapped="no"/>
+ <property name="receives_default">True</property>
+ <signal name="clicked"
handler="on_button_encoder_exercise_actions_cancel_clicked" swapped="no"/>
+ <accelerator key="Escape" signal="clicked"/>
<child>
- <widget class="GtkHBox" id="hbox127">
+ <widget class="GtkHBox" id="hbox229">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">4</property>
<child>
- <widget class="GtkImage"
id="image_encoder_eccon_concentric">
+ <widget class="GtkImage"
id="image_button_encoder_exercise_actions_cancel">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property
name="stock">gtk-missing-image</property>
@@ -32931,10 +33056,10 @@ then click this button.</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label66">
+ <widget class="GtkLabel" id="label632">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label"
translatable="yes">Concentric</property>
+ <property name="label"
translatable="yes">Cancel</property>
</widget>
<packing>
<property name="expand">True</property>
@@ -32952,20 +33077,22 @@ then click this button.</property>
</packing>
</child>
<child>
- <widget class="GtkRadioButton"
id="radio_encoder_eccon_eccentric_concentric">
+ <widget class="GtkHBox" id="hbox511">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkButton"
id="button_encoder_exercise_actions_edit_do">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property
name="receives_default">False</property>
- <property name="draw_indicator">False</property>
- <property
name="group">radio_encoder_eccon_concentric</property>
- <signal name="toggled"
handler="on_radio_encoder_eccon_toggled" swapped="no"/>
+ <property name="receives_default">True</property>
+ <signal name="clicked"
handler="on_button_encoder_exercise_actions_edit_do_clicked" swapped="no"/>
<child>
- <widget class="GtkHBox" id="hbox130">
+ <widget class="GtkHBox" id="hbox512">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">4</property>
<child>
- <widget class="GtkImage"
id="image_encoder_eccon_eccentric_concentric">
+ <widget class="GtkImage"
id="image_button_encoder_exercise_actions_edit_do">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property
name="stock">gtk-missing-image</property>
@@ -32977,10 +33104,10 @@ then click this button.</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label78">
+ <widget class="GtkLabel" id="label633">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label"
translatable="yes">Eccentric-Concentric</property>
+ <property name="label"
translatable="yes">Save</property>
</widget>
<packing>
<property name="expand">True</property>
@@ -32992,38 +33119,24 @@ then click this button.</property>
</child>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
- </packing>
- </child>
- </widget>
- <packing>
<property name="expand">True</property>
<property name="fill">True</property>
- <property name="position">1</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox190">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">8</property>
- <child>
- <widget class="GtkRadioButton"
id="radio_encoder_laterality_both">
+ <widget class="GtkButton"
id="button_encoder_exercise_actions_add_do">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property
name="receives_default">False</property>
- <property name="active">True</property>
- <property name="draw_indicator">False</property>
- <signal name="toggled"
handler="on_radio_encoder_laterality_toggled" swapped="no"/>
+ <property name="receives_default">True</property>
+ <signal name="clicked"
handler="on_button_encoder_exercise_actions_add_do_clicked" swapped="no"/>
<child>
- <widget class="GtkHBox" id="hbox208">
+ <widget class="GtkHBox" id="hbox513">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">4</property>
<child>
- <widget class="GtkImage"
id="image_encoder_laterality_both">
+ <widget class="GtkImage"
id="image_button_encoder_exercise_actions_add_do">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property
name="stock">gtk-missing-image</property>
@@ -33035,10 +33148,10 @@ then click this button.</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label81">
+ <widget class="GtkLabel" id="label634">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="label"
translatable="yes">Both</property>
+ <property name="label"
translatable="yes">Add</property>
</widget>
<packing>
<property name="expand">True</property>
@@ -33050,38 +33163,255 @@ then click this button.</property>
</child>
</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>
+ <property name="position">1</property>
</packing>
</child>
- <child>
- <widget class="GtkRadioButton"
id="radio_encoder_laterality_l">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property
name="receives_default">False</property>
- <property name="draw_indicator">False</property>
- <property
name="group">radio_encoder_laterality_both</property>
- <signal name="toggled"
handler="on_radio_encoder_laterality_toggled" swapped="no"/>
- <child>
- <widget class="GtkHBox" id="hbox211">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">4</property>
- <child>
- <widget class="GtkImage"
id="image_encoder_laterality_l">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property
name="stock">gtk-missing-image</property>
</widget>
<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="GtkLabel" id="label88">
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label627">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label"
translatable="yes">Exercise</property>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</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="GtkNotebook"
id="notebook_encoder_exercise">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="show_tabs">False</property>
+ <property name="show_border">False</property>
+ <child>
+ <widget class="GtkTable" id="table1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">2</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">20</property>
+ <property name="row_spacing">16</property>
+ <child>
+ <widget class="GtkVBox" id="vbox18">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">16</property>
+ <property name="homogeneous">True</property>
+ <child>
+ <widget class="GtkHBox" id="hbox123">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">8</property>
+ <child>
+ <widget class="GtkRadioButton"
id="radio_encoder_eccon_concentric">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property
name="receives_default">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">False</property>
+ <signal name="toggled"
handler="on_radio_encoder_eccon_toggled" swapped="no"/>
+ <child>
+ <widget class="GtkHBox" id="hbox127">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkImage"
id="image_encoder_eccon_concentric">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property
name="stock">gtk-missing-image</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label66">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"
translatable="yes">Concentric</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton"
id="radio_encoder_eccon_eccentric_concentric">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property
name="receives_default">False</property>
+ <property name="draw_indicator">False</property>
+ <property
name="group">radio_encoder_eccon_concentric</property>
+ <signal name="toggled"
handler="on_radio_encoder_eccon_toggled" swapped="no"/>
+ <child>
+ <widget class="GtkHBox" id="hbox130">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkImage"
id="image_encoder_eccon_eccentric_concentric">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property
name="stock">gtk-missing-image</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label78">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"
translatable="yes">Eccentric-Concentric</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox190">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">8</property>
+ <child>
+ <widget class="GtkRadioButton"
id="radio_encoder_laterality_both">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property
name="receives_default">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">False</property>
+ <signal name="toggled"
handler="on_radio_encoder_laterality_toggled" swapped="no"/>
+ <child>
+ <widget class="GtkHBox" id="hbox208">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkImage"
id="image_encoder_laterality_both">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property
name="stock">gtk-missing-image</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label81">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"
translatable="yes">Both</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkRadioButton"
id="radio_encoder_laterality_l">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property
name="receives_default">False</property>
+ <property name="draw_indicator">False</property>
+ <property
name="group">radio_encoder_laterality_both</property>
+ <signal name="toggled"
handler="on_radio_encoder_laterality_toggled" swapped="no"/>
+ <child>
+ <widget class="GtkHBox" id="hbox211">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">4</property>
+ <child>
+ <widget class="GtkImage"
id="image_encoder_laterality_l">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property
name="stock">gtk-missing-image</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label88">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="label"
translatable="yes">Left</property>
@@ -33151,21 +33481,19 @@ then click this button.</property>
<packing>
<property name="expand">True</property>
<property name="fill">True</property>
- <property name="position">2</property>
+ <property name="position">1</property>
</packing>
</child>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
<property name="y_options">GTK_FILL</property>
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox18">
+ <widget class="GtkVBox" id="vbox43">
<property name="visible">True</property>
<property name="can_focus">False</property>
<child>
@@ -33605,7 +33933,7 @@ then click this button.</property>
<child>
<widget class="GtkSpinButton"
id="spin_encoder_im_weights_n">
<property name="can_focus">True</property>
- <property name="invisible_char">●</property>
+ <property name="invisible_char">•</property>
<property
name="primary_icon_activatable">False</property>
<property
name="secondary_icon_activatable">False</property>
<property
name="primary_icon_sensitive">True</property>
@@ -33690,27 +34018,230 @@ then click this button.</property>
<packing>
<property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">2</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkHBox" id="hbox157">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">8</property>
+ <child>
+ <widget class="GtkLabel" id="label182">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip"
translatable="yes">Inertia moment</property>
+ <property name="label"
translatable="yes">Inertia M.</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel"
id="label_encoder_im_total">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="tooltip"
translatable="yes">Kg*cm^2</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">True</property>
+ <property name="pack_type">end</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox74">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <widget class="GtkLabel"
id="label_encoder_exercise_mass">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label"
translatable="yes">Mass</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel"
id="label_encoder_exercise_inertia">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label"
translatable="yes">Inertia M.</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkVBox" id="vbox256">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">16</property>
+ <child>
+ <widget class="GtkLabel" id="label58">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label"
translatable="yes">Phase</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label61">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="xalign">0</property>
+ <property name="label"
translatable="yes">Laterality</property>
+ </widget>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options">GTK_FILL</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="label64">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">encoder options</property>
+ </widget>
+ <packing>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkAlignment" id="alignment75">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="left_padding">20</property>
+ <child>
+ <widget class="GtkTable" id="table22">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="n_rows">3</property>
+ <property name="n_columns">2</property>
+ <property name="column_spacing">20</property>
+ <property name="row_spacing">16</property>
+ <child>
+ <widget class="GtkHBox" id="hbox506">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">20</property>
+ <child>
+ <widget class="GtkLabel" id="label57">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label"
translatable="yes">Name</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkEntry"
id="entry_encoder_exercise_name">
+ <property name="width_request">250</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property
name="invisible_char_set">True</property>
+ <property
name="primary_icon_activatable">False</property>
+ <property
name="secondary_icon_activatable">False</property>
+ <property
name="primary_icon_sensitive">True</property>
+ <property
name="secondary_icon_sensitive">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
</packing>
</child>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox157">
+ <widget class="GtkHBox" id="hbox507">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">8</property>
+ <property name="spacing">12</property>
<child>
- <widget class="GtkLabel" id="label182">
+ <widget class="GtkLabel" id="label625">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="tooltip"
translatable="yes">Inertia moment</property>
- <property name="label"
translatable="yes">Inertia M.</property>
+ <property name="label"
translatable="yes">Type:</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -33719,124 +34250,125 @@ then click this button.</property>
</packing>
</child>
<child>
- <widget class="GtkLabel"
id="label_encoder_im_total">
+ <widget class="GtkRadioButton"
id="radio_encoder_exercise_gravitatory">
+ <property name="label"
translatable="yes">Gravitatory</property>
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="tooltip"
translatable="yes">Kg*cm^2</property>
- </widget>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
+ <property name="can_focus">True</property>
+ <property
name="receives_default">False</property>
+ <property name="active">True</property>
+ <property name="draw_indicator">True</property>
+ <signal name="toggled"
handler="on_radio_encoder_exercise_radios_toggled" swapped="no"/>
</widget>
<packing>
<property name="expand">False</property>
- <property name="fill">True</property>
- <property name="pack_type">end</property>
+ <property name="fill">False</property>
<property name="position">1</property>
</packing>
</child>
+ <child>
+ <widget class="GtkRadioButton"
id="radio_encoder_exercise_inertial">
+ <property name="label"
translatable="yes">Inertial</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property
name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property
name="group">radio_encoder_exercise_gravitatory</property>
+ <signal name="toggled"
handler="on_radio_encoder_exercise_radios_toggled" swapped="no"/>
</widget>
<packing>
- <property name="expand">True</property>
+ <property name="expand">False</property>
<property name="fill">False</property>
- <property name="position">1</property>
+ <property name="position">2</property>
</packing>
</child>
+ <child>
+ <widget class="GtkRadioButton"
id="radio_encoder_exercise_all">
+ <property name="label"
translatable="yes">Both</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property
name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ <property
name="group">radio_encoder_exercise_gravitatory</property>
+ <signal name="toggled"
handler="on_radio_encoder_exercise_radios_toggled" swapped="no"/>
</widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">1</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
</packing>
</child>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="y_options"/>
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox43">
+ <widget class="GtkHBox" id="hbox509">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="spacing">16</property>
<child>
- <widget class="GtkLabel"
id="label_encoder_exercise_mass">
+ <widget class="GtkLabel" id="label626">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label"
translatable="yes">Mass</property>
+ <property name="label"
translatable="yes">Displaced body weight</property>
</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>
<child>
- <widget class="GtkLabel"
id="label_encoder_exercise_inertia">
+ <widget class="GtkSpinButton"
id="spin_encoder_exercise_displaced_body_weight">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label"
translatable="yes">Inertia M.</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property
name="primary_icon_activatable">False</property>
+ <property
name="secondary_icon_activatable">False</property>
+ <property
name="primary_icon_sensitive">True</property>
+ <property
name="secondary_icon_sensitive">True</property>
+ <property name="numeric">True</property>
</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">1</property>
</packing>
</child>
+ <child>
+ <widget class="GtkLabel" id="label628">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label">%</property>
</widget>
<packing>
- <property name="top_attach">2</property>
- <property name="bottom_attach">3</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
</packing>
</child>
- <child>
- <widget class="GtkLabel"
id="label_encoder_exercise_encoder">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label"
translatable="yes">Encoder</property>
</widget>
<packing>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="y_options"/>
</packing>
</child>
<child>
- <widget class="GtkHBox"
id="hbox_encoder_exercise_encoder">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="spacing">8</property>
- <child>
- <widget class="GtkButton"
id="button_encoder_select">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="can_default">True</property>
- <property name="receives_default">True</property>
- <property name="relief">half</property>
- <property name="use_underline">True</property>
- <property name="xalign">0</property>
- <signal name="clicked"
handler="on_button_encoder_select_clicked" swapped="no"/>
- <child>
- <widget class="GtkHBox" id="hbox36">
+ <widget class="GtkHBox"
id="hbox_encoder_exercise_speed_1rm">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">6</property>
+ <property name="spacing">16</property>
<child>
- <widget class="GtkImage"
id="image_encoder_configuration">
+ <widget class="GtkLabel" id="label629">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property
name="stock">gtk-missing-image</property>
+ <property name="label" translatable="yes">Speed
at 1RM</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -33845,55 +34377,61 @@ then click this button.</property>
</packing>
</child>
<child>
- <widget class="GtkLabel"
id="label_button_encoder_select">
+ <widget class="GtkSpinButton"
id="spin_encoder_exercise_speed_1rm">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="label"
translatable="yes">Configure gravitatory encoder</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property
name="primary_icon_activatable">False</property>
+ <property
name="secondary_icon_activatable">False</property>
+ <property
name="primary_icon_sensitive">True</property>
+ <property
name="secondary_icon_sensitive">True</property>
+ <property name="adjustment">0 0
9.9900000000000002 0.01 10 0</property>
+ <property name="digits">3</property>
+ <property name="numeric">True</property>
</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">1</property>
</packing>
</child>
</widget>
- </child>
- </widget>
<packing>
- <property name="expand">False</property>
- <property name="fill">False</property>
- <property name="position">0</property>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">1</property>
+ <property name="bottom_attach">2</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
</packing>
</child>
<child>
- <widget class="GtkHBox" id="hbox121">
+ <widget class="GtkHBox" id="hbox508">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">4</property>
+ <property name="spacing">20</property>
<child>
- <widget class="GtkImage"
id="image_encoder_selected_type">
+ <widget class="GtkLabel" id="label630">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="tooltip"
translatable="yes">Extra mass</property>
- <property
name="stock">gtk-missing-image</property>
+ <property name="label"
translatable="yes">Resistance</property>
</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>
<child>
- <widget class="GtkLabel"
id="label_encoder_selected">
+ <widget class="GtkEntry"
id="entry_encoder_exercise_resistance">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- </widget>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property
name="invisible_char_set">True</property>
+ <property
name="primary_icon_activatable">False</property>
+ <property
name="secondary_icon_activatable">False</property>
+ <property
name="primary_icon_sensitive">True</property>
+ <property
name="secondary_icon_sensitive">True</property>
</widget>
<packing>
<property name="expand">False</property>
@@ -33903,62 +34441,80 @@ then click this button.</property>
</child>
</widget>
<packing>
- <property name="left_attach">1</property>
- <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
<property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="y_options"/>
</packing>
</child>
<child>
- <widget class="GtkVBox" id="vbox74">
+ <widget class="GtkHBox" id="hbox510">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="spacing">16</property>
+ <property name="spacing">20</property>
<child>
- <widget class="GtkLabel" id="label57">
+ <widget class="GtkLabel" id="label631">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label"
translatable="yes">Exercise</property>
+ <property name="label"
translatable="yes">Description</property>
</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>
<child>
- <widget class="GtkLabel" id="label58">
+ <widget class="GtkEntry"
id="entry_encoder_exercise_description">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label"
translatable="yes">Phase</property>
+ <property name="can_focus">True</property>
+ <property name="invisible_char">•</property>
+ <property
name="invisible_char_set">True</property>
+ <property
name="primary_icon_activatable">False</property>
+ <property
name="secondary_icon_activatable">False</property>
+ <property
name="primary_icon_sensitive">True</property>
+ <property
name="secondary_icon_sensitive">True</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </widget>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="right_attach">2</property>
+ <property name="top_attach">2</property>
+ <property name="bottom_attach">3</property>
+ <property name="x_options">GTK_FILL</property>
+ <property name="y_options"/>
+ </packing>
+ </child>
+ </widget>
+ </child>
</widget>
<packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
- <widget class="GtkLabel" id="label61">
+ <widget class="GtkLabel" id="label624">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="xalign">0</property>
- <property name="label"
translatable="yes">Laterality</property>
+ <property name="label">exercise add
edit</property>
</widget>
<packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
+ <property name="position">1</property>
+ <property name="tab_fill">False</property>
+ <property name="type">tab</property>
</packing>
</child>
</widget>
<packing>
- <property name="top_attach">1</property>
- <property name="bottom_attach">2</property>
- <property name="x_options">GTK_FILL</property>
- <property name="y_options">GTK_FILL</property>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
</widget>
@@ -33984,7 +34540,7 @@ then click this button.</property>
</widget>
</child>
<child>
- <widget class="GtkHBox" id="hbox242">
+ <widget class="GtkHBox"
id="hbox_encoder_exercise_close_and">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="spacing">30</property>
@@ -39748,6 +40304,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/encoder.cs b/src/encoder.cs
index 7bf21bbd..e65c67ce 100644
--- a/src/encoder.cs
+++ b/src/encoder.cs
@@ -1219,6 +1219,7 @@ public class EncoderExercise
public string ressistance;
public string description;
public double speed1RM;
+ private Constants.EncoderGI type;
public EncoderExercise() {
}
@@ -1228,7 +1229,7 @@ public class EncoderExercise
}
public EncoderExercise(int uniqueID, string name, int percentBodyWeight,
- string ressistance, string description, double speed1RM)
+ string ressistance, string description, double speed1RM, Constants.EncoderGI type)
{
this.uniqueID = uniqueID;
this.name = name;
@@ -1236,6 +1237,7 @@ public class EncoderExercise
this.ressistance = ressistance;
this.description = description;
this.speed1RM = speed1RM;
+ this.type = type;
}
/*
@@ -1257,7 +1259,7 @@ public class EncoderExercise
public override string ToString()
{
return uniqueID.ToString() + ": " + name + " (" + percentBodyWeight.ToString() + "%) " +
- ressistance + "," + description + "," + speed1RM.ToString();
+ ressistance + "," + description + "," + speed1RM.ToString() + "," + type.ToString();
}
public int UniqueID
@@ -1284,6 +1286,10 @@ public class EncoderExercise
{
get { return speed1RM; }
}
+ public Constants.EncoderGI Type
+ {
+ get { return type; }
+ }
~EncoderExercise() {}
}
diff --git a/src/gui/app1/chronojump.cs b/src/gui/app1/chronojump.cs
index a1768c9c..9d84c139 100644
--- a/src/gui/app1/chronojump.cs
+++ b/src/gui/app1/chronojump.cs
@@ -3123,7 +3123,10 @@ public partial class ChronoJumpWindow
hbox_change_modes_jumps.Visible = false;
hbox_change_modes_runs.Visible = false;
button_contacts_bells.Sensitive = false;
- radio_mode_contacts_capture.Active = true;
+
+ radio_mode_contacts_capture.Active = true; //it is safe to change to capture, because analyze
has different graphs depending on mode
+ radio_mode_encoder_capture_small.Active = true; //it is safe to change to capture, to ensure
all widgets are ok on analyze (everything seems ok, but just to have same behaviour than in contacts)
+
radio_mode_contacts_jumps_profile.Active = true;
hbox_radio_mode_contacts_analyze_buttons.Visible = false;
radio_mode_contacts_jumps_rj_fatigue.Visible = false;
@@ -3283,6 +3286,15 @@ public partial class ChronoJumpWindow
blankEncoderInterface();
+ //combos should show encoder exercises of current type (encoderGI)
+ createEncoderComboExerciseAndAnalyze();
+
+ /*
+ only needed if change from grav analyze to inertial analyze (or viceversa)
directly.
+ But it is disabled because on change mode chronojump goes to capture.
+ //updateEncoderAnalyzeExercisesPre();
+ */
+
bool changed = false;
if(m == Constants.Menuitem_modes.POWERGRAVITATORY)
{
diff --git a/src/gui/app1/encoder.cs b/src/gui/app1/encoder.cs
index c3322780..b9e7d42f 100644
--- a/src/gui/app1/encoder.cs
+++ b/src/gui/app1/encoder.cs
@@ -130,6 +130,23 @@ public partial class ChronoJumpWindow
[Widget] Gtk.RadioButton radio_encoder_laterality_l;
[Widget] Gtk.Box hbox_encoder_capture_curves_save_all_none;
+ //exercise edit/add
+ [Widget] Gtk.HBox hbox_encoder_exercise_close_and;
+ [Widget] Gtk.HBox hbox_encoder_exercise_select;
+ [Widget] Gtk.HBox hbox_encoder_exercise_actions;
+ [Widget] Gtk.Button button_encoder_exercise_actions_edit_do;
+ [Widget] Gtk.Button button_encoder_exercise_actions_add_do;
+ [Widget] Gtk.Notebook notebook_encoder_exercise;
+ [Widget] Gtk.Entry entry_encoder_exercise_name;
+ [Widget] Gtk.RadioButton radio_encoder_exercise_gravitatory;
+ [Widget] Gtk.RadioButton radio_encoder_exercise_inertial;
+ [Widget] Gtk.RadioButton radio_encoder_exercise_all;
+ [Widget] Gtk.SpinButton spin_encoder_exercise_displaced_body_weight;
+ [Widget] Gtk.SpinButton spin_encoder_exercise_speed_1rm;
+ [Widget] Gtk.HBox hbox_encoder_exercise_speed_1rm;
+ [Widget] Gtk.Entry entry_encoder_exercise_resistance;
+ [Widget] Gtk.Entry entry_encoder_exercise_description;
+
/*
//used on guiTests
[Widget] Gtk.Button button_encoder_capture_curves_all;
@@ -2666,7 +2683,7 @@ public partial class ChronoJumpWindow
private void updateEncoderAnalyzeExercises(bool dbconOpened, int personID, int sessionID, string
selectedPreviously)
{
LogB.Information("updateEncoderAnalyzeExercises()");
- List<int> listFound = SqliteEncoder.SelectAnalyzeExercisesInCurves (dbconOpened, personID,
sessionID, currentEncoderGI);
+ List<int> listFound = SqliteEncoder.SelectAnalyzeExercisesInCurves (dbconOpened, personID,
sessionID, getEncoderGIByMenuitemMode());
foreach(int i in listFound)
LogB.Information(i.ToString());
@@ -3021,7 +3038,7 @@ public partial class ChronoJumpWindow
{
EncoderSQL eSQL = (EncoderSQL) data[0];
EncoderExercise exTemp = (EncoderExercise)
SqliteEncoder.SelectEncoderExercises(
- false , eSQL.exerciseID, false)[0];
+ false , eSQL.exerciseID, false,
Constants.EncoderGI.GRAVITATORY)[0];
if(exTemp.speed1RM == 0) {
new DialogMessage(Constants.MessageTypes.WARNING,
@@ -3400,7 +3417,7 @@ public partial class ChronoJumpWindow
if(my1RMName == "1RM Any exercise") {
//get speed1RM (from exercise of curve on SQL, not from combo)
EncoderExercise exTemp = (EncoderExercise)
SqliteEncoder.SelectEncoderExercises(
- false , exID, false)[0];
+ false , exID, false, Constants.EncoderGI.GRAVITATORY)[0];
sendAnalysis = "1RMAnyExercise";
analysisVariables = Util.ConvertToPoint(exTemp.speed1RM) + ";" +
@@ -3434,8 +3451,8 @@ public partial class ChronoJumpWindow
TextWriter writer = File.CreateText(dataFileName);
writer.WriteLine("status,seriesName,exerciseName,massBody,massExtra,dateTime,fullURL,eccon,percentBodyWeight,"
+
"econfName, econfd, econfD, econfAnglePush, econfAngleWeight,
econfInertia, econfGearedDown, laterality");
-
- ArrayList eeArray = SqliteEncoder.SelectEncoderExercises(false, -1, false);
+
+ ArrayList eeArray = SqliteEncoder.SelectEncoderExercises(false, -1, false,
getEncoderGIByMenuitemMode());
EncoderExercise ex = new EncoderExercise();
LogB.Information("AT ANALYZE");
@@ -3530,7 +3547,8 @@ public partial class ChronoJumpWindow
if(my1RMName == "1RM Any exercise") {
//get speed1RM (from combo)
EncoderExercise ex = (EncoderExercise)
SqliteEncoder.SelectEncoderExercises(
- false,
getExerciseIDFromEncoderCombo(exerciseCombos.CAPTURE), false)[0];
+ false,
getExerciseIDFromEncoderCombo(exerciseCombos.CAPTURE),
+ false, Constants.EncoderGI.GRAVITATORY)[0];
sendAnalysis = "1RMAnyExercise";
analysisVariables = Util.ConvertToPoint(ex.speed1RM) + ";" +
@@ -4407,11 +4425,20 @@ public partial class ChronoJumpWindow
button_combo_encoder_exercise_capture_right.Sensitive = ! isLast;
}
+ private Constants.EncoderGI getEncoderGIByMenuitemMode()
+ {
+ Constants.EncoderGI encoderGI = Constants.EncoderGI.GRAVITATORY;
+ if(current_menuitem_mode == Constants.Menuitem_modes.POWERINERTIAL)
+ encoderGI = Constants.EncoderGI.INERTIAL;
+
+ return encoderGI;
+ }
//this is called also when an exercise is deleted to update the combo and the string []
+ //and on change mode POWERGRAVITORY <-> POWERINERTIAL, because forceSensorExercises can have
different type (encoderGI)
protected void createEncoderComboExerciseAndAnalyze()
{
- ArrayList encoderExercises = SqliteEncoder.SelectEncoderExercises(false, -1, false);
+ ArrayList encoderExercises = SqliteEncoder.SelectEncoderExercises(false, -1, false,
getEncoderGIByMenuitemMode());
if(encoderExercises.Count == 0)
{
encoderExercisesTranslationAndBodyPWeight = new String [0];
@@ -5054,6 +5081,24 @@ public partial class ChronoJumpWindow
return (getExerciseIDFromEncoderCombo(exerciseCombos.CAPTURE) != -1);
}
+ private void prepare_encoder_exercise_add_edit (bool adding)
+ {
+ hbox_encoder_exercise_close_and.Sensitive = false;
+ hbox_encoder_exercise_encoder.Sensitive = false;
+ hbox_encoder_exercise_select.Sensitive = false;
+ hbox_encoder_exercise_actions.Visible = true;
+ button_encoder_exercise_actions_edit_do.Visible = ! adding;
+ button_encoder_exercise_actions_add_do.Visible = adding;
+ notebook_encoder_exercise.Page = 1;
+
+ if(current_menuitem_mode == Constants.Menuitem_modes.POWERGRAVITATORY) {
+ radio_encoder_exercise_gravitatory.Sensitive = true;
+ radio_encoder_exercise_inertial.Sensitive = false;
+ } else { // (current_menuitem_mode == Constants.Menuitem_modes.POWERINERTIAL)
+ radio_encoder_exercise_gravitatory.Sensitive = false;
+ radio_encoder_exercise_inertial.Sensitive = true;
+ }
+ }
//info is now info and edit (all values can be changed), and detete (there's delete button)
void on_button_encoder_exercise_edit_clicked (object o, EventArgs args)
@@ -5065,140 +5110,85 @@ public partial class ChronoJumpWindow
}
EncoderExercise ex = (EncoderExercise) SqliteEncoder.SelectEncoderExercises(
- false, getExerciseIDFromEncoderCombo(exerciseCombos.CAPTURE), false)[0];
-
- ArrayList bigArray = new ArrayList();
-
- ArrayList a1 = new ArrayList();
- ArrayList a2 = new ArrayList();
- ArrayList a3 = new ArrayList();
- ArrayList a4 = new ArrayList();
- ArrayList a5 = new ArrayList();
-
- string exerciseName = ex.name;
- //0 is the widgget to show; 1 is the editable; 2 id default value
+ false, getExerciseIDFromEncoderCombo(exerciseCombos.CAPTURE),
+ false, getEncoderGIByMenuitemMode())[0];
- a1.Add(Constants.GenericWindowShow.ENTRY); a1.Add(true); a1.Add(exerciseName);
- bigArray.Add(a1);
+ prepare_encoder_exercise_add_edit (false);
- a2.Add(Constants.GenericWindowShow.SPININT); a2.Add(true); a2.Add("");
- bigArray.Add(a2);
-
- a3.Add(Constants.GenericWindowShow.ENTRY2); a3.Add(true); a3.Add(ex.ressistance);
- bigArray.Add(a3);
-
- a4.Add(Constants.GenericWindowShow.ENTRY3); a4.Add(true); a4.Add(ex.description);
- bigArray.Add(a4);
-
- a5.Add(Constants.GenericWindowShow.HBOXSPINDOUBLE2); a5.Add(true); a5.Add("");
- bigArray.Add(a5);
-
-
- genericWin = GenericWindow.Show(Catalog.GetString("Edit exercise"),
- false, Catalog.GetString("Encoder exercise name:"), bigArray);
+ entry_encoder_exercise_name.Text = ex.name;
+ spin_encoder_exercise_displaced_body_weight.Value = ex.percentBodyWeight;
+ spin_encoder_exercise_speed_1rm.Value = ex.speed1RM;
+ entry_encoder_exercise_resistance.Text = ex.ressistance;
+ entry_encoder_exercise_description.Text = ex.description;
- genericWin.uniqueID = ex.UniqueID;
- genericWin.LabelSpinInt = Catalog.GetString("Displaced body weight") + " (%)";
-
- //genericWin.SetSpinRange(ex.percentBodyWeight, ex.percentBodyWeight); //done this because
IsEditable does not affect the cursors
- genericWin.SetSpinRange(0, 100);
- genericWin.SetSpinValue(ex.percentBodyWeight);
-
- genericWin.LabelEntry2 = Catalog.GetString("Resistance");
- genericWin.LabelEntry3 = Catalog.GetString("Description");
- genericWin.LabelSpinDouble2 = Catalog.GetString("Speed at 1RM");
- genericWin.SetSpinDouble2Value(ex.speed1RM);
- genericWin.SetSpinDouble2Increments(0.001,0.1);
- /*
- * Now this is in encoder configuration
- genericWin.LabelSpinInt2 = Catalog.GetString("Body angle") + " (º)";
- genericWin.SetSpin2Range(ex.bodyAngle,ex.bodyAngle); //done this because IsEditable does not
affect the cursors
- genericWin.LabelSpinInt3 = Catalog.GetString("Weight angle") + " (º)";
- genericWin.SetSpin3Range(ex.weightAngle,ex.weightAngle); //done this because IsEditable does
not affect the cursors
- */
- genericWin.ShowButtonCancel(false);
- genericWin.HideOnAccept = false;
-
- //genericWin.nameUntranslated = ex.name;
- genericWin.uniqueID = ex.uniqueID;
-
- genericWin.Button_accept.Clicked -= new
EventHandler(on_button_encoder_exercise_edit_accepted);
- genericWin.Button_accept.Clicked += new
EventHandler(on_button_encoder_exercise_edit_accepted);
- genericWin.ShowNow();
+ hbox_encoder_exercise_speed_1rm.Sensitive = true;
+ if(ex.Type == Constants.EncoderGI.GRAVITATORY)
+ radio_encoder_exercise_gravitatory.Active = true;
+ else if(ex.Type == Constants.EncoderGI.INERTIAL)
+ {
+ radio_encoder_exercise_inertial.Active = true;
+ hbox_encoder_exercise_speed_1rm.Sensitive = false;
+ }
+ else
+ radio_encoder_exercise_all.Active = true;
}
void on_button_encoder_exercise_add_clicked (object o, EventArgs args)
{
- ArrayList bigArray = new ArrayList();
+ prepare_encoder_exercise_add_edit (true);
- ArrayList a1 = new ArrayList();
- ArrayList a2 = new ArrayList();
- ArrayList a3 = new ArrayList();
- ArrayList a4 = new ArrayList();
- ArrayList a5 = new ArrayList();
+ entry_encoder_exercise_name.Text = "";
+ spin_encoder_exercise_displaced_body_weight.Value = 0;
+ spin_encoder_exercise_speed_1rm.Value = 0;
+ entry_encoder_exercise_resistance.Text = "";
+ entry_encoder_exercise_description.Text = "";
- //0 is the widgget to show; 1 is the editable; 2 id default value
- a1.Add(Constants.GenericWindowShow.ENTRY); a1.Add(true); a1.Add("");
- bigArray.Add(a1);
+ hbox_encoder_exercise_speed_1rm.Sensitive = true;
+ if(current_menuitem_mode == Constants.Menuitem_modes.POWERGRAVITATORY)
+ radio_encoder_exercise_gravitatory.Active = true;
+ else if(current_menuitem_mode == Constants.Menuitem_modes.POWERINERTIAL)
+ {
+ radio_encoder_exercise_inertial.Active = true;
+ hbox_encoder_exercise_speed_1rm.Sensitive = false;
+ }
+ else //this could not happen
+ radio_encoder_exercise_all.Active = true;
+ }
- a2.Add(Constants.GenericWindowShow.SPININT); a2.Add(true); a2.Add("");
- bigArray.Add(a2);
-
- a3.Add(Constants.GenericWindowShow.ENTRY2); a3.Add(true); a3.Add("");
- bigArray.Add(a3);
-
- a4.Add(Constants.GenericWindowShow.ENTRY3); a4.Add(true); a4.Add("");
- bigArray.Add(a4);
-
- a5.Add(Constants.GenericWindowShow.HBOXSPINDOUBLE2); a5.Add(true); a5.Add("");
- bigArray.Add(a5);
-
-
- genericWin = GenericWindow.Show(Catalog.GetString("Exercise"), false, //don't show now
- Catalog.GetString("Write the name of the exercise:"), bigArray);
- genericWin.LabelSpinInt = Catalog.GetString("Displaced body weight") + " (%)";
- genericWin.SetSpinRange(0, 100);
- genericWin.LabelEntry2 = Catalog.GetString("Resistance");
- genericWin.LabelEntry3 = Catalog.GetString("Description");
- genericWin.LabelSpinDouble2 = Catalog.GetString("Speed at 1RM");
- genericWin.SetSpinDouble2Increments(0.001,0.1);
- /*
- * Now this is in encoder configuration
- genericWin.LabelSpinInt2 = Catalog.GetString("Body angle") + " (º)";
- genericWin.SetSpin2Range(0,90);
- genericWin.SetSpin2Value(90);
- genericWin.LabelSpinInt3 = Catalog.GetString("Weight angle") + " (º)";
- genericWin.SetSpin3Range(0,90);
- genericWin.SetSpin3Value(90);
- */
- genericWin.SetButtonAcceptLabel(Catalog.GetString("Add"));
- genericWin.HideOnAccept = false;
+ private void on_radio_encoder_exercise_radios_toggled (object o, EventArgs args)
+ {
+ hbox_encoder_exercise_speed_1rm.Sensitive =
+ (radio_encoder_exercise_gravitatory.Active || radio_encoder_exercise_all.Active);
+ }
- genericWin.Button_accept.Clicked -= new EventHandler(on_button_encoder_exercise_add_accepted);
- genericWin.Button_accept.Clicked += new EventHandler(on_button_encoder_exercise_add_accepted);
- genericWin.ShowNow();
+ private void on_button_encoder_exercise_actions_cancel_clicked (object o, EventArgs args)
+ {
+ restore_encoder_exercise_sensitivity ();
}
-
- void on_button_encoder_exercise_edit_accepted (object o, EventArgs args)
+ private void on_button_encoder_exercise_actions_edit_do_clicked (object o, EventArgs args)
{
if(encoder_exercise_do_add_or_edit(false))
- {
- genericWin.Button_accept.Clicked -= new
EventHandler(on_button_encoder_exercise_edit_accepted);
- genericWin.HideAndNull();
- }
+ restore_encoder_exercise_sensitivity ();
}
- void on_button_encoder_exercise_add_accepted (object o, EventArgs args)
+ private void on_button_encoder_exercise_actions_add_do_clicked (object o, EventArgs args)
{
if(encoder_exercise_do_add_or_edit(true))
- {
- genericWin.Button_accept.Clicked -= new
EventHandler(on_button_encoder_exercise_add_accepted);
- genericWin.HideAndNull();
- }
+ restore_encoder_exercise_sensitivity ();
}
-
+
+ private void restore_encoder_exercise_sensitivity ()
+ {
+ hbox_encoder_exercise_close_and.Sensitive = true;
+ hbox_encoder_exercise_encoder.Sensitive = true;
+ hbox_encoder_exercise_select.Sensitive = true;
+ hbox_encoder_exercise_actions.Visible = false;
+ notebook_encoder_exercise.Page = 0;
+ }
+
+
bool encoder_exercise_do_add_or_edit (bool adding)
{
- string name = Util.RemoveTildeAndColonAndDot(genericWin.EntrySelected);
+ string name = Util.RemoveTildeAndColonAndDot(entry_encoder_exercise_name.Text);
name = Util.RemoveChar(name, '"');
if(adding)
@@ -5208,12 +5198,12 @@ public partial class ChronoJumpWindow
if(name == "")
{
- genericWin.SetLabelError(Catalog.GetString("Error: Missing name of exercise."));
+ new DialogMessage(Constants.MessageTypes.WARNING, Catalog.GetString("Error: Missing
name of exercise."));
return false;
}
else if (adding && Sqlite.Exists(false, Constants.EncoderExerciseTable, name))
{
- genericWin.SetLabelError(string.Format(Catalog.GetString(
+ new DialogMessage(Constants.MessageTypes.WARNING, string.Format(Catalog.GetString(
"Error: An exercise named '{0}' already exists."),
name));
return false;
}
@@ -5221,26 +5211,43 @@ public partial class ChronoJumpWindow
{
//if we edit, check that this name does not exists (on other exercise, on current
editing exercise is obviously fine)
int getIdOfThis = Sqlite.ExistsAndGetUniqueID(false, Constants.EncoderExerciseTable,
name); //if not exists will be -1
- if(getIdOfThis != -1 && getIdOfThis != genericWin.uniqueID)
+ /*
+ LogB.Information("getIdOfThis " + getIdOfThis.ToString());
+ LogB.Information("if from combo " +
getExerciseIDFromEncoderCombo(exerciseCombos.CAPTURE).ToString());
+ */
+
+ if(getIdOfThis != -1 && getIdOfThis !=
getExerciseIDFromEncoderCombo(exerciseCombos.CAPTURE))
{
- genericWin.SetLabelError(string.Format(Catalog.GetString(
+ new DialogMessage(Constants.MessageTypes.WARNING,
string.Format(Catalog.GetString(
"Error: An exercise named '{0}' already
exists."), name));
return false;
}
}
+ Constants.EncoderGI type = Constants.EncoderGI.ALL;
+ if(radio_encoder_exercise_gravitatory.Active)
+ type = Constants.EncoderGI.GRAVITATORY;
+ else if(radio_encoder_exercise_inertial.Active)
+ type = Constants.EncoderGI.INERTIAL;
+
if(adding)
- SqliteEncoder.InsertExercise(false, -1, name, genericWin.SpinIntSelected,
- genericWin.Entry2Selected, genericWin.Entry3Selected,
- Util.ConvertToPoint(genericWin.SpinDouble2Selected)
- );
+ SqliteEncoder.InsertExercise(false, -1,
+ name,
+ Convert.ToInt32(spin_encoder_exercise_displaced_body_weight.Value),
+ entry_encoder_exercise_resistance.Text,
+ entry_encoder_exercise_description.Text,
+ Util.ConvertToPoint(spin_encoder_exercise_speed_1rm.Value),
+ type);
else {
- EncoderExercise ex = new EncoderExercise(genericWin.uniqueID,
- genericWin.EntrySelected,
- genericWin.SpinIntSelected,
- genericWin.Entry2Selected, genericWin.Entry3Selected,
- genericWin.SpinDouble2Selected);
+ EncoderExercise ex = new EncoderExercise(
+ getExerciseIDFromEncoderCombo(exerciseCombos.CAPTURE),
+ name,
+ Convert.ToInt32(spin_encoder_exercise_displaced_body_weight.Value),
+ entry_encoder_exercise_resistance.Text,
+ entry_encoder_exercise_description.Text,
+ spin_encoder_exercise_speed_1rm.Value,
+ type);
SqliteEncoder.UpdateExercise(false, ex);
}
@@ -5251,7 +5258,7 @@ public partial class ChronoJumpWindow
private void updateEncoderExercisesGui(string name)
{
- ArrayList encoderExercises = SqliteEncoder.SelectEncoderExercises(false,-1, false);
+ ArrayList encoderExercises = SqliteEncoder.SelectEncoderExercises(false,-1, false,
getEncoderGIByMenuitemMode());
encoderExercisesTranslationAndBodyPWeight = new String [encoderExercises.Count];
string [] exerciseNamesToCombo = new String [encoderExercises.Count];
int i =0;
@@ -5284,7 +5291,7 @@ public partial class ChronoJumpWindow
}
EncoderExercise ex = (EncoderExercise) SqliteEncoder.SelectEncoderExercises(
- false, getExerciseIDFromEncoderCombo(exerciseCombos.CAPTURE), false)[0];
+ false, getExerciseIDFromEncoderCombo(exerciseCombos.CAPTURE), false,
getEncoderGIByMenuitemMode())[0];
ArrayList array = SqliteEncoder.SelectEncoderSetsOfAnExercise(false, ex.UniqueID);
//dbconOpened, exerciseID
diff --git a/src/gui/app1/icons.cs b/src/gui/app1/icons.cs
index 3238f3ce..68bd02a7 100644
--- a/src/gui/app1/icons.cs
+++ b/src/gui/app1/icons.cs
@@ -137,6 +137,9 @@ public partial class ChronoJumpWindow
[Widget] Gtk.Image image_recalculate;
[Widget] Gtk.Image image_encoder_configuration;
[Widget] Gtk.Image image_encoder_exercise;
+ [Widget] Gtk.Image image_button_encoder_exercise_actions_cancel;
+ [Widget] Gtk.Image image_button_encoder_exercise_actions_edit_do;
+ [Widget] Gtk.Image image_button_encoder_exercise_actions_add_do;
[Widget] Gtk.Image image_encoder_exercise_settings;
[Widget] Gtk.Image image_encoder_exercise_close;
[Widget] Gtk.Image image_encoder_capture_open;
@@ -733,6 +736,7 @@ public partial class ChronoJumpWindow
pixbuf = new Pixbuf (null, Util.GetImagePath(false) + "image_cancel.png");
image_sprint_export_cancel.Pixbuf = pixbuf;
+ image_button_encoder_exercise_actions_cancel.Pixbuf = pixbuf;
image_encoder_analyze_cancel.Pixbuf = pixbuf;
image_force_sensor_export_cancel.Pixbuf = pixbuf;
image_run_encoder_export_cancel.Pixbuf = pixbuf;
@@ -814,6 +818,8 @@ public partial class ChronoJumpWindow
pixbuf = new Pixbuf (null, Util.GetImagePath(false) + "save.png");
image_jumps_rj_fatigue_image_save.Pixbuf = pixbuf;
image_sprint_analyze_table_save_1.Pixbuf = pixbuf;
+ image_button_encoder_exercise_actions_edit_do.Pixbuf = pixbuf;
+ image_button_encoder_exercise_actions_add_do.Pixbuf = pixbuf;
image_encoder_capture_curves_save.Pixbuf = pixbuf;
image_encoder_analyze_table_save_1.Pixbuf = pixbuf;
image_encoder_capture_image_save_1.Pixbuf = pixbuf;
diff --git a/src/gui/networks.cs b/src/gui/networks.cs
index ee9328fd..df206e0a 100644
--- a/src/gui/networks.cs
+++ b/src/gui/networks.cs
@@ -941,8 +941,12 @@ public partial class ChronoJumpWindow
if(configChronojump.CompujumpStationMode == Constants.Menuitem_modes.POWERGRAVITATORY ||
configChronojump.CompujumpStationMode ==
Constants.Menuitem_modes.POWERINERTIAL)
{
- ArrayList encoderExercisesOnLocal = SqliteEncoder.SelectEncoderExercises(false, -1,
false);
- List<EncoderExercise> exRemote_list =
json.GetStationExercises(configChronojump.CompujumpStationID);
+ Constants.EncoderGI type = Constants.EncoderGI.GRAVITATORY;
+ if(configChronojump.CompujumpStationMode == Constants.Menuitem_modes.POWERINERTIAL)
+ type = Constants.EncoderGI.INERTIAL;
+
+ ArrayList encoderExercisesOnLocal = SqliteEncoder.SelectEncoderExercises(false, -1,
false, type);
+ List<EncoderExercise> exRemote_list =
json.GetStationExercises(configChronojump.CompujumpStationID, type);
foreach(EncoderExercise exRemote in exRemote_list)
{
@@ -958,7 +962,7 @@ public partial class ChronoJumpWindow
{
SqliteEncoder.InsertExercise(
false, exRemote.uniqueID, exRemote.name,
exRemote.percentBodyWeight,
- "", "", ""); //ressitance, description, speed1RM
+ "", "", "", type); //ressitance, description,
speed1RM, type (encoderGI)
updateEncoderExercisesGui(exRemote.name);
}
}
diff --git a/src/json/compujump.cs b/src/json/compujump.cs
index 60aab9ff..0bda3bc7 100644
--- a/src/json/compujump.cs
+++ b/src/json/compujump.cs
@@ -344,7 +344,8 @@ public class JsonCompujump : Json
return stations;
}
- public List<EncoderExercise> GetStationExercises(int stationId)
+ //stationType can be GRAVITATORY or INERTIAL
+ public List<EncoderExercise> GetStationExercises(int stationId, Constants.EncoderGI stationType)
{
List<EncoderExercise> ex_list = new List<EncoderExercise>();
@@ -389,12 +390,12 @@ public class JsonCompujump : Json
else if(responseFromServer == "[]")
LogB.Information(" Empty2 "); //when rfid is not on server
else {
- ex_list = stationExercisesDeserialize(responseFromServer);
+ ex_list = stationExercisesDeserialize(responseFromServer, stationType);
}
return ex_list;
}
- private List<EncoderExercise> stationExercisesDeserialize(string str)
+ private List<EncoderExercise> stationExercisesDeserialize(string str, Constants.EncoderGI stationType)
{
List<EncoderExercise> ex_list = new List<EncoderExercise>();
@@ -408,7 +409,7 @@ public class JsonCompujump : Json
int percentBodyMassDisplaced = jsonSE ["percentBodyMassDisplaced"];
ex_list.Add(new EncoderExercise(id, name, percentBodyMassDisplaced,
- "", "", 0)); //ressitance, description, speed1RM
+ "", "", 0, stationType)); //resistance, description, speed1RM,
stationType
}
return ex_list;
}
diff --git a/src/sqlite/encoder.cs b/src/sqlite/encoder.cs
index 7ac07b67..6e92e4a8 100644
--- a/src/sqlite/encoder.cs
+++ b/src/sqlite/encoder.cs
@@ -721,14 +721,16 @@ class SqliteEncoder : Sqlite
"description TEXT, " +
"future1 TEXT, " + //speed1RM: speed in m/s at 1RM with decimal point separator
'.' ; 0 means undefined
"future2 TEXT, " + //bodyAngle (unused)
- "future3 TEXT )"; //weightAngle (unused)
+ "future3 TEXT, " + //weightAngle (unused)
+ "type TEXT DEFAULT \"ALL\")"; //ALL, GRAVITATORY, INERTIAL (enum
constants.EncoderGI)
dbcmd.ExecuteNonQuery();
}
//if uniqueID == -1, NULL will be used (correlative uniqueID)
//uniqueID != -1 when an exercise is downloaded from server on compujump and need to have the same
uniqueID as server
public static void InsertExercise(bool dbconOpened, int uniqueID, string name, int percentBodyWeight,
- string ressistance, string description, string speed1RM) //speed1RM decimal
point = '.'
+ string ressistance, string description, string speed1RM, //speed1RM decimal
point = '.'
+ Constants.EncoderGI encoderGI) //type
{
if(! dbconOpened)
Sqlite.Open();
@@ -738,9 +740,9 @@ class SqliteEncoder : Sqlite
uniqueIDStr = uniqueID.ToString();
dbcmd.CommandText = "INSERT INTO " + Constants.EncoderExerciseTable +
- " (uniqueID, name, percentBodyWeight, ressistance, description, future1,
future2, future3)" +
+ " (uniqueID, name, percentBodyWeight, ressistance, description, future1,
future2, future3, type)" +
" VALUES (" + uniqueIDStr + ", \"" + name + "\", " + percentBodyWeight + ",
\"" +
- ressistance + "\", \"" + description + "\", \"" + speed1RM + "\", '', '')";
+ ressistance + "\", \"" + description + "\", \"" + speed1RM + "\", '', '', \""
+ encoderGI.ToString() + "\")";
LogB.SQL(dbcmd.CommandText.ToString());
dbcmd.ExecuteNonQuery();
@@ -755,13 +757,14 @@ class SqliteEncoder : Sqlite
{
string [] iniEncoderExercises = {
//name:percentBodyWeight:ressistance:description:speed1RM:pullAngle:weightAngle
- "Bench press:0:weight bar::0.185::", //González-Badillo, J. 2010. Movement velocity
as a measure of loading intensity in resistance training
- "Squat:100:weight bar::0.31::" //González-Badillo, JJ.2000b
http://foro.chronojump.org/showthread.php?tid=1288&page=3
+ "Bench press:0:weight bar::0.185:::GRAVITATORY", //González-Badillo, J. 2010.
Movement velocity as a measure of loading intensity in resistance training
+ "Squat:100:weight bar::0.31:::GRAVITATORY" //González-Badillo, JJ.2000b
http://foro.chronojump.org/showthread.php?tid=1288&page=3
};
foreach(string line in iniEncoderExercises) {
string [] parts = line.Split(new char[] {':'});
- InsertExercise(true, -1, parts[0], Convert.ToInt32(parts[1]), parts[2], parts[3],
parts[4]);
+ InsertExercise(true, -1, parts[0], Convert.ToInt32(parts[1]), parts[2], parts[3],
parts[4],
+ (Constants.EncoderGI) Enum.Parse(typeof(Constants.EncoderGI),
parts[7]));
}
addEncoderFreeExercise();
@@ -773,25 +776,26 @@ class SqliteEncoder : Sqlite
{
bool exists = Sqlite.Exists (true, Constants.EncoderExerciseTable, "Free");
if(! exists)
- InsertExercise(true, -1, "Free", 0, "", "", "");
+ InsertExercise(true, -1, "Free", 0, "", "", "", Constants.EncoderGI.ALL);
}
protected internal static void addEncoderJumpExercise()
{
bool exists = Sqlite.Exists (true, Constants.EncoderExerciseTable, "Jump");
if(! exists)
- InsertExercise(true, -1, "Jump", 100, "", "", "");
+ InsertExercise(true, -1, "Jump", 100, "", "", "", Constants.EncoderGI.GRAVITATORY);
}
protected internal static void addEncoderInclinedExercises()
{
string [] iniEncoderExercises = {
- //name:percentBodyWeight:ressistance:description:speed1RM:bodyAngle:weightAngle
- "Inclined plane:0:machine::::",
- "Inclined plane BW:100:machine::::",
+ //name:percentBodyWeight:ressistance:description:speed1RM:bodyAngle:weightAngle:type
+ "Inclined plane:0:machine:::::GRAVITATORY",
+ "Inclined plane BW:100:machine:::::GRAVITATORY",
};
foreach(string line in iniEncoderExercises) {
string [] parts = line.Split(new char[] {':'});
- InsertExercise(true, -1, parts[0], Convert.ToInt32(parts[1]), parts[2], parts[3],
parts[4]);
+ InsertExercise(true, -1, parts[0], Convert.ToInt32(parts[1]), parts[2], parts[3],
parts[4],
+ (Constants.EncoderGI) Enum.Parse(typeof(Constants.EncoderGI),
parts[7]));
}
}
@@ -806,6 +810,7 @@ class SqliteEncoder : Sqlite
", ressistance = \"" + ex.Ressistance +
"\", description = \"" + ex.Description +
"\", future1 = \"" + Util.ConvertToPoint(ex.Speed1RM) +
+ "\", type = \"" + ex.Type +
"\" WHERE uniqueID = " + ex.UniqueID;
LogB.SQL(dbcmd.CommandText.ToString());
@@ -815,7 +820,7 @@ class SqliteEncoder : Sqlite
Sqlite.Close();
}
public static void UpdateExerciseByName_old_do_not_use(bool dbconOpened, string nameOld, string name,
int percentBodyWeight,
- string ressistance, string description, string speed1RM)
+ string ressistance, string description, string speed1RM, Constants.EncoderGI type)
{
if(! dbconOpened)
Sqlite.Open();
@@ -826,6 +831,7 @@ class SqliteEncoder : Sqlite
", ressistance = \"" + ressistance +
"\", description = \"" + description +
"\", future1 = \"" + speed1RM +
+ "\", type = \"" + type.ToString() +
"\" WHERE name = \"" + nameOld + "\"" ;
LogB.SQL(dbcmd.CommandText.ToString());
@@ -837,19 +843,32 @@ class SqliteEncoder : Sqlite
//if uniqueID != -1, returns an especific EncoderExercise that can be read like this
//EncoderExercise ex = (EncoderExercise) SqliteEncoder.SelectEncoderExercises(eSQL.exerciseID)[0];
- public static ArrayList SelectEncoderExercises(bool dbconOpened, int uniqueID, bool onlyNames)
+ //if encoderGI == GRAVITATORY, return GRAVITATORY and ALL
+ //if encoderGI == INERTIAL, return INERTIAL and ALL
+ //if encoderGI == ALL, return everything
+ public static ArrayList SelectEncoderExercises(bool dbconOpened, int uniqueID, bool onlyNames,
Constants.EncoderGI encoderGI)
{
if(! dbconOpened)
Sqlite.Open();
+ string encoderGIconnector = " WHERE ";
+
string uniqueIDStr = "";
- if(uniqueID != -1)
+ if(uniqueID != -1) {
uniqueIDStr = " WHERE " + Constants.EncoderExerciseTable + ".uniqueID = " + uniqueID;
+ encoderGIconnector = " AND ";
+ }
+
+ string encoderGIstr = "";
+ if(encoderGI == Constants.EncoderGI.GRAVITATORY)
+ encoderGIstr = encoderGIconnector + " type != \"INERTIAL\"";
+ else if(encoderGI == Constants.EncoderGI.INERTIAL)
+ encoderGIstr = encoderGIconnector + " type != \"GRAVITATORY\"";
if(onlyNames)
- dbcmd.CommandText = "SELECT name FROM " + Constants.EncoderExerciseTable +
uniqueIDStr;
+ dbcmd.CommandText = "SELECT name FROM " + Constants.EncoderExerciseTable +
uniqueIDStr + encoderGIstr;
else
- dbcmd.CommandText = "SELECT * FROM " + Constants.EncoderExerciseTable + uniqueIDStr;
+ dbcmd.CommandText = "SELECT * FROM " + Constants.EncoderExerciseTable + uniqueIDStr +
encoderGIstr;
LogB.SQL(dbcmd.CommandText.ToString());
dbcmd.ExecuteNonQuery();
@@ -875,9 +894,10 @@ class SqliteEncoder : Sqlite
Convert.ToInt32(reader[0].ToString()), //uniqueID
reader[1].ToString(), //name
Convert.ToInt32(reader[2].ToString()), //percentBodyWeight
- reader[3].ToString(), //ressistance
+ reader[3].ToString(), //resistance
reader[4].ToString(), //description
- speed1RM
+ speed1RM,
+ (Constants.EncoderGI) Enum.Parse(typeof(Constants.EncoderGI),
reader[8].ToString())
);
array.Add(ex);
}
diff --git a/src/sqlite/main.cs b/src/sqlite/main.cs
index e87aedf5..f54e2a7e 100644
--- a/src/sqlite/main.cs
+++ b/src/sqlite/main.cs
@@ -129,7 +129,7 @@ class Sqlite
/*
* Important, change this if there's any update to database
*/
- static string lastChronojumpDatabaseVersion = "2.18";
+ static string lastChronojumpDatabaseVersion = "2.19";
public Sqlite()
{
@@ -1389,7 +1389,8 @@ class Sqlite
if(currentVersion == "0.90") {
Sqlite.Open();
- SqliteEncoder.UpdateExerciseByName_old_do_not_use(true, "Squat", "Squat",
100, "weight bar", "", "");
+ SqliteEncoder.UpdateExerciseByName_old_do_not_use(true, "Squat", "Squat",
100, "weight bar", "", "",
+ Constants.EncoderGI.ALL);
LogB.SQL("Encoder Squat 75% -> 100%");
SqlitePreferences.Update ("databaseVersion", "0.91", true);
@@ -1411,8 +1412,10 @@ class Sqlite
if(currentVersion == "0.92") {
Sqlite.Open();
- SqliteEncoder.UpdateExerciseByName_old_do_not_use(true, "Bench press", "Bench
press", 0, "weight bar", "","0.185");
- SqliteEncoder.UpdateExerciseByName_old_do_not_use(true, "Squat", "Squat",
100, "weight bar", "","0.31");
+ SqliteEncoder.UpdateExerciseByName_old_do_not_use(true, "Bench press", "Bench
press", 0, "weight bar", "","0.185",
+ Constants.EncoderGI.ALL);
+ SqliteEncoder.UpdateExerciseByName_old_do_not_use(true, "Squat", "Squat",
100, "weight bar", "","0.31",
+ Constants.EncoderGI.ALL);
LogB.SQL("Added speed1RM on encoder exercise");
SqlitePreferences.Update ("databaseVersion", "0.93", true);
@@ -2200,7 +2203,7 @@ class Sqlite
//1 exercise
ArrayList encoderExercises =
- SqliteEncoder.SelectEncoderExercises(true, -1, true);
+ SqliteEncoder.SelectEncoderExercises(true, -1, true,
Constants.EncoderGI.ALL);
if(encoderExercises.Count > 0) {
EncoderExercise ex = (EncoderExercise) encoderExercises[0];
@@ -2966,6 +2969,19 @@ class Sqlite
currentVersion = updateVersion("2.18");
}
+ if(currentVersion == "2.18")
+ {
+ LogB.SQL("Doing alter table encoderExercise ADD COLUMN type TEXT ...");
+ try {
+ executeSQL("ALTER TABLE " + Constants.EncoderExerciseTable + " ADD
COLUMN type TEXT DEFAULT \"ALL\";");
+ } catch {
+ LogB.SQL("Catched at Doing alter table encoderExercise ADD COLUMN
type TEXT ...");
+
+ }
+ LogB.SQL("Done!");
+
+ currentVersion = updateVersion("2.19");
+ }
@@ -3188,6 +3204,7 @@ class Sqlite
//just testing: 1.79 - 1.80 Converted DB to 1.80 Created table ForceSensorElasticBandGlue and moved
stiffnessString records there
+ //2.18 - 2.19 Converted DB to 2.19 Doing alter table encoderExercise ADD COLUMN type TEXT ...
//2.17 - 2.18 Converted DB to 2.18 Person77 ALTER TABLE added field: linkServerImage (for
networks)
//2.16 - 2.17 Converted DB to 2.17 Created table lastJumpRjTypeParams
//2.15 - 2.16 Converted DB to 2.16 Created table lastJumpSimpleTypeParams
diff --git a/src/sqlite/preferences.cs b/src/sqlite/preferences.cs
index 0a7496db..fc22aa99 100644
--- a/src/sqlite/preferences.cs
+++ b/src/sqlite/preferences.cs
@@ -247,7 +247,7 @@ class SqlitePreferences : Sqlite
Insert ("encoder1RMMethod", Constants.Encoder1RMMethod.WEIGHTED2.ToString(),
dbcmdTr);
ArrayList encoderExercises =
- SqliteEncoder.SelectEncoderExercises(true, -1, true);
+ SqliteEncoder.SelectEncoderExercises(true, -1, true,
Constants.EncoderGI.ALL);
if(encoderExercises.Count > 0) {
EncoderExercise ex = (EncoderExercise) encoderExercises[0];
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]