[chronojump] overview win selects currentPerson on open



commit f6a1c791e60947619b5c0bd4080d4edc2b96314e
Author: Xavier de Blas <xaviblas gmail com>
Date:   Sat Jan 16 12:34:26 2021 +0100

    overview win selects currentPerson on open

 src/gui/app1/chronojump.cs |  8 ++++----
 src/gui/overview.cs        | 39 +++++++++++++++++++++++++++++++++++----
 2 files changed, 39 insertions(+), 8 deletions(-)
---
diff --git a/src/gui/app1/chronojump.cs b/src/gui/app1/chronojump.cs
index c82e25ac..6162adf3 100644
--- a/src/gui/app1/chronojump.cs
+++ b/src/gui/app1/chronojump.cs
@@ -2709,19 +2709,19 @@ public partial class ChronoJumpWindow
        private OverviewWindow overviewWin;
        private void on_session_overview_clicked (object o, EventArgs args)
        {
-               if (currentSession == null)
+               if (currentSession == null || currentPerson == null)
                        return;
 
                Constants.Menuitem_modes m = current_menuitem_mode;
 
                if(m == Constants.Menuitem_modes.POWERGRAVITATORY || m == 
Constants.Menuitem_modes.POWERINERTIAL)
                {
-                       overviewWin = EncoderOverviewWindow.Show (app1, currentEncoderGI, 
currentSession.UniqueID);
+                       overviewWin = EncoderOverviewWindow.Show (app1, currentEncoderGI, 
currentSession.UniqueID, currentPerson.UniqueID);
                }
                else if(m == Constants.Menuitem_modes.FORCESENSOR)
-                       overviewWin = ForceSensorOverviewWindow.Show (app1, currentSession.UniqueID);
+                       overviewWin = ForceSensorOverviewWindow.Show (app1, currentSession.UniqueID, 
currentPerson.UniqueID);
                else if(m == Constants.Menuitem_modes.RUNSENCODER)
-                       overviewWin = RunEncoderOverviewWindow.Show (app1, currentSession.UniqueID);
+                       overviewWin = RunEncoderOverviewWindow.Show (app1, currentSession.UniqueID, 
currentPerson.UniqueID);
 
                overviewWin.Button_select_this_person.Clicked -= new EventHandler(on_overview_select_person);
                overviewWin.Button_select_this_person.Clicked += new EventHandler(on_overview_select_person);
diff --git a/src/gui/overview.cs b/src/gui/overview.cs
index c3736c5e..44a7f4cc 100644
--- a/src/gui/overview.cs
+++ b/src/gui/overview.cs
@@ -36,9 +36,14 @@ public abstract class OverviewWindow
        [Widget] protected Gtk.RadioButton radio_sets;
        [Widget] protected Gtk.RadioButton radio_reps;
        [Widget] protected Gtk.Button button_select_this_person;
-       
+
+       //used by personIDAtStart, because we need to select the row after showing the window
+       protected TreeStore storeSets;
+       protected TreeStore storeReps; //note this is not used because right now we cannot have both 
treeviews selected
+
        protected enum treeviewType { SETS, REPS }
        protected int sessionID;
+       protected int personIDAtStart;
        protected int selectedPersonID;
 
        protected void initialize()
@@ -68,6 +73,11 @@ public abstract class OverviewWindow
                TreeStore store = getStore(tvType);
                tv.Model = store;
 
+               if(tvType == treeviewType.SETS)
+                       storeSets = store;
+               else if(tvType == treeviewType.REPS)
+                       storeReps = store;
+
                foreach (string [] line in array)
                        store.AppendValues (line);
 
@@ -119,6 +129,12 @@ public abstract class OverviewWindow
                }
        }
 
