[gitg] Convert window to a template



commit bcff322cbe44451b52c792b5b995bcdd0b3f438a
Author: Ignacio Casal Quinteiro <icq gnome org>
Date:   Fri May 31 16:53:20 2013 +0200

    Convert window to a template

 gitg/gitg-window.vala            |  168 +++++++++++++++++++-------------------
 gitg/resources/ui/gitg-window.ui |   36 +++++----
 2 files changed, 103 insertions(+), 101 deletions(-)
---
diff --git a/gitg/gitg-window.vala b/gitg/gitg-window.vala
index f8cf67e..39cdc69 100644
--- a/gitg/gitg-window.vala
+++ b/gitg/gitg-window.vala
@@ -20,7 +20,8 @@
 namespace Gitg
 {
 
-public class Window : Gtk.ApplicationWindow, GitgExt.Application, Initable, Gtk.Buildable
+[GtkTemplate (ui = "/org/gnome/gitg/ui/gitg-window.ui")]
+public class Window : Gtk.ApplicationWindow, GitgExt.Application, Initable
 {
        private Settings d_state_settings;
        private Settings d_main_settings;
@@ -32,23 +33,35 @@ public class Window : Gtk.ApplicationWindow, GitgExt.Application, Initable, Gtk.
        private UIElements<GitgExt.View> d_views;
        private UIElements<GitgExt.Panel> d_panels;
 
-
        // Widgets
+       [GtkChild]
        private Gtk.HeaderBar d_header_bar;
+       [GtkChild]
+       private Gtk.ToggleButton d_search_button;
+       [GtkChild]
        private Gtk.MenuButton d_gear_menu;
        private MenuModel d_dash_model;
        private MenuModel d_views_model;
 
-       private Gtk.Button d_button_dash;
+       [GtkChild]
+       private Gtk.Button d_dash_button;
+       [GtkChild]
        private Gtk.StackSwitcher d_commit_view_switcher;
 
+       [GtkChild]
+       private Gtk.Revealer d_search_revealer;
+       [GtkChild]
        private Gd.TaggedEntry d_search_entry;
 
+       [GtkChild]
        private Gtk.Stack d_main_stack;
 
+       [GtkChild]
        private Gtk.ScrolledWindow d_dash_scrolled_window;
+       [GtkChild]
        private GitgGtk.DashView d_dash_view;
 
+       [GtkChild]
        private Gtk.Stack d_stack_view;
 
        private static const ActionEntry[] win_entries = {
@@ -62,12 +75,76 @@ public class Window : Gtk.ApplicationWindow, GitgExt.Application, Initable, Gtk.
                {"user-information-repo", on_repo_user_info_activated},
        };
 
+       [GtkCallback]
+       private void close_button_clicked(Gtk.Button button)
+       {
+               Gdk.Event event;
+
+               event = new Gdk.Event(Gdk.EventType.DELETE);
+
+               event.any.window = this.get_window();
+               event.any.send_event = 1;
+
+               Gtk.main_do_event(event);
+               event.free();
+       }
+
+       [GtkCallback]
+       private void dash_button_clicked(Gtk.Button dash)
+       {
+               repository = null;
+       }
+
+       [GtkCallback]
+       private void search_button_toggled(Gtk.ToggleButton button)
+       {
+               if (button.get_active())
+               {
+                       d_search_entry.grab_focus();
+               }
+               else
+               {
+                       d_search_entry.set_text("");
+               }
+       }
+
+       [GtkCallback]
+       private void search_entry_changed(Gtk.Entry entry)
+       {
+               // FIXME: this is a weird way to know the dash is visible
+               if (d_repository == null)
+               {
+                       d_dash_view.filter_text(entry.text);
+               }
+       }
+
        construct
        {
                add_action_entries(win_entries, this);
 
                d_main_settings = new Settings("org.gnome.gitg.preferences.view.main");
                d_interface_settings = new Settings("org.gnome.gitg.preferences.interface");
+
+               string menuname;
+
+               if (Gtk.Settings.get_default().gtk_shell_shows_app_menu)
+               {
+                       menuname = "win-menu";
+               }
+               else
+               {
+                       menuname = "app-win-menu";
+               }
+
+               d_dash_model = Resource.load_object<MenuModel>("ui/gitg-menus.ui", menuname + "-dash");
+               d_views_model = Resource.load_object<MenuModel>("ui/gitg-menus.ui", menuname + "-views");
+
+               d_search_button.bind_property("active", d_search_revealer, "reveal-child");
+
+               // FIXME: for some reason if I create a signal in the ui file for this it crashes
+               d_dash_view.repository_activated.connect((r) => {
+                       repository = r;
+               });
        }
 
        private void on_close_activated()
@@ -142,7 +219,7 @@ public class Window : Gtk.ApplicationWindow, GitgExt.Application, Initable, Gtk.
                        d_main_stack.transition_type = Gtk.StackTransitionType.SLIDE_LEFT;
                        d_main_stack.set_visible_child(d_stack_view);
                        d_commit_view_switcher.show();
-                       d_button_dash.show();
+                       d_dash_button.show();
                        d_dash_view.add_repository(d_repository);
                        d_gear_menu.menu_model = d_views_model;
                }
@@ -156,7 +233,7 @@ public class Window : Gtk.ApplicationWindow, GitgExt.Application, Initable, Gtk.
                        d_main_stack.transition_type = Gtk.StackTransitionType.SLIDE_RIGHT;
                        d_main_stack.set_visible_child(d_dash_scrolled_window);
                        d_commit_view_switcher.hide();
-                       d_button_dash.hide();
+                       d_dash_button.hide();
                        d_gear_menu.menu_model = d_dash_model;
                }
 
