[chronojump] ExecuteAuto Load (80% done)



commit f77c2006c191fff09d2dffbb5c59c57a3cb8cf52
Author: Xavier de Blas <xaviblas gmail com>
Date:   Mon Oct 13 00:43:01 2014 +0200

    ExecuteAuto Load (80% done)

 chronojump_server/Makefile.am             |    1 +
 glade/chronojump.glade                    |  516 +++++++++++++++++++---------
 libcesarplayer/baconvideowidget-marshal.c |  494 ++++++++++++++--------------
 libcesarplayer/baconvideowidget-marshal.h |   88 +++---
 src/Makefile.am                           |    2 +-
 src/executeAuto.cs                        |   76 ++++-
 src/gui/executeAuto.cs                    |  137 ++++++--
 src/gui/usefulObjects.cs                  |   32 --
 src/sqlite/executeAuto.cs                 |   35 ++-
 9 files changed, 860 insertions(+), 521 deletions(-)
---
diff --git a/chronojump_server/Makefile.am b/chronojump_server/Makefile.am
index aedbf43..abef8d4 100644
--- a/chronojump_server/Makefile.am
+++ b/chronojump_server/Makefile.am
@@ -10,6 +10,7 @@ SOURCES = \
        ../src/utilAll.cs\
        ../src/utilDate.cs\
        ../src/encoder.cs\
+       ../src/executeAuto.cs\
        ../src/event.cs\
        ../src/jump.cs\
        ../src/run.cs\
diff --git a/glade/chronojump.glade b/glade/chronojump.glade
index 8d58c08..ba3b838 100644
--- a/glade/chronojump.glade
+++ b/glade/chronojump.glade
@@ -6272,6 +6272,9 @@ Second Chronopic to platforms.</property>
                                                         <child>
                                                           <placeholder/>
                                                         </child>
+                                                        <child>
+                                                          <placeholder/>
+                                                        </child>
                                                       </widget>
                                                       <packing>
                                                         <property name="expand">True</property>
@@ -6954,6 +6957,9 @@ Second Chronopic to platforms.</property>
                                                             <child>
                                                             <placeholder/>
                                                             </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
                                                             </widget>
                                                             </child>
                                                             <child>
@@ -7770,6 +7776,9 @@ Second Chronopic to platforms.</property>
                                                             <child>
                                                             <placeholder/>
                                                             </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="position">2</property>
@@ -8345,6 +8354,9 @@ Second Chronopic to platforms.</property>
                                                             <child>
                                                             <placeholder/>
                                                             </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="position">4</property>
@@ -18046,6 +18058,9 @@ by you</property>
                         <child>
                           <placeholder/>
                         </child>
+                        <child>
+                          <placeholder/>
+                        </child>
                       </widget>
                     </child>
                   </widget>
@@ -18529,6 +18544,9 @@ by you</property>
                         <child>
                           <placeholder/>
                         </child>
+                        <child>
+                          <placeholder/>
+                        </child>
                       </widget>
                     </child>
                   </widget>
@@ -19504,6 +19522,9 @@ by you</property>
               <placeholder/>
             </child>
             <child>
+              <placeholder/>
+            </child>
+            <child>
               <widget class="GtkButton" id="button_video_url">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
@@ -19536,6 +19557,9 @@ by you</property>
             <child>
               <placeholder/>
             </child>
+            <child>
+              <placeholder/>
+            </child>
           </widget>
           <packing>
             <property name="expand">True</property>
@@ -24949,206 +24973,340 @@ comments</property>
         <property name="border_width">8</property>
         <property name="spacing">4</property>
         <child>
-          <widget class="GtkNotebook" id="notebook">
+          <widget class="GtkNotebook" id="notebook_main">
             <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="GtkFrame" id="frame1">
+              <widget class="GtkVBox" id="vbox2">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="border_width">8</property>
-                <property name="label_xalign">0</property>
-                <property name="shadow_type">in</property>
+                <property name="spacing">20</property>
                 <child>
-                  <widget class="GtkAlignment" id="alignment1">
+                  <widget class="GtkVBox" id="vbox13">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="border_width">8</property>
-                    <property name="left_padding">12</property>
+                    <property name="spacing">8</property>
                     <child>
-                      <widget class="GtkVBox" id="vbox2">
+                      <widget class="GtkRadioButton" id="radio_load">
+                        <property name="label" translatable="yes">Load sequence</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>
+                        <signal name="toggled" handler="on_radio_load_toggled" swapped="no"/>
+                      </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_new">
+                        <property name="label" translatable="yes">Create new sequence</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_load</property>
+                        <signal name="toggled" handler="on_radio_new_toggled" swapped="no"/>
+                      </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="GtkNotebook" id="notebook_load_or_new">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="show_tabs">False</property>
+                    <child>
+                      <widget class="GtkFrame" id="frame3">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="spacing">20</property>
+                        <property name="label_xalign">0</property>
+                        <property name="shadow_type">in</property>
                         <child>
-                          <widget class="GtkTable" id="table1">
+                          <widget class="GtkAlignment" id="alignment3">
                             <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">16</property>
-                            <property name="row_spacing">16</property>
-                            <child>
-                              <widget class="GtkRadioButton" id="radio_by_persons">
-                                <property name="label" translatable="yes">By persons</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="xalign">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                                <signal name="toggled" handler="on_radio_mode_toggled" swapped="no"/>
-                              </widget>
-                              <packing>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"/>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkRadioButton" id="radio_by_tests">
-                                <property name="label" translatable="yes">By tests</property>
-                                <property name="visible">True</property>
-                                <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="xalign">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                                <property name="group">radio_by_persons</property>
-                                <signal name="toggled" handler="on_radio_mode_toggled" swapped="no"/>
-                              </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"/>
-                              </packing>
-                            </child>
+                            <property name="top_padding">8</property>
+                            <property name="bottom_padding">8</property>
+                            <property name="left_padding">8</property>
+                            <property name="right_padding">8</property>
                             <child>
-                              <widget class="GtkRadioButton" id="radio_by_sets">
-                                <property name="label" translatable="yes">By sets</property>
+                              <widget class="GtkScrolledWindow" id="scrolledwindow_load">
+                                <property name="height_request">120</property>
                                 <property name="visible">True</property>
                                 <property name="can_focus">True</property>
-                                <property name="receives_default">False</property>
-                                <property name="xalign">0</property>
-                                <property name="yalign">0</property>
-                                <property name="active">True</property>
-                                <property name="draw_indicator">True</property>
-                                <property name="group">radio_by_persons</property>
-                                <signal name="toggled" handler="on_radio_mode_toggled" swapped="no"/>
-                              </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"/>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkImage" id="image_auto_by_sets">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">0</property>
-                                <property name="stock">gtk-missing-image</property>
-                              </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>
-                            <child>
-                              <widget class="GtkImage" id="image_auto_by_tests">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">0</property>
-                                <property name="stock">gtk-missing-image</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>
-                                <property name="x_options">GTK_FILL</property>
-                                <property name="y_options"/>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkImage" id="image_auto_by_persons">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="xalign">0</property>
-                                <property name="stock">gtk-missing-image</property>
+                                <property name="hadjustment">0 0 400 40 360 400</property>
+                                <property name="hscrollbar_policy">automatic</property>
+                                <property name="vscrollbar_policy">automatic</property>
+                                <child>
+                                  <widget class="GtkTreeView" id="treeview_load">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">True</property>
+                                    <signal name="row_activated" handler="on_load_row_double_clicked" 
swapped="no"/>
+                                  </widget>
+                                </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"/>
-                              </packing>
                             </child>
                           </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label9">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="yalign">0.47999998927116394</property>
