[gitg/wip/sidebar: 1/2] Added special class to handle history ui



commit 37effb7ef10a4184b95e654dc890a813af691eb5
Author: Jesse van den Kieboom <jessevdk gmail com>
Date:   Tue Jul 2 20:07:33 2013 +0200

    Added special class to handle history ui

 gitg/Makefile.am                       |    3 +-
 gitg/history/gitg-history-paned.vala   |  103 ++++++++++++++++++++++++++++++++
 gitg/history/gitg-history.vala         |   71 +++++-----------------
 gitg/resources/ui/gitg-view-history.ui |   56 ++++++++++++-----
 4 files changed, 159 insertions(+), 74 deletions(-)
---
diff --git a/gitg/Makefile.am b/gitg/Makefile.am
index 3edefb5..7aa5b27 100644
--- a/gitg/Makefile.am
+++ b/gitg/Makefile.am
@@ -45,7 +45,8 @@ VALASOURCES =                                                 \
        preferences/gitg-preferences-interface.vala             \
        preferences/gitg-preferences-history.vala               \
        history/gitg-history.vala                               \
-       history/gitg-history-navigation.vala
+       history/gitg-history-navigation.vala                    \
+       history/gitg-history-paned.vala
 
 BUILT_SOURCES =                                                \
        gitg-resources.c                                        \
