[chronojump] Autosave curves on capture with options selectable on preferences



commit fdd02eead81214f1ab4934c5ca7a1c304011660a
Author: Xavier de Blas <xaviblas gmail com>
Date:   Thu Jul 17 16:05:05 2014 +0200

    Autosave curves on capture with options selectable on preferences

 glade/chronojump.glade      |  748 ++++++++++++++++++++++++++++++-------------
 src/constants.cs            |    2 +
 src/gui/chronojump.cs       |   21 ++-
 src/gui/encoder.cs          |   22 +-
 src/gui/encoderTreeviews.cs |   16 +-
 src/gui/preferences.cs      |   22 ++-
 src/sqlite/main.cs          |   43 ++-
 src/sqlite/preferences.cs   |    1 +
 8 files changed, 615 insertions(+), 260 deletions(-)
---
diff --git a/glade/chronojump.glade b/glade/chronojump.glade
index 948d2e1..3c137d1 100644
--- a/glade/chronojump.glade
+++ b/glade/chronojump.glade
@@ -6197,6 +6197,12 @@ Second Chronopic to platforms.</property>
                                                         <child>
                                                           <placeholder/>
                                                         </child>
+                                                        <child>
+                                                          <placeholder/>
+                                                        </child>
+                                                        <child>
+                                                          <placeholder/>
+                                                        </child>
                                                       </widget>
                                                       <packing>
                                                         <property name="expand">True</property>
@@ -6810,6 +6816,12 @@ Second Chronopic to platforms.</property>
                                                             <child>
                                                             <placeholder/>
                                                             </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
                                                             </widget>
                                                             </child>
                                                             <child>
@@ -7557,6 +7569,12 @@ Second Chronopic to platforms.</property>
                                                             <child>
                                                             <placeholder/>
                                                             </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="position">2</property>
@@ -8063,6 +8081,12 @@ Second Chronopic to platforms.</property>
                                                             <child>
                                                             <placeholder/>
                                                             </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="position">4</property>
@@ -17352,6 +17376,12 @@ by you</property>
                         <child>
                           <placeholder/>
                         </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
                       </widget>
                     </child>
                   </widget>
@@ -17766,6 +17796,12 @@ by you</property>
                         <child>
                           <placeholder/>
                         </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
                       </widget>
                     </child>
                   </widget>
@@ -18608,6 +18644,18 @@ by you</property>
             <child>
               <placeholder/>
             </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
+            <child>
+              <placeholder/>
+            </child>
           </widget>
           <packing>
             <property name="expand">True</property>
@@ -26151,6 +26199,42 @@ options</property>
                             <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>
                           </widget>
                         </child>
                       </widget>
@@ -27955,6 +28039,12 @@ To differentiate between male and female, use the values 1/0, or m/f, or M/F on
                                 <child>
                                   <placeholder/>
                                 </child>
+                                <child>
+                                  <placeholder/>
+                                </child>
+                                <child>
+                                  <placeholder/>
+                                </child>
                               </widget>
                             </child>
                           </widget>
@@ -28428,6 +28518,12 @@ To differentiate between male and female, use the values 1/0, or m/f, or M/F on
                         <child>
                           <placeholder/>
                         </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
                       </widget>
                     </child>
                   </widget>
@@ -29428,88 +29524,155 @@ show elevation as:</property>
               </packing>
             </child>
             <child>
-              <widget class="GtkVBox" id="vbox123">
+              <widget class="GtkScrolledWindow" id="scrolledwindow2">
                 <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="border_width">8</property>
-                <property name="spacing">12</property>
-                <child>
-                  <widget class="GtkVBox" id="vbox2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="spacing">4</property>
-                    <child>
-                      <widget class="GtkCheckButton" id="checkbutton_encoder_propulsive">
-                        <property name="label" translatable="yes">Propulsive</property>
-                        <property name="visible">True</property>
-                        <property name="can_focus">True</property>
-                        <property name="receives_default">False</property>
-                        <property name="has_tooltip">True</property>
-                        <property name="tooltip" translatable="yes">On concentric evaluate only propulsive 
phase</property>
-                        <property name="active">True</property>
-                        <property name="draw_indicator">True</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="label17">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="xalign">0</property>
-                        <property name="xpad">12</property>
-                        <property name="label" translatable="yes">On inertial machines this option is not 
used.</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">False</property>
-                    <property name="position">0</property>
-                  </packing>
-                </child>
+                <property name="can_focus">True</property>
+                <property name="hscrollbar_policy">never</property>
+                <property name="vscrollbar_policy">automatic</property>
                 <child>
