summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Lunn <tim@feathertop.org>2015-03-01 11:19:52 +1100
committerStefano Facchini <stefano.facchini@gmail.com>2017-09-16 09:46:51 +0200
commit9247a47d27ca8c392273293d1e20b82c43c34965 (patch)
tree6856e8e4fd31211a293c6b579d0392db129af129
parentade41438221e4cc79d9e64a565c96d7551c1fa83 (diff)
downloadbaobab-9247a47d27ca8c392273293d1e20b82c43c34965.tar.gz
Use traditional titlebars in Unity
Use XDG_CURRENT_DESKTOP to determine whether to display headerbars as a toolbar on Unity https://bugzilla.gnome.org/show_bug.cgi?id=745346
-rw-r--r--src/baobab-main-window.ui695
-rw-r--r--src/baobab-window.vala15
2 files changed, 366 insertions, 344 deletions
diff --git a/src/baobab-main-window.ui b/src/baobab-main-window.ui
index 80224ac..6716d9c 100644
--- a/src/baobab-main-window.ui
+++ b/src/baobab-main-window.ui
@@ -40,363 +40,370 @@
</object>
</child>
</object>
- <template class="BaobabWindow" parent="GtkApplicationWindow">
- <property name="title" translatable="yes">Disk Usage Analyzer</property>
- <property name="icon_name">baobab</property>
- <child type="titlebar">
- <object class="GtkHeaderBar" id="header_bar">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="show_close_button">True</property>
+ <object class="GtkHeaderBar" id="header_bar">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="show_close_button">True</property>
+ <style>
+ <class name="titlebar"/>
+ </style>
+ <child>
+ <object class="GtkButton" id="back_button">
+ <property name="valign">center</property>
+ <property name="can_focus">True</property>
+ <property name="action_name">win.show-home-page</property>
<style>
- <class name="titlebar"/>
+ <class name="image-button"/>
</style>
<child>
- <object class="GtkButton" id="back_button">
- <property name="valign">center</property>
- <property name="can_focus">True</property>
- <property name="action_name">win.show-home-page</property>
- <style>
- <class name="image-button"/>
- </style>
- <child>
- <object class="GtkImage" id="back_button_image">
- <property name="visible">True</property>
- <property name="icon_name">go-previous-symbolic</property>
- <property name="icon_size">1</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="pack_type">start</property>
- </packing>
- </child>
- <child>
- <object class="GtkButton" id="reload_button">
- <property name="valign">center</property>
- <property name="can_focus">True</property>
- <property name="action_name">win.reload</property>
- <style>
- <class name="image-button"/>
- </style>
- <child>
- <object class="GtkImage" id="reload_button_image">
- <property name="visible">True</property>
- <property name="icon_size">1</property>
- <property name="icon_name">view-refresh-symbolic</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
- </child>
- <child>
- <object class="GtkMenuButton" id="menu_button">
- <property name="valign">center</property>
- <property name="menu_model">winmenu</property>
- <property name="action_name">win.gear-menu</property>
- <property name="direction">none</property>
- <style>
- <class name="image-button"/>
- </style>
+ <object class="GtkImage" id="back_button_image">
+ <property name="visible">True</property>
+ <property name="icon_name">go-previous-symbolic</property>
+ <property name="icon_size">1</property>
</object>
- <packing>
- <property name="pack_type">end</property>
- </packing>
</child>
</object>
+ <packing>
+ <property name="pack_type">start</property>
+ </packing>
</child>
<child>
- <object class="GtkGrid" id="window_contents">
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkInfoBar" id="infobar">
- <property name="visible">False</property>
- <child internal-child="content_area">
- <object class="GtkBox" id="infobar_content_area">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">8</property>
- <property name="orientation">vertical</property>
- <property name="spacing">16</property>
- <property name="hexpand">True</property>
- <child>
- <object class="GtkLabel" id="infobar_primary_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="selectable">True</property>
- <property name="use-markup">True</property>
- <property name="halign">GTK_ALIGN_START</property>
- <property name="wrap">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="infobar_secondary_label">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="selectable">True</property>
- <property name="use-markup">True</property>
- <property name="halign">GTK_ALIGN_START</property>
- <property name="wrap">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">1</property>
- </packing>
- </child>
- </object>
- </child>
- <child internal-child="action_area">
- <object class="GtkButtonBox" id="infobar_action_area">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="border_width">5</property>
- <property name="orientation">vertical</property>
- <property name="spacing">6</property>
- <property name="layout_style">end</property>
- <child>
- <object class="GtkButton" id="infobar_close_button">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Close</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
+ <object class="GtkButton" id="reload_button">
+ <property name="valign">center</property>
+ <property name="can_focus">True</property>
+ <property name="action_name">win.reload</property>
+ <style>
+ <class name="image-button"/>
+ </style>
<child>
- <object class="GtkStack" id="main_stack">
+ <object class="GtkImage" id="reload_button_image">
<property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="transition_type">slide-left-right</property>
- <child>
- <object class="GtkGrid" id="home_page">
- <property name="can_focus">False</property>
- <property name="visible">True</property>
- <property name="orientation">vertical</property>
- <child>
- <object class="GtkScrolledWindow" id="location_scrolled_window">
- <property name="visible">True</property>
- <property name="vexpand">True</property>
- <property name="hexpand">True</property>
- <property name="hscrollbar-policy">never</property>
- <child>
- <object class="BaobabLocationList" id="location_list">
- <property name="visible">True</property>
- <property name="halign">center</property>
- <property name="width-request">700</property>
- </object>
- </child>
- </object>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkGrid" id="result_page">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="column_homogeneous">True</property>
- <child>
- <object class="GtkScrolledWindow" id="scrolled_window">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="shadow_type">in</property>
- <property name="hexpand">True</property>
- <child>
- <object class="GtkTreeView" id="treeview">
- <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">grow-only</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="BaobabCellRendererProgress" id="usage_column_bar_renderer">
- <property name="xpad">4</property>
- <property name="ypad">4</property>
- </object>
- <attributes>
- <attribute name="value">2</attribute>
- <attribute name="state">7</attribute>
- </attributes>
- </child>
- <child>
- <object class="BaobabCellRendererName" id="folder_column_text_renderer"/>
- <attributes>
- <attribute name="name">0</attribute>
- <attribute name="state">7</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="size_column">
- <property name="resizable">True</property>
- <property name="sizing">grow-only</property>
- <property name="title" translatable="yes">Size</property>
- <property name="reorderable">True</property>
- <property name="sort_column_id">4</property>
- <child>
- <object class="BaobabCellRendererSize" id="size_column_size_renderer">
- <property name="xalign">1.0</property>
- <property name="show-allocated-size">True</property>
- </object>
- <attributes>
- <attribute name="size">3</attribute>
- <attribute name="alloc-size">4</attribute>
- <attribute name="state">7</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="contents_column">
- <property name="resizable">True</property>
- <property name="sizing">grow-only</property>
- <property name="title" translatable="yes">Contents</property>
- <property name="reorderable">True</property>
- <property name="sort_column_id">6</property>
- <child>
- <object class="BaobabCellRendererItems" id="contents_column_items_renderer">
- <property name="xalign">1.0</property>
- </object>
- <attributes>
- <attribute name="items">6</attribute>
- <attribute name="state">7</attribute>
- </attributes>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkTreeViewColumn" id="time_modified_column">
- <property name="resizable">True</property>
- <property name="sizing">grow-only</property>
- <property name="title" translatable="yes">Modified</property>
- <property name="reorderable">True</property>
- <property name="sort_column_id">5</property>
- <child>
- <object class="BaobabCellRendererTime" id="modified_column_time_renderer">
- <property name="xalign">1.0</property>
- </object>
- <attributes>
- <attribute name="time">5</attribute>
- </attributes>
- </child>
- </object>
- </child>
- </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="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="GtkStack" id="spinner_stack">
- <property name="visible">True</property>
- <child>
- <object class="GtkStack" id="chart_stack">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- <property name="transition_type">crossfade</property>
- <child>
- <object class="BaobabRingschart" id="rings_chart">
- <property name="visible">True</property>
- <property name="hexpand">True</property>
- <property name="vexpand">True</property>
- </object>
- <packing>
- <property name="name">rings</property>
- <property name="title" translatable="yes">Rings Chart</property>
- <property name="icon_name">view-ringschart-symbolic</property>
- </packing>
- </child>
- <child>
- <object class="BaobabTreemap" id="treemap_chart">
- <property name="visible">True</property>
- <property name="hexpand">True</property>
- <property name="vexpand">True</property>
- </object>
- <packing>
- <property name="name">treemap</property>
- <property name="title" translatable="yes">Treemap Chart</property>
- <property name="icon_name">view-treemap-symbolic</property>
- </packing>
- </child>
- </object>
- </child>
- <child>
- <object class="GtkSpinner" id="spinner">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="width_request">128</property>
- <property name="height_request">128</property>
- <property name="halign">GTK_ALIGN_CENTER</property>
- <property name="valign">GTK_ALIGN_CENTER</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="GtkActionBar" id="chart_action_bar">
- <property name="visible">True</property>
- <child type="center">
- <object class="GtkStackSwitcher" id="chart_stack_switcher">
- <property name="visible">True</property>
- <property name="stack">chart_stack</property>
- </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>
- </object>
- <packing>
- <property name="left_attach">1</property>
- <property name="top_attach">0</property>
- <property name="width">1</property>
- <property name="height">1</property>
- </packing>
- </child>
- </object>
- </child>
+ <property name="icon_size">1</property>
+ <property name="icon_name">view-refresh-symbolic</property>
</object>
</child>
</object>
+ <packing>
+ <property name="pack_type">end</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="menu_button">
+ <property name="valign">center</property>
+ <property name="menu_model">winmenu</property>
+ <property name="action_name">win.gear-menu</property>
+ <property name="direction">none</property>
+ <style>
+ <class name="image-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="pack_type">end</property>
+ </packing>
</child>
+ </object>
+ <template class="BaobabWindow" parent="GtkApplicationWindow">
+ <property name="title" translatable="yes">Disk Usage Analyzer</property>
+ <property name="icon_name">baobab</property>
+ <child>
+ <object class="GtkBox" id="vbox">
+ <property name="orientation">vertical</property>
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkGrid" id="window_contents">
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkInfoBar" id="infobar">
+ <property name="visible">False</property>
+ <child internal-child="content_area">
+ <object class="GtkBox" id="infobar_content_area">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">8</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">16</property>
+ <property name="hexpand">True</property>
+ <child>
+ <object class="GtkLabel" id="infobar_primary_label">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="selectable">True</property>
+ <property name="use-markup">True</property>
+ <property name="halign">GTK_ALIGN_START</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="infobar_secondary_label">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="selectable">True</property>
+ <property name="use-markup">True</property>
+ <property name="halign">GTK_ALIGN_START</property>
+ <property name="wrap">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkButtonBox" id="infobar_action_area">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">5</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <property name="layout_style">end</property>
+ <child>
+ <object class="GtkButton" id="infobar_close_button">
+ <property name="visible">True</property>
+ <property name="label" translatable="yes">Close</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkStack" id="main_stack">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="transition_type">slide-left-right</property>
+ <child>
+ <object class="GtkGrid" id="home_page">
+ <property name="can_focus">False</property>
+ <property name="visible">True</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkScrolledWindow" id="location_scrolled_window">
+ <property name="visible">True</property>
+ <property name="vexpand">True</property>
+ <property name="hexpand">True</property>
+ <property name="hscrollbar-policy">never</property>
+ <child>
+ <object class="BaobabLocationList" id="location_list">
+ <property name="halign">center</property>
+ <property name="width-request">700</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkGrid" id="result_page">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="column_homogeneous">True</property>
+ <child>
+ <object class="GtkScrolledWindow" id="scrolled_window">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="shadow_type">in</property>
+ <property name="hexpand">True</property>
+ <child>
+ <object class="GtkTreeView" id="treeview">
+ <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">grow-only</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="BaobabCellRendererProgress" id="usage_column_bar_renderer">
+ <property name="xpad">4</property>
+ <property name="ypad">4</property>
+ </object>
+ <attributes>
+ <attribute name="value">2</attribute>
+ <attribute name="state">7</attribute>
+ </attributes>
+ </child>
+ <child>
+ <object class="BaobabCellRendererName" id="folder_column_text_renderer"/>
+ <attributes>
+ <attribute name="name">0</attribute>
+ <attribute name="state">7</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="size_column">
+ <property name="resizable">True</property>
+ <property name="sizing">grow-only</property>
+ <property name="title" translatable="yes">Size</property>
+ <property name="reorderable">True</property>
+ <property name="sort_column_id">4</property>
+ <child>
+ <object class="BaobabCellRendererSize" id="size_column_size_renderer">
+ <property name="xalign">1.0</property>
+ <property name="show-allocated-size">True</property>
+ </object>
+ <attributes>
+ <attribute name="size">3</attribute>
+ <attribute name="alloc-size">4</attribute>
+ <attribute name="state">7</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="contents_column">
+ <property name="resizable">True</property>
+ <property name="sizing">grow-only</property>
+ <property name="title" translatable="yes">Contents</property>
+ <property name="reorderable">True</property>
+ <property name="sort_column_id">6</property>
+ <child>
+ <object class="BaobabCellRendererItems" id="contents_column_items_renderer">
+ <property name="xalign">1.0</property>
+ </object>
+ <attributes>
+ <attribute name="items">6</attribute>
+ <attribute name="state">7</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkTreeViewColumn" id="time_modified_column">
+ <property name="resizable">True</property>
+ <property name="sizing">grow-only</property>
+ <property name="title" translatable="yes">Modified</property>
+ <property name="reorderable">True</property>
+ <property name="sort_column_id">5</property>
+ <child>
+ <object class="BaobabCellRendererTime" id="modified_column_time_renderer">
+ <property name="xalign">1.0</property>
+ </object>
+ <attributes>
+ <attribute name="time">5</attribute>
+ </attributes>
+ </child>
+ </object>
+ </child>
+ </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="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="GtkStack" id="spinner_stack">
+ <property name="visible">True</property>
+ <child>
+ <object class="GtkStack" id="chart_stack">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="transition_type">crossfade</property>
+ <child>
+ <object class="BaobabRingschart" id="rings_chart">
+ <property name="visible">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ </object>
+ <packing>
+ <property name="name">rings</property>
+ <property name="title" translatable="yes">Rings Chart</property>
+ <property name="icon_name">view-ringschart-symbolic</property>
+ </packing>
+ </child>
+ <child>
+ <object class="BaobabTreemap" id="treemap_chart">
+ <property name="visible">True</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ </object>
+ <packing>
+ <property name="name">treemap</property>
+ <property name="title" translatable="yes">Treemap Chart</property>
+ <property name="icon_name">view-treemap-symbolic</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkSpinner" id="spinner">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="width_request">128</property>
+ <property name="height_request">128</property>
+ <property name="halign">GTK_ALIGN_CENTER</property>
+ <property name="valign">GTK_ALIGN_CENTER</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="GtkActionBar" id="chart_action_bar">
+ <property name="visible">True</property>
+ <child type="center">
+ <object class="GtkStackSwitcher" id="chart_stack_switcher">
+ <property name="visible">True</property>
+ <property name="stack">chart_stack</property>
+ </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>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">0</property>
+ <property name="width">1</property>
+ <property name="height">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="pack_type">end</property>
+ </packing>
+ </child>
+ </object>
+
+ </child>
</template>
</interface>
diff --git a/src/baobab-window.vala b/src/baobab-window.vala
index e67c4ee..eaa394a 100644
--- a/src/baobab-window.vala
+++ b/src/baobab-window.vala
@@ -26,6 +26,8 @@ namespace Baobab {
public class Window : Gtk.ApplicationWindow {
private Settings ui_settings;
[GtkChild]
+ private Gtk.Box vbox;
+ [GtkChild]
private Gtk.HeaderBar header_bar;
[GtkChild]
private Gtk.Button back_button;
@@ -166,6 +168,19 @@ namespace Baobab {
active_location = null;
scan_completed_handler = 0;
+ var desktop = Environment.get_variable ("XDG_CURRENT_DESKTOP");
+
+ if (desktop == null || !desktop.contains("Unity"))
+ {
+ this.set_titlebar (header_bar);
+ }
+ else
+ {
+ header_bar.show_close_button = false;
+ header_bar.get_style_context().remove_class("titlebar");
+ vbox.pack_start(header_bar, false, false, 0);
+ }
+
set_ui_state (home_page, false);
show ();