[baobab/wip/new-design: 56/59] Start implementing new design



commit 2396ecc0d912341f6dc4f4a0922466f4c72a7b2c
Author: Stefano Facchini <stefano facchini gmail com>
Date:   Sat Mar 31 12:09:13 2012 +0200

    Start implementing new design
    
    Introduce two 'views' in the main window: 'All locations' and 'Result'.
    Then move the content of volume chooser dialog to the 'All locations'
    view, along with some toolbar buttons. Also, rework the toolbar for the
    'Result' view to make it more similar to other GNOME apps.

 src/baobab-main-window.ui           |  589 +++++++++++++++++++++--------------
 src/baobab-menu.ui                  |   20 +-
 src/baobab-volume-chooser-dialog.ui |  141 ---------
 src/baobab-window.vala              |  127 +++++----
 src/baobab.gresource.xml            |    1 -
 5 files changed, 435 insertions(+), 443 deletions(-)
---
diff --git a/src/baobab-main-window.ui b/src/baobab-main-window.ui
index 763e3ee..5ceaed1 100644
--- a/src/baobab-main-window.ui
+++ b/src/baobab-main-window.ui
@@ -3,91 +3,25 @@
   <!-- interface-requires gtk+ 3.0 -->
   <object class="GtkGrid" id="window-contents">
     <property name="visible">True</property>
-    <property name="can_focus">False</property>
+    <property name="orientation">vertical</property>
     <child>
       <object class="GtkToolbar" id="toolbar">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
         <property name="show_arrow">False</property>
-        <style>
-          <class name="primary-toolbar"/>
-        </style>
         <child>
-          <object class="GtkToolButton" id="scan-home-button">
+          <object class="GtkToolButton" id="show-home-page-button">
             <property name="use_action_appearance">False</property>
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="has_tooltip">True</property>
-            <property name="tooltip_markup" translatable="yes">Scan your home folder</property>
-            <property name="tooltip_text" translatable="yes">Scan your home folder</property>
-            <property name="use_action_appearance">False</property>
             <property name="is_important">True</property>
-            <property name="action_name">win.scan-home</property>
-            <property name="label" translatable="yes">Scan Home</property>
-            <property name="use_underline">True</property>
-            <property name="stock_id">gtk-home</property>
-            <child internal-child="accessible">
-              <object class="AtkObject" id="scan-home-button-atkobject">
-                <property name="AtkObject::accessible-name" translatable="yes">Scan your home folder</property>
-              </object>
-            </child>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="homogeneous">True</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkToolButton" id="scan-volume-button">
-            <property name="use_action_appearance">False</property>
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="has_tooltip">True</property>
-            <property name="tooltip_markup" translatable="yes">Scan a volume</property>
-            <property name="tooltip_text" translatable="yes">Scan a volume</property>
-            <property name="use_action_appearance">False</property>
-            <property name="action_name">win.scan-volume</property>
-            <property name="label" translatable="yes">Scan Volume</property>
-            <property name="use_underline">True</property>
-            <property name="stock_id">gtk-harddisk</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="homogeneous">True</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkToolButton" id="scan-folder-button">
-            <property name="use_action_appearance">False</property>
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="has_tooltip">True</property>
-            <property name="tooltip_markup" translatable="yes">Scan a folder</property>
-            <property name="tooltip_text" translatable="yes">Scan a folder</property>
-            <property name="use_action_appearance">False</property>
-            <property name="action_name">win.scan-folder</property>
-            <property name="label" translatable="yes">Scan Folder</property>
-            <property name="use_underline">True</property>
-            <property name="stock_id">gtk-directory</property>
-          </object>
-          <packing>
-            <property name="expand">False</property>
-            <property name="homogeneous">True</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkToolButton" id="scan-remote-button">
-            <property name="use_action_appearance">False</property>
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="has_tooltip">True</property>
-            <property name="tooltip_markup" translatable="yes">Scan a remote folder</property>
-            <property name="tooltip_text" translatable="yes">Scan a remote folder</property>
+            <property name="tooltip_markup" translatable="yes">All locations</property>
+            <property name="tooltip_text" translatable="yes">All locations</property>
             <property name="use_action_appearance">False</property>