-                  <widget class="GtkFrame" id="frame1">
+                  <widget class="GtkViewport" id="viewport2">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="label_yalign">0.69999998807907104</property>
-                    <property name="shadow_type">out</property>
                     <child>
-                      <widget class="GtkAlignment" id="alignment1">
+                      <widget class="GtkVBox" id="vbox123">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
+                        <property name="border_width">8</property>
+                        <property name="spacing">20</property>
                         <child>
-                          <widget class="GtkVBox" id="vbox4">
+                          <widget class="GtkVBox" id="vbox2">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="border_width">8</property>
-                            <property name="spacing">12</property>
+                            <property name="spacing">8</property>
                             <child>
-                              <widget class="GtkHBox" id="hbox2">
+                              <widget class="GtkCheckButton" id="checkbutton_encoder_propulsive">
+                                <property name="label" translatable="yes">Propulsive</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="has_tooltip">True</property>
+                                <property name="tooltip" translatable="yes">On concentric evaluate only 
propulsive phase</property>
+                                <property name="active">True</property>
+                                <property name="draw_indicator">True</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="label17">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="xalign">0</property>
+                                <property name="xpad">12</property>
+                                <property name="label" translatable="yes">On inertial machines this option 
is not used.</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">False</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkFrame" id="frame6">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="label_yalign">0.69999998807907104</property>
+                            <property name="shadow_type">out</property>
+                            <child>
+                              <widget class="GtkAlignment" id="alignment6">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
-                                <property name="spacing">20</property>
+                                <property name="left_padding">12</property>
                                 <child>
-                                  <widget class="GtkHBox" id="hbox5">
+                                  <widget class="GtkVBox" id="vbox13">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
-                                    <property name="spacing">10</property>
+                                    <property name="border_width">8</property>
+                                    <property name="spacing">8</property>
                                     <child>
-                                      <widget class="GtkLabel" id="label8">
+                                      <widget class="GtkRadioButton" 
id="radio_encoder_auto_save_curve_bestmeanpower">
                                         <property name="visible">True</property>
-                                        <property name="can_focus">False</property>
-                                        <property name="xalign">0</property>
-                                        <property name="label" translatable="yes">Smooth</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="active">True</property>
+                                        <property name="draw_indicator">True</property>
+                                        <child>
+                                          <widget class="GtkHBox" id="hbox11">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">False</property>
+                                            <property name="spacing">8</property>
+                                            <child>
+                                              <widget class="GtkLabel" id="label40">
+                                                <property name="visible">True</property>
+                                                <property name="can_focus">False</property>
+                                                <property name="label" translatable="yes">Save the curve 
with best mean power</property>
+                                              </widget>
+                                              <packing>
+                                                <property name="expand">True</property>
+                                                <property name="fill">True</property>
+                                                <property name="position">0</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <widget class="GtkHBox" id="hbox12">
+                                                <property name="visible">True</property>
+                                                <property name="can_focus">False</property>
+                                                <child>
+                                                  <widget class="GtkLabel" id="label37">
+                                                    <property name="visible">True</property>
+                                                    <property name="can_focus">False</property>
+                                                    <property name="label">(</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="label39">
+                                                    <property name="visible">True</property>
+                                                    <property name="can_focus">False</property>
+                                                    <property name="label" 
translatable="yes">default</property>
+                                                  </widget>
+                                                  <packing>
+                                                    <property name="expand">True</property>
+                                                    <property name="fill">True</property>
+                                                    <property name="position">1</property>
+                                                  </packing>
+                                                </child>
+                                                <child>
+                                                  <widget class="GtkLabel" id="label41">
+                                                    <property name="visible">True</property>
+                                                    <property name="can_focus">False</property>
+                                                    <property name="label">)</property>
+                                                  </widget>
+                                                  <packing>
+                                                    <property name="expand">True</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">1</property>
+                                              </packing>
+                                            </child>
+                                          </widget>
+                                        </child>
                                       </widget>
                                       <packing>
                                         <property name="expand">False</property>
@@ -29518,222 +29681,333 @@ show elevation as:</property>
                                       </packing>
                                     </child>
                                     <child>
-                                      <widget class="GtkSpinButton" id="spin_encoder_smooth_con">
+                                      <widget class="GtkHBox" id="hbox10">
                                         <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>
