[chronojump] personSelectWin hide when open new win. Fixed updating persons treeview



commit ef53b62eee5f30a071741b101b01fb694bf2d424
Author: Xavier de Blas <xaviblas gmail com>
Date:   Tue Feb 20 17:24:11 2018 +0100

    personSelectWin hide when open new win. Fixed updating persons treeview

 glade/person_select_window.glade |   26 +++++++++++++++++-
 src/gui/chronojump.cs            |   55 ++++++++++++++++++--------------------
 src/gui/chronojumpPersons.cs     |   24 ++++++++++++++++
 src/gui/person.cs                |   25 +++++++++++++++--
 src/gui/personSelect.cs          |   19 +++++++++++-
 src/treeViewPerson.cs            |    5 +++
 6 files changed, 119 insertions(+), 35 deletions(-)
---
diff --git a/glade/person_select_window.glade b/glade/person_select_window.glade
index e4f6e55..017f48a 100644
--- a/glade/person_select_window.glade
+++ b/glade/person_select_window.glade
@@ -2443,6 +2443,30 @@
                     <child>
                       <placeholder/>
                     </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
                   </widget>
                 </child>
               </widget>
@@ -2881,7 +2905,7 @@
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
-                    <signal name="clicked" handler="on_button_cancel_clicked" swapped="no"/>
+                    <signal name="clicked" handler="on_button_close_clicked" swapped="no"/>
                     <accelerator key="Escape" signal="clicked"/>
                     <child>
                       <widget class="GtkVBox" id="vbox7">
diff --git a/src/gui/chronojump.cs b/src/gui/chronojump.cs
index 2de8b10..7deb882 100644
--- a/src/gui/chronojump.cs
+++ b/src/gui/chronojump.cs
@@ -430,7 +430,8 @@ public partial class ChronoJumpWindow
        PersonRecuperateWindow personRecuperateWin; 
        PersonsRecuperateFromOtherSessionWindow personsRecuperateFromOtherSessionWin; 
        PersonAddModifyWindow personAddModifyWin; 
-       PersonAddMultipleWindow personAddMultipleWin; 
+       PersonAddMultipleWindow personAddMultipleWin;
+       PersonShowAllEventsWindow personShowAllEventsWin;
        PersonSelectWindow personSelectWin;
        JumpsMoreWindow jumpsMoreWin;
        JumpsRjMoreWindow jumpsRjMoreWin;
@@ -1011,28 +1012,6 @@ public partial class ChronoJumpWindow
                }
        }
 