-            <property name="action_name">win.scan-remote</property>
-            <property name="label" translatable="yes">Scan Remote Folder</property>
+            <property name="action_name">win.show-home-page</property>
+            <property name="label" translatable="yes">All locations</property>
             <property name="use_underline">True</property>
-            <property name="stock_id">gtk-network</property>
           </object>
           <packing>
             <property name="expand">False</property>
@@ -98,9 +32,10 @@
           <object class="GtkSeparatorToolItem" id="separatortoolitem1">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
+            <property name="draw">False</property>
           </object>
           <packing>
-            <property name="expand">False</property>
+            <property name="expand">True</property>
           </packing>
         </child>
         <child>
@@ -198,229 +133,419 @@
           </object>
         </child>
       </object>
-      <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">1</property>
-        <property name="width">1</property>
-        <property name="height">1</property>
-      </packing>
     </child>
     <child>
-      <object class="GtkPaned" id="hpaned">
+      <object class="GtkNotebook" id="main-notebook">
         <property name="visible">True</property>
         <property name="can_focus">True</property>
-        <property name="hexpand">True</property>
-        <property name="vexpand">True</property>
-        <property name="position">480</property>
+        <property name="show_tabs">False</property> -->
+        <property name="show_border">False</property> -->
         <child>
-          <object class="GtkScrolledWindow" id="scrolled-window">
+          <object class="GtkGrid" id="home-page-grid">
+            <property name="can_focus">False</property>
             <property name="visible">True</property>
-            <property name="can_focus">True</property>
-            <property name="shadow_type">in</property>
             <child>
-              <object class="GtkTreeView" id="treeview">
+              <object class="GtkScrolledWindow" id="volume-scrolled-window">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <child internal-child="selection">
-                  <object class="GtkTreeSelection" id="treeview-selection1"/>
-                </child>
-                <child>
-                  <object class="GtkTreeViewColumn" id="folder-column">
-                    <property name="resizable">True</property>
-                    <property name="sizing">autosize</property>
-                    <property name="title" translatable="yes">Folder</property>
-                    <property name="expand">True</property>
-                    <property name="reorderable">True</property>
-                    <property name="sort_column_id">0</property>
-                    <child>
-                      <object class="GtkCellRendererText" id="folder-column-text-renderer"/>
-                      <attributes>
-                        <attribute name="text">0</attribute>
-                      </attributes>
-                    </child>
-                  </object>
-                </child>
+                <property name="shadow_type">in</property>
+                <property name="margin">6</property>
                 <child>
-                  <object class="GtkTreeViewColumn" id="usage-column">
-                    <property name="sizing">autosize</property>
-                    <property name="title" translatable="yes">Usage</property>
-                    <property name="reorderable">True</property>
-                    <property name="sort_column_id">2</property>
+                  <object class="GtkTreeView" id="volume-treeview">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
                     <child>
-                      <object class="BaobabCellRendererProgress" id="usage-column-bar-renderer">
-                        <property name="xpad">4</property>
-                        <property name="ypad">4</property>
+                      <object class="GtkTreeViewColumn" id="volume-column">
+                        <property name="sizing">autosize</property>
+                        <property name="title" translatable="yes">Volume</property>
+                        <property name="expand">True</property>
+                        <property name="clickable">True</property>
+                        <property name="reorderable">True</property>
+                        <property name="sort_column_id">0</property>
+                        <child>
+                          <object class="GtkCellRendererPixbuf" id="icon-renderer"/>
+                          <attributes>
+                            <attribute name="gicon">5</attribute>
+                          </attributes>
+                        </child>
+                        <child>
+                          <object class="GtkCellRendererText" id="volume-renderer"/>
+                          <attributes>
+                            <attribute name="text">0</attribute>
+                          </attributes>
+                        </child>
                       </object>
-                      <attributes>
-                        <attribute name="value">2</attribute>
-                      </attributes>
                     </child>
                     <child>