-                                        <property name="adjustment">0.69999999999999996 0 1 0.01 
0.10000000000000001 0</property>
-                                        <property name="climb_rate">1</property>
-                                        <property name="digits">2</property>
-                                        <property name="snap_to_ticks">True</property>
-                                        <property name="numeric">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="spacing">8</property>
+                                        <child>
+                                          <widget class="GtkRadioButton" 
id="radio_encoder_auto_save_curve_all">
+                                            <property name="label" translatable="yes">Save all</property>
+                                            <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">True</property>
+                                            <property 
name="group">radio_encoder_auto_save_curve_bestmeanpower</property>
+                                          </widget>
+                                          <packing>
+                                            <property name="expand">True</property>
+                                            <property name="fill">True</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <widget class="GtkRadioButton" 
id="radio_encoder_auto_save_curve_none">
+                                            <property name="label" translatable="yes">Do not save</property>
+                                            <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">True</property>
+                                            <property 
name="group">radio_encoder_auto_save_curve_bestmeanpower</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="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="position">0</property>
-                                  </packing>
                                 </child>
+                              </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label35">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Save curves automatically on 
capture</property>
+                                <property name="use_markup">True</property>
+                              </widget>
+                              <packing>
+                                <property name="type">label_item</property>
+                              </packing>
+                            </child>
+                          </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">False</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkFrame" id="frame1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label_xalign">0</property>
+                            <property name="label_yalign">0.69999998807907104</property>
+                            <property name="shadow_type">out</property>
+                            <child>
+                              <widget class="GtkAlignment" id="alignment1">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="left_padding">12</property>
                                 <child>
-                                  <widget class="GtkHBox" id="hbox3">
+                                  <widget class="GtkVBox" id="vbox4">
                                     <property name="visible">True</property>
                                     <property name="can_focus">False</property>
-                                    <property name="spacing">10</property>
+                                    <property name="border_width">8</property>
+                                    <property name="spacing">12</property>
                                     <child>
-                                      <widget class="GtkLabel" id="label13">
+                                      <widget class="GtkHBox" id="hbox2">
                                         <property name="visible">True</property>
                                         <property name="can_focus">False</property>
-                                        <property name="label" translatable="yes">Recommended:</property>
+                                        <property name="spacing">20</property>
+                                        <child>
+                                          <widget class="GtkHBox" id="hbox5">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">False</property>
+                                            <property name="spacing">10</property>
+                                            <child>
+                                              <widget class="GtkLabel" id="label8">
+                                                <property name="visible">True</property>
+                                                <property name="can_focus">False</property>
+                                                <property name="xalign">0</property>
+                                                <property name="label" translatable="yes">Smooth</property>
+                                              </widget>
+                                              <packing>
+                                                <property name="expand">False</property>
+                                                <property name="fill">False</property>
+                                                <property name="position">0</property>
+                                              </packing>
+                                            </child>
+                                            <child>
+                                              <widget class="GtkSpinButton" id="spin_encoder_smooth_con">
+                                                <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>
+                                                <property name="adjustment">0.69999999999999996 0 1 0.01 
0.10000000000000001 0</property>
+                                                <property name="climb_rate">1</property>
+                                                <property name="digits">2</property>
+                                                <property name="snap_to_ticks">True</property>
+                                                <property name="numeric">True</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">True</property>
+                                            <property name="fill">True</property>
+                                            <property name="position">0</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <widget class="GtkHBox" id="hbox3">
+                                            <property name="visible">True</property>
+                                            <property name="can_focus">False</property>
+                                            <property name="spacing">10</property>
+                                            <child>
+                                              <widget class="GtkLabel" id="label13">
+                                                <property name="visible">True</property>
+                                                <property name="can_focus">False</property>
+                                                <property name="label" 
translatable="yes">Recommended:</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_con">
+                                                <property name="visible">True</property>
+                                                <property name="can_focus">False</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">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="expand">True</property>
+                                        <property name="fill">True</property>
                                         <property name="position">0</property>
                                       </packing>
                                     </child>
-                                    <child>
-                                      <widget class="GtkLabel" id="label_encoder_con">
-                                        <property name="visible">True</property>
-                                        <property name="can_focus">False</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">True</property>
-                                    <property name="fill">True</property>
-                                    <property name="position">1</property>
-                                  </packing>
                                 </child>
                               </widget>
+                            </child>
+                            <child>
+                              <widget class="GtkLabel" id="label1">
+                                <property name="visible">True</property>
+                                <property name="can_focus">False</property>
+                                <property name="label" translatable="yes">Smoothing</property>
+                                <property name="use_markup">True</property>
+                              </widget>
                               <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">0</property>
