[chronojump] Encoder separate session in days option for intersession gui



commit c7dc32852b1f33aa7f9e23c5319228ecf107d580
Author: Xavier de Blas <xaviblas gmail com>
Date:   Tue Nov 13 14:24:29 2018 +0100

    Encoder separate session in days option for intersession gui

 encoder/graph.R     |  3 +--
 encoder/util.R      |  3 ++-
 glade/app1.glade    | 73 +++++++++++++++++++++++------------------------------
 src/encoder.cs      |  8 ++++--
 src/encoderRProc.cs |  7 +++--
 src/gui/encoder.cs  | 57 ++++++++++++++++++++++++++++++++++++-----
 src/utilEncoder.cs  |  4 +--
 7 files changed, 99 insertions(+), 56 deletions(-)
---
diff --git a/encoder/graph.R b/encoder/graph.R
index 876b4a20..050ad181 100644
--- a/encoder/graph.R
+++ b/encoder/graph.R
@@ -3790,8 +3790,7 @@ doProcess <- function(options)
                                mySeriesNames = curves[,9]
 
                                #special config separate by days
-                               separateSessionInDays = TRUE #TODO: pass this from GUI
-                               if(separateSessionInDays)
+                               if(op$SeparateSessionInDays)
                                {
                                        chunks = unlist(strsplit(curves[,7], " ")) #separate "2018-09-06 
12:12:4" in two chunks
                                        chunks = chunks[seq(1, length(chunks), by = 2)]
diff --git a/encoder/util.R b/encoder/util.R
index a44a559b..efcf975c 100644
--- a/encoder/util.R
+++ b/encoder/util.R
@@ -84,7 +84,7 @@ assignOptions <- function(options) {
                    Debug               = options[31],
                    CrossValidate       = options[32],
                    TriggersCut         = options[33],  #if TRUE ten cut by triggers, else use TriggersOnList 
(if any) only for vertical ablines on instaneous graphs
-                   TriggersOnList      = as.numeric(unlist(strsplit(options[34], "\\;")))
+                   TriggersOnList      = as.numeric(unlist(strsplit(options[34], "\\;"))),
 
                    #Triggers:
                    #  at capture.R
@@ -98,6 +98,7 @@ assignOptions <- function(options) {
                    #Unassigned here:
                    #   englishWords [29]
                    #   translatedWords [30]
+                   SeparateSessionInDays = options[35]
                    ))
 }
 
diff --git a/glade/app1.glade b/glade/app1.glade
index 3a5dfd0e..ab2b6da9 100644
--- a/glade/app1.glade
+++ b/glade/app1.glade
@@ -1784,6 +1784,9 @@
                                                             <placeholder/>
                                                             </child>
                                                             <child>
+                                                            <placeholder/>
+                                                            </child>
+                                                            <child>
                                                             <widget class="GtkLabel" 
id="label_start_selector_jumps">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
@@ -19286,42 +19289,6 @@ Concentric</property>
                                                             <placeholder/>
                                                             </child>
                                                             <child>
-                                                            <placeholder/>
-                                                            </child>
-                                                            <child>
-                                                            <placeholder/>
-                                                            </child>
-                                                            <child>
-                                                            <placeholder/>
-                                                            </child>
-                                                            <child>
-                                                            <placeholder/>
-                                                            </child>
-                                                            <child>
-                                                            <placeholder/>
-                                                            </child>
-                                                            <child>
-                                                            <placeholder/>
-                                                            </child>
-                                                            <child>
-                                                            <placeholder/>
-                                                            </child>
-                                                            <child>
-                                                            <placeholder/>
-                                                            </child>
-                                                            <child>
-                                                            <placeholder/>
-                                                            </child>
-                                                            <child>
-                                                            <placeholder/>
-                                                            </child>
-                                                            <child>
-                                                            <placeholder/>
-                                                            </child>
-                                                            <child>
-                                                            <placeholder/>
-                                                            </child>
-                                                            <child>
                                                             <widget class="GtkLabel" 
id="label_force_sensor_ai_rfd_a">
                                                             <property name="visible">True</property>
                                                             <property name="can_focus">False</property>
@@ -19603,6 +19570,9 @@ Concentric</property>
                                                             <placeholder/>
                                                             </child>
                                                             <child>
+                                                            <placeholder/>
+                                                            </child>
+                                                            <child>
                                                             <widget class="GtkCheckButton" 
id="checkbutton_force_sensor_ai_b">
                                                             <property name="width_request">30</property>
                                                             <property name="visible">True</property>
