[gitg] Add setting for diff tab width



commit a2f9b535d1fa1e14270f0eb497aa50f88ce365bb
Author: Jesse van den Kieboom <jessevdk gnome org>
Date:   Thu Jul 10 16:27:39 2014 +0200

    Add setting for diff tab width

 data/org.gnome.gitg.gschema.xml.in.in  |    3 +
 libgitg/gitg-diff-view-options.vala    |   18 +++++
 libgitg/gitg-diff-view.vala            |   17 +++++-
 libgitg/resources/diff-view-options.ui |  110 ++++++++++++++++++-------------
 plugins/diff/gitg-diff.vala            |    6 ++
 5 files changed, 107 insertions(+), 47 deletions(-)
---
diff --git a/data/org.gnome.gitg.gschema.xml.in.in b/data/org.gnome.gitg.gschema.xml.in.in
index 7b2388a..e947162 100644
--- a/data/org.gnome.gitg.gschema.xml.in.in
+++ b/data/org.gnome.gitg.gschema.xml.in.in
@@ -136,6 +136,9 @@
     <key name="context-lines" type="i">
       <default>3</default>
     </key>
+    <key name="tab-width" type="i">
+      <default>4</default>
+    </key>
   </schema>
   <schema id="org.gnome.gitg.state" path="/org/gnome/gitg/state/">
     <child name="window" schema="org.gnome.gitg.state.window"/>
diff --git a/libgitg/gitg-diff-view-options.vala b/libgitg/gitg-diff-view-options.vala
index d8ff280..9b6b821 100644
--- a/libgitg/gitg-diff-view-options.vala
+++ b/libgitg/gitg-diff-view-options.vala
@@ -32,6 +32,9 @@ public class DiffViewOptions : Gtk.Grid
        [GtkChild (name = "adjustment_context")]
        private Gtk.Adjustment d_adjustment_context;
 
+       [GtkChild (name = "adjustment_tab_width")]
+       private Gtk.Adjustment d_adjustment_tab_width;
+
        [GtkChild (name = "button_developer_tools")]
        private Gtk.Button d_button_developer_tools;
 
@@ -41,6 +44,7 @@ public class DiffViewOptions : Gtk.Grid
        public bool changes_inline { get; set; }
        public bool ignore_whitespace { get; set; }
        public int context_lines { get; set; }
+       public int tab_width { get; set; }
 
        public DiffView view { get; construct set; }
 
@@ -85,6 +89,12 @@ public class DiffViewOptions : Gtk.Grid
                                   BindingFlags.BIDIRECTIONAL |
                                   BindingFlags.SYNC_CREATE);
 
+               view.bind_property("tab-width",
+                                  this,
+                                  "tab-width",
+                                  BindingFlags.BIDIRECTIONAL |
+                                  BindingFlags.SYNC_CREATE);
+
                bind_property("changes-inline",
                              d_switch_changes_inline,
                              "active",
@@ -105,6 +115,14 @@ public class DiffViewOptions : Gtk.Grid
                              transform_int_to_double,
                              transform_double_to_int);
 
+               bind_property("tab-width",
+                             d_adjustment_tab_width,
+                             "value",
+                             BindingFlags.BIDIRECTIONAL |
+                             BindingFlags.SYNC_CREATE,
+                             transform_int_to_double,
+                             transform_double_to_int);
+
                var dbg = (Environment.get_variable("GITG_GTK_DIFF_VIEW_DEBUG") != null);
 
                d_separator_developer_tools.visible = dbg;
diff --git a/libgitg/gitg-diff-view.vala b/libgitg/gitg-diff-view.vala
index d5b0e6a..6127407 100644
--- a/libgitg/gitg-diff-view.vala
+++ b/libgitg/gitg-diff-view.vala
@@ -102,7 +102,22 @@ namespace Gitg
                public bool wrap { get; set; default = true; }
                public bool staged { get; set; default = false; }
                public bool unstaged { get; set; default = false; }