+                                <property name="type">label_item</property>
                               </packing>
                             </child>
                           </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">2</property>
+                          </packing>
                         </child>
-                      </widget>
-                    </child>
-                    <child>
-                      <widget class="GtkLabel" id="label1">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Smoothing</property>
-                        <property name="use_markup">True</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
-                    </child>
-                  </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
-                  </packing>
-                </child>
-                <child>
-                  <widget class="GtkFrame" id="frame2">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label_xalign">0</property>
-                    <property name="label_yalign">0.69999998807907104</property>
-                    <property name="shadow_type">out</property>
-                    <child>
-                      <widget class="GtkAlignment" id="alignment2">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="left_padding">12</property>
                         <child>
-                          <widget class="GtkVBox" id="vbox7">
+                          <widget class="GtkFrame" id="frame2">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
-                            <property name="border_width">8</property>
-                            <property name="spacing">12</property>
+                            <property name="label_xalign">0</property>
+                            <property name="label_yalign">0.69999998807907104</property>
+                            <property name="shadow_type">out</property>
                             <child>
-                              <widget class="GtkTable" id="table3">
+                              <widget class="GtkAlignment" id="alignment2">
                                 <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">10</property>
-                                <property name="row_spacing">8</property>
+                                <property name="left_padding">12</property>
                                 <child>
-                                  <widget class="GtkRadioButton" id="radio_encoder_1RM_nonweighted">
-                                    <property name="label" translatable="yes">Non weighted</property>
+                                  <widget class="GtkVBox" id="vbox7">
                                     <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">True</property>
-                                  </widget>
-                                </child>
-                                <child>
-                                  <widget class="GtkRadioButton" id="radio_encoder_1RM_weighted">
-                                    <property name="label" translatable="yes">Weighted</property>
-                                    <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">True</property>
-                                    <property name="group">radio_encoder_1RM_nonweighted</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkRadioButton" id="radio_encoder_1RM_weighted2">
-                                    <property name="label" translatable="yes">Weighted^2</property>
-                                    <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">True</property>
-                                    <property name="group">radio_encoder_1RM_nonweighted</property>
-                                  </widget>
-                                  <packing>
-                                    <property name="top_attach">1</property>
-                                    <property name="bottom_attach">2</property>
-                                  </packing>
-                                </child>
-                                <child>
-                                  <widget class="GtkRadioButton" id="radio_encoder_1RM_weighted3">
-                                    <property name="label" translatable="yes">Weighted^3</property>
-                                    <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">True</property>
-                                    <property name="group">radio_encoder_1RM_nonweighted</property>
+                                    <property name="can_focus">False</property>
+                                    <property name="border_width">8</property>
+                                    <property name="spacing">12</property>
+                                    <child>
+                                      <widget class="GtkTable" id="table3">
+                                        <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">10</property>
+                                        <property name="row_spacing">8</property>
+                                        <child>
+                                          <widget class="GtkRadioButton" id="radio_encoder_1RM_nonweighted">
+                                            <property name="label" translatable="yes">Non weighted</property>
+                                            <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">True</property>
+                                          </widget>
+                                        </child>
+                                        <child>
+                                          <widget class="GtkRadioButton" id="radio_encoder_1RM_weighted">
+                                            <property name="label" translatable="yes">Weighted</property>
+                                            <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">True</property>
+                                            <property name="group">radio_encoder_1RM_nonweighted</property>
+                                          </widget>
+                                          <packing>
+                                            <property name="left_attach">1</property>
+                                            <property name="right_attach">2</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <widget class="GtkRadioButton" id="radio_encoder_1RM_weighted2">
+                                            <property name="label" translatable="yes">Weighted^2</property>
+                                            <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">True</property>
+                                            <property name="group">radio_encoder_1RM_nonweighted</property>
+                                          </widget>
+                                          <packing>
+                                            <property name="top_attach">1</property>
+                                            <property name="bottom_attach">2</property>
+                                          </packing>
+                                        </child>
+                                        <child>
+                                          <widget class="GtkRadioButton" id="radio_encoder_1RM_weighted3">
+                                            <property name="label" translatable="yes">Weighted^3</property>
+                                            <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">True</property>
+                                            <property name="group">radio_encoder_1RM_nonweighted</property>
+                                          </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>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">True</property>
+                                        <property name="fill">True</property>
+                                        <property name="position">0</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkLabel" id="label10">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="label" translatable="yes">Recommended: 
Weighted^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="left_attach">1</property>
-                                    <property name="right_attach">2</property>
-                                    <property name="top_attach">1</property>
-                                    <property name="bottom_attach">2</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="GtkLabel" id="label10">
+                              <widget class="GtkLabel" id="label15">
                                 <property name="visible">True</property>
                                 <property name="can_focus">False</property>