@@ -19682,6 +19652,9 @@ Concentric</property>
                                                             <child>
                                                             <placeholder/>
                                                             </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="expand">False</property>
@@ -24787,6 +24760,21 @@ then click this button.</property>
                                                             </packing>
                                                             </child>
                                                             <child>
+                                                            <widget class="GtkCheckButton" 
id="check_encoder_separate_session_in_days">
+                                                            <property name="label" translatable="yes">By 
days</property>
+                                                            <property name="can_focus">True</property>
+                                                            <property 
name="receives_default">False</property>
+                                                            <property name="tooltip" 
translatable="yes">Separate session by days</property>
+                                                            <property name="draw_indicator">True</property>
+                                                            <signal name="toggled" 
handler="on_check_encoder_separate_session_in_days_toggled" swapped="no"/>
+                                                            </widget>
+                                                            <packing>
+                                                            <property name="expand">False</property>
+                                                            <property name="fill">False</property>
+                                                            <property name="position">5</property>
+                                                            </packing>
+                                                            </child>
+                                                            <child>
                                                             <widget class="GtkHBox" 
id="hbox_combo_encoder_analyze_cross_sup">
                                                             <property name="can_focus">False</property>
                                                             <property name="spacing">6</property>
@@ -24820,7 +24808,7 @@ then click this button.</property>
                                                             <packing>
                                                             <property name="expand">False</property>
                                                             <property name="fill">False</property>
-                                                            <property name="position">5</property>
+                                                            <property name="position">6</property>
                                                             </packing>
                                                             </child>
                                                             <child>
@@ -24833,7 +24821,7 @@ then click this button.</property>
                                                             <packing>
                                                             <property name="expand">False</property>
                                                             <property name="fill">False</property>
-                                                            <property name="position">6</property>
+                                                            <property name="position">7</property>
                                                             </packing>
                                                             </child>
                                                             <child>
@@ -24844,7 +24832,7 @@ then click this button.</property>
                                                             <packing>
                                                             <property name="expand">False</property>
                                                             <property name="fill">True</property>
-                                                            <property name="position">7</property>
+                                                            <property name="position">8</property>
                                                             </packing>
                                                             </child>
                                                             <child>
@@ -25220,7 +25208,7 @@ then click this button.</property>
                                                             <packing>
                                                             <property name="expand">False</property>
                                                             <property name="fill">False</property>
-                                                            <property name="position">8</property>
+                                                            <property name="position">9</property>
                                                             </packing>
                                                             </child>
                                                             <child>
@@ -25233,7 +25221,7 @@ then click this button.</property>
                                                             <packing>
                                                             <property name="expand">False</property>
                                                             <property name="fill">False</property>
-                                                            <property name="position">9</property>
+                                                            <property name="position">10</property>
                                                             </packing>
                                                             </child>
                                                             </widget>
@@ -27916,6 +27904,9 @@ then click this button.</property>
                                                             <child>
                                                             <placeholder/>
                                                             </child>
+                                                            <child>
+                                                            <placeholder/>
+                                                            </child>
                                                             </widget>
                                                             <packing>
                                                             <property name="expand">False</property>
diff --git a/src/encoder.cs b/src/encoder.cs
index 6c4e535a..0902c1b6 100644
--- a/src/encoder.cs
+++ b/src/encoder.cs
@@ -161,6 +161,7 @@ public class EncoderGraphROptions
        public bool crossValidate;
        private bool cutByTriggers;
        private string triggerList;
+       public bool separateSessionInDays;
        
        public EncoderGraphROptions(
                        string inputData, string outputGraph, string outputData1, 
@@ -168,7 +169,8 @@ public class EncoderGraphROptions
                        EncoderParams ep,
                        string title, string operatingSystem,
                        string englishWords, string translatedWords,
-                       bool debug, bool crossValidate, bool cutByTriggers, string triggerList)
+                       bool debug, bool crossValidate, bool cutByTriggers, string triggerList,
+                       bool separateSessionInDays)
        {
                this.inputData = inputData;
                this.outputGraph = outputGraph;
@@ -184,6 +186,7 @@ public class EncoderGraphROptions
                this.crossValidate = crossValidate;
                this.cutByTriggers = cutByTriggers;
                this.triggerList = triggerList;
+               this.separateSessionInDays = separateSessionInDays;
 
                //ensure triggerList is not null or blank
                if(triggerList == null || triggerList == "")
@@ -205,7 +208,8 @@ public class EncoderGraphROptions
                        "#debug\n" +            Util.BoolToRBool(debug) + "\n" +
                        "#crossValidate\n" +    Util.BoolToRBool(crossValidate) + "\n" +
                        "#cutByTriggers\n" +    Util.BoolToRBool(cutByTriggers) + "\n" +
-                       "#triggerList\n" +      triggerList + "\n";
+                       "#triggerList\n" +      triggerList + "\n" +
+                       "#separateSessionInDays\n" +    Util.BoolToRBool(separateSessionInDays) + "\n";
        }
        
 
