[baobab] Use a GtkStackSwitcher for chart buttons



commit 4501b534691552847d38db96e7d44cf665999939
Author: Stefano Facchini <stefano facchini gmail com>
Date:   Tue Apr 1 13:49:45 2014 +0200

    Use a GtkStackSwitcher for chart buttons
    
    Fixes https://bugzilla.gnome.org/show_bug.cgi?id=709330 as a bonus

 src/baobab-main-window.ui |   77 ++++++--------------------------------------
 src/baobab-window.vala    |    9 +++++
 2 files changed, 20 insertions(+), 66 deletions(-)
---
diff --git a/src/baobab-main-window.ui b/src/baobab-main-window.ui
index 5942a93..90b8c44 100644
--- a/src/baobab-main-window.ui
+++ b/src/baobab-main-window.ui
@@ -336,6 +336,10 @@
                             <property name="hexpand">True</property>
                             <property name="vexpand">True</property>
                           </object>
+                          <packing>
+                            <property name="name">rings</property>
+                            <property name="icon_name">view-ringschart-symbolic</property>
+                          </packing>
                         </child>
                         <child>
                           <object class="BaobabTreemap" id="treemap_chart">
@@ -343,6 +347,10 @@
                             <property name="hexpand">True</property>
                             <property name="vexpand">True</property>
                           </object>
+                          <packing>
+                            <property name="name">treemap</property>
+                            <property name="icon_name">view-treemap-symbolic</property>
+                          </packing>
                         </child>
                         <child>
                           <object class="GtkSpinner" id="spinner">
@@ -363,76 +371,13 @@
                       </packing>
                     </child>
                     <child>
-                      <object class="GtkButtonBox" id="chart_buttonbox">
+                      <object class="GtkStackSwitcher" id="chart_stack_switcher">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
                         <property name="margin_right">20</property>
                         <property name="margin_top">6</property>
                         <property name="margin_bottom">6</property>
-                        <property name="homogeneous">False</property>
-                        <property name="layout_style">end</property>
-                        <style>
-                          <class name="linked"/>
-                        </style>
-                        <child>
-                          <object class="GtkRadioButton" id="rings_button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="use_action_appearance">False</property>
-                            <property name="tooltip_markup" translatable="yes">Rings Chart</property>
-                            <property name="xalign">0.5</property>
-                            <property name="yalign">0.5</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">False</property>
-                            <property name="action_name">win.active-chart</property>
-                            <property name="action_target">'rings'</property>
-                            <child>
-                              <object class="GtkImage" id="ringschart_icon">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="icon_name">view-ringschart-symbolic</property>
-                                <property name="icon_size">1</property>
-                              </object>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">0</property>
-                            <property name="non_homogeneous">True</property>
-                          </packing>
-                        </child>
-                        <child>
-                          <object class="GtkRadioButton" id="treemap_button">
-                            <property name="visible">True</property>
-                            <property name="can_focus">True</property>
-                            <property name="receives_default">False</property>
-                            <property name="use_action_appearance">False</property>
-                            <property name="tooltip_markup" translatable="yes">Treemap Chart</property>
-                            <property name="xalign">0.5</property>
-                            <property name="yalign">0.5</property>
-                            <property name="active">True</property>
-                            <property name="draw_indicator">False</property>
-                            <property name="group">rings_button</property>
-                            <property name="action_name">win.active-chart</property>
-                            <property name="action_target">'treemap'</property>
-                            <child>
-                              <object class="GtkImage" id="treemap_icon">
-                                <property name="visible">True</property>
-                                <property name="can_focus">False</property>
-                                <property name="icon_name">view-treemap-symbolic</property>
-                                <property name="icon_size">1</property>
-                              </object>
-                            </child>
-                          </object>
-                          <packing>
-                            <property name="expand">False</property>
-                            <property name="fill">True</property>
-                            <property name="position">1</property>
-                            <property name="non_homogeneous">True</property>
-                          </packing>
-                        </child>
+                        <property name="halign">end</property>
+                        <property name="stack">chart_stack</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
diff --git a/src/baobab-window.vala b/src/baobab-window.vala
index 813a988..52032c2 100644
--- a/src/baobab-window.vala
+++ b/src/baobab-window.vala
@@ -149,6 +149,9 @@ namespace Baobab {
             ui_settings = Application.get_ui_settings ();
             lookup_action ("active-chart").change_state (ui_settings.get_value ("active-chart"));
 
+            chart_stack.notify["visible-child-name"].connect (on_chart_stack_child_changed);
+            chart_stack.destroy.connect (() => { chart_stack.notify.disconnect 
(on_chart_stack_child_changed); });
+
             rings_chart.item_activated.connect (on_chart_item_activated);
             treemap_chart.item_activated.connect (on_chart_item_activated);
 
@@ -186,6 +189,12 @@ namespace Baobab {
             show ();
         }
 
+        void on_chart_stack_child_changed () {
+            if (chart_stack.visible_child_name != null) {
+                lookup_action ("active-chart").change_state (chart_stack.visible_child_name);
+            }
+        }
+
         void on_show_gear_menu_activate (SimpleAction action) {
             var state = action.get_state ().get_boolean ();
             action.set_state (new Variant.boolean (!state));


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