-                      <object class="BaobabCellRendererPercent" id="usage-column-percent-renderer">
-                        <property name="xalign">1.0</property>
+                      <object class="GtkTreeViewColumn" id="mount-column">
+                        <property name="sizing">autosize</property>
+                        <property name="title" translatable="yes">Mounted at</property>
+                        <property name="expand">True</property>
+                        <property name="clickable">True</property>
+                        <property name="reorderable">True</property>
+                        <property name="sort_column_id">0</property>
+                        <child>
+                          <object class="GtkCellRendererText" id="mount-renderer"/>
+                        </child>
                       </object>
-                      <attributes>
-                        <attribute name="percent">2</attribute>
-                      </attributes>
                     </child>
-                  </object>
-                </child>
-                <child>
-                  <object class="GtkTreeViewColumn" id="size-column">
-                    <property name="resizable">True</property>
-                    <property name="sizing">autosize</property>
-                    <property name="title" translatable="yes">Size</property>
-                    <property name="reorderable">True</property>
-                    <property name="sort_column_id">3</property>
                     <child>
-                      <object class="BaobabCellRendererSize" id="size-column-size-renderer">
-                        <property name="xalign">1.0</property>
+                      <object class="GtkTreeViewColumn" id="size-column-home-page">
+                        <property name="title" translatable="yes">Size</property>
+                        <child>
+                          <object class="GtkCellRendererText" id="size-renderer"/>
+                          <attributes>
+                            <attribute name="text">2</attribute>
+                          </attributes>
+                        </child>
                       </object>
-                      <attributes>
-                        <attribute name="size">3</attribute>
-                        <attribute name="alloc-size">4</attribute>
-                      </attributes>
                     </child>
-                  </object>
-                </child>
-                <child>
-                  <object class="GtkTreeViewColumn" id="contents-column">
-                    <property name="resizable">True</property>
-                    <property name="sizing">autosize</property>
-                    <property name="title" translatable="yes">Contents</property>
-                    <property name="reorderable">True</property>
-                    <property name="sort_column_id">5</property>
                     <child>
-                      <object class="BaobabCellRendererItems" id="contents-column-items-renderer">
-                        <property name="xalign">1.0</property>
+                      <object class="GtkTreeViewColumn" id="usage-column-home-page">
+                        <property name="title" translatable="yes">Usage</property>
+                        <child>
+                          <object class="GtkCellRendererProgress" id="usage-renderer">
+                            <property name="width">140</property>
+                            <property name="ypad">8</property>
+                          </object>
+                          <attributes>
+                            <attribute name="text">4</attribute>
+                            <attribute name="value">3</attribute>
+                          </attributes>
+                        </child>
                       </object>
-                      <attributes>
-                        <attribute name="items">5</attribute>
-                      </attributes>
                     </child>
                   </object>
                 </child>
               </object>
             </child>
-          </object>
-          <packing>
-            <property name="resize">False</property>
-            <property name="shrink">True</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkGrid" id="chart-grid">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="hexpand">True</property>
-            <property name="vexpand">True</property>
             <child>
-              <object class="GtkNotebook" id="chart-notebook">
+              <object class="GtkButtonBox" id="dialog-action_area1">
+                <property name="can_focus">False</property>
+                <property name="layout_style">end</property>
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="show_tabs">False</property>
-                <property name="show_border">False</property>
                 <child>
-                  <object class="BaobabRingschart" id="rings-chart">
+                  <object class="GtkButton" id="scan-home-button">
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
-                    <property name="hexpand">True</property>
-                    <property name="vexpand">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="tooltip_markup" translatable="yes">Scan your home folder</property>
+                    <property name="tooltip_text" translatable="yes">Scan your home folder</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="action_name">win.scan-home</property>
+                    <property name="label" translatable="yes">Scan Home</property>
+                    <property name="use_underline">True</property>
+                    <!--<property name="stock_id">gtk-home</property>-->
+                    <child internal-child="accessible">
+                      <object class="AtkObject" id="scan-home-button-atkobject">
+                        <property name="AtkObject::accessible-name" translatable="yes">Scan your home folder</property>
+                      </object>
+                    </child>
                   </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">0</property>