-               public int tab_width { get; set; default = 4; }
+
+               int d_tab_width;
+
+               public int tab_width
+               {
+                       get { return d_tab_width; }
+                       construct set
+                       {
+                               if (d_tab_width != value)
+                               {
+                                       d_tab_width = value;
+                                       update();
+                               }
+                       }
+                       default = 4;
+               }
 
                private bool flag_get(Ggit.DiffOption f)
                {
diff --git a/libgitg/resources/diff-view-options.ui b/libgitg/resources/diff-view-options.ui
index b63d9ac..0291293 100644
--- a/libgitg/resources/diff-view-options.ui
+++ b/libgitg/resources/diff-view-options.ui
@@ -8,6 +8,13 @@
     <property name="step_increment">1</property>
     <property name="page_increment">3</property>
   </object>
+  <object class="GtkAdjustment" id="adjustment_tab_width">
+    <property name="lower">1</property>
+    <property name="upper">16</property>
+    <property name="value">4</property>
+    <property name="step_increment">1</property>
+    <property name="page_increment">4</property>
+  </object>
   <template class="GitgDiffViewOptions" parent="GtkGrid">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
@@ -29,8 +36,8 @@
       <object class="GtkLabel" id="label_ignore_whitespace">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="hexpand">True</property>
         <property name="halign">start</property>
+        <property name="hexpand">True</property>
         <property name="label" translatable="yes">Ignore whitespace changes</property>
       </object>
       <packing>
@@ -54,8 +61,8 @@
       <object class="GtkLabel" id="label_changes_inline">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
-        <property name="hexpand">True</property>
         <property name="halign">start</property>
+        <property name="hexpand">True</property>
         <property name="label" translatable="yes">Show changes inline</property>
       </object>
       <packing>
@@ -75,55 +82,23 @@
       </packing>
     </child>
     <child>
-      <object class="GtkBox" id="box_context">
-        <property name="visible">True</property>
-        <property name="can_focus">False</property>
-        <property name="hexpand">True</property>
-        <property name="spacing">12</property>
-        <child>
-          <object class="GtkLabel" id="label_context">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="halign">start</property>
-            <property name="label" translatable="yes">Context</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="fill">False</property>
-            <property name="position">0</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkScale" id="scale_context">
-            <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="hexpand">True</property>
-            <property name="adjustment">adjustment_context</property>
-            <property name="round_digits">0</property>
-            <property name="digits">0</property>
-            <property name="value_pos">right</property>
-          </object>
-          <packing>
-            <property name="expand">True</property>
-            <property name="fill">True</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
+      <object class="GtkButton" id="button_developer_tools">
+        <property name="label" translatable="yes">Developer tools</property>
+        <property name="can_focus">True</property>
+        <property name="receives_default">True</property>
+        <property name="relief">none</property>
+        <signal name="clicked" handler="on_button_developer_tools_clicked" swapped="no"/>
       </object>
       <packing>
         <property name="left_attach">0</property>
-        <property name="top_attach">3</property>
+        <property name="top_attach">6</property>
         <property name="width">2</property>
       </packing>
     </child>
     <child>
-      <object class="GtkButton" id="button_developer_tools">
-        <property name="label" translatable="yes">Developer tools</property>
-        <property name="visible">False</property>
-        <property name="can_focus">True</property>
-        <property name="receives_default">True</property>
-        <property name="relief">none</property>
-        <signal name="clicked" handler="on_button_developer_tools_clicked" swapped="no"/>
+      <object class="GtkSeparator" id="separator_developer_tools">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
       </object>
       <packing>
         <property name="left_attach">0</property>
@@ -132,14 +107,57 @@
       </packing>
     </child>
     <child>
-      <object class="GtkSeparator" id="separator_developer_tools">
+      <object class="GtkLabel" id="label_context1">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
+        <property name="halign">start</property>
+        <property name="label" translatable="yes">Tab width</property>
       </object>
       <packing>
         <property name="left_attach">0</property>
         <property name="top_attach">4</property>
-        <property name="width">2</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkSpinButton" id="spin_button_tab_width">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="adjustment">adjustment_tab_width</property>
+        <property name="snap_to_ticks">True</property>
+        <property name="numeric">True</property>
+        <property name="value">4</property>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">4</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkLabel" id="label_context">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="halign">start</property>
+        <property name="hexpand">True</property>
+        <property name="label" translatable="yes">Context</property>
+      </object>
+      <packing>
+        <property name="left_attach">0</property>
+        <property name="top_attach">3</property>
+      </packing>
+    </child>
+    <child>
+      <object class="GtkSpinButton" id="spin_button_context">
+        <property name="visible">True</property>
+        <property name="can_focus">True</property>
+        <property name="input_purpose">digits</property>
+        <property name="adjustment">adjustment_context</property>
+        <property name="snap_to_ticks">True</property>
+        <property name="numeric">True</property>
+        <property name="value">3</property>
+      </object>
+      <packing>
+        <property name="left_attach">1</property>
+        <property name="top_attach">3</property>
       </packing>
     </child>
   </template>
diff --git a/plugins/diff/gitg-diff.vala b/plugins/diff/gitg-diff.vala
index c66cf74..68a0b57 100644
--- a/plugins/diff/gitg-diff.vala
+++ b/plugins/diff/gitg-diff.vala
@@ -58,6 +58,12 @@ namespace GitgDiff
                                      SettingsBindFlags.GET |
                                      SettingsBindFlags.SET);
 
+                       settings.bind("tab-width",
+                                     d_diff,
+                                     "tab-width",
+                                     SettingsBindFlags.GET |
+                                     SettingsBindFlags.SET);
+
                        d_diff.show();
 
                        d_sw.add(d_diff);


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