diff options
author | Tim Lunn <tim@feathertop.org> | 2015-03-01 11:19:52 +1100 |
---|---|---|
committer | Stefano Facchini <stefano.facchini@gmail.com> | 2017-09-16 09:46:51 +0200 |
commit | 9247a47d27ca8c392273293d1e20b82c43c34965 (patch) | |
tree | 6856e8e4fd31211a293c6b579d0392db129af129 | |
parent | ade41438221e4cc79d9e64a565c96d7551c1fa83 (diff) | |
download | baobab-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.ui | 695 | ||||
-rw-r--r-- | src/baobab-window.vala | 15 |
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 (); |