+                  </packing>
                 </child>
                 <child>
-                  <object class="BaobabTreemap" id="treemap-chart">
+                  <object class="GtkButton" id="scan-folder-button">
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
-                    <property name="hexpand">True</property>
-                    <property name="vexpand">True</property>
+                    <property name="can_focus">False</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="tooltip_markup" translatable="yes">Scan a folder</property>
+                    <property name="tooltip_text" translatable="yes">Scan a folder</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="action_name">win.scan-folder</property>
+                    <property name="label" translatable="yes">Scan Folder</property>
+                    <property name="use_underline">True</property>
+                    <!--<property name="stock_id">gtk-directory</property>-->
                   </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
                 </child>
                 <child>
-                  <object class="GtkSpinner" id="spinner">
+                  <object class="GtkButton" id="scan-remote-button">
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="hexpand">True</property>
-                    <property name="vexpand">True</property>
-                    <property name="margin_left">24</property>
-                    <property name="margin_right">24</property>
-                    <property name="margin_top">24</property>
-                    <property name="margin_bottom">24</property>
+                    <property name="has_tooltip">True</property>
+                    <property name="tooltip_markup" translatable="yes">Scan a remote folder</property>
+                    <property name="tooltip_text" translatable="yes">Scan a remote folder</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="action_name">win.scan-remote</property>
+                    <property name="label" translatable="yes">Scan Remote Folder</property>
+                    <property name="use_underline">True</property>
+                    <!--<property name="stock_id">gtk-network</property>-->
                   </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="position">1</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton" id="scan-button">
+                    <property name="label" translatable="yes">_Scan</property>
+                    <property name="use_action_appearance">False</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="use_underline">True</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">3</property>
+                  </packing>
                 </child>
               </object>
               <packing>
                 <property name="left_attach">0</property>
-                <property name="top_attach">0</property>
+                <property name="top_attach">1</property>
                 <property name="width">1</property>
                 <property name="height">1</property>
               </packing>
             </child>
+          </object>
+        </child>
+        <child>
+          <object class="GtkGrid" id="result-page">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
             <child>
-              <object class="GtkButtonBox" id="chart-buttonbox">
+              <object class="GtkPaned" id="hpaned">
                 <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>
+                <property name="can_focus">True</property>
+                <property name="hexpand">True</property>
+                <property name="vexpand">True</property>
+                <property name="position">480</property>
                 <child>
-                  <object class="GtkRadioButton" id="rings-button">
+                  <object class="GtkScrolledWindow" id="scrolled-window">
                     <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>
+                    <property name="shadow_type">in</property>
                     <child>
-                      <object class="GtkImage" id="ringschart-icon">
+                      <object class="GtkTreeView" id="treeview">
                         <property name="visible">True</property>