diff --git a/gitg/history/gitg-history-paned.vala b/gitg/history/gitg-history-paned.vala
new file mode 100644
index 0000000..5853b38
--- /dev/null
+++ b/gitg/history/gitg-history-paned.vala
@@ -0,0 +1,103 @@
+/*
+ * This file is part of gitg
+ *
+ * Copyright (C) 2012 - Jesse van den Kieboom
+ *
+ * gitg is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * gitg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with gitg. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+namespace GitgHistory
+{
+
+[GtkTemplate (ui = "/org/gnome/gitg/ui/gitg-view-history.ui")]
+class Paned : Gtk.Paned
+{
+       [GtkChild]
+       private Gtk.Box d_box_sidebar;
+
+       [GtkChild]
+       private Gtk.Paned d_paned_panels;
+
+       [GtkChild]
+       private Gtk.Toolbar d_toolbar_panels;
+
+       [GtkChild]
+       private NavigationView d_navigation_view;
+
+       [GtkChild]
+       private Gtk.TreeView d_commit_list_view;
+
+       [GtkChild]
+       private Gtk.Stack d_stack_panel;
+
+       [GtkChild]
+       private Gd.StyledTextRenderer d_renderer_commit_list_author;
+
+       [GtkChild]
+       private Gd.StyledTextRenderer d_renderer_commit_list_author_date;
+
+       construct
+       {
+               var state_settings = new Settings("org.gnome.gitg.state.history");
+
+               state_settings.bind("paned-views-position",
+                                   this,
+                                   "position",
+                                   SettingsBindFlags.GET | SettingsBindFlags.SET);
+
+               state_settings.bind("paned-panels-position",
+                                   d_paned_panels,
+                                   "position",
+                                   SettingsBindFlags.GET | SettingsBindFlags.SET);
+
+               var interface_settings = new Settings("org.gnome.gitg.preferences.interface");
+
+               interface_settings.bind("orientation",
+                                       d_paned_panels,
+                                       "orientation",
+                                       SettingsBindFlags.GET);
+
+               d_renderer_commit_list_author.add_class("dim-label");
+               d_renderer_commit_list_author_date.add_class("dim-label");
+       }
+
+       public Paned()
+       {
+               Object(orientation: Gtk.Orientation.HORIZONTAL);
+       }
+
+       public NavigationView navigation_view
+       {
+               get { return d_navigation_view; }
+       }
+
+       public Gtk.TreeView commit_list_view
+       {
+               get { return d_commit_list_view; }
+       }
+
+       public Gtk.Paned paned_panels
+       {
+               get { return d_paned_panels; }
+       }
+
+       public Gtk.Stack stack_panel
+       {
+               get { return d_stack_panel; }
+       }
+}
+
+}
+
+// ex: ts=4 noet
diff --git a/gitg/history/gitg-history.vala b/gitg/history/gitg-history.vala
index 6e940f1..d2e18c4 100644
--- a/gitg/history/gitg-history.vala
+++ b/gitg/history/gitg-history.vala
@@ -35,11 +35,7 @@ namespace GitgHistory
                private ulong d_insertsig;
                private Settings d_settings;
 
-               private Gtk.Paned d_main;
-               private GitgHistory.NavigationView d_navigation;
-               private Gtk.Paned d_paned_panels;
-               private Gtk.Stack d_stack_panel;
-               private Gtk.TreeView d_commit_list;
+               private Paned d_main;
 
                private Gitg.UIElements<GitgExt.HistoryPanel> d_panels;
 
@@ -69,7 +65,7 @@ namespace GitgHistory
                {
                        bool breakit = false;
 
-                       d_commit_list.get_selection().selected_foreach((model, path, iter) => {
+                       d_main.commit_list_view.get_selection().selected_foreach((model, path, iter) => {
                                if (!breakit)
                                {
                                        breakit = !func(d_commit_list_model.commit_from_iter(iter));
@@ -134,7 +130,7 @@ namespace GitgHistory
 
                        if (d_selected.size == 0 || d_selected.remove(commit.get_id()))
                        {
-                               d_commit_list.get_selection().select_path(path);
+                               d_main.commit_list_view.get_selection().select_path(path);
                        }
 
                        if (d_selected.size == 0)
@@ -203,71 +199,34 @@ namespace GitgHistory
 
                public void activate()
                {
-                       d_navigation.expand_all();
-                       d_navigation.select_first();
+                       d_main.navigation_view.expand_all();
+                       d_main.navigation_view.select_first();
                }
 
                public void reload()
                {
-                       double vadj = d_navigation.get_vadjustment().get_value();
+                       double vadj = d_main.navigation_view.get_vadjustment().get_value();
 
                        d_navigation_model.reload();
-                       d_navigation.expand_all();
-                       d_navigation.select();
+                       d_main.navigation_view.expand_all();
+                       d_main.navigation_view.select();
 
-                       d_navigation.size_allocate.connect((a) => {
-                               d_navigation.get_vadjustment().set_value(vadj);
+                       d_main.navigation_view.size_allocate.connect((a) => {
+                               d_main.navigation_view.get_vadjustment().set_value(vadj);
                        });
                }
 
                private void build_ui()
                {
-                       var ret = GitgExt.UI.from_builder("ui/gitg-view-history.ui",
-                                                         "paned_views",
-                                                         "paned_panels",
-                                                         "stack_panel",
-                                                         "navigation_view",
-                                                         "commit_list_view",
-                                                         "renderer_commit_list_author",
-                                                         "renderer_commit_list_author_date");
+                       d_main = new Paned();
 
-                       d_main = ret["paned_views"] as Gtk.Paned;
+                       d_main.navigation_view.model = d_navigation_model;
+                       d_main.commit_list_view.model = d_commit_list_model;
 
-                       d_paned_panels = ret["paned_panels"] as Gtk.Paned;
-                       d_stack_panel = ret["stack_panel"] as Gtk.Stack;
-
-                       d_navigation = ret["navigation_view"] as GitgHistory.NavigationView;
-                       d_navigation.model = d_navigation_model;
-
-                       d_commit_list = ret["commit_list_view"] as Gtk.TreeView;
-                       d_commit_list.model = d_commit_list_model;
-
-                       d_commit_list.get_selection().changed.connect((sel) => {
+                       d_main.commit_list_view.get_selection().changed.connect((sel) => {
                                selection_changed();
                        });
 
-                       (ret["renderer_commit_list_author"] as Gd.StyledTextRenderer).add_class("dim-label");
-                       (ret["renderer_commit_list_author_date"] as 
Gd.StyledTextRenderer).add_class("dim-label");
-
-                       var state_settings = new Settings("org.gnome.gitg.state.history");
-
-                       state_settings.bind("paned-views-position",
-                                           d_main,
-                                           "position",
-                                           SettingsBindFlags.GET | SettingsBindFlags.SET);
-
-                       state_settings.bind("paned-panels-position",
-                                           d_paned_panels,
-                                           "position",
-                                           SettingsBindFlags.GET | SettingsBindFlags.SET);
-
-                       var interface_settings = new Settings("org.gnome.gitg.preferences.interface");
-
-                       interface_settings.bind("orientation",
-                                               d_paned_panels,
-                                               "orientation",
-                                               SettingsBindFlags.GET);
-
                        var engine = Gitg.PluginsEngine.get_default();
 
                        var extset = new Peas.ExtensionSet(engine,
@@ -276,7 +235,7 @@ namespace GitgHistory
                                                           this);
 
                        d_panels = new Gitg.UIElements<GitgExt.HistoryPanel>(extset,
-                                                                            d_stack_panel);
+                                                                            d_main.stack_panel);
                }
 
                private void update_walker(Navigation n, Gitg.Ref? head)
diff --git a/gitg/resources/ui/gitg-view-history.ui b/gitg/resources/ui/gitg-view-history.ui
index ccf6a26..2f16442 100644
--- a/gitg/resources/ui/gitg-view-history.ui
+++ b/gitg/resources/ui/gitg-view-history.ui
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <interface>
   <!-- interface-requires gtk+ 3.3 -->
-  <object class="GtkPaned" id="paned_views">
+  <!-- interface-requires gitg 0.0 -->
+  <!-- interface-requires gd 1.0 -->
+  <template class="GitgHistoryPaned" parent="Gtk.Paned">
     <property name="visible">True</property>
     <property name="hexpand">True</property>
     <property name="vexpand">True</property>
@@ -12,23 +14,43 @@
       <class name="sidebar-paned"/>
     </style>
     <child>
-      <object class="GtkScrolledWindow" id="scrolled_window_navigation">
+      <object class="GtkBox" id="d_box_sidebar">
         <property name="visible">True</property>
-        <property name="can_focus">True</property>
         <property name="hexpand">True</property>
         <property name="vexpand">True</property>
-        <property name="hscrollbar_policy">never</property>
-        <property name="name">scrolled_window_navigation</property>
-        <style>
-          <class name="sidebar"/>
-        </style>
         <child>
-          <object class="GitgHistoryNavigationView" id="navigation_view">
+          <object class="GtkScrolledWindow" id="scrolled_window_navigation">
             <property name="visible">True</property>
             <property name="can_focus">True</property>
-            <property name="headers_visible">False</property>
-            <property name="name">tree_view_navigation</property>
+            <property name="hexpand">True</property>
+            <property name="vexpand">True</property>
+            <property name="hscrollbar_policy">never</property>
+            <property name="name">scrolled_window_navigation</property>
+            <style>
+              <class name="sidebar"/>
+            </style>
+            <child>
+              <object class="GitgHistoryNavigationView" id="d_navigation_view">
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="headers_visible">False</property>
+                <property name="name">tree_view_navigation</property>
+              </object>
+            </child>
           </object>
+          <packing>
+            <property name="expand">True</property>
+            <property name="fill">True</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkToolbar" id="d_toolbar_panels">
+            <property name="visible">True</property>
+          </object>
+          <packing>
+            <property name="expand">False</property>
+            <property name="fill">True</property>
+          </packing>
         </child>
       </object>
       <packing>
@@ -37,7 +59,7 @@
       </packing>
     </child>
     <child>
-      <object class="GtkPaned" id="paned_panels">
+      <object class="GtkPaned" id="d_paned_panels">
         <property name="visible">True</property>
         <property name="hexpand">True</property>
         <property name="vexpand">True</property>
@@ -55,7 +77,7 @@
             <property name="can_focus">True</property>
             <property name="shadow-type">none</property>
             <child>
-              <object class="GitgCommitListView" id="commit_list_view">
+              <object class="GitgCommitListView" id="d_commit_list_view">
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="rules_hint">True</property>
@@ -85,7 +107,7 @@
                     <property name="resizable">True</property>
                     <property name="fixed-width">200</property>
                     <child>
-                      <object class="GdStyledTextRenderer" id="renderer_commit_list_author">
+                      <object class="GdStyledTextRenderer" id="d_renderer_commit_list_author">
                         <property name="ellipsize">end</property>
                       </object>
                       <attributes>
@@ -101,7 +123,7 @@
                     <property name="resizable">True</property>
                     <property name="fixed-width">250</property>
                     <child>
-                      <object class="GdStyledTextRenderer" id="renderer_commit_list_author_date">
+                      <object class="GdStyledTextRenderer" id="d_renderer_commit_list_author_date">
                         <property name="ellipsize">end</property>
                       </object>
                       <attributes>
@@ -115,7 +137,7 @@
           </object>
         </child>
         <child>
-          <object class="GtkStack" id="stack_panel">
+          <object class="GtkStack" id="d_stack_panel">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <child>
@@ -129,7 +151,7 @@
         </child>
       </object>
     </child>
-  </object>
+  </template>
 </interface>
 
 <!-- ex:set ts=2 et: -->


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