diff options
author | Carlos Soriano <csoriano@gnome.org> | 2018-04-13 21:36:42 +0200 |
---|---|---|
committer | Carlos Soriano <csoriano@gnome.org> | 2018-04-13 21:41:38 +0200 |
commit | 599b11bc8a6481bec94c5620ff5aaaadb94ad9d6 (patch) | |
tree | d4fd1c16354698b095a64aa51d319220ec2ac7e4 | |
parent | 8a58c9d0308e37771b7f8cdd54f810639401e373 (diff) | |
download | nautilus-599b11bc8a6481bec94c5620ff5aaaadb94ad9d6.tar.gz |
Add actions to the toolbar
-rw-r--r-- | src/nautilus-toolbar.c | 17 | ||||
-rw-r--r-- | src/nautilus-window.c | 5 | ||||
-rw-r--r-- | src/resources/css/Adwaita.css | 8 | ||||
-rw-r--r-- | src/resources/ui/nautilus-toolbar.ui | 438 | ||||
-rw-r--r-- | src/resources/ui/nautilus-window.ui | 12 |
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> |