-                        <property name="can_focus">False</property>
-                        <property name="icon_name">view-ringschart-symbolic</property>
+                        <property name="can_focus">True</property>
+                        <child internal-child="selection">
+                          <object class="GtkTreeSelection" id="treeview-selection1"/>
+                        </child>
+                        <child>
+                          <object class="GtkTreeViewColumn" id="folder-column">
+                            <property name="resizable">True</property>
+                            <property name="sizing">autosize</property>
+                            <property name="title" translatable="yes">Folder</property>
+                            <property name="expand">True</property>
+                            <property name="reorderable">True</property>
+                            <property name="sort_column_id">0</property>
+                            <child>
+                              <object class="GtkCellRendererText" id="folder-column-text-renderer"/>
+                              <attributes>
+                                <attribute name="text">0</attribute>
+                              </attributes>
+                            </child>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkTreeViewColumn" id="usage-column">
+                            <property name="sizing">autosize</property>
+                            <property name="title" translatable="yes">Usage</property>
+                            <property name="reorderable">True</property>
+                            <property name="sort_column_id">2</property>
+                            <child>
+                              <object class="BaobabCellRendererProgress" id="usage-column-bar-renderer">
+                                <property name="xpad">4</property>
+                                <property name="ypad">4</property>
+                              </object>
+                              <attributes>
+                                <attribute name="value">2</attribute>
+                              </attributes>
+                            </child>
+                            <child>
+                              <object class="BaobabCellRendererPercent" id="usage-column-percent-renderer">
+                                <property name="xalign">1.0</property>
+                              </object>
+                              <attributes>
+                                <attribute name="percent">2</attribute>
+                              </attributes>
+                            </child>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkTreeViewColumn" id="size-column">
+                            <property name="resizable">True</property>
+                            <property name="sizing">autosize</property>
+                            <property name="title" translatable="yes">Size</property>
+                            <property name="reorderable">True</property>
+                            <property name="sort_column_id">3</property>
+                            <child>
+                              <object class="BaobabCellRendererSize" id="size-column-size-renderer">
+                                <property name="xalign">1.0</property>
+                              </object>
+                              <attributes>
+                                <attribute name="size">3</attribute>
+                                <attribute name="alloc-size">4</attribute>
+                              </attributes>
+                            </child>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkTreeViewColumn" id="contents-column">
+                            <property name="resizable">True</property>
+                            <property name="sizing">autosize</property>
+                            <property name="title" translatable="yes">Contents</property>
+                            <property name="reorderable">True</property>
+                            <property name="sort_column_id">5</property>
+                            <child>
+                              <object class="BaobabCellRendererItems" id="contents-column-items-renderer">
+                                <property name="xalign">1.0</property>
+                              </object>
+                              <attributes>
+                                <attribute name="items">5</attribute>
+                              </attributes>
+                            </child>
+                          </object>
+                        </child>
                       </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>
+                    <property name="resize">False</property>
+                    <property name="shrink">True</property>
                   </packing>
                 </child>
                 <child>
-                  <object class="GtkRadioButton" id="treemap-button">
+                  <object class="GtkGrid" id="chart-grid">
                     <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>
+                    <property name="can_focus">False</property>
+                    <property name="hexpand">True</property>
+                    <property name="vexpand">True</property>
                     <child>
-                      <object class="GtkImage" id="treemap-icon">
+                      <object class="GtkNotebook" id="chart-notebook">
+                        <property name="visible">True</property>
+                        <property name="can_focus">True</property>
+                        <property name="show_tabs">False</property>
+                        <property name="show_border">False</property>
+                        <child>
+                          <object class="BaobabRingschart" id="rings-chart">
+                            <property name="visible">True</property>
+                            <property name="hexpand">True</property>
+                            <property name="vexpand">True</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="BaobabTreemap" id="treemap-chart">
+                            <property name="visible">True</property>
+                            <property name="hexpand">True</property>
+                            <property name="vexpand">True</property>
+                          </object>
+                        </child>
+                        <child>
+                          <object class="GtkSpinner" id="spinner">
+                            <property name="visible">True</property>
+                            <property name="can_focus">False</property>
+                            <property name="hexpand">True</property>
+                            <property name="vexpand">True</property>
+                            <property name="margin_left">24</property>
+                            <property name="margin_right">24</property>
+                            <property name="margin_top">24</property>
+                            <property name="margin_bottom">24</property>
+                          </object>
+                        </child>
+                      </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">0</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
+                      </packing>
+                    </child>
+                    <child>
+                      <object class="GtkButtonBox" id="chart-buttonbox">
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="icon_name">view-treemap-symbolic</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>
+                              </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>
+                              </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>
                       </object>
+                      <packing>
+                        <property name="left_attach">0</property>
+                        <property name="top_attach">1</property>
+                        <property name="width">1</property>
+                        <property name="height">1</property>
+                      </packing>
                     </child>
                   </object>
                   <packing>
-                    <property name="expand">False</property>
-                    <property name="fill">True</property>
-                    <property name="position">1</property>
-                    <property name="non_homogeneous">True</property>
+                    <property name="resize">True</property>
+                    <property name="shrink">True</property>
                   </packing>
                 </child>
               </object>
@@ -432,18 +557,8 @@
               </packing>
             </child>
           </object>
-          <packing>
-            <property name="resize">True</property>
-            <property name="shrink">True</property>
-          </packing>
         </child>
       </object>