-                                <property name="xalign">0</property>
-                                <property name="label" translatable="yes">Recommended: Weighted^2</property>
+                                <property name="label" translatable="yes">1RM prediction</property>
+                                <property name="use_markup">True</property>
                               </widget>
                               <packing>
-                                <property name="expand">True</property>
-                                <property name="fill">True</property>
-                                <property name="position">1</property>
+                                <property name="type">label_item</property>
                               </packing>
                             </child>
                           </widget>
+                          <packing>
+                            <property name="expand">False</property>
+                            <property name="fill">True</property>
+                            <property name="position">3</property>
+                          </packing>
                         </child>
                       </widget>
                     </child>
-                    <child>
-                      <widget class="GtkLabel" id="label15">
-                        <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">1RM prediction</property>
-                        <property name="use_markup">True</property>
-                      </widget>
-                      <packing>
-                        <property name="type">label_item</property>
-                      </packing>
-                    </child>
                   </widget>
-                  <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">2</property>
-                  </packing>
                 </child>
               </widget>
               <packing>
@@ -30696,6 +30970,12 @@ show elevation as:</property>
                         <child>
                           <placeholder/>
                         </child>
+                        <child>
+                          <placeholder/>
+                        </child>
+                        <child>
+                          <placeholder/>
+                        </child>
                       </widget>
                       <packing>
                         <property name="left_attach">2</property>
@@ -30774,6 +31054,12 @@ show elevation as:</property>
                     <child>
                       <placeholder/>
                     </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
                   </widget>
                 </child>
               </widget>
@@ -30867,6 +31153,12 @@ show elevation as:</property>
                     <child>
                       <placeholder/>
                     </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
                   </widget>
                 </child>
               </widget>
diff --git a/src/constants.cs b/src/constants.cs
index 13b4fd4..0300673 100644
--- a/src/constants.cs
+++ b/src/constants.cs
@@ -748,6 +748,8 @@ public class Constants
                
        public enum Encoder1RMMethod { NONWEIGHTED, WEIGHTED, WEIGHTED2, WEIGHTED3 }
        public enum ContextMenu { NONE, EDITDELETE, DELETE }
+       
+       public enum EncoderAutoSaveCurve { ALL, NONE, BESTMEANPOWER }
 
        public enum DoubleContact {
                FIRST, AVERAGE, LAST
diff --git a/src/gui/chronojump.cs b/src/gui/chronojump.cs
index 819bc23..9f3e111 100644
--- a/src/gui/chronojump.cs
+++ b/src/gui/chronojump.cs
@@ -362,6 +362,7 @@ public partial class ChronoJumpWindow
        private static string CSVExportDecimalSeparator; //"COMMA" or "POINT"
        private static bool RGraphsTranslate;
        private static bool useHeightsOnJumpIndexes;
+       private static Constants.EncoderAutoSaveCurve encoderAutoSaveCurve;
 
        private static Person currentPerson;
        private static Session currentSession;
@@ -956,6 +957,14 @@ public partial class ChronoJumpWindow
                
                useHeightsOnJumpIndexes = SqlitePreferences.Select("useHeightsOnJumpIndexes") == "True";
 
+               string temp = SqlitePreferences.Select("encoderAutoSaveCurve");
+               if(temp == Constants.EncoderAutoSaveCurve.BESTMEANPOWER.ToString())
+                       encoderAutoSaveCurve = Constants.EncoderAutoSaveCurve.BESTMEANPOWER;
+               else if(temp == Constants.EncoderAutoSaveCurve.ALL.ToString())
+                       encoderAutoSaveCurve = Constants.EncoderAutoSaveCurve.ALL;
+               else
+                       encoderAutoSaveCurve = Constants.EncoderAutoSaveCurve.NONE;
+
                //change language works on windows. On Linux let's change the locale
                //if(UtilAll.IsWindows())
                //      languageChange();
@@ -2837,7 +2846,8 @@ public partial class ChronoJumpWindow
                                SqlitePreferences.Select("language"),
                                encoderPropulsive, encoderSmoothCon,
                                videoDevices, videoDeviceNum, SqlitePreferences.Select("encoder1RMMethod"),
-                               CSVExportDecimalSeparator, RGraphsTranslate, useHeightsOnJumpIndexes
+                               CSVExportDecimalSeparator, RGraphsTranslate, useHeightsOnJumpIndexes,
+                               encoderAutoSaveCurve
                                );
                myWin.Button_accept.Clicked += new EventHandler(on_preferences_accepted);
        }