diff --git a/src/encoderRProc.cs b/src/encoderRProc.cs
index fe8a7e8b..3a3d5735 100644
--- a/src/encoderRProc.cs
+++ b/src/encoderRProc.cs
@@ -32,6 +32,7 @@ public abstract class EncoderRProc
        public Status status;
        public bool Debug = false;
        public bool CrossValidate;
+       public bool SeparateSessionInDays;
        public int CurvesReaded;
 
        protected string optionsFile;   
@@ -257,7 +258,8 @@ public class EncoderRProcCapture : EncoderRProc
                                Debug,
                                false,  //crossValidate (unactive on capture at the moment)
                                (CutByTriggers != Preferences.TriggerTypes.NO_TRIGGERS),
-                               printTriggers()
+                               printTriggers(),
+                               false   //separateSessionInDays (false at capture)
                                ).ToString();
 
                TextWriter writer = File.CreateText(optionsFile);
@@ -514,7 +516,8 @@ public class EncoderRProcAnalyze : EncoderRProc
                                Debug,
                                CrossValidate,
                                cutByTriggers,
-                               printTriggers()
+                               printTriggers(),
+                               SeparateSessionInDays
                                ).ToString();
 
                TextWriter writer = File.CreateText(optionsFile);
diff --git a/src/gui/encoder.cs b/src/gui/encoder.cs
index beea8b16..1a31f009 100644
--- a/src/gui/encoder.cs
+++ b/src/gui/encoder.cs
@@ -261,6 +261,7 @@ public partial class ChronoJumpWindow
        [Widget] Gtk.Label label_encoder_analyze_selected;
        [Widget] Gtk.HBox hbox_encoder_analyze_intersession;
        [Widget] Gtk.CheckButton check_encoder_intersession_x_is_date;
+       [Widget] Gtk.CheckButton check_encoder_separate_session_in_days;
        [Widget] Gtk.HBox hbox_combo_encoder_analyze_weights;
        [Widget] Gtk.ComboBox combo_encoder_analyze_weights;
        
@@ -3171,7 +3172,7 @@ public partial class ChronoJumpWindow
                        check_encoder_analyze_eccon_together.Active = true;
                }
        }
-       
+
        private void on_radio_encoder_analyze_individual_current_set_toggled (object obj, EventArgs args) 
        {
                if(! radio_encoder_analyze_individual_current_set.Active)
@@ -3203,6 +3204,8 @@ public partial class ChronoJumpWindow
                check_encoder_analyze_eccon_together.Sensitive = true;
                block_check_encoder_analyze_eccon_together_if_needed();
                hbox_encoder_analyze_intersession.Visible = false;
+               check_encoder_separate_session_in_days.Active = false;
+               check_encoder_separate_session_in_days.Visible = false;
                        
                button_encoder_analyze_sensitiveness();
        
@@ -3254,6 +3257,8 @@ public partial class ChronoJumpWindow
                check_encoder_analyze_eccon_together.Sensitive = true;
                block_check_encoder_analyze_eccon_together_if_needed();
                hbox_encoder_analyze_intersession.Visible = false;
+               check_encoder_separate_session_in_days.Active = false;
+               check_encoder_separate_session_in_days.Visible = false;
                        
                button_encoder_analyze_sensitiveness();
        
@@ -3283,6 +3288,9 @@ public partial class ChronoJumpWindow
                radiobutton_encoder_analyze_cross.Active = true;
                hbox_encoder_analyze_intersession.Visible = true;
                
+               check_encoder_separate_session_in_days.Visible = true;
+               set_check_encoder_separate_session_in_days();
+
                //this analysis only when not comparing
                radiobutton_encoder_analyze_instantaneous.Visible = false;
                radiobutton_encoder_analyze_powerbars.Visible = false;
@@ -3294,7 +3302,7 @@ public partial class ChronoJumpWindow
 
                showTriggerTab(false);
        }