-       void label_person_change()
-       {
-               label_top_person_name.Text = "<b>" + currentPerson.Name + "</b>";
-               label_top_person_name.UseMarkup = true;
-
-               label_top_encoder_person_name.Text = "<b>" + currentPerson.Name + "</b>";
-               label_top_encoder_person_name.UseMarkup = true;
-
-               string filenameMini = Util.UserPhotoURL(true, currentPerson.UniqueID);
-               if(filenameMini != "")
-               {
-                       Pixbuf pixbuf = new Pixbuf (filenameMini);
-                       image_current_person.Pixbuf = pixbuf;
-                       button_image_current_person_zoom.Sensitive = true;
-               } else {
-                       //image_current_person.Pixbuf = null;
-                       Pixbuf pixbuf = new Pixbuf (null, Util.GetImagePath(false) + "image_no_photo.png");
-                       image_current_person.Pixbuf = pixbuf;
-                       button_image_current_person_zoom.Sensitive = false;
-               }
-       }
-
        private void on_button_image_current_person_zoom_clicked(object o, EventArgs args)
        {
                new DialogImageTest(currentPerson.Name,
@@ -2596,7 +2575,10 @@ public partial class ChronoJumpWindow
                }
 
                if(person_load_single_called_from_person_select_window)
+               {
+                       personRecuperateWin.HideAndNull();
                        updatePersonSelectWin ();
+               }
        }
                
        private void on_recuperate_persons_from_session_clicked (object o, EventArgs args) {
@@ -2633,7 +2615,7 @@ public partial class ChronoJumpWindow
 
        private void person_add_single ()
        {
-               personAddModifyWin = PersonAddModifyWindow.Show(app1, 
+               personAddModifyWin = PersonAddModifyWindow.Show(app1,
                                currentSession, new Person(-1), 
                                preferences.digitsNumber, checkbutton_video, configChronojump.UseVideo
                                );
@@ -2787,9 +2769,10 @@ public partial class ChronoJumpWindow
                }
        }
 
-       
-       private void on_show_all_person_events_activate (object o, EventArgs args) {
-               PersonShowAllEventsWindow.Show(app1, currentSession.UniqueID, currentPerson, true);
+
+       private void on_show_all_person_events_activate (object o, EventArgs args)
+       {
+               personShowAllEventsWin = PersonShowAllEventsWindow.Show(app1, currentSession.UniqueID, 
currentPerson, true);
        }
        
        
@@ -2860,18 +2843,31 @@ public partial class ChronoJumpWindow
        private void on_button_top_person_edit_person(object o, EventArgs args)
        {
                currentPerson = personSelectWin.SelectedPerson; 
+               personChanged();
                
                person_edit_single_called_from_person_select_window = true;
                person_edit_single();
        }
        private void on_button_top_person_show_all_events (object o, EventArgs args)
        {
-               Person thisPerson = personSelectWin.SelectedPerson;
-               PersonShowAllEventsWindow.Show(app1, currentSession.UniqueID, thisPerson, false);
+               personShowAllEventsWin = PersonShowAllEventsWindow.Show(app1, currentSession.UniqueID, 
currentPerson, false);
+               personShowAllEventsWin.FakeButtonDone.Clicked -= new 
EventHandler(on_person_show_all_persons_event_close);
+               personShowAllEventsWin.FakeButtonDone.Clicked += new 
EventHandler(on_person_show_all_persons_event_close);
        }
+       private void on_person_show_all_persons_event_close (object o, EventArgs args)
+       {
+               personShowAllEventsWin.FakeButtonDone.Clicked -= new 
EventHandler(on_person_show_all_persons_event_close);
+
+               ArrayList myPersons = SqlitePersonSession.SelectCurrentSessionPersons(
+                               currentSession.UniqueID,
+                               false); //means: do not returnPersonAndPSlist
+               personSelectWin.Update(myPersons);
+       }
+
        private void on_button_top_person_delete_person(object o, EventArgs args)
        {
                currentPerson = personSelectWin.SelectedPerson;
+               personChanged();
                
                //without confirm, because it's already confirmed on PersonSelect
                on_delete_current_person_from_session_accepted (o, args);
@@ -2889,6 +2885,7 @@ public partial class ChronoJumpWindow
                label_person_change();
 
                personChanged();
+               myTreeViewPersons.SelectRowByUniqueID(currentPerson.UniqueID);
        }
 
 
diff --git a/src/gui/chronojumpPersons.cs b/src/gui/chronojumpPersons.cs
index bcfdbaa..5c88484 100644
--- a/src/gui/chronojumpPersons.cs
+++ b/src/gui/chronojumpPersons.cs
@@ -22,6 +22,7 @@
 
 using System;
 using Gtk;
+using Gdk;
 using Glade;
 
 public partial class ChronoJumpWindow
@@ -64,4 +65,27 @@ public partial class ChronoJumpWindow
                hbox_persons_bottom_photo.Visible = showPhoto;
                hbox_persons_bottom_no_photo.Visible = ! showPhoto;
        }
+
+       private void label_person_change()
+       {
+               label_top_person_name.Text = "<b>" + currentPerson.Name + "</b>";
+               label_top_person_name.UseMarkup = true;
+
+               label_top_encoder_person_name.Text = "<b>" + currentPerson.Name + "</b>";
+               label_top_encoder_person_name.UseMarkup = true;
+
+               string filenameMini = Util.UserPhotoURL(true, currentPerson.UniqueID);
+               if(filenameMini != "")
+               {
+                       Pixbuf pixbuf = new Pixbuf (filenameMini);
+                       image_current_person.Pixbuf = pixbuf;
+                       button_image_current_person_zoom.Sensitive = true;
+               } else {
+                       //image_current_person.Pixbuf = null;
+                       Pixbuf pixbuf = new Pixbuf (null, Util.GetImagePath(false) + "image_no_photo.png");
+                       image_current_person.Pixbuf = pixbuf;
+                       button_image_current_person_zoom.Sensitive = false;
+               }
+       }
+
 }
diff --git a/src/gui/person.cs b/src/gui/person.cs
index 9fab353..b14baec 100644
--- a/src/gui/person.cs
+++ b/src/gui/person.cs
@@ -206,6 +206,15 @@ public class PersonRecuperateWindow {
                }
        }
 
+       //if called from personRecuperateWindow
+       public void HideAndNull()
+       {
+               if(PersonRecuperateWindowBox.person_recuperate != null)
+                       PersonRecuperateWindowBox.person_recuperate.Hide();
+
+               if(PersonRecuperateWindowBox != null)
+                       PersonRecuperateWindowBox = null;
+       }
        
        protected virtual void on_button_close_clicked (object o, EventArgs args)
        {
@@ -263,7 +272,7 @@ public class PersonRecuperateWindow {
                }
        }
 