@@ -2927,6 +2937,15 @@ public partial class ChronoJumpWindow
                RGraphsTranslate = SqlitePreferences.Select("RGraphsTranslate") == "True"; 
                
                useHeightsOnJumpIndexes = SqlitePreferences.Select("useHeightsOnJumpIndexes") == "True";
+               
+               string temp = SqlitePreferences.Select("encoderAutoSaveCurve");
+               if(temp == Constants.EncoderAutoSaveCurve.BESTMEANPOWER.ToString())
+                       encoderAutoSaveCurve = Constants.EncoderAutoSaveCurve.BESTMEANPOWER;
+               else if(temp == Constants.EncoderAutoSaveCurve.ALL.ToString())
+                       encoderAutoSaveCurve = Constants.EncoderAutoSaveCurve.ALL;
+               else
+                       encoderAutoSaveCurve = Constants.EncoderAutoSaveCurve.NONE;
+
 
                videoDeviceNum = Convert.ToInt32(SqlitePreferences.Select("videoDevice"));
                if(checkbutton_video.Active) {
diff --git a/src/gui/encoder.cs b/src/gui/encoder.cs
index 581b89f..98d3ef4 100644
--- a/src/gui/encoder.cs
+++ b/src/gui/encoder.cs
@@ -2915,13 +2915,13 @@ public partial class ChronoJumpWindow
        }
 
        void on_button_encoder_capture_curves_all_clicked (object o, EventArgs args) {
-               encoderCaptureSaveCurvesAllNoneBest(CurvesSaveOp.ALL);
+               encoderCaptureSaveCurvesAllNoneBest(Constants.EncoderAutoSaveCurve.ALL);
        }
        void on_button_encoder_capture_curves_best_clicked (object o, EventArgs args) {
-               encoderCaptureSaveCurvesAllNoneBest(CurvesSaveOp.BEST);
+               encoderCaptureSaveCurvesAllNoneBest(Constants.EncoderAutoSaveCurve.BESTMEANPOWER);
        }
        void on_button_encoder_capture_curves_none_clicked (object o, EventArgs args) {
-               encoderCaptureSaveCurvesAllNoneBest(CurvesSaveOp.NONE);
+               encoderCaptureSaveCurvesAllNoneBest(Constants.EncoderAutoSaveCurve.NONE);
        }
 
        void on_combo_encoder_analyze_data_compare_changed (object o, EventArgs args)
@@ -4565,9 +4565,21 @@ public partial class ChronoJumpWindow
                                                false); //not capturing
                
                                //autosave signal (but not in load)
-                               if(action == encoderActions.CURVES)
+                               if(action == encoderActions.CURVES) 
+                               {
+                                       bool needToAutoSaveCurve = false;
+                                       if(
+                                                       encoderSignalUniqueID == "-1" &&        //if we just 
captured
+                                                       (encoderAutoSaveCurve == 
Constants.EncoderAutoSaveCurve.ALL ||
+                                                       encoderAutoSaveCurve == 
Constants.EncoderAutoSaveCurve.BESTMEANPOWER) )
+                                               needToAutoSaveCurve = true;
+
                                        encoder_pulsebar_capture.Text = encoderSaveSignalOrCurve("signal", 
0); //this updates encoderSignalUniqueID
-                               else
+
+                                       if(needToAutoSaveCurve)
+                                               encoderCaptureSaveCurvesAllNoneBest(encoderAutoSaveCurve);
+
+                               } else
                                        encoder_pulsebar_capture.Text = "";
                
 
diff --git a/src/gui/encoderTreeviews.cs b/src/gui/encoderTreeviews.cs
index aca91c1..360abad 100644
--- a/src/gui/encoderTreeviews.cs
+++ b/src/gui/encoderTreeviews.cs
@@ -258,13 +258,11 @@ public partial class ChronoJumpWindow
                }
        }
 
-       enum CurvesSaveOp { ALL, NONE, BEST }
-       
        //allNone: true (save all), false (unsave all)