-
+               
        private void on_radio_encoder_analyze_groupal_current_session_toggled (object obj, EventArgs args) 
        {
                if(! radio_encoder_analyze_groupal_current_session.Active)
@@ -3314,6 +3322,8 @@ public partial class ChronoJumpWindow
                //active cross. The only available for comparing        
                radiobutton_encoder_analyze_cross.Active = true;
                hbox_encoder_analyze_intersession.Visible = false;
+               check_encoder_separate_session_in_days.Active = false;
+               check_encoder_separate_session_in_days.Visible = false;
                
                //this analysis only when not comparing
                radiobutton_encoder_analyze_instantaneous.Visible = false;
@@ -3379,6 +3389,13 @@ public partial class ChronoJumpWindow
                return analysisVariables;
        }
 
+       private void set_check_encoder_separate_session_in_days()
+       {
+               check_encoder_separate_session_in_days.Sensitive = ! 
check_encoder_intersession_x_is_date.Active;
+               if(check_encoder_intersession_x_is_date.Active)
+                       check_encoder_separate_session_in_days.Active = false;
+       }
+
 
        //encoder analysis modes
 
@@ -3992,7 +4009,14 @@ public partial class ChronoJumpWindow
                }
        }
 
-       void on_check_encoder_intersession_x_is_date_toggled (object o, EventArgs args) {
+       //to avoid circular calls
+       private bool encoder_x_is_date_session_in_days_nofollow = false;
+
+       void on_check_encoder_intersession_x_is_date_toggled (object o, EventArgs args)
+       {
+               if(encoder_x_is_date_session_in_days_nofollow)
+                       return;
+
                createComboAnalyzeCross(false, check_encoder_intersession_x_is_date.Active);
                
                if(check_encoder_intersession_x_is_date.Active) {
@@ -4000,7 +4024,27 @@ public partial class ChronoJumpWindow
                        combo_encoder_analyze_weights.Visible = true;
                } else
                        combo_encoder_analyze_weights.Visible = false;
-       }       
+
+               encoder_x_is_date_session_in_days_nofollow = true;
+               set_check_encoder_separate_session_in_days();
+               encoder_x_is_date_session_in_days_nofollow = false;
+       }
+
+       void on_check_encoder_separate_session_in_days_toggled (object o, EventArgs args)
+       {
+               if(encoder_x_is_date_session_in_days_nofollow)
+                       return;
+
+               check_encoder_intersession_x_is_date.Sensitive = ! 
check_encoder_separate_session_in_days.Active;
+
+               if(check_encoder_separate_session_in_days.Active)
+               {
+                       encoder_x_is_date_session_in_days_nofollow = true;
+                       check_encoder_intersession_x_is_date.Active = false;
+                       encoder_x_is_date_session_in_days_nofollow = false;
+               }
+       }
+
 
 
        void on_radio_encoder_eccon_toggled (object o, EventArgs args)
@@ -5826,9 +5870,10 @@ public partial class ChronoJumpWindow
 
                        encoder_pulsebar_analyze.Text = Catalog.GetString("Please, wait.");
                        encoderRProcAnalyze.status = EncoderRProc.Status.WAITING;
-       
+
                        encoderRProcAnalyze.CrossValidate = checkbutton_crossvalidate.Active;
-               
+                       encoderRProcAnalyze.SeparateSessionInDays = 
check_encoder_separate_session_in_days.Active;
+
                        encoderThread = new Thread(new ThreadStart(encoderDoAnalyze));
                        GLib.Idle.Add (new GLib.IdleHandler (pulseGTKEncoderAnalyze));
 
diff --git a/src/utilEncoder.cs b/src/utilEncoder.cs
index ff8a8642..cfd1517a 100644
--- a/src/utilEncoder.cs
+++ b/src/utilEncoder.cs
@@ -350,7 +350,7 @@ public class UtilEncoder
 
        public static EncoderGraphROptions PrepareEncoderGraphOptions(
                        string title, EncoderStruct es, bool neuromuscularProfileDo, bool translate, bool 
debug, bool crossValidate,
-                       bool cutByTriggers, string triggerStr)
+                       bool cutByTriggers, string triggerStr, bool separateSessionInDays)
        {
                string operatingSystem = OperatingSystemForRGraphs();
                        
@@ -405,7 +405,7 @@ public class UtilEncoder
                                title, operatingSystem,
                                Util.StringArrayToString(Constants.EncoderEnglishWords,";"),
                                Util.StringArrayToString(encoderTranslatedWordsOK,";"),
-                               debug, crossValidate, cutByTriggers, triggerStr
+                               debug, crossValidate, cutByTriggers, triggerStr, separateSessionInDays
                                );
        }
 


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