[chronojump] top personSelect window with button up/down



commit 8697556a3d1bf6d7100ccc3ec33b42abe8e50e75
Author: Xavier de Blas <xaviblas gmail com>
Date:   Mon Feb 12 15:09:41 2018 +0100

    top personSelect window with button up/down

 glade/person_select_window.glade |  123 ++++++++++++++++++++++++++++++++------
 src/gui/personSelect.cs          |   31 +++++++++-
 2 files changed, 132 insertions(+), 22 deletions(-)
---
diff --git a/glade/person_select_window.glade b/glade/person_select_window.glade
index 3bf99c5..5281b41 100644
--- a/glade/person_select_window.glade
+++ b/glade/person_select_window.glade
@@ -4,7 +4,6 @@
   <!-- interface-naming-policy toplevel-contextual -->
   <widget class="GtkWindow" id="person_select_window">
     <property name="width_request">820</property>
-    <property name="height_request">550</property>
     <property name="visible">True</property>
     <property name="can_focus">False</property>
     <property name="border_width">5</property>
@@ -2408,6 +2407,18 @@
                     <child>
                       <placeholder/>
                     </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
+                    <child>
+                      <placeholder/>
+                    </child>
                   </widget>
                 </child>
               </widget>
@@ -2721,43 +2732,117 @@
               </packing>
             </child>
             <child>
-              <widget class="GtkButton" id="button_close">
+              <widget class="GtkHBox" id="hbox3">
                 <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"/>
-                <accelerator key="Escape" signal="clicked"/>
+                <property name="can_focus">False</property>
+                <property name="spacing">10</property>
                 <child>
-                  <widget class="GtkVBox" id="vbox7">
+                  <widget class="GtkVBox" id="vbox3">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="spacing">4</property>
+                    <property name="spacing">6</property>
                     <child>
-                      <widget class="GtkImage" id="image4">
+                      <widget class="GtkButton" id="button_up">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="stock">gtk-close</property>
-                        <property name="icon-size">3</property>
+                        <property name="can_focus">True</property>
+                        <property name="can_default">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="has_tooltip">True</property>
+                        <property name="tooltip">&lt;Control&gt;Up</property>
+                        <property name="relief">half</property>
+                        <signal name="clicked" handler="on_button_up_clicked" swapped="no"/>
+                        <accelerator key="Up" signal="clicked" modifiers="GDK_CONTROL_MASK"/>
+                        <child>
+                          <widget class="GtkArrow" id="arrow_up1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="arrow_type">up</property>
+                          </widget>
+                        </child>
                       </widget>
                       <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
+                        <property name="expand">False</property>
+                        <property name="fill">False</property>
                         <property name="position">0</property>
                       </packing>
                     </child>
                     <child>
-                      <widget class="GtkLabel" id="label4">
+                      <widget class="GtkButton" id="button_down">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="label" translatable="yes">Close</property>
+                        <property name="can_focus">True</property>
+                        <property name="can_default">True</property>
+                        <property name="receives_default">True</property>
+                        <property name="has_tooltip">True</property>
+                        <property name="tooltip">&lt;Control&gt;Down</property>
+                        <property name="relief">half</property>
+                        <signal name="clicked" handler="on_button_down_clicked" swapped="no"/>
+                        <accelerator key="Down" signal="clicked" modifiers="GDK_CONTROL_MASK"/>
+                        <child>
+                          <widget class="GtkArrow" id="arrow_down1">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="arrow_type">down</property>
+                          </widget>
+                        </child>
                       </widget>
                       <packing>
-                        <property name="expand">True</property>
-                        <property name="fill">True</property>
+                        <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="GtkButton" id="button_close">
+                    <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"/>
+                    <accelerator key="Escape" signal="clicked"/>
+                    <child>
+                      <widget class="GtkVBox" id="vbox7">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="spacing">4</property>
+                        <child>
+                          <widget class="GtkImage" id="image4">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="stock">gtk-close</property>
+                            <property name="icon-size">3</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">0</property>
+                          </packing>
+                        </child>
+                        <child>
+                          <widget class="GtkLabel" id="label4">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="label" translatable="yes">Close</property>
+                          </widget>
+                          <packing>
+                            <property name="expand">True</property>
+                            <property name="fill">True</property>
+                            <property name="position">1</property>
+                          </packing>
+                        </child>
+                      </widget>
+                    </child>
+                  </widget>
+                  <packing>
+                    <property name="expand">True</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
                 </child>
               </widget>
               <packing>
diff --git a/src/gui/personSelect.cs b/src/gui/personSelect.cs
index 5a65451..d153be5 100644
--- a/src/gui/personSelect.cs
+++ b/src/gui/personSelect.cs
@@ -29,6 +29,7 @@ using System.IO;
 public class PersonSelectWindow 
 {
        [Widget] Gtk.Window person_select_window;
+       [Widget] Gtk.Viewport viewport1;
        [Widget] Gtk.Table table1;
        [Widget] Gtk.Button button_edit;
        [Widget] Gtk.Button button_delete;
@@ -58,6 +59,8 @@ public class PersonSelectWindow
                gladeXML = Glade.XML.FromAssembly (Util.GetGladePath() + "person_select_window.glade", 
"person_select_window", "chronojump");
                gladeXML.Autoconnect(this);
                
+               viewport1.HeightRequest = 170 * 3 + 8 * 2 + 4 * 2; //170 is button height, 8 is padding top 
botton (4+4), 4 the top and bottom of viewport1
+
                //put an icon to window
                UtilGtk.IconWindow(person_select_window);
                person_select_window.Parent = parent;
@@ -122,7 +125,7 @@ public class PersonSelectWindow
                personButtonsSensitive(false);
                vbox_button_delete_confirm.Visible = false;
                list_ppb = new List<PersonPhotoButton>();
-               
+
                for (int row_i = 0; row_i < rows; row_i ++) {
                        for (int col_i = 0; col_i < cols; col_i ++) 
                        {
@@ -144,10 +147,9 @@ public class PersonSelectWindow
                                                Gtk.AttachOptions.Fill, 
                                                Gtk.AttachOptions.Fill, 
                                                padding, padding);
-                               
                        }
                }
-                               
+
                table1.ShowAll();
        }
        
@@ -202,6 +204,28 @@ public class PersonSelectWindow
                FakeButtonEditPerson.Click();
        }
 
+       private void on_button_up_clicked (object o, EventArgs args)
+       {
+               vertical_scroll_change(viewport1.Vadjustment.Value - viewport1.Vadjustment.PageSize);
+       }
+
+       private void on_button_down_clicked (object o, EventArgs args)
+       {
+               vertical_scroll_change(viewport1.Vadjustment.Value + viewport1.Vadjustment.PageSize);
+       }
+
+       private void vertical_scroll_change (double newValue)
+       {
+               int min = 0;
+               double max = viewport1.Vadjustment.Upper - viewport1.Vadjustment.PageSize;
+
+               if(newValue < min)
+                       newValue = min;
+               else if(newValue > max)
+                       newValue = max;
+
+               viewport1.Vadjustment.Value = newValue;
+       }
 
        //delete person stuff   
        private void on_button_delete_clicked (object o, EventArgs args) {
@@ -341,6 +365,7 @@ public class PersonPhotoButton
 
                button = new Button(vbox);
                button.WidthRequest = 150;
+               button.HeightRequest = 170;
        }
 
        private Array getButtonBoxElements (Gtk.Button b)


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