@@ -418,85 +495,6 @@ public class Window : Gtk.ApplicationWindow, GitgExt.Application, Initable, Gtk.
                });
        }
 
-       private void parser_finished(Gtk.Builder builder)
-       {
-               // Extract widgets from the builder
-               d_header_bar = builder.get_object("header-bar") as Gtk.HeaderBar;
-
-               d_button_dash = builder.get_object("button_dash") as Gtk.Button;
-               d_button_dash.clicked.connect((b) => {
-                       repository = null;
-               });
-
-               // Extract widgets from the builder
-               var close_button = builder.get_object("close_button") as Gtk.Button;
-               close_button.clicked.connect((b) => {
-                       Gdk.Event event;
-
-                       event = new Gdk.Event(Gdk.EventType.DELETE);
-
-                       event.any.window = this.get_window();
-                       event.any.send_event = 1;
-
-                       Gtk.main_do_event(event);
-                       event.free();
-               });
-
-               d_main_stack = builder.get_object("main_stack") as Gtk.Stack;
-
-               d_dash_scrolled_window = builder.get_object("dash_scrolled_window") as Gtk.ScrolledWindow;
-               d_dash_view = builder.get_object("dash_view") as GitgGtk.DashView;
-               d_dash_view.repository_activated.connect((r) => {
-                       repository = r;
-               });
-
-               d_stack_view = builder.get_object("stack_view") as Gtk.Stack;
-
-               d_commit_view_switcher = builder.get_object("commit-view-switcher") as Gtk.StackSwitcher;
-
-               d_gear_menu = builder.get_object("gear-menubutton") as Gtk.MenuButton;
-
-               string menuname;
-
-               if (Gtk.Settings.get_default().gtk_shell_shows_app_menu)
-               {
-                       menuname = "win-menu";
-               }
-               else
-               {
-                       menuname = "app-win-menu";
-               }
-
-               d_dash_model = Resource.load_object<MenuModel>("ui/gitg-menus.ui", menuname + "-dash");
-               d_views_model = Resource.load_object<MenuModel>("ui/gitg-menus.ui", menuname + "-views");
-
-               var search_button = builder.get_object("search-button") as Gtk.ToggleButton;
-               var revealer = builder.get_object("search-revealer") as Gtk.Revealer;
-               d_search_entry = builder.get_object("search-entry") as Gd.TaggedEntry;
-
-               search_button.bind_property("active", revealer, "reveal-child");
-               search_button.toggled.connect((b) => {
-                       if (b.get_active())
-                       {
-                               d_search_entry.grab_focus();
-                       }
-                       else
-                       {
-                               d_search_entry.set_text("");
-                       }
-               });
-
-               d_search_entry.changed.connect((e) => {
-                       // FIXME: this is a weird way to know the dash is visible
-                       if (d_repository == null)
-                       {
-                               d_dash_view.filter_text((e as Gtk.Entry).text);
-                       }
-               });
-
-               base.parser_finished(builder);
-       }
-
        private void on_view_activated(UIElements elements,
                                       GitgExt.UIElement element)
        {
@@ -608,7 +606,7 @@ public class Window : Gtk.ApplicationWindow, GitgExt.Application, Initable, Gtk.
                                         Repository? repository,
                                         string? action)
        {
-               Window? ret = Resource.load_object<Window>("ui/gitg-window.ui", "window");
+               Window? ret = new Window();
 
                if (ret != null)
                {
diff --git a/gitg/resources/ui/gitg-window.ui b/gitg/resources/ui/gitg-window.ui
index 4c9b020..07356f2 100644
--- a/gitg/resources/ui/gitg-window.ui
+++ b/gitg/resources/ui/gitg-window.ui
@@ -3,21 +3,22 @@
   <!-- interface-requires gtk+ 3.3 -->
   <!-- interface-requires gitg 0.0 -->
   <!-- interface-requires gd 1.0 -->
-  <object class="GitgWindow" id="window">
+  <template class="GitgWindow" parent="Gtk.Window">
     <property name="can_focus">False</property>
     <property name="title" translatable="yes">gitg</property>
     <property name="default_width">1000</property>
     <property name="default_height">600</property>
     <child type="titlebar">
-      <object class="GtkHeaderBar" id="header-bar">
+      <object class="GtkHeaderBar" id="d_header_bar">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="vexpand">False</property>
         <child>
-          <object class="GtkButton" id="button_dash">
+          <object class="GtkButton" id="d_dash_button">
             <property name="visible">False</property>
             <property name="valign">center</property>
             <property name="can_focus">False</property>
+            <signal name="clicked" handler="dash_button_clicked" object="GitgWindow" swapped="no"/>
             <style>
               <class name="image-button"/>
             </style>
@@ -34,11 +35,12 @@
           </packing>
         </child>
         <child>
-          <object class="GtkToggleButton" id="search-button">
+          <object class="GtkToggleButton" id="d_search_button">
             <property name="visible">True</property>
             <property name="valign">center</property>
             <property name="can_focus">False</property>
             <property name="action_name">win.search</property>
+            <signal name="toggled" handler="search_button_toggled" object="GitgWindow" swapped="no"/>
             <style>
               <class name="image-button"/>
             </style>
@@ -55,7 +57,7 @@
           </packing>
         </child>
         <child>
-          <object class="GtkStackSwitcher" id="commit-view-switcher">
+          <object class="GtkStackSwitcher" id="d_commit_view_switcher">
             <property name="visible">False</property>
           </object>
           <packing>
@@ -63,7 +65,7 @@
           </packing>
         </child>
         <child>
-          <object class="GtkMenuButton" id="gear-menubutton">
+          <object class="GtkMenuButton" id="d_gear_menu">
             <property name="visible">True</property>
             <property name="valign">center</property>
             <property name="can_focus">False</property>
@@ -94,10 +96,11 @@
           </packing>
         </child>
         <child>
-          <object class="GtkButton" id="close_button">
+          <object class="GtkButton" id="d_close_button">
             <property name="visible">True</property>
             <property name="valign">center</property>
             <property name="relief">none</property>
+            <signal name="clicked" handler="close_button_clicked" object="GitgWindow" swapped="no"/>
             <style>
               <class name="image-button"/>
             </style>
@@ -120,12 +123,12 @@
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <child>
-          <object class="GtkRevealer" id="search-revealer">
+          <object class="GtkRevealer" id="d_search_revealer">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="reveal-child">False</property>
             <child>
-              <object class="GtkToolbar" id="toolbar-search">
+              <object class="GtkToolbar" id="toolbar_search">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <style>
@@ -136,18 +139,19 @@
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
                     <child>
-                      <object class="GtkBox" id="box-search-entry">
+                      <object class="GtkBox" id="box_search_entry">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="can_focus">False</property>
                         <property name="halign">center</property>
                         <child>
-                          <object class="GdTaggedEntry" id="search-entry">
+                          <object class="GdTaggedEntry" id="d_search_entry">
                             <property name="visible">True</property>
                             <property name="can_focus">True</property>
                             <property name="invisible_char">●</property>
                             <property name="invisible_char_set">True</property>
                             <property name="width-request">500</property>
+                            <signal name="changed" handler="search_entry_changed" object="GitgWindow" 
swapped="no"/>
                           </object>
                         </child>
                       </object>
@@ -169,13 +173,13 @@
           </packing>
         </child>
         <child>
-          <object class="GtkStack" id="main_stack">
+          <object class="GtkStack" id="d_main_stack">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="hexpand">True</property>
             <property name="vexpand">True</property>
             <child>
-              <object class="GtkScrolledWindow" id="dash_scrolled_window">
+              <object class="GtkScrolledWindow" id="d_dash_scrolled_window">
                 <property name="visible">True</property>
                 <property name="vexpand">True</property>
                 <property name="hexpand">True</property>
@@ -187,7 +191,7 @@
                   <object class="GtkViewport" id="dash_viewport">
                     <property name="visible">True</property>
                     <child>
-                      <object class="GitgGtkDashView" id="dash_view">
+                      <object class="GitgGtkDashView" id="d_dash_view">
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                       </object>
@@ -197,7 +201,7 @@
               </object>
             </child>
             <child>
-              <object class="GtkStack" id="stack_view">
+              <object class="GtkStack" id="d_stack_view">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
               </object>
@@ -212,5 +216,5 @@
         </child>
       </object>
     </child>
-  </object>
+  </template>
 </interface>


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