+                            <property name="label" translatable="yes">Load sequence</property>
+                            <property name="use_markup">True</property>
+                          </widget>
                           <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">0</property>
+                            <property name="type">label_item</property>
                           </packing>
                         </child>
+                      </widget>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label10">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">page 1</property>
+                      </widget>
+                      <packing>
+                        <property name="tab_fill">False</property>
+                        <property name="type">tab</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="shadow_type">in</property>
                         <child>
-                          <widget class="GtkVBox" id="vbox6">
+                          <widget class="GtkAlignment" id="alignment1">
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
+                            <property name="border_width">8</property>
+                            <property name="left_padding">12</property>
                             <child>
-                              <widget class="GtkLabel" id="label_persons_info">
+                              <widget class="GtkVBox" id="vbox6">
+                                <property name="visible">True</property>
                                 <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">First person perform all the tests,
+                                <property name="spacing">20</property>
+                                <child>
+                                  <widget class="GtkTable" id="table1">
+                                    <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">16</property>
+                                    <property name="row_spacing">16</property>
+                                    <child>
+                                      <widget class="GtkRadioButton" id="radio_by_persons">
+                                        <property name="label" translatable="yes">By persons</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="active">True</property>
+                                        <property name="draw_indicator">True</property>
+                                        <signal name="toggled" handler="on_radio_mode_toggled" swapped="no"/>
+                                      </widget>
+                                      <packing>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"/>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkRadioButton" id="radio_by_tests">
+                                        <property name="label" translatable="yes">By tests</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">radio_by_persons</property>
+                                        <signal name="toggled" handler="on_radio_mode_toggled" swapped="no"/>
+                                      </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"/>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkRadioButton" id="radio_by_sets">
+                                        <property name="label" translatable="yes">By sets</property>
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">True</property>
+                                        <property name="receives_default">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="yalign">0</property>
+                                        <property name="draw_indicator">True</property>
+                                        <property name="group">radio_by_persons</property>
+                                        <signal name="toggled" handler="on_radio_mode_toggled" swapped="no"/>
+                                      </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"/>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkImage" id="image_auto_by_sets">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="stock">gtk-missing-image</property>
+                                      </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>
+                                    <child>
+                                      <widget class="GtkImage" id="image_auto_by_tests">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="stock">gtk-missing-image</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>
+                                        <property name="x_options">GTK_FILL</property>
+                                        <property name="y_options"/>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkImage" id="image_auto_by_persons">
+                                        <property name="visible">True</property>
+                                        <property name="can_focus">False</property>
+                                        <property name="xalign">0</property>
+                                        <property name="stock">gtk-missing-image</property>
+                                      </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"/>
+                                      </packing>
+                                    </child>
+                                  </widget>
+                                  <packing>
+                                    <property name="expand">False</property>
+                                    <property name="fill">False</property>
+                                    <property name="position">0</property>
+                                  </packing>
+                                </child>
+                                <child>
+                                  <widget class="GtkVBox" id="vbox12">
+                                    <property name="visible">True</property>
+                                    <property name="can_focus">False</property>
+                                    <child>
+                                      <widget class="GtkLabel" id="label_persons_info">
+                                        <property name="can_focus">False</property>
+                                        <property name="label" translatable="yes">First person perform all 
the tests,
 second person perform all the tests ...</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_tests_info">
-                                <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">All the persons perform first test,
+                                      </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_tests_info">
+                                        <property name="can_focus">False</property>
+                                        <property name="label" translatable="yes">All the persons perform 
first test,
 all the persons perform second test ...</property>
-                              </widget>
-                              <packing>
-                                <property name="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">1</property>
-                              </packing>
-                            </child>
-                            <child>
-                              <widget class="GtkLabel" id="label_series_info">
-                                <property name="can_focus">False</property>
-                                <property name="label" translatable="yes">All the persons perform first set,
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">1</property>
+                                      </packing>
+                                    </child>
+                                    <child>
+                                      <widget class="GtkLabel" id="label_series_info">
+                                        <property name="can_focus">False</property>
+                                        <property name="label" translatable="yes">All the persons perform 
first set,
 all the persons perform second set ...
 One set can contain several tests.</property>
+                                      </widget>
+                                      <packing>
+                                        <property name="expand">False</property>
+                                        <property name="fill">False</property>
+                                        <property name="position">2</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="expand">False</property>
-                                <property name="fill">False</property>
-                                <property name="position">2</property>
-                              </packing>
                             </child>
                           </widget>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label4">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">Create new sequence</property>
+                            <property name="use_markup">True</property>
+                          </widget>
                           <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">False</property>
-                            <property name="position">1</property>
+                            <property name="type">label_item</property>
                           </packing>
                         </child>
                       </widget>
+                      <packing>
+                        <property name="position">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <widget class="GtkLabel" id="label11">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">page 2</property>
+                      </widget>
+                      <packing>
+                        <property name="position">1</property>
+                        <property name="tab_fill">False</property>
+                        <property name="type">tab</property>
+                      </packing>
                     </child>
-                  </widget>
-                </child>
-                <child>
-                  <widget class="GtkLabel" id="label4">
-                    <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="label" translatable="yes">Mode</property>
-                    <property name="use_markup">True</property>
                   </widget>
                   <packing>
-                    <property name="type">label_item</property>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
                   </packing>
                 </child>
               </widget>
@@ -25246,7 +25404,6 @@ One set can contain several tests.</property>
                                 </child>
                                 <child>
                                   <widget class="GtkScrolledWindow" id="scrolled_win_serie2">
-                                    <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="hscrollbar_policy">automatic</property>
                                     <property name="vscrollbar_policy">automatic</property>
@@ -25272,7 +25429,6 @@ One set can contain several tests.</property>
                                 </child>
                                 <child>
                                   <widget class="GtkScrolledWindow" id="scrolled_win_serie3">
-                                    <property name="visible">True</property>
                                     <property name="can_focus">True</property>
                                     <property name="hscrollbar_policy">automatic</property>
                                     <property name="vscrollbar_policy">automatic</property>
@@ -25343,7 +25499,6 @@ One set can contain several tests.</property>
                                     <property name="spacing">8</property>
                                     <child>
                                       <widget class="GtkLabel" id="label_serie2">
-                                        <property name="visible">True</property>
                                         <property name="can_focus">False</property>
                                         <property name="yalign">0</property>
                                         <property name="label" translatable="yes">Set 2</property>
@@ -25357,7 +25512,6 @@ One set can contain several tests.</property>
                                     <child>
                                       <widget class="GtkButton" id="button_add2">
                                         <property name="label">gtk-add</property>
-                                        <property name="visible">True</property>
                                         <property name="can_focus">True</property>
                                         <property name="receives_default">True</property>
                                         <property name="use_stock">True</property>
@@ -25384,7 +25538,6 @@ One set can contain several tests.</property>
                                     <property name="spacing">8</property>
                                     <child>
                                       <widget class="GtkLabel" id="label_serie3">
-                                        <property name="visible">True</property>
                                         <property name="can_focus">False</property>
                                         <property name="yalign">0</property>
                                         <property name="label" translatable="yes">Set 3</property>
@@ -25398,7 +25551,6 @@ One set can contain several tests.</property>
                                     <child>
                                       <widget class="GtkButton" id="button_add3">
                                         <property name="label">gtk-add</property>