+       protected void selectRowWithID ()
+       {
+               if(personIDAtStart >= 0)
+                       UtilGtk.TreeviewSelectRowWithID(treeview_sets, storeSets, 0, personIDAtStart, true); 
//last boolean is 'scroll to row'
+       }
+
        protected void on_radio_sets_toggled (object o, EventArgs args)
        {
                if(radio_sets.Active)
@@ -189,18 +205,23 @@ public class EncoderOverviewWindow : OverviewWindow
                        UtilGtk.WindowColor(overview_win, Config.ColorBackground);
        }
 
-       static public EncoderOverviewWindow Show (Gtk.Window parent, Constants.EncoderGI encoderGI, int 
sessionID)
+       //if personIDAtStart == -1, there is not currentPerson
+       static public EncoderOverviewWindow Show (Gtk.Window parent, Constants.EncoderGI encoderGI, int 
sessionID, int personIDAtStart)
        {
                if (EncoderOverviewWindowBox == null)
                        EncoderOverviewWindowBox = new EncoderOverviewWindow (parent);
 
                EncoderOverviewWindowBox.encoderGI = encoderGI;
                EncoderOverviewWindowBox.sessionID = sessionID;
+               EncoderOverviewWindowBox.personIDAtStart = personIDAtStart;
 
                EncoderOverviewWindowBox.initialize();
                EncoderOverviewWindowBox.hbox_radio_sets_repetitions.Visible = true;
 
                EncoderOverviewWindowBox.overview_win.Show ();
+
+               //done after Show, to ensure the selected row is shown
+               EncoderOverviewWindowBox.selectRowWithID();
                
                return EncoderOverviewWindowBox;
        }
@@ -312,12 +333,14 @@ public class ForceSensorOverviewWindow : OverviewWindow
                        UtilGtk.WindowColor(overview_win, Config.ColorBackground);
        }
 
-       static public ForceSensorOverviewWindow Show (Gtk.Window parent, int sessionID)
+       //if personIDAtStart == -1, there is not currentPerson
+       static public ForceSensorOverviewWindow Show (Gtk.Window parent, int sessionID, int personIDAtStart)
        {
                if (ForceSensorOverviewWindowBox == null)
                        ForceSensorOverviewWindowBox = new ForceSensorOverviewWindow (parent);
 
                ForceSensorOverviewWindowBox.sessionID = sessionID;
+               ForceSensorOverviewWindowBox.personIDAtStart = personIDAtStart;
 
                ForceSensorOverviewWindowBox.initialize();
 
@@ -326,6 +349,9 @@ public class ForceSensorOverviewWindow : OverviewWindow
 
                ForceSensorOverviewWindowBox.overview_win.Show ();
 
+               //done after Show, to ensure the selected row is shown
+               ForceSensorOverviewWindowBox.selectRowWithID();
+
                return ForceSensorOverviewWindowBox;
        }
 
@@ -372,12 +398,14 @@ public class RunEncoderOverviewWindow : OverviewWindow
                        UtilGtk.WindowColor(overview_win, Config.ColorBackground);
        }
 
-       static public RunEncoderOverviewWindow Show (Gtk.Window parent, int sessionID)
+       //if personIDAtStart == -1, there is not currentPerson
+       static public RunEncoderOverviewWindow Show (Gtk.Window parent, int sessionID, int personIDAtStart)
        {
                if (RunEncoderOverviewWindowBox == null)
                        RunEncoderOverviewWindowBox = new RunEncoderOverviewWindow (parent);
 
                RunEncoderOverviewWindowBox.sessionID = sessionID;
+               RunEncoderOverviewWindowBox.personIDAtStart = personIDAtStart;
 
                RunEncoderOverviewWindowBox.initialize();
 
@@ -386,6 +414,9 @@ public class RunEncoderOverviewWindow : OverviewWindow
 
                RunEncoderOverviewWindowBox.overview_win.Show ();
 
+               //done after Show, to ensure the selected row is shown
+               RunEncoderOverviewWindowBox.selectRowWithID();
+
                return RunEncoderOverviewWindowBox;
        }
 


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