-      <packing>
-        <property name="left_attach">0</property>
-        <property name="top_attach">2</property>
-        <property name="width">1</property>
-        <property name="height">1</property>
-      </packing>
     </child>
   </object>
   <object class="GtkMenu" id="treeview-popup-menu">
diff --git a/src/baobab-menu.ui b/src/baobab-menu.ui
index cdbe16d..c78479a 100644
--- a/src/baobab-menu.ui
+++ b/src/baobab-menu.ui
@@ -4,16 +4,16 @@
   <menu id="appmenu">
     <section>
       <item>
+        <attribute name="label" translatable="yes">_All locations</attribute>
+        <attribute name="action">win.show-home-page</attribute>
+        <attribute name="accel">&lt;Primary&gt;a</attribute>
+      </item>
+      <item>
         <attribute name="label" translatable="yes">_Scan Home</attribute>
         <attribute name="action">win.scan-home</attribute>
         <attribute name="accel">&lt;Primary&gt;h</attribute>
       </item>
       <item>
-        <attribute name="label" translatable="yes">Scan _Volumeâ</attribute>
-        <attribute name="action">win.scan-volume</attribute>
-        <attribute name="accel">&lt;Primary&gt;v</attribute>
-      </item>
-      <item>
         <attribute name="label" translatable="yes">Scan F_olderâ</attribute>
         <attribute name="action">win.scan-folder</attribute>
         <attribute name="accel">&lt;Primary&gt;o</attribute>
@@ -58,16 +58,16 @@
       <attribute name="label" translatable="yes">_Analizer</attribute>
       <section>
         <item>
+          <attribute name="label" translatable="yes">_All locations</attribute>
+          <attribute name="action">win.show-home-page</attribute>
+          <attribute name="accel">&lt;Primary&gt;a</attribute>
+        </item>
+        <item>
           <attribute name="label" translatable="yes">_Scan Home</attribute>
           <attribute name="action">win.scan-home</attribute>
           <attribute name="accel">&lt;Primary&gt;h</attribute>
         </item>
         <item>
-          <attribute name="label" translatable="yes">Scan _Volumeâ</attribute>
-          <attribute name="action">win.scan-volume</attribute>
-          <attribute name="accel">&lt;Primary&gt;v</attribute>
-        </item>
-        <item>
           <attribute name="label" translatable="yes">Scan F_olderâ</attribute>
           <attribute name="action">win.scan-folder</attribute>
           <attribute name="accel">&lt;Primary&gt;o</attribute>