-                                        <property name="visible">True</property>
                                         <property name="can_focus">True</property>
                                         <property name="receives_default">True</property>
                                         <property name="use_stock">True</property>
@@ -25434,8 +25586,7 @@ One set can contain several tests.</property>
                           </packing>
                         </child>
                         <child>
-                          <widget class="GtkVBox" id="vbox10">
-                            <property name="visible">True</property>
+                          <widget class="GtkVBox" id="vbox_save">
                             <property name="can_focus">False</property>
                             <child>
                               <widget class="GtkLabel" id="label7">
@@ -25608,7 +25759,7 @@ One set can contain several tests.</property>
                 <property name="border_width">8</property>
                 <property name="shadow_type">in</property>
                 <child>
-                  <widget class="GtkTreeView" id="treeview">
+                  <widget class="GtkTreeView" id="treeview_result">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <property name="headers_clickable">False</property>
@@ -25635,7 +25786,7 @@ One set can contain several tests.</property>
             </child>
           </widget>
           <packing>
-            <property name="expand">True</property>
+            <property name="expand">False</property>
             <property name="fill">True</property>
             <property name="position">0</property>
           </packing>
@@ -28045,6 +28196,24 @@ options</property>
                             <child>
                               <placeholder/>
                             </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
+                            <child>
+                              <placeholder/>
+                            </child>
                           </widget>
                         </child>
                       </widget>
@@ -29918,6 +30087,9 @@ To differentiate between male and female, use the values 1/0, or m/f, or M/F on
                                 <child>
                                   <placeholder/>
                                 </child>
+                                <child>
+                                  <placeholder/>
+                                </child>
                               </widget>
                             </child>
                           </widget>
@@ -30460,6 +30632,9 @@ To differentiate between male and female, use the values 1/0, or m/f, or M/F on
                         <child>
                           <placeholder/>
                         </child>
+                        <child>
+                          <placeholder/>
+                        </child>
                       </widget>
                     </child>
                   </widget>
@@ -32975,6 +33150,9 @@ show elevation as:</property>
                         <child>
                           <placeholder/>
                         </child>
+                        <child>
+                          <placeholder/>
+                        </child>
                       </widget>
                       <packing>
                         <property name="left_attach">2</property>
@@ -33122,6 +33300,9 @@ show elevation as:</property>
                     <child>
                       <placeholder/>
                     </child>
+                    <child>
+                      <placeholder/>
+                    </child>
                   </widget>
                 </child>
               </widget>
@@ -33284,6 +33465,9 @@ show elevation as:</property>
                     <child>
                       <placeholder/>
                     </child>
+                    <child>
+                      <placeholder/>
+                    </child>
                   </widget>
                 </child>
               </widget>