-       void encoderCaptureSaveCurvesAllNoneBest(CurvesSaveOp saveOption)
+       void encoderCaptureSaveCurvesAllNoneBest(Constants.EncoderAutoSaveCurve saveOption)
        {
                int bestRow = 0;
-               if(saveOption == CurvesSaveOp.BEST) {
+               if(saveOption == Constants.EncoderAutoSaveCurve.BESTMEANPOWER) {
                        //get the concentric curves
                        EncoderSignal encoderSignal = new 
EncoderSignal(treeviewEncoderCaptureCurvesGetCurves(AllEccCon.CON));
                        bestRow = encoderSignal.FindPosOfBestMeanPower();
@@ -294,10 +292,10 @@ public partial class ChronoJumpWindow
                        
                        EncoderCurve curve = (EncoderCurve) encoderCaptureListStore.GetValue (iter, 0);
                        if(
-                                       (! curve.Record && saveOption == CurvesSaveOp.ALL) ||
-                                       (! curve.Record && saveOption == CurvesSaveOp.BEST && i == bestRow) ||
-                                       (curve.Record && saveOption == CurvesSaveOp.BEST && i != bestRow) ||
-                                       (curve.Record && saveOption == CurvesSaveOp.NONE) ) 
+                                       (! curve.Record && saveOption == Constants.EncoderAutoSaveCurve.ALL) 
||
+                                       (! curve.Record && saveOption == 
Constants.EncoderAutoSaveCurve.BESTMEANPOWER && i == bestRow) ||
+                                       (curve.Record && saveOption == 
Constants.EncoderAutoSaveCurve.BESTMEANPOWER && i != bestRow) ||
+                                       (curve.Record && saveOption == Constants.EncoderAutoSaveCurve.NONE) ) 
                        { 
                                changeTo = ! curve.Record;
                                
@@ -344,7 +342,7 @@ public partial class ChronoJumpWindow
                //combo_encoder_capture_show_save_curve_button();
                        
                string message = "";
-               if(saveOption == CurvesSaveOp.NONE)
+               if(saveOption == Constants.EncoderAutoSaveCurve.NONE)
                        message = Catalog.GetString("Removed");
                else
                        message = Catalog.GetString("Saved");
diff --git a/src/gui/preferences.cs b/src/gui/preferences.cs
index fa294ff..ce9205c 100644
--- a/src/gui/preferences.cs
+++ b/src/gui/preferences.cs
@@ -89,6 +89,10 @@ public class PreferencesWindow {
 
        [Widget] Gtk.RadioButton radio_use_heights_on_jump_indexes;
        [Widget] Gtk.RadioButton radio_do_not_use_heights_on_jump_indexes;
+       
+       [Widget] Gtk.RadioButton radio_encoder_auto_save_curve_bestmeanpower;
+       [Widget] Gtk.RadioButton radio_encoder_auto_save_curve_all;
+       [Widget] Gtk.RadioButton radio_encoder_auto_save_curve_none;
 
 
 //     [Widget] Gtk.Box hbox_language_row;
@@ -131,7 +135,9 @@ public class PreferencesWindow {
                        bool askDeletion, bool weightStatsPercent, bool heightPreferred, bool 
metersSecondsPreferred, 
                        string language, bool encoderPropulsive, double encoderSmoothCon,
                        string [] videoDevices, int videoDeviceNum, string encoder1RMMethod,
-                       string CSVExportDecimalSeparator, bool RGraphsTranslate, bool useHeightsOnJumpIndexes)
+                       string CSVExportDecimalSeparator, bool RGraphsTranslate, bool useHeightsOnJumpIndexes,
+                       Constants.EncoderAutoSaveCurve encoderAutoSaveCurve
+                       )
        {
                if (PreferencesWindowBox == null) {
                        PreferencesWindowBox = new PreferencesWindow ();
@@ -258,6 +264,13 @@ public class PreferencesWindow {
                        PreferencesWindowBox.radio_use_heights_on_jump_indexes.Active = true;
                else
                        PreferencesWindowBox.radio_do_not_use_heights_on_jump_indexes.Active = true;
+                       
+               if(encoderAutoSaveCurve == Constants.EncoderAutoSaveCurve.BESTMEANPOWER)
+                       PreferencesWindowBox.radio_encoder_auto_save_curve_bestmeanpower.Active = true;
+               else if(encoderAutoSaveCurve == Constants.EncoderAutoSaveCurve.ALL)
+                       PreferencesWindowBox.radio_encoder_auto_save_curve_all.Active = true;
+               else
+                       PreferencesWindowBox.radio_encoder_auto_save_curve_none.Active = true;
 
 
                PreferencesWindowBox.preferences.Show ();
@@ -606,6 +619,13 @@ public class PreferencesWindow {
                
                SqlitePreferences.Update("useHeightsOnJumpIndexes", 
                                PreferencesWindowBox.radio_use_heights_on_jump_indexes.Active.ToString(), 
true);
+               
+               if(PreferencesWindowBox.radio_encoder_auto_save_curve_bestmeanpower.Active)
+                       SqlitePreferences.Update("encoderAutoSaveCurve", 
Constants.EncoderAutoSaveCurve.BESTMEANPOWER.ToString(), true);
+               else if(PreferencesWindowBox.radio_encoder_auto_save_curve_all.Active)
+                       SqlitePreferences.Update("encoderAutoSaveCurve", 
Constants.EncoderAutoSaveCurve.ALL.ToString(), true);
+               else
+                       SqlitePreferences.Update("encoderAutoSaveCurve", 
Constants.EncoderAutoSaveCurve.NONE.ToString(), true);
        
                string encoder1RMMethod = "";   
                if(PreferencesWindowBox.radio_encoder_1RM_nonweighted.Active)
diff --git a/src/sqlite/main.cs b/src/sqlite/main.cs
index 65eada7..f80f04a 100644
--- a/src/sqlite/main.cs
+++ b/src/sqlite/main.cs
@@ -74,7 +74,7 @@ class Sqlite
         * Important, change this if there's any update to database
         * Important2: if database version get numbers higher than 1, check if the comparisons with 
currentVersion works ok
         */
-       static string lastChronojumpDatabaseVersion = "1.10";
+       static string lastChronojumpDatabaseVersion = "1.11";
 
        public Sqlite() {
        }
@@ -164,7 +164,7 @@ class Sqlite
                try{
                        Log.WriteLine(string.Format("Trying database in ... " + connectionString));
 
-//                     dbcon = new SqliteConnection();
+               //dbcon = new SqliteConnection();
                        */
                /*
                        dbcon.ConnectionString = connectionString;
@@ -174,7 +174,7 @@ class Sqlite
                        try {
                                Log.WriteLine(string.Format("Trying database in ... " + 
connectionStringTemp));
 
-//                             dbcon = new SqliteConnection();
+               //dbcon = new SqliteConnection();
                                dbcon.ConnectionString = connectionStringTemp;
                                dbcmd = dbcon.CreateCommand();
                        } catch { 
@@ -241,20 +241,20 @@ class Sqlite
                Log.WriteLine("creating file...");
                Log.WriteLine(connectionString);
                
-       //      if(!Directory.Exists(home)) {
-       //              Directory.CreateDirectory (home);
-       //      }
+               //      if(!Directory.Exists(home)) {
+               //              Directory.CreateDirectory (home);
+               //      }
 
-//             try {   
-                       dbcon.Open();
-                       /*
-               } catch {
-                       dbcon.Close();
-                       dbcon.ConnectionString = connectionStringTemp;
-                       dbcmd = dbcon.CreateCommand();
-                       dbcon.Open();
-               }
-               */
+               //try { 
+               dbcon.Open();
+               /*
+                  } catch {
+                  dbcon.Close();
+                  dbcon.ConnectionString = connectionStringTemp;
+                  dbcmd = dbcon.CreateCommand();
+                  dbcon.Open();
+                  }
+                  */
                dbcon.Close();
        }
        
@@ -1627,6 +1627,17 @@ class Sqlite
 
                                currentVersion = "1.10";
                        }
+                       if(currentVersion == "1.10") {
+                               dbcon.Open();
+                       
+                               Log.WriteLine("Added option on autosave curves on capture 
(all/bestmeanpower/none)");
+                               
+                               SqlitePreferences.Insert ("encoderAutoSaveCurve", 
Constants.EncoderAutoSaveCurve.BESTMEANPOWER.ToString()); 
+                               SqlitePreferences.Update ("databaseVersion", "1.11", true); 
+                               dbcon.Close();
+
+                               currentVersion = "1.11";
+                       }
                
                
 
diff --git a/src/sqlite/preferences.cs b/src/sqlite/preferences.cs
index 44f4d8b..d23e0fa 100644
--- a/src/sqlite/preferences.cs
+++ b/src/sqlite/preferences.cs
@@ -80,6 +80,7 @@ class SqlitePreferences : Sqlite
                Insert ("CSVExportDecimalSeparator", Util.GetDecimalSeparatorFromLocale());
                Insert ("RGraphsTranslate", "True");
                Insert ("useHeightsOnJumpIndexes", "True");
+               Insert ("encoderAutoSaveCurve", Constants.EncoderAutoSaveCurve.BESTMEANPOWER.ToString()); 
        }
 
        public static void Insert(string myName, string myValue)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]