diff --git a/src/baobab-window.vala b/src/baobab-window.vala
index f580267..2cd94d5 100644
--- a/src/baobab-window.vala
+++ b/src/baobab-window.vala
@@ -1,6 +1,8 @@
 namespace Baobab {
 	public class Window : Gtk.ApplicationWindow {
 		Settings ui_settings;
+		Gtk.Notebook main_notebook;
+		Gtk.Toolbar toolbar;
 		Gtk.InfoBar infobar;
 		Gtk.Label infobar_primary;
 		Gtk.Label infobar_secondary;
@@ -16,9 +18,9 @@ namespace Baobab {
 		}
 
 		private const GLib.ActionEntry[] action_entries = {
+			{ "show-home-page", on_show_home_page_activate },
 			{ "active-chart", radio_activate, "s", "'rings'", on_chart_type_changed },
 			{ "scan-home", on_scan_home_activate },
-			{ "scan-volume", on_scan_volume_activate },
 			{ "scan-folder", on_scan_folder_activate },
 			{ "scan-remote", on_scan_remote_activate },
 			{ "stop", on_stop_activate },
@@ -38,7 +40,6 @@ namespace Baobab {
 
 		private const ActionState[] actions_while_scanning = {
 			{ "scan-home", false },
-			{ "scan-volume", false },
 			{ "scan-folder", false },
 			{ "scan-remote", false },
 			{ "stop", true },
@@ -48,6 +49,11 @@ namespace Baobab {
 			{ "collapse-all", false }
 		};
 
+		private enum UIPage {
+			HOME,
+			RESULT
+		}
+
 		private enum ChartPage {
 			RINGS,
 			TREEMAP,
@@ -75,7 +81,10 @@ namespace Baobab {
 				error ("loading main builder file: %s", e.message);
 			}
 
+
 			// Cache some objects from the builder.
+			main_notebook = builder.get_object ("main-notebook") as Gtk.Notebook;
+			toolbar = builder.get_object ("toolbar") as Gtk.Toolbar;
 			infobar = builder.get_object ("infobar") as Gtk.InfoBar;
 			infobar_primary = builder.get_object ("infobar-primary-label") as Gtk.Label;
 			infobar_secondary = builder.get_object ("infobar-secondary-label") as Gtk.Label;
@@ -85,8 +94,12 @@ namespace Baobab {
 			treemap_chart = builder.get_object ("treemap-chart") as Chart;
 			spinner = builder.get_object ("spinner") as Gtk.Spinner;
 
+			setup_home_page (builder);
 			setup_treeview (builder);
 
+			// To make it draggable like a primary toolbar
+			toolbar.get_style_context ().add_class (Gtk.STYLE_CLASS_MENUBAR);
+
 			ui_settings = Application.get_ui_settings ();
 			lookup_action ("active-chart").change_state (ui_settings.get_value ("active-chart"));
 
@@ -101,11 +114,26 @@ namespace Baobab {
 			title = _("Disk Usage Analyzer");
 			set_default_size (800, 500);
 
+			set_ui_page (UIPage.HOME);
+
 			set_busy (false);
 
 			show ();
 		}
 
+		void set_ui_page (UIPage page) {
+			toolbar.visible = (page == UIPage.RESULT);
+			main_notebook.page = page;
+		}
+
+		void on_show_home_page_activate () {
+			if (scanner != null) {
+				scanner.cancel ();
+			}
+
+			set_ui_page (UIPage.HOME);
+		}
+
 		void on_chart_type_changed (SimpleAction action, Variant value) {
 			switch (value as string) {
 				case "rings":
@@ -124,61 +152,10 @@ namespace Baobab {
 
 		void on_scan_home_activate () {
 			var dir = File.new_for_path (GLib.Environment.get_home_dir ());
+			set_ui_page (UIPage.RESULT);
 			scan_directory (dir);
 		}
 
-		void on_scan_volume_activate () {
-			var builder = new Gtk.Builder ();
-			try {
-				builder.add_from_resource ("/org/gnome/baobab/ui/baobab-volume-chooser-dialog.ui");
-			} catch (Error e) {
-				error ("loading volume chooser builder file: %s", e.message);
-			}
-
-			var dialog = builder.get_object ("volume-dialog") as Gtk.Dialog;
-			var volume_treeview = builder.get_object ("volume-treeview") as Gtk.TreeView;
-			var mount_column = builder.get_object ("mount-column") as Gtk.TreeViewColumn;
-			var mount_renderer = builder.get_object ("mount-renderer") as Gtk.CellRendererText;
-
-			VolumeList volumes = new VolumeList ();
-			volume_treeview.model = volumes;
-
-			mount_column.set_cell_data_func (mount_renderer, (layout, cell, model, iter) => {
-				string? mount_point = null;
-				model.get (iter, VolumeList.Columns.MOUNT_POINT, out mount_point);
-				((Gtk.CellRendererText) cell).text = mount_point != null ? mount_point : _("Not mounted");
-			});
-
-			dialog.response.connect ((response) => {
-				if (response == 1) {
-					try {
-						Gtk.TreePath path = volume_treeview.get_selection ().get_selected_rows (null).data;
-						Gtk.TreeIter iter;
-
-						volumes.get_iter (out iter, path);
-
-						string? mount_point = null;
-						volumes.get (iter, VolumeList.Columns.MOUNT_POINT, out mount_point);
-
-						if (mount_point == null) {
-							UDisks.Object volume;
-							volumes.get (iter, VolumeList.Columns.UDISKS_OBJECT, out volume);
-							var fs = volume.get_filesystem ();
-							fs.call_mount_sync (new GLib.Variant ("a{sv}", null), out mount_point, null);
-						}
-
-						scan_directory (File.new_for_path (mount_point), ScanFlags.EXCLUDE_MOUNTS);
-					} catch (Error e) {
-						message (_("Could not analyze volume."), e.message, Gtk.MessageType.ERROR);
-					}
-				}
-				dialog.destroy ();
-			});
-
-			dialog.set_transient_for (this);
-			dialog.show ();
-		}
-
 		void on_scan_folder_activate () {
 			var file_chooser = new Gtk.FileChooserDialog (_("Select Folder"), this,
 			                                              Gtk.FileChooserAction.SELECT_FOLDER,
@@ -190,6 +167,7 @@ namespace Baobab {
 			file_chooser.response.connect ((response) => {
 				if (response == Gtk.ResponseType.ACCEPT) {
 					var dir = file_chooser.get_file ();
+					set_ui_page (UIPage.RESULT);
 					scan_directory (dir);
 				}
 				file_chooser.destroy ();
@@ -204,6 +182,7 @@ namespace Baobab {
 			connect_server.selected.connect ((uri) => {
 				if (uri != null) {
 					var dir = File.new_for_uri (uri);
+					set_ui_page (UIPage.RESULT);
 					scan_directory (dir);
 				}
 			});
@@ -321,6 +300,46 @@ namespace Baobab {
 			return true;
 		}
 
+		void setup_home_page (Gtk.Builder builder) {
+			var volume_treeview = builder.get_object ("volume-treeview") as Gtk.TreeView;
+			var mount_column = builder.get_object ("mount-column") as Gtk.TreeViewColumn;
+			var mount_renderer = builder.get_object ("mount-renderer") as Gtk.CellRendererText;
+			var scan_button = builder.get_object ("scan-button") as Gtk.Button;
+
+			VolumeList volumes = new VolumeList ();
+			volume_treeview.model = volumes;
+
+			mount_column.set_cell_data_func (mount_renderer, (layout, cell, model, iter) => {
+				string? mount_point = null;
+				model.get (iter, VolumeList.Columns.MOUNT_POINT, out mount_point);
+				((Gtk.CellRendererText) cell).text = mount_point != null ? mount_point : _("Not mounted");
+			});
+
+			scan_button.clicked.connect (() => {
+				try {
+					Gtk.TreePath path = volume_treeview.get_selection ().get_selected_rows (null).data;
+					Gtk.TreeIter iter;
+
+					volumes.get_iter (out iter, path);
+
+					string? mount_point = null;
+					volumes.get (iter, VolumeList.Columns.MOUNT_POINT, out mount_point);
+
+					if (mount_point == null) {
+						UDisks.Object volume;
+						volumes.get (iter, VolumeList.Columns.UDISKS_OBJECT, out volume);
+						var fs = volume.get_filesystem ();
+						fs.call_mount_sync (new GLib.Variant ("a{sv}", null), out mount_point, null);
+					}
+
+					set_ui_page (UIPage.RESULT);
+					scan_directory (File.new_for_path (mount_point), ScanFlags.EXCLUDE_MOUNTS);
+				} catch (Error e) {
+					message (_("Could not analyze volume."), e.message, Gtk.MessageType.ERROR);
+				}
+			});
+		}
+
 		void setup_treeview (Gtk.Builder builder) {
 			var popup = builder.get_object ("treeview-popup-menu") as Gtk.Menu;
 			var open_item = builder.get_object ("treeview-popup-open") as Gtk.MenuItem;
diff --git a/src/baobab.gresource.xml b/src/baobab.gresource.xml
index c9930d9..d0789b8 100644
--- a/src/baobab.gresource.xml
+++ b/src/baobab.gresource.xml
@@ -3,6 +3,5 @@
   <gresource prefix="/org/gnome/baobab/ui">
     <file preprocess="xml-stripblanks">baobab-main-window.ui</file>
     <file preprocess="xml-stripblanks">baobab-menu.ui</file>
-    <file preprocess="xml-stripblanks">baobab-volume-chooser-dialog.ui</file>
   </gresource>
 </gresources>



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