summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2018-04-13 21:36:42 +0200
committerCarlos Soriano <csoriano@gnome.org>2018-04-13 21:41:38 +0200
commit599b11bc8a6481bec94c5620ff5aaaadb94ad9d6 (patch)
treed4fd1c16354698b095a64aa51d319220ec2ac7e4
parent8a58c9d0308e37771b7f8cdd54f810639401e373 (diff)
downloadnautilus-599b11bc8a6481bec94c5620ff5aaaadb94ad9d6.tar.gz
Add actions to the toolbar
-rw-r--r--src/nautilus-toolbar.c17
-rw-r--r--src/nautilus-window.c5
-rw-r--r--src/resources/css/Adwaita.css8
-rw-r--r--src/resources/ui/nautilus-toolbar.ui438
-rw-r--r--src/resources/ui/nautilus-window.ui12
5 files changed, 329 insertions, 151 deletions
diff --git a/src/nautilus-toolbar.c b/src/nautilus-toolbar.c
index 26a978e7d..8be517846 100644
--- a/src/nautilus-toolbar.c
+++ b/src/nautilus-toolbar.c
@@ -65,6 +65,7 @@ struct _NautilusToolbar
GtkWidget *path_bar_container;
GtkWidget *location_entry_container;
+ GtkWidget *toolbar_switcher;
GtkWidget *path_bar;
GtkWidget *location_entry;
@@ -129,10 +130,14 @@ toolbar_update_appearance (NautilusToolbar *self)
g_settings_get_boolean (nautilus_preferences,
NAUTILUS_PREFERENCES_ALWAYS_USE_LOCATION_ENTRY);
- gtk_widget_set_visible (self->location_entry_container,
- show_location_entry);
- gtk_widget_set_visible (self->path_bar,
- !show_location_entry);
+ if (show_location_entry)
+ {
+ gtk_stack_set_visible_child_name (GTK_STACK (self->toolbar_switcher), "location");
+ }
+ else
+ {
+ gtk_stack_set_visible_child_name (GTK_STACK (self->toolbar_switcher), "pathbar");
+ }
}
static void
@@ -1157,6 +1162,7 @@ nautilus_toolbar_class_init (NautilusToolbarClass *klass)
gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, view_toggle_icon);
gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, path_bar_container);
gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, location_entry_container);
+ gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, toolbar_switcher);
gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, back_button);
gtk_widget_class_bind_template_child (widget_class, NautilusToolbar, forward_button);
@@ -1168,9 +1174,6 @@ GtkWidget *
nautilus_toolbar_new ()
{
return g_object_new (NAUTILUS_TYPE_TOOLBAR,
- "show-close-button", TRUE,
- "custom-title", gtk_label_new (NULL),
- "valign", GTK_ALIGN_CENTER,
NULL);
}
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 05fb98572..ed32ff5d0 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -2164,6 +2164,8 @@ setup_toolbar (NautilusWindow *window)
G_CALLBACK (location_entry_location_changed_callback), window, 0);
g_signal_connect_object (location_entry, "cancel",
G_CALLBACK (location_entry_cancel_callback), window, 0);
+
+ gtk_window_set_titlebar (GTK_WINDOW (window), priv->toolbar);
}
static void
@@ -2883,6 +2885,8 @@ nautilus_window_init (NautilusWindow *window)
gtk_style_context_add_class (gtk_widget_get_style_context (GTK_WIDGET (window)),
"nautilus-window");
+ priv->toolbar = nautilus_toolbar_new ();
+
window_group = gtk_window_group_new ();
gtk_window_group_add_window (window_group, GTK_WINDOW (window));
g_object_unref (window_group);
@@ -2930,7 +2934,6 @@ nautilus_window_class_init (NautilusWindowClass *class)
gtk_widget_class_set_template_from_resource (wclass,
"/org/gnome/nautilus/ui/nautilus-window.ui");
- gtk_widget_class_bind_template_child_private (wclass, NautilusWindow, toolbar);
gtk_widget_class_bind_template_child_private (wclass, NautilusWindow, content_paned);
gtk_widget_class_bind_template_child_private (wclass, NautilusWindow, sidebar);
gtk_widget_class_bind_template_child_private (wclass, NautilusWindow, places_sidebar);
diff --git a/src/resources/css/Adwaita.css b/src/resources/css/Adwaita.css
index a19754388..58948b770 100644
--- a/src/resources/css/Adwaita.css
+++ b/src/resources/css/Adwaita.css
@@ -55,6 +55,9 @@
border-radius: 0;
text-shadow: none;
-gtk-icon-shadow: none;
+ padding: 4px;
+ border-width: 0px;
+ margin: 0px;
}
.path-bar .slider-button { /* margins are for the round keynav indicator */
@@ -85,6 +88,11 @@
box-shadow: 0 3px @theme_selected_bg_color;
}
+.pathbar-box {
+ border: 1px @borders solid;
+ border-radius: 2px;
+}
+
/* Sidebar */
.sidebar-row:selected {
diff --git a/src/resources/ui/nautilus-toolbar.ui b/src/resources/ui/nautilus-toolbar.ui
index 59d3fea04..91acca6ed 100644
--- a/src/resources/ui/nautilus-toolbar.ui
+++ b/src/resources/ui/nautilus-toolbar.ui
@@ -1,215 +1,391 @@
<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.22.0 -->
<interface>
- <!-- interface-requires gtk+ 3.8 -->
+ <requires lib="gtk+" version="3.22"/>
+ <object class="GtkPopover" id="operations_popover">
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkScrolledWindow">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hscrollbar_policy">never</property>
+ <property name="max_content_height">270</property>
+ <property name="propagate_natural_height">True</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <child>
+ <object class="GtkBox" id="operations_container">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="margin_left">12</property>
+ <property name="margin_right">12</property>
+ <property name="margin_top">12</property>
+ <property name="margin_bottom">12</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">10</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GtkPopover" id="view-actions">
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
<template class="NautilusToolbar" parent="GtkHeaderBar">
<property name="visible">True</property>
- <property name="show-close-button">True</property>
+ <property name="can_focus">False</property>
+ <property name="show_close_button">True</property>
<child>
<object class="GtkBox" id="navigation_box">
<property name="visible">True</property>
- <property name="orientation">horizontal</property>
- <style>
- <class name="linked"/>
- <class name="raised"/>
- </style>
+ <property name="can_focus">False</property>
<child>
<object class="GtkButton" id="back_button">
<property name="visible">True</property>
- <property name="sensitive">True</property>
+ <property name="can_focus">False</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Go back</property>
<property name="action_name">win.back</property>
- <property name="tooltip-text" translatable="yes">Go back</property>
- <style>
- <class name="image-button"/>
- </style>
<child>
<object class="GtkImage" id="back_icon">
<property name="visible">True</property>
- <property name="icon-name">go-previous-symbolic</property>
- <property name="icon-size">1</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">go-previous-symbolic</property>
+ <property name="icon_size">1</property>
</object>
</child>
+ <style>
+ <class name="image-button"/>
+ </style>
</object>
<packing>
- <property name="pack-type">start</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkButton" id="forward_button">
<property name="visible">True</property>
- <property name="sensitive">True</property>
+ <property name="can_focus">False</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Go forward</property>
<property name="action_name">win.forward</property>
- <property name="tooltip-text" translatable="yes">Go forward</property>
- <style>
- <class name="image-button"/>
- </style>
<child>
<object class="GtkImage" id="forward_icon">
<property name="visible">True</property>
- <property name="icon-name">go-next-symbolic</property>
- <property name="icon-size">1</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">go-next-symbolic</property>
+ <property name="icon_size">1</property>
</object>
</child>
+ <style>
+ <class name="image-button"/>
+ </style>
</object>
<packing>
- <property name="pack-type">start</property>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
</packing>
</child>
- </object>
- <packing>
- <property name="pack-type">start</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="path_bar_container">
- </object>
- <packing>
- <property name="pack-type">start</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="location_entry_container">
<style>
<class name="linked"/>
+ <class name="raised"/>
</style>
</object>
- <packing>
- <property name="pack-type">start</property>
- </packing>
</child>
<child>
- <object class="GtkMenuButton" id="view_button">
+ <object class="GtkBox">
<property name="visible">True</property>
- <property name="sensitive">True</property>
- <property name="action_name">win.view-menu</property>
- <property name="tooltip-text" translatable="yes">Open menu</property>
- <!-- Popover defined in nautilus-toolbar-menu.ui -->
- <style>
- <class name="image-button"/>
- </style>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
<child>
- <object class="GtkImage">
+ <object class="GtkButton">
<property name="visible">True</property>
- <property name="icon-name">open-menu-symbolic</property>
- <property name="icon-size">1</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="action_name">view.open</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">media-playback-start-symbolic</property>
+ </object>
+ </child>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
</child>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Action menu</property>
- <property name="accessible-description" translatable="yes">Open action menu</property>
+ <child>
+ <object class="GtkMenuButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="action_name">view.view-more</property>
+ <property name="popover">view-actions</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">view-more-symbolic</property>
+ </object>
+ </child>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
</child>
</object>
<packing>
- <property name="pack-type">end</property>
+ <property name="position">3</property>
</packing>
</child>
- <child>
- <object class="GtkButton" id="view_toggle_button">
+ <child type="title">
+ <object class="GtkBox" id="header_toolbar">
<property name="visible">True</property>
- <property name="sensitive">True</property>
- <property name="action_name">slot.files-view-mode-toggle</property>
- <property name="tooltip-text" translatable="yes">Toggle view</property>
- <style>
- <class name="image-button"/>
- </style>
+ <property name="can_focus">False</property>
+ <property name="margin_left">24</property>
+ <property name="margin_right">24</property>
+ <property name="spacing">6</property>
<child>
- <object class="GtkImage" id="view_toggle_icon">
+ <object class="GtkStack" id="toolbar_switcher">
+ <property name="width_request">300</property>
<property name="visible">True</property>
- <property name="icon-size">1</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="transition_type">crossfade</property>
+ <child>
+ <object class="GtkBox" id="path_bar_container">
+ <property name="can_focus">False</property>
+ <property name="valign">center</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <style>
+ <class name="pathbar-box"/>
+ </style>
+ </object>
+ <packing>
+ <property name="name">pathbar</property>
+ <property name="title" translatable="yes">page0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="location_entry_container">
+ <property name="can_focus">False</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <style>
+ <class name="linked"/>
+ </style>
+ </object>
+ <packing>
+ <property name="name">location</property>
+ <property name="title" translatable="yes">page1</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="search_container">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="name">search</property>
+ <property name="title" translatable="yes">page2</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
</child>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">View mode toggle</property>
- <property name="accessible-description" translatable="yes">Toggle between grid and list view</property>
+ <child>
+ <object class="GtkToggleButton" id="search_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Search</property>
+ <property name="action_name">slot.search-visible</property>
+ <child>
+ <object class="GtkImage" id="search_icon">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">edit-find-symbolic</property>
+ <property name="icon_size">1</property>
+ </object>
+ </child>
+ <style>
+ <class name="image-button"/>
+ </style>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
</child>
</object>
<packing>
- <property name="pack-type">end</property>
+ <property name="pack_type">end</property>
</packing>
</child>
<child>
- <object class="GtkToggleButton" id="search_button">
+ <object class="GtkBox">
<property name="visible">True</property>
- <property name="sensitive">True</property>
- <property name="action_name">slot.search-visible</property>
- <property name="tooltip-text" translatable="yes">Search</property>
- <style>
- <class name="image-button"/>
- </style>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
<child>
- <object class="GtkImage" id="search_icon">
+ <object class="GtkRevealer" id="operations_revealer">
<property name="visible">True</property>
- <property name="icon-name">edit-find-symbolic</property>
- <property name="icon-size">1</property>
+ <property name="can_focus">False</property>
+ <property name="transition_type">crossfade</property>
+ <child>
+ <object class="GtkMenuButton" id="operations_button">
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Show operations</property>
+ <property name="popover">operations_popover</property>
+ <signal name="toggled" handler="on_operations_button_toggled" object="NautilusToolbar" swapped="yes"/>
+ <child>
+ <object class="GtkDrawingArea" id="operations_icon">
+ <property name="width_request">16</property>
+ <property name="height_request">16</property>
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <signal name="draw" handler="on_operations_icon_draw" object="NautilusToolbar" swapped="no"/>
+ </object>
+ </child>
+ <style>
+ <class name="button"/>
+ </style>
+ </object>
+ </child>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
</child>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Search</property>
- <property name="accessible-description" translatable="yes">Search files</property>
+ <child>
+ <object class="GtkButton">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="action_name">view.new-folder</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">folder-new-symbolic</property>
+ </object>
+ </child>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
</child>
- </object>
- <packing>
- <property name="pack-type">end</property>
- </packing>
- </child>
- <child>
- <object class="GtkRevealer" id="operations_revealer">
- <property name="visible">True</property>
- <property name="transition-type">GTK_REVEALER_TRANSITION_TYPE_CROSSFADE</property>
<child>
- <object class="GtkMenuButton" id="operations_button">
- <property name="visible">False</property>
- <property name="popover">operations_popover</property>
- <property name="tooltip-text" translatable="yes">Show operations</property>
- <signal name="toggled" handler="on_operations_button_toggled" object="NautilusToolbar" swapped="yes"/>
- <style>
- <class name="button"/>
- </style>
+ <object class="GtkButton" id="view_toggle_button">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Toggle view</property>
+ <property name="action_name">slot.files-view-mode-toggle</property>
<child>
- <object class="GtkDrawingArea" id="operations_icon">
+ <object class="GtkImage" id="view_toggle_icon">
<property name="visible">True</property>
- <property name="height-request">16</property>
- <property name="width-request">16</property>
- <property name="valign">GTK_ALIGN_CENTER</property>
- <property name="halign">GTK_ALIGN_CENTER</property>
- <signal name="draw" handler="on_operations_icon_draw" object="NautilusToolbar" swapped="no"/>
+ <property name="can_focus">False</property>
+ <property name="icon_size">1</property>
</object>
</child>
- <child internal-child="accessible">
- <object class="AtkObject">
- <property name="accessible-name" translatable="yes">Operations in progress</property>
- <property name="accessible-description" translatable="yes">Show operations in progress</property>
+ <style>
+ <class name="image-button"/>
+ </style>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="view_button">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="receives_default">False</property>
+ <property name="tooltip_text" translatable="yes">Open menu</property>
+ <property name="action_name">win.view-menu</property>
+ <child>
+ <object class="GtkImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="icon_name">open-menu-symbolic</property>
+ <property name="icon_size">1</property>
</object>
</child>
+ <style>
+ <class name="image-button"/>
+ </style>
</object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">3</property>
+ </packing>
</child>
</object>
<packing>
- <property name="pack-type">end</property>
+ <property name="pack_type">end</property>
+ <property name="position">3</property>
</packing>
</child>
</template>
- <object class="GtkPopover" id="operations_popover">
- <child>
- <object class="GtkScrolledWindow">
- <property name="visible">True</property>
- <property name="hscrollbar_policy">GTK_POLICY_NEVER</property>
- <property name="max-content-height">270</property>
- <property name="propagate-natural-height">True</property>
- <child>
- <object class="GtkBox" id="operations_container">
- <property name="orientation">vertical</property>
- <property name="visible">True</property>
- <property name="margin">12</property>
- <property name="spacing">10</property>
- </object>
- </child>
- </object>
- </child>
- </object>
</interface>
diff --git a/src/resources/ui/nautilus-window.ui b/src/resources/ui/nautilus-window.ui
index 52efc2ecc..4eef37c11 100644
--- a/src/resources/ui/nautilus-window.ui
+++ b/src/resources/ui/nautilus-window.ui
@@ -3,18 +3,6 @@
<template class="NautilusWindow" parent="GtkApplicationWindow">
<property name="show-menubar">False</property>
<property name="title" translatable="yes">_Files</property>
- <child type="titlebar">
- <object class="NautilusToolbar" id="toolbar">
- <!-- We override the title widget so the GtkHeaderBar stop managing the
- title label automatically, since we use the NautilusPathBar. We need to set it
- here rather than in the NautilusToolbar definition due to bug 744324 on
- gtk+ . -->
- <child type="title">
- <object class="GtkLabel">
- </object>
- </child>
- </object>
- </child>
<child>
<object class="GtkGrid">
<property name="visible">True</property>