-       public Button FakeButtonDone 
+       public Button FakeButtonDone
        {
                set { fakeButtonDone = value; }
                get { return fakeButtonDone; }
@@ -770,7 +779,7 @@ public class PersonNotUploadWindow : PersonsRecuperateFromOtherSessionWindow
                on_button_close_clicked (o, new EventArgs());
        }
        
-       public new Button FakeButtonDone 
+       public new Button FakeButtonDone
        {
                set { fakeButtonDone = value; }
                get { return fakeButtonDone; }
@@ -2503,6 +2512,8 @@ public class PersonShowAllEventsWindow
        [Widget] Gtk.Box hbox_combo_persons;
        [Widget] Gtk.ComboBox combo_persons;
 
+       public Gtk.Button fakeButtonDone;
+
        TreeStore store;
        static PersonShowAllEventsWindow PersonShowAllEventsWindowBox;
 
@@ -2523,6 +2534,8 @@ public class PersonShowAllEventsWindow
                this.sessionID = sessionID;
                this.currentPerson = currentPerson;
 
+               fakeButtonDone = new Gtk.Button();
+
                label_person_name.Text = currentPerson.Name;
                createComboPersons(sessionID, currentPerson.UniqueID.ToString(), currentPerson.Name);
                createTreeView(treeview_person_show_all_events);
@@ -2633,17 +2646,23 @@ public class PersonShowAllEventsWindow
                                        myStr[6], myStr[7], myStr[8], myStr[9], myStr[10], myStr[11]);
                }
        }
-       
 
        protected virtual void on_button_close_clicked (object o, EventArgs args)
        {
+               fakeButtonDone.Click();
                PersonShowAllEventsWindowBox.person_show_all_events.Hide();
                PersonShowAllEventsWindowBox = null;
        }
        
        protected virtual void on_delete_event (object o, DeleteEventArgs args)
        {
+               fakeButtonDone.Click();
                PersonShowAllEventsWindowBox.person_show_all_events.Hide();
                PersonShowAllEventsWindowBox = null;
        }
+
+       public Button FakeButtonDone
+       {
+               get { return fakeButtonDone; }
+       }
 }
diff --git a/src/gui/personSelect.cs b/src/gui/personSelect.cs
index b61908e..b9972b0 100644
--- a/src/gui/personSelect.cs
+++ b/src/gui/personSelect.cs
@@ -101,6 +101,12 @@ public class PersonSelectWindow
                return PersonSelectWindowBox;
        }
 
+       //from main gui to not change SelectedPerson
+       public void Update(ArrayList persons)
+       {
+               Update(persons, SelectedPerson);
+       }
+       //from main gui to change SelectedPerson or from this class
        public void Update(ArrayList persons, Person currentPerson)
        {
                this.persons = persons;
@@ -117,6 +123,9 @@ public class PersonSelectWindow
                LogB.Debug("Recreating table");
                createTable();
                table1.Visible = true;
+
+               if(! person_select_window.Visible)
+                       person_select_window.Visible = true;
        }
 
        private void removeTable() 
@@ -240,17 +249,22 @@ public class PersonSelectWindow
                button_delete.Sensitive = sensitive;
        }
        
-       private void on_button_add_clicked (object o, EventArgs args) {
+       private void on_button_add_clicked (object o, EventArgs args)
+       {
+               person_select_window.Visible = false;
                FakeButtonAddPerson.Click();
        }
        private void on_button_load_clicked (object o, EventArgs args) {
+               person_select_window.Visible = false;
                FakeButtonLoadPerson.Click();
        }
        private void on_button_edit_clicked (object o, EventArgs args) {
+               person_select_window.Visible = false;
                FakeButtonEditPerson.Click();
        }
 
        private void on_button_show_all_events_clicked (object o, EventArgs args) {
+               person_select_window.Visible = false;
                FakeButtonPersonShowAllEvents.Click();
        }
 
@@ -305,7 +319,8 @@ public class PersonSelectWindow
        }
        
        //ESC is enabled
-       private void on_button_cancel_clicked (object o, EventArgs args) {
+       private void on_button_close_clicked (object o, EventArgs args)
+       {
                close_window();
        }
        
diff --git a/src/treeViewPerson.cs b/src/treeViewPerson.cs
index 13d2026..0a92299 100644
--- a/src/treeViewPerson.cs
+++ b/src/treeViewPerson.cs
@@ -198,6 +198,11 @@ public class TreeViewPersons
                return found;
        }
 
+       public void SelectRowByUniqueID(int personID)
+       {
+               SelectRow(FindRow(personID));
+       }
+
        public void SelectNextRow(int personID)
        {
                SelectRow(FindRow(personID) +1);


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