diff --git a/libcesarplayer/baconvideowidget-marshal.c b/libcesarplayer/baconvideowidget-marshal.c
index e914ccd..6b34127 100644
--- a/libcesarplayer/baconvideowidget-marshal.c
+++ b/libcesarplayer/baconvideowidget-marshal.c
@@ -1,247 +1,247 @@
-
-#ifndef __baconvideowidget_marshal_MARSHAL_H__
-#define __baconvideowidget_marshal_MARSHAL_H__
-
-#include       <glib-object.h>
-
-G_BEGIN_DECLS
-
-#ifdef G_ENABLE_DEBUG
-#define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
-#define g_marshal_value_peek_char(v)     g_value_get_schar (v)
-#define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
-#define g_marshal_value_peek_int(v)      g_value_get_int (v)
-#define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
-#define g_marshal_value_peek_long(v)     g_value_get_long (v)
-#define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
-#define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
-#define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
-#define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
-#define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
-#define g_marshal_value_peek_float(v)    g_value_get_float (v)
-#define g_marshal_value_peek_double(v)   g_value_get_double (v)
-#define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
-#define g_marshal_value_peek_param(v)    g_value_get_param (v)
-#define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
-#define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
-#define g_marshal_value_peek_object(v)   g_value_get_object (v)
-#define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
-#else /* !G_ENABLE_DEBUG */
-/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
- *          Do not access GValues directly in your code. Instead, use the
- *          g_value_get_*() functions
- */
-#define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
-#define g_marshal_value_peek_char(v)     (v)->data[0].v_int
-#define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
-#define g_marshal_value_peek_int(v)      (v)->data[0].v_int
-#define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
-#define g_marshal_value_peek_long(v)     (v)->data[0].v_long
-#define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
-#define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
-#define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
-#define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
-#define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
-#define g_marshal_value_peek_float(v)    (v)->data[0].v_float
-#define g_marshal_value_peek_double(v)   (v)->data[0].v_double
-#define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
-#define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
-#define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
-#define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
-#define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
-#define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
-#endif /* !G_ENABLE_DEBUG */
-
-
-/* VOID:INT64,INT64,DOUBLE,BOOLEAN (./baconvideowidget-marshal.list:1) */
-extern void baconvideowidget_marshal_VOID__INT64_INT64_DOUBLE_BOOLEAN (GClosure     *closure,
-                                                                       GValue       *return_value,
-                                                                       guint         n_param_values,
-                                                                       const GValue *param_values,
-                                                                       gpointer      invocation_hint,
-                                                                       gpointer      marshal_data);
-void
-baconvideowidget_marshal_VOID__INT64_INT64_DOUBLE_BOOLEAN (GClosure     *closure,
-                                                           GValue       *return_value G_GNUC_UNUSED,
-                                                           guint         n_param_values,
-                                                           const GValue *param_values,
-                                                           gpointer      invocation_hint G_GNUC_UNUSED,
-                                                           gpointer      marshal_data)
-{
-  typedef void (*GMarshalFunc_VOID__INT64_INT64_DOUBLE_BOOLEAN) (gpointer     data1,
-                                                                 gint64       arg_1,
-                                                                 gint64       arg_2,
-                                                                 gdouble      arg_3,
-                                                                 gboolean     arg_4,
-                                                                 gpointer     data2);
-  register GMarshalFunc_VOID__INT64_INT64_DOUBLE_BOOLEAN callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-
-  g_return_if_fail (n_param_values == 5);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_VOID__INT64_INT64_DOUBLE_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
-
-  callback (data1,
-            g_marshal_value_peek_int64 (param_values + 1),
-            g_marshal_value_peek_int64 (param_values + 2),
-            g_marshal_value_peek_double (param_values + 3),
-            g_marshal_value_peek_boolean (param_values + 4),
-            data2);
-}
-
-/* VOID:STRING,BOOLEAN,BOOLEAN (./baconvideowidget-marshal.list:2) */
-extern void baconvideowidget_marshal_VOID__STRING_BOOLEAN_BOOLEAN (GClosure     *closure,
-                                                                   GValue       *return_value,
-                                                                   guint         n_param_values,
-                                                                   const GValue *param_values,
-                                                                   gpointer      invocation_hint,
-                                                                   gpointer      marshal_data);
-void
-baconvideowidget_marshal_VOID__STRING_BOOLEAN_BOOLEAN (GClosure     *closure,
-                                                       GValue       *return_value G_GNUC_UNUSED,
-                                                       guint         n_param_values,
-                                                       const GValue *param_values,
-                                                       gpointer      invocation_hint G_GNUC_UNUSED,
-                                                       gpointer      marshal_data)
-{
-  typedef void (*GMarshalFunc_VOID__STRING_BOOLEAN_BOOLEAN) (gpointer     data1,
-                                                             gpointer     arg_1,
-                                                             gboolean     arg_2,
-                                                             gboolean     arg_3,
-                                                             gpointer     data2);
-  register GMarshalFunc_VOID__STRING_BOOLEAN_BOOLEAN callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-
-  g_return_if_fail (n_param_values == 4);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_VOID__STRING_BOOLEAN_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
-
-  callback (data1,
-            g_marshal_value_peek_string (param_values + 1),
-            g_marshal_value_peek_boolean (param_values + 2),
-            g_marshal_value_peek_boolean (param_values + 3),
-            data2);
-}
-
-/* BOOLEAN:BOXED,BOXED,BOOLEAN (./baconvideowidget-marshal.list:3) */
-extern void baconvideowidget_marshal_BOOLEAN__BOXED_BOXED_BOOLEAN (GClosure     *closure,
-                                                                   GValue       *return_value,
-                                                                   guint         n_param_values,
-                                                                   const GValue *param_values,
-                                                                   gpointer      invocation_hint,
-                                                                   gpointer      marshal_data);
-void
-baconvideowidget_marshal_BOOLEAN__BOXED_BOXED_BOOLEAN (GClosure     *closure,
-                                                       GValue       *return_value G_GNUC_UNUSED,
-                                                       guint         n_param_values,
-                                                       const GValue *param_values,
-                                                       gpointer      invocation_hint G_GNUC_UNUSED,
-                                                       gpointer      marshal_data)
-{
-  typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_BOXED_BOOLEAN) (gpointer     data1,
-                                                                 gpointer     arg_1,
-                                                                 gpointer     arg_2,
-                                                                 gboolean     arg_3,
-                                                                 gpointer     data2);
-  register GMarshalFunc_BOOLEAN__BOXED_BOXED_BOOLEAN callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-  gboolean v_return;
-
-  g_return_if_fail (return_value != NULL);
-  g_return_if_fail (n_param_values == 4);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_BOOLEAN__BOXED_BOXED_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
-
-  v_return = callback (data1,
-                       g_marshal_value_peek_boxed (param_values + 1),
-                       g_marshal_value_peek_boxed (param_values + 2),
-                       g_marshal_value_peek_boolean (param_values + 3),
-                       data2);
-
-  g_value_set_boolean (return_value, v_return);
-}
-
-/* VOID:INT64,INT64,FLOAT,BOOLEAN (./baconvideowidget-marshal.list:4) */
-extern void baconvideowidget_marshal_VOID__INT64_INT64_FLOAT_BOOLEAN (GClosure     *closure,
-                                                                      GValue       *return_value,
-                                                                      guint         n_param_values,
-                                                                      const GValue *param_values,
-                                                                      gpointer      invocation_hint,
-                                                                      gpointer      marshal_data);
-void
-baconvideowidget_marshal_VOID__INT64_INT64_FLOAT_BOOLEAN (GClosure     *closure,
-                                                          GValue       *return_value G_GNUC_UNUSED,
-                                                          guint         n_param_values,
-                                                          const GValue *param_values,
-                                                          gpointer      invocation_hint G_GNUC_UNUSED,
-                                                          gpointer      marshal_data)
-{
-  typedef void (*GMarshalFunc_VOID__INT64_INT64_FLOAT_BOOLEAN) (gpointer     data1,
-                                                                gint64       arg_1,
-                                                                gint64       arg_2,
-                                                                gfloat       arg_3,
-                                                                gboolean     arg_4,
-                                                                gpointer     data2);
-  register GMarshalFunc_VOID__INT64_INT64_FLOAT_BOOLEAN callback;
-  register GCClosure *cc = (GCClosure*) closure;
-  register gpointer data1, data2;
-
-  g_return_if_fail (n_param_values == 5);
-
-  if (G_CCLOSURE_SWAP_DATA (closure))
-    {
-      data1 = closure->data;
-      data2 = g_value_peek_pointer (param_values + 0);
-    }
-  else
-    {
-      data1 = g_value_peek_pointer (param_values + 0);
-      data2 = closure->data;
-    }
-  callback = (GMarshalFunc_VOID__INT64_INT64_FLOAT_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
-
-  callback (data1,
-            g_marshal_value_peek_int64 (param_values + 1),
-            g_marshal_value_peek_int64 (param_values + 2),
-            g_marshal_value_peek_float (param_values + 3),
-            g_marshal_value_peek_boolean (param_values + 4),
-            data2);
-}
-
-G_END_DECLS
-
-#endif /* __baconvideowidget_marshal_MARSHAL_H__ */
-
+
+#ifndef __baconvideowidget_marshal_MARSHAL_H__
+#define __baconvideowidget_marshal_MARSHAL_H__
+
+#include       <glib-object.h>
+
+G_BEGIN_DECLS
+
+#ifdef G_ENABLE_DEBUG
+#define g_marshal_value_peek_boolean(v)  g_value_get_boolean (v)
+#define g_marshal_value_peek_char(v)     g_value_get_schar (v)
+#define g_marshal_value_peek_uchar(v)    g_value_get_uchar (v)
+#define g_marshal_value_peek_int(v)      g_value_get_int (v)
+#define g_marshal_value_peek_uint(v)     g_value_get_uint (v)
+#define g_marshal_value_peek_long(v)     g_value_get_long (v)
+#define g_marshal_value_peek_ulong(v)    g_value_get_ulong (v)
+#define g_marshal_value_peek_int64(v)    g_value_get_int64 (v)
+#define g_marshal_value_peek_uint64(v)   g_value_get_uint64 (v)
+#define g_marshal_value_peek_enum(v)     g_value_get_enum (v)
+#define g_marshal_value_peek_flags(v)    g_value_get_flags (v)
+#define g_marshal_value_peek_float(v)    g_value_get_float (v)
+#define g_marshal_value_peek_double(v)   g_value_get_double (v)
+#define g_marshal_value_peek_string(v)   (char*) g_value_get_string (v)
+#define g_marshal_value_peek_param(v)    g_value_get_param (v)
+#define g_marshal_value_peek_boxed(v)    g_value_get_boxed (v)
+#define g_marshal_value_peek_pointer(v)  g_value_get_pointer (v)
+#define g_marshal_value_peek_object(v)   g_value_get_object (v)
+#define g_marshal_value_peek_variant(v)  g_value_get_variant (v)
+#else /* !G_ENABLE_DEBUG */
+/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
+ *          Do not access GValues directly in your code. Instead, use the
+ *          g_value_get_*() functions
+ */
+#define g_marshal_value_peek_boolean(v)  (v)->data[0].v_int
+#define g_marshal_value_peek_char(v)     (v)->data[0].v_int
+#define g_marshal_value_peek_uchar(v)    (v)->data[0].v_uint
+#define g_marshal_value_peek_int(v)      (v)->data[0].v_int
+#define g_marshal_value_peek_uint(v)     (v)->data[0].v_uint
+#define g_marshal_value_peek_long(v)     (v)->data[0].v_long
+#define g_marshal_value_peek_ulong(v)    (v)->data[0].v_ulong
+#define g_marshal_value_peek_int64(v)    (v)->data[0].v_int64
+#define g_marshal_value_peek_uint64(v)   (v)->data[0].v_uint64
+#define g_marshal_value_peek_enum(v)     (v)->data[0].v_long
+#define g_marshal_value_peek_flags(v)    (v)->data[0].v_ulong
+#define g_marshal_value_peek_float(v)    (v)->data[0].v_float
+#define g_marshal_value_peek_double(v)   (v)->data[0].v_double
+#define g_marshal_value_peek_string(v)   (v)->data[0].v_pointer
+#define g_marshal_value_peek_param(v)    (v)->data[0].v_pointer
+#define g_marshal_value_peek_boxed(v)    (v)->data[0].v_pointer
+#define g_marshal_value_peek_pointer(v)  (v)->data[0].v_pointer
+#define g_marshal_value_peek_object(v)   (v)->data[0].v_pointer
+#define g_marshal_value_peek_variant(v)  (v)->data[0].v_pointer
+#endif /* !G_ENABLE_DEBUG */
+
+
+/* VOID:INT64,INT64,DOUBLE,BOOLEAN (./baconvideowidget-marshal.list:1) */
+extern void baconvideowidget_marshal_VOID__INT64_INT64_DOUBLE_BOOLEAN (GClosure     *closure,
+                                                                       GValue       *return_value,
+                                                                       guint         n_param_values,
+                                                                       const GValue *param_values,
+                                                                       gpointer      invocation_hint,
+                                                                       gpointer      marshal_data);
+void
+baconvideowidget_marshal_VOID__INT64_INT64_DOUBLE_BOOLEAN (GClosure     *closure,
+                                                           GValue       *return_value G_GNUC_UNUSED,
+                                                           guint         n_param_values,
+                                                           const GValue *param_values,
+                                                           gpointer      invocation_hint G_GNUC_UNUSED,
+                                                           gpointer      marshal_data)
+{
+  typedef void (*GMarshalFunc_VOID__INT64_INT64_DOUBLE_BOOLEAN) (gpointer     data1,
+                                                                 gint64       arg_1,
+                                                                 gint64       arg_2,
+                                                                 gdouble      arg_3,
+                                                                 gboolean     arg_4,
+                                                                 gpointer     data2);
+  register GMarshalFunc_VOID__INT64_INT64_DOUBLE_BOOLEAN callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+
+  g_return_if_fail (n_param_values == 5);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_VOID__INT64_INT64_DOUBLE_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
+
+  callback (data1,
+            g_marshal_value_peek_int64 (param_values + 1),
+            g_marshal_value_peek_int64 (param_values + 2),
+            g_marshal_value_peek_double (param_values + 3),
+            g_marshal_value_peek_boolean (param_values + 4),
+            data2);
+}
+
+/* VOID:STRING,BOOLEAN,BOOLEAN (./baconvideowidget-marshal.list:2) */
+extern void baconvideowidget_marshal_VOID__STRING_BOOLEAN_BOOLEAN (GClosure     *closure,
+                                                                   GValue       *return_value,
+                                                                   guint         n_param_values,
+                                                                   const GValue *param_values,
+                                                                   gpointer      invocation_hint,
+                                                                   gpointer      marshal_data);
+void
+baconvideowidget_marshal_VOID__STRING_BOOLEAN_BOOLEAN (GClosure     *closure,
+                                                       GValue       *return_value G_GNUC_UNUSED,
+                                                       guint         n_param_values,
+                                                       const GValue *param_values,
+                                                       gpointer      invocation_hint G_GNUC_UNUSED,
+                                                       gpointer      marshal_data)
+{
+  typedef void (*GMarshalFunc_VOID__STRING_BOOLEAN_BOOLEAN) (gpointer     data1,
+                                                             gpointer     arg_1,
+                                                             gboolean     arg_2,
+                                                             gboolean     arg_3,
+                                                             gpointer     data2);
+  register GMarshalFunc_VOID__STRING_BOOLEAN_BOOLEAN callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+
+  g_return_if_fail (n_param_values == 4);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_VOID__STRING_BOOLEAN_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
+
+  callback (data1,
+            g_marshal_value_peek_string (param_values + 1),
+            g_marshal_value_peek_boolean (param_values + 2),
+            g_marshal_value_peek_boolean (param_values + 3),
+            data2);
+}
+
+/* BOOLEAN:BOXED,BOXED,BOOLEAN (./baconvideowidget-marshal.list:3) */
+extern void baconvideowidget_marshal_BOOLEAN__BOXED_BOXED_BOOLEAN (GClosure     *closure,
+                                                                   GValue       *return_value,
+                                                                   guint         n_param_values,
+                                                                   const GValue *param_values,
+                                                                   gpointer      invocation_hint,
+                                                                   gpointer      marshal_data);
+void
+baconvideowidget_marshal_BOOLEAN__BOXED_BOXED_BOOLEAN (GClosure     *closure,
+                                                       GValue       *return_value G_GNUC_UNUSED,
+                                                       guint         n_param_values,
+                                                       const GValue *param_values,
+                                                       gpointer      invocation_hint G_GNUC_UNUSED,
+                                                       gpointer      marshal_data)
+{
+  typedef gboolean (*GMarshalFunc_BOOLEAN__BOXED_BOXED_BOOLEAN) (gpointer     data1,
+                                                                 gpointer     arg_1,
+                                                                 gpointer     arg_2,
+                                                                 gboolean     arg_3,
+                                                                 gpointer     data2);
+  register GMarshalFunc_BOOLEAN__BOXED_BOXED_BOOLEAN callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+  gboolean v_return;
+
+  g_return_if_fail (return_value != NULL);
+  g_return_if_fail (n_param_values == 4);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_BOOLEAN__BOXED_BOXED_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
+
+  v_return = callback (data1,
+                       g_marshal_value_peek_boxed (param_values + 1),
+                       g_marshal_value_peek_boxed (param_values + 2),
+                       g_marshal_value_peek_boolean (param_values + 3),
+                       data2);
+
+  g_value_set_boolean (return_value, v_return);
+}
+
+/* VOID:INT64,INT64,FLOAT,BOOLEAN (./baconvideowidget-marshal.list:4) */
+extern void baconvideowidget_marshal_VOID__INT64_INT64_FLOAT_BOOLEAN (GClosure     *closure,
+                                                                      GValue       *return_value,
+                                                                      guint         n_param_values,
+                                                                      const GValue *param_values,
+                                                                      gpointer      invocation_hint,
+                                                                      gpointer      marshal_data);
+void
+baconvideowidget_marshal_VOID__INT64_INT64_FLOAT_BOOLEAN (GClosure     *closure,
+                                                          GValue       *return_value G_GNUC_UNUSED,
+                                                          guint         n_param_values,
+                                                          const GValue *param_values,
+                                                          gpointer      invocation_hint G_GNUC_UNUSED,
+                                                          gpointer      marshal_data)
+{
+  typedef void (*GMarshalFunc_VOID__INT64_INT64_FLOAT_BOOLEAN) (gpointer     data1,
+                                                                gint64       arg_1,
+                                                                gint64       arg_2,
+                                                                gfloat       arg_3,
+                                                                gboolean     arg_4,
+                                                                gpointer     data2);
+  register GMarshalFunc_VOID__INT64_INT64_FLOAT_BOOLEAN callback;
+  register GCClosure *cc = (GCClosure*) closure;
+  register gpointer data1, data2;
+
+  g_return_if_fail (n_param_values == 5);
+
+  if (G_CCLOSURE_SWAP_DATA (closure))
+    {
+      data1 = closure->data;
+      data2 = g_value_peek_pointer (param_values + 0);
+    }
+  else
+    {
+      data1 = g_value_peek_pointer (param_values + 0);
+      data2 = closure->data;
+    }
+  callback = (GMarshalFunc_VOID__INT64_INT64_FLOAT_BOOLEAN) (marshal_data ? marshal_data : cc->callback);
+
+  callback (data1,
+            g_marshal_value_peek_int64 (param_values + 1),
+            g_marshal_value_peek_int64 (param_values + 2),
+            g_marshal_value_peek_float (param_values + 3),
+            g_marshal_value_peek_boolean (param_values + 4),
+            data2);
+}
+
+G_END_DECLS
+
+#endif /* __baconvideowidget_marshal_MARSHAL_H__ */
+
diff --git a/libcesarplayer/baconvideowidget-marshal.h b/libcesarplayer/baconvideowidget-marshal.h
index 7cba5d9..035d853 100644
--- a/libcesarplayer/baconvideowidget-marshal.h
+++ b/libcesarplayer/baconvideowidget-marshal.h
@@ -1,44 +1,44 @@
-
-#ifndef __baconvideowidget_marshal_MARSHAL_H__
-#define __baconvideowidget_marshal_MARSHAL_H__
-
-#include       <glib-object.h>
-
-G_BEGIN_DECLS
-
-/* VOID:INT64,INT64,DOUBLE,BOOLEAN (./baconvideowidget-marshal.list:1) */
-extern void baconvideowidget_marshal_VOID__INT64_INT64_DOUBLE_BOOLEAN (GClosure     *closure,
-                                                                       GValue       *return_value,
-                                                                       guint         n_param_values,
-                                                                       const GValue *param_values,
-                                                                       gpointer      invocation_hint,
-                                                                       gpointer      marshal_data);
-
-/* VOID:STRING,BOOLEAN,BOOLEAN (./baconvideowidget-marshal.list:2) */
-extern void baconvideowidget_marshal_VOID__STRING_BOOLEAN_BOOLEAN (GClosure     *closure,
-                                                                   GValue       *return_value,
-                                                                   guint         n_param_values,
-                                                                   const GValue *param_values,
-                                                                   gpointer      invocation_hint,
-                                                                   gpointer      marshal_data);
-
-/* BOOLEAN:BOXED,BOXED,BOOLEAN (./baconvideowidget-marshal.list:3) */
-extern void baconvideowidget_marshal_BOOLEAN__BOXED_BOXED_BOOLEAN (GClosure     *closure,
-                                                                   GValue       *return_value,
-                                                                   guint         n_param_values,
-                                                                   const GValue *param_values,
-                                                                   gpointer      invocation_hint,
-                                                                   gpointer      marshal_data);
-
-/* VOID:INT64,INT64,FLOAT,BOOLEAN (./baconvideowidget-marshal.list:4) */
-extern void baconvideowidget_marshal_VOID__INT64_INT64_FLOAT_BOOLEAN (GClosure     *closure,
-                                                                      GValue       *return_value,
-                                                                      guint         n_param_values,
-                                                                      const GValue *param_values,
-                                                                      gpointer      invocation_hint,
-                                                                      gpointer      marshal_data);
-
-G_END_DECLS
-
-#endif /* __baconvideowidget_marshal_MARSHAL_H__ */
-
+
+#ifndef __baconvideowidget_marshal_MARSHAL_H__
+#define __baconvideowidget_marshal_MARSHAL_H__
+
+#include       <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* VOID:INT64,INT64,DOUBLE,BOOLEAN (./baconvideowidget-marshal.list:1) */
+extern void baconvideowidget_marshal_VOID__INT64_INT64_DOUBLE_BOOLEAN (GClosure     *closure,
+                                                                       GValue       *return_value,
+                                                                       guint         n_param_values,
+                                                                       const GValue *param_values,
+                                                                       gpointer      invocation_hint,
+                                                                       gpointer      marshal_data);
+
+/* VOID:STRING,BOOLEAN,BOOLEAN (./baconvideowidget-marshal.list:2) */
+extern void baconvideowidget_marshal_VOID__STRING_BOOLEAN_BOOLEAN (GClosure     *closure,
+                                                                   GValue       *return_value,
+                                                                   guint         n_param_values,
+                                                                   const GValue *param_values,
+                                                                   gpointer      invocation_hint,
+                                                                   gpointer      marshal_data);
+
+/* BOOLEAN:BOXED,BOXED,BOOLEAN (./baconvideowidget-marshal.list:3) */
+extern void baconvideowidget_marshal_BOOLEAN__BOXED_BOXED_BOOLEAN (GClosure     *closure,
+                                                                   GValue       *return_value,
+                                                                   guint         n_param_values,
+                                                                   const GValue *param_values,
+                                                                   gpointer      invocation_hint,
+                                                                   gpointer      marshal_data);
+
+/* VOID:INT64,INT64,FLOAT,BOOLEAN (./baconvideowidget-marshal.list:4) */
+extern void baconvideowidget_marshal_VOID__INT64_INT64_FLOAT_BOOLEAN (GClosure     *closure,
+                                                                      GValue       *return_value,
+                                                                      guint         n_param_values,
+                                                                      const GValue *param_values,
+                                                                      gpointer      invocation_hint,
+                                                                      gpointer      marshal_data);
+
+G_END_DECLS
+
+#endif /* __baconvideowidget_marshal_MARSHAL_H__ */
+
diff --git a/src/Makefile.am b/src/Makefile.am
index 65326b5..efdd7a7 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -116,9 +116,9 @@ SOURCES = \
        AssemblyInfo.cs\
        chronojump.cs\
        encoder.cs\
+       executeAuto.cs\
        event.cs\
        eventType.cs\
-       executeAuto.cs\
        jump.cs\
        jumpType.cs\
        person.cs\
diff --git a/src/executeAuto.cs b/src/executeAuto.cs
index 3eb6685..cb3973d 100644
--- a/src/executeAuto.cs
+++ b/src/executeAuto.cs
@@ -21,6 +21,7 @@
 using System;
 using System.Collections; //ArrayList
 using System.Collections.Generic; //List<T>
+using Mono.Unix;
 
 public class ExecuteAuto {
        public enum ModeTypes { BY_PERSONS, BY_TESTS, BY_SETS }
@@ -119,7 +120,7 @@ public class ExecuteAuto {
 }
 
 //sequence saved or loaded on SQL
-public class ExecuteAutoSQL 
+public class ExecuteAutoSQL
 {
        public string name;
        private ExecuteAuto.ModeTypes mode;
@@ -139,7 +140,6 @@ public class ExecuteAutoSQL
                this.serie3IDs = serie3IDs;
        }
 
-
        private string serieIDsToStr(List<int> serieIDs) 
        {
                string str = "";
@@ -151,6 +151,23 @@ public class ExecuteAutoSQL
                return str;
        }
 
+       //just used to display name of jumpTypes on executeAuto load treeview   
+       private string serieIDsToStrName(List<int> serieIDs, string [] jumpTypes) 
+       {
+               string str = "";
+               string sep = "";
+               foreach(int i in serieIDs) {
+                       foreach(string jumpType in jumpTypes) {
+                               string [] j = jumpType.Split(new char[] {':'});
+                               if(i == Convert.ToInt32(j[0]))
+                                       str += sep + Catalog.GetString(j[1]);
+                       }
+                       sep = ", ";
+               }
+               return str;
+       }
+
+
        public bool SaveToSQL() 
        {
                if(Sqlite.Exists(false, Constants.ExecuteAutoTable, name))
@@ -161,7 +178,62 @@ public class ExecuteAutoSQL
                        
                return true; //saved
        }
+       
+       public static List<int> SerieIDsFromStr(string str) 
+       {
+               if(str == null || str == "")
+                       return new List<int>();
+
+               Log.WriteLine("SerieIDsFromStr");
+               Log.WriteLine(str);
+               string [] strFull = str.Split(new char[] {':'});
+               
+               List <int>l = new List <int>();
+               foreach(string s in strFull) {
+                       l.Add(Convert.ToInt32(s));
+               }
+               return l;
+       }
+
+       public string[] ToLoadTreeview(string [] jumpTypes) 
+       {
+               return new string [] { name, mode.ToString(), description,
+                               serieIDsToStrName(serie1IDs, jumpTypes), 
+                               serieIDsToStrName(serie2IDs, jumpTypes), 
+                               serieIDsToStrName(serie3IDs, jumpTypes) };
+       }
 
        ~ExecuteAutoSQL() {}    
 }
 
+
+/*
+ * TrCombo (Translatable Combo)
+ * use this with an arraylist instead of strings [], and the Util.FindOnArray
+ * see implementation on ExecuteAutoWindow
+ */
+
+public class TrCombo {
+       public int id;          //uniqueID
+       public string eName;    //englishName
+       public string trName;   //translatedName
+       public ArrayList options;
+
+       /*
+       public TrCombo() {
+       }
+       */
+
+       public TrCombo(int id, string eName, string trName, ArrayList options) {
+               this.id = id;
+               this.eName = eName;
+               this.trName = trName;
+               this.options = options;
+       }
+
+       public override string ToString() {
+               return id + ":" + eName + ":" + trName + ":" + Util.ArrayListToSingleString(options, ":"); 
+       }
+
+       ~TrCombo() {}
+}
diff --git a/src/gui/executeAuto.cs b/src/gui/executeAuto.cs
index 799c9f7..2c2320d 100644
--- a/src/gui/executeAuto.cs
+++ b/src/gui/executeAuto.cs
@@ -26,15 +26,18 @@ using System.Collections; //ArrayList
 using System.Collections.Generic; //List<T>
 using Mono.Unix;
 
-
 public class ExecuteAutoWindow
 {
        [Widget] Gtk.Window execute_auto;
-       [Widget] Gtk.Notebook notebook;
+       [Widget] Gtk.Notebook notebook_main;
        [Widget] Gtk.Button button_cancel;
        [Widget] Gtk.Button button_next;
 
        //1st tab
+       [Widget] Gtk.RadioButton radio_load;
+       [Widget] Gtk.RadioButton radio_new;
+       [Widget] Gtk.Notebook notebook_load_or_new;
+       [Widget] Gtk.TreeView treeview_load;
        [Widget] Gtk.RadioButton radio_by_persons;
        [Widget] Gtk.RadioButton radio_by_tests;
        [Widget] Gtk.RadioButton radio_by_sets;
@@ -61,16 +64,19 @@ public class ExecuteAutoWindow
        [Widget] Gtk.TreeView treeview_serie2;
        [Widget] Gtk.TreeView treeview_serie3;
        
+       [Widget] Gtk.Box vbox_save;
        [Widget] Gtk.Entry entry_save_name;
        [Widget] Gtk.Entry entry_save_description;
        [Widget] Gtk.Button button_save;
        
        //3rd tab
-       [Widget] Gtk.TreeView treeview;
+       [Widget] Gtk.TreeView treeview_result;
 
+       TreeStore store_load;
        TreeStore store_serie1;
        TreeStore store_serie2;
        TreeStore store_serie3;
+       TreeStore store_result;
        
        static ExecuteAutoWindow ExecuteAutoWindowBox;
        Gtk.Window parent;
@@ -126,7 +132,7 @@ public class ExecuteAutoWindow
        }
        
        private void initialize() {
-               notebook.CurrentPage = 0;
+               notebook_main.CurrentPage = 0;
                radio_by_persons.Active = true;
 
                Pixbuf pixbuf;
@@ -145,34 +151,110 @@ public class ExecuteAutoWindow
                label_tests_info.Visible = false;
                label_series_info.Visible = false;
 
+               createTreeviewLoad();
+               fillTreeviewLoad();
+
                createComboSelect();
                createTreeviewSeries();
        }
+       
+       void on_radio_load_toggled (object obj, EventArgs args) {
+               if(radio_load.Active) {
+                       notebook_load_or_new.CurrentPage = 0;
+                       vbox_save.Visible = false;
+               } else {
+                       notebook_load_or_new.CurrentPage = 1;
+                       vbox_save.Visible = true;
+               }
+       }
+       void on_radio_new_toggled (object obj, EventArgs args) {
+               if(radio_new.Active) {
+                       notebook_load_or_new.CurrentPage = 1;
+                       vbox_save.Visible = true;
+               } else {
+                       notebook_load_or_new.CurrentPage = 0;
+                       vbox_save.Visible = false;
+               }
+       }
+
+       private void createTreeviewLoad() {
+               store_load = new TreeStore(typeof (string), typeof (string), typeof(string),    //name, mode, 
desc
+                               typeof (string), typeof (string), typeof (string));             //serie1 
jumps, serie2 jumps, serie3jumps
+       
+               treeview_load.Model = store_load;
+               treeview_load.HeadersVisible=true;
+
+               int i = 0;
+               UtilGtk.CreateCols(treeview_load, store_load, Catalog.GetString("Name"), i++, true);
+               UtilGtk.CreateCols(treeview_load, store_load, Catalog.GetString("Mode"), i++, true);
+               UtilGtk.CreateCols(treeview_load, store_load, Catalog.GetString("Description"), i++, true);
+               UtilGtk.CreateCols(treeview_load, store_load, "Tests (1)", i++, true);
+               UtilGtk.CreateCols(treeview_load, store_load, "Tests (2)", i++, true);
+               UtilGtk.CreateCols(treeview_load, store_load, "Tests (3)", i++, true);
+               
+               treeview_load.Selection.Changed += onLoadSelectionEntry;
+       }
+       
+       private void fillTreeviewLoad() {
+               List<ExecuteAutoSQL> sequences = SqliteExecuteAuto.SelectAll(false);
+               string [] jumpTypes = SqliteJumpType.SelectJumpTypes("", "", false); //without alljumpsname, 
without filter, not only name
+
+               foreach (ExecuteAutoSQL eaSQL in sequences)
+                       store_load.AppendValues (eaSQL.ToLoadTreeview(jumpTypes));
+       }
+       
+       private void onLoadSelectionEntry (object o, EventArgs args)
+       {
+               TreeModel model;
+               TreeIter iter;
+               //selected = "-1";
+
+               if (((TreeSelection)o).GetSelected(out model, out iter)) {
+                       //selected = (string)model.GetValue (iter, 0);
+                       button_next.Sensitive = true;
+               }
+       }
+
+       void on_load_row_double_clicked (object o, Gtk.RowActivatedArgs args)
+       {
+               TreeModel model;
+               TreeIter iter;
+
+               if (treeview_load.Selection.GetSelected (out model, out iter)) {
+                       //put selection in selected
+                       //selected = (string) model.GetValue (iter, 0);
+
+                       //activate on_button_accept_clicked()
+                       button_next.Activate();
+               }
+       }
+       
+
 
        private void initializeShowJustOrder(int rowNumber) {
 
                //know if "serie" has to be plotted or not
                ExecuteAuto eaFirst = (ExecuteAuto) orderedData[0];
-               createTreeview(eaFirst.serieID != -1);  //BY_SETS != -1
-               fillTreeview();
+               createTreeviewResult(eaFirst.serieID != -1);    //BY_SETS != -1
+               fillTreeviewResult();
        
                //set the selected
                TreeIter iter;
-               bool iterOk = store.GetIterFirst(out iter);
+               bool iterOk = store_result.GetIterFirst(out iter);
                if(iterOk) {
                        int count = 0;
                        while (count < rowNumber) {
-                               store.IterNext(ref iter);
+                               store_result.IterNext(ref iter);
                                count ++;
                        }
-                       treeview.Selection.SelectIter(iter);
+                       treeview_result.Selection.SelectIter(iter);
                }
 
 
                button_cancel.Label = Catalog.GetString("Close");
                button_next.Visible = false;
 
-               notebook.CurrentPage = 2;
+               notebook_main.CurrentPage = 2;
        }
        
        private void on_radio_mode_toggled(object o, EventArgs args) {
@@ -328,34 +410,33 @@ public class ExecuteAutoWindow
                scrolled_win_serie3.Visible = show;
        }
        
-       TreeStore store;
-       private void createTreeview(bool by_sets) {
+       private void createTreeviewResult(bool by_sets) {
                if(by_sets)
-                       store = new TreeStore(typeof (string), typeof (string), typeof (string)); //serie, 
person, test
+                       store_result = new TreeStore(typeof (string), typeof (string), typeof (string)); 
//serie, person, test
                else
-                       store = new TreeStore(typeof (string), typeof (string));                //person, test
+                       store_result = new TreeStore(typeof (string), typeof (string));         //person, test
        
-               treeview.Model = store;
-               treeview.HeadersVisible=true;
+               treeview_result.Model = store_result;
+               treeview_result.HeadersVisible=true;
 
                int i = 0;
                if(by_sets) {
-                       UtilGtk.CreateCols(treeview, store, Catalog.GetString("Serie"), i++, true);
+                       UtilGtk.CreateCols(treeview_result, store_result, Catalog.GetString("Serie"), i++, 
true);
                }
 
-               UtilGtk.CreateCols(treeview, store, Catalog.GetString("Person"), i++, true);
-               UtilGtk.CreateCols(treeview, store, Catalog.GetString("Test"), i++, true);
+               UtilGtk.CreateCols(treeview_result, store_result, Catalog.GetString("Person"), i++, true);
+               UtilGtk.CreateCols(treeview_result, store_result, Catalog.GetString("Test"), i++, true);
        }
        
-       private void fillTreeview() {
+       private void fillTreeviewResult() {
                foreach (ExecuteAuto ea in orderedData)
-                       store.AppendValues (ea.AsStringArray());
+                       store_result.AppendValues (ea.AsStringArray());
        }
        
        
        private void on_button_next_clicked (object o, EventArgs args)
        {
-               if(notebook.CurrentPage == 0) {
+               if(notebook_main.CurrentPage == 0) {
                        mode = ExecuteAuto.ModeTypes.BY_PERSONS;
                        if(radio_by_tests.Active)
                                mode = ExecuteAuto.ModeTypes.BY_TESTS;
@@ -363,26 +444,26 @@ public class ExecuteAutoWindow
                                mode = ExecuteAuto.ModeTypes.BY_SETS;
 
                        showSeriesStuff(radio_by_sets.Active);
-                       notebook.NextPage();
+                       notebook_main.NextPage();
                
                        //next button will be sensitive when first test is added
                        button_next.Sensitive = false;
                }
-               else if(notebook.CurrentPage == 1) {
+               else if(notebook_main.CurrentPage == 1) {
                        ArrayList persons = SqlitePersonSession.SelectCurrentSessionPersons(sessionID);
                        orderedData = ExecuteAuto.CreateOrder(mode, persons,  
                                        treeviewSerie1Array, treeviewSerie2Array, treeviewSerie3Array);
                        
-                       createTreeview(radio_by_sets.Active);
-                       fillTreeview();
+                       createTreeviewResult(radio_by_sets.Active);
+                       fillTreeviewResult();
 
                        button_next.Label = Catalog.GetString("Accept");
                        if(orderedData.Count == 0)
                                button_next.Sensitive = false;
 
-                       notebook.NextPage();
+                       notebook_main.NextPage();
                }
-               else {  // notebook.CurrentPage == 2
+               else {  // notebook_main.CurrentPage == 2
                        FakeButtonAccept.Click(); //signal to read orderedData
                }
        }
diff --git a/src/gui/usefulObjects.cs b/src/gui/usefulObjects.cs
index e973e7b..f603eaa 100644
--- a/src/gui/usefulObjects.cs
+++ b/src/gui/usefulObjects.cs
@@ -303,35 +303,3 @@ public class UpdateProgressBar {
 
        ~UpdateProgressBar() {}
 }
-
-
-/*
- * TrCombo (Translatable Combo)
- * use this with an arraylist instead of strings [], and the Util.FindOnArray
- * see implementation on ExecuteAutoWindow
- */
-
-public class TrCombo {
-       public int id;          //uniqueID
-       public string eName;    //englishName
-       public string trName;   //translatedName
-       public ArrayList options;
-
-       /*
-       public TrCombo() {
-       }
-       */
-
-       public TrCombo(int id, string eName, string trName, ArrayList options) {
-               this.id = id;
-               this.eName = eName;
-               this.trName = trName;
-               this.options = options;
-       }
-
-       public override string ToString() {
-               return id + ":" + eName + ":" + trName + ":" + Util.ArrayListToSingleString(options, ":"); 
-       }
-
-       ~TrCombo() {}
-}
diff --git a/src/sqlite/executeAuto.cs b/src/sqlite/executeAuto.cs
index 00861ed..a42ac7b 100644
--- a/src/sqlite/executeAuto.cs
+++ b/src/sqlite/executeAuto.cs
@@ -22,9 +22,9 @@ using System;
 using System.Data;
 using System.IO;
 using System.Collections; //ArrayList
+using System.Collections.Generic; //List<T>
 using Mono.Data.Sqlite;
 
-
 class SqliteExecuteAuto : Sqlite
 {
        public SqliteExecuteAuto() {
@@ -77,4 +77,37 @@ class SqliteExecuteAuto : Sqlite
                        dbcon.Close();
        }
 
+       public static List<ExecuteAutoSQL> SelectAll(bool dbconOpened) 
+       //public static ArrayList SelectAll(bool dbconOpened) 
+       {
+               if(! dbconOpened)
+                       dbcon.Open();
+
+               dbcmd.CommandText = "SELECT * from " + Constants.ExecuteAutoTable; 
+               Log.WriteLine(dbcmd.CommandText.ToString());
+
+               SqliteDataReader reader;
+               reader = dbcmd.ExecuteReader();
+               
+               List<ExecuteAutoSQL> sequences = new List<ExecuteAutoSQL>();
+               //ArrayList sequences = new ArrayList();
+               int i;
+               while(reader.Read()) {
+                       i=1; //start at name
+                       ExecuteAutoSQL eaSQL = new ExecuteAutoSQL(
+                                       reader[i++].ToString(), //name
+                                       (ExecuteAuto.ModeTypes) Enum.Parse(typeof(ExecuteAuto.ModeTypes), 
reader[i++].ToString()), //mode
+                                       reader[i++].ToString(), //description
+                                       ExecuteAutoSQL.SerieIDsFromStr(reader[i++].ToString()), //serie1IDs
+                                       ExecuteAutoSQL.SerieIDsFromStr(reader[i++].ToString()), //serie2IDs
+                                       ExecuteAutoSQL.SerieIDsFromStr(reader[i++].ToString())  //serie3IDs
+                                       );
+                       sequences.Add(eaSQL);
+               }
+               reader.Close();
+               if(! dbconOpened)
+                       dbcon.Close();
+
+               return sequences;
+       }
 }      



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