[nautilus/wip/gbsneto/actionbar-review: 19/19] action-bar: review elements



commit 40700e2f7cc236b8a9a26ead667be0743f967c1f
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Tue Mar 29 16:38:51 2016 -0300

    action-bar: review elements

 src/nautilus-action-bar.c               |  174 +++----------
 src/nautilus-canvas-view.c              |    6 -
 src/resources/ui/nautilus-action-bar.ui |  427 ++++++++++++++-----------------
 3 files changed, 225 insertions(+), 382 deletions(-)
---
diff --git a/src/nautilus-action-bar.c b/src/nautilus-action-bar.c
index c6abf92..00168f9 100644
--- a/src/nautilus-action-bar.c
+++ b/src/nautilus-action-bar.c
@@ -32,17 +32,13 @@ struct _NautilusActionBar
 {
   GtkFrame            parent;
 
-  GtkWidget          *file_name_label;
-  GtkWidget          *file_size_label;
   GtkWidget          *loading_label;
-  GtkWidget          *multi_selection_label;
   GtkWidget          *paste_button;
-  GtkWidget          *preview_button;
-  GtkWidget          *preview_icon;
+  GtkWidget          *primary_label;
+  GtkWidget          *secondary_label;
   GtkWidget          *stack;
 
   NautilusView       *view;
-  gboolean            show_thumbnail;
   gint                update_status_timeout_id;
 };
 
@@ -50,7 +46,6 @@ G_DEFINE_TYPE (NautilusActionBar, nautilus_action_bar, GTK_TYPE_FRAME)
 
 enum {
   PROP_0,
-  PROP_SHOW_THUMBNAIL,
   PROP_VIEW,
   N_PROPS
 };
@@ -97,8 +92,6 @@ update_paste_button (NautilusActionBar *self)
   monitor = nautilus_clipboard_monitor_get ();
   info = nautilus_clipboard_monitor_get_clipboard_info (monitor);
 
-  gtk_widget_set_visible (self->paste_button, info != NULL);
-
   if (info)
     {
       gchar *label;
@@ -111,7 +104,7 @@ update_paste_button (NautilusActionBar *self)
       else
         label = g_strdup_printf (g_dngettext(NULL, "Paste %d file", "Paste %d files", length), length);
 
-      gtk_button_set_label (GTK_BUTTON (self->paste_button), label);
+      gtk_widget_set_tooltip_text (self->paste_button, label);
 
       g_free (label);
     }
@@ -133,7 +126,8 @@ setup_multiple_files_selection (NautilusActionBar *actionbar,
   char *non_folder_item_count_str;
   char *folder_count_str;
   char *folder_item_count_str;
-  char *status;
+  gchar *primary_text;
+  gchar *secondary_text;
 
   folder_item_count_known = TRUE;
   folder_count = 0;
@@ -262,102 +256,48 @@ setup_multiple_files_selection (NautilusActionBar *actionbar,
 
   if (folder_count == 0 && non_folder_count == 0)
     {
-      status = NULL;
+      primary_text = secondary_text = NULL;
     }
   else if (folder_count == 0)
     {
-      status = g_strdup_printf ("%s, %s", non_folder_count_str, non_folder_item_count_str);
+      primary_text = g_strdup_printf ("%s, %s", non_folder_count_str, non_folder_item_count_str);
+      secondary_text = NULL;
     }
   else if (non_folder_count == 0)
     {
-      status = g_strdup_printf ("%s %s", folder_count_str, folder_item_count_str);
+      primary_text = g_strdup_printf ("%s %s", folder_count_str, folder_item_count_str);
+      secondary_text = NULL;
+    }
+  else
+    {
+      primary_text = g_strdup_printf ("%s %s", folder_count_str, folder_item_count_str);
+      secondary_text = g_strdup_printf ("%s, %s", non_folder_count_str, non_folder_item_count_str);
     }
-  else {
-          /* This is marked for translation in case a localizer
-           * needs to change ", " to something else. The comma
-           * is between the message about the number of folders
-           * and the number of items in those folders and the
-           * message about the number of other items and the
-           * total size of those items.
-           */
-          status = g_strdup_printf (_("%s %s, %s %s"),
-                                    folder_count_str,
-                                    folder_item_count_str,
-                                    non_folder_count_str,
-                                    non_folder_item_count_str);
-  }
 
-  gtk_label_set_label (GTK_LABEL (actionbar->multi_selection_label), status);
-  gtk_stack_set_visible_child_name (GTK_STACK (actionbar->stack), "multi-selection");
+  gtk_label_set_label (GTK_LABEL (actionbar->primary_label), primary_text ? primary_text : "");
+  gtk_label_set_label (GTK_LABEL (actionbar->secondary_label), secondary_text ? secondary_text : "");
 
   g_free (first_item_name);
   g_free (folder_count_str);
   g_free (folder_item_count_str);
   g_free (non_folder_count_str);
   g_free (non_folder_item_count_str);
-  g_free (status);
+  g_free (secondary_text);
+  g_free (primary_text);
 }
 
 static void
 setup_single_file_selection (NautilusActionBar *actionbar,
                              NautilusFile      *file)
 {
-  gboolean is_directory, sensitive;
-  gchar *thumbnail_path;
+  gboolean is_directory;
   gchar *description;
 
   description = NULL;
   is_directory = nautilus_file_is_directory (file);
 
-  /* Setup the thumbnail icon */
-  thumbnail_path = nautilus_file_get_thumbnail_path (file);
-
-  if (thumbnail_path && actionbar->show_thumbnail)
-    {
-      GtkStyleContext *context;
-      GdkPixbuf *thumbnail;
-      gint border_top, border_bottom;
-      gint height;
-
-      context = gtk_widget_get_style_context (actionbar->preview_button);
-
-      gtk_style_context_get (context,
-                             gtk_style_context_get_state (context),
-                             "border-top-width", &border_top,
-                             "border-bottom-width", &border_bottom,
-                             NULL);
-
-      sensitive = TRUE;
-      height = gtk_widget_get_allocated_height (actionbar->preview_button) - border_top - border_bottom;
-      thumbnail = gdk_pixbuf_new_from_file_at_size (thumbnail_path,
-                                                    -1,
-                                                    height,
-                                                    NULL);
-
-      gtk_image_set_from_pixbuf (GTK_IMAGE (actionbar->preview_icon), thumbnail);
-      gtk_widget_set_margin_start (actionbar->preview_button, 0);
-
-      g_clear_object (&thumbnail);
-    }
-  else
-    {
-      GIcon *icon;
-
-      sensitive = FALSE;
-      icon = nautilus_file_get_gicon (file, 0);
-
-      gtk_image_set_from_gicon (GTK_IMAGE (actionbar->preview_icon), icon, GTK_ICON_SIZE_DND);
-      gtk_widget_set_margin_start (actionbar->preview_button, 6);
-
-      g_clear_object (&icon);
-    }
-
-
-  /* We don't want to preview folders */
-  gtk_widget_set_sensitive (actionbar->preview_button, sensitive && !is_directory);
-
   /* Primary label is the file name */
-  gtk_label_set_label (GTK_LABEL (actionbar->file_name_label), nautilus_file_get_display_name (file));
+  gtk_label_set_label (GTK_LABEL (actionbar->primary_label), nautilus_file_get_display_name (file));
 
   /*
    * If the selected item is a folder, display the number of
@@ -382,10 +322,8 @@ setup_single_file_selection (NautilusActionBar *actionbar,
    * If there is no description available, we hide the second label so
    * the filename is vertically centralized against the icon.
    */
-  gtk_widget_set_visible (actionbar->file_size_label, description != NULL);
-  gtk_label_set_label (GTK_LABEL (actionbar->file_size_label), description ? description : "");
-
-  gtk_stack_set_visible_child_name (GTK_STACK (actionbar->stack), "single-selection");
+  gtk_widget_set_visible (actionbar->secondary_label, description != NULL);
+  gtk_label_set_label (GTK_LABEL (actionbar->secondary_label), description ? description : "");
 
   g_clear_pointer (&description, g_free);
   g_clear_pointer (&file, nautilus_file_unref);
@@ -412,11 +350,20 @@ real_update_status (gpointer data)
       number_of_files = g_list_length (selection);
 
       if (number_of_files == 0)
-        gtk_stack_set_visible_child_name (GTK_STACK (actionbar->stack), "normal");
+        {
+          gtk_label_set_label (GTK_LABEL (actionbar->primary_label), "");
+          gtk_label_set_label (GTK_LABEL (actionbar->secondary_label), "");
+        }
       else if (number_of_files == 1)
-        setup_single_file_selection (actionbar, selection->data);
+        {
+          setup_single_file_selection (actionbar, selection->data);
+        }
       else
-        setup_multiple_files_selection (actionbar, selection);
+        {
+          setup_multiple_files_selection (actionbar, selection);
+        }
+
+      gtk_stack_set_visible_child_name (GTK_STACK (actionbar->stack), "main");
     }
 
   actionbar->update_status_timeout_id = 0;
@@ -467,10 +414,6 @@ nautilus_action_bar_get_property (GObject    *object,
 
   switch (prop_id)
     {
-    case PROP_SHOW_THUMBNAIL:
-      g_value_set_boolean (value, self->show_thumbnail);
-      break;
-
     case PROP_VIEW:
       g_value_set_object (value, self->view);
       break;
@@ -490,10 +433,6 @@ nautilus_action_bar_set_property (GObject      *object,
 
   switch (prop_id)
     {
-    case PROP_SHOW_THUMBNAIL:
-      nautilus_action_bar_set_show_thumbnail (self, g_value_get_boolean (value));
-      break;
-
     case PROP_VIEW:
       if (g_set_object (&self->view, g_value_get_object (value)))
         {
@@ -521,19 +460,6 @@ nautilus_action_bar_class_init (NautilusActionBarClass *klass)
   object_class->set_property = nautilus_action_bar_set_property;
 
   /**
-   * NautilusActionBar::show-thumbnail:
-   *
-   * Whether the view shows the available thumbnails.
-   */
-  g_object_class_install_property (object_class,
-                                   PROP_SHOW_THUMBNAIL,
-                                   g_param_spec_boolean ("show-thumbnail",
-                                                         "Whether the view shows thumbnails",
-                                                         "Whether the view shows thumbnails or not",
-                                                         TRUE,
-                                                         G_PARAM_READWRITE));
-
-  /**
    * NautilusActionBar::view:
    *
    * The view related to this actionbar.
@@ -548,13 +474,10 @@ nautilus_action_bar_class_init (NautilusActionBarClass *klass)
 
   gtk_widget_class_set_template_from_resource (widget_class, 
"/org/gnome/nautilus/ui/nautilus-action-bar.ui");
 
-  gtk_widget_class_bind_template_child (widget_class, NautilusActionBar, file_name_label);
-  gtk_widget_class_bind_template_child (widget_class, NautilusActionBar, file_size_label);
   gtk_widget_class_bind_template_child (widget_class, NautilusActionBar, loading_label);
-  gtk_widget_class_bind_template_child (widget_class, NautilusActionBar, multi_selection_label);
   gtk_widget_class_bind_template_child (widget_class, NautilusActionBar, paste_button);
-  gtk_widget_class_bind_template_child (widget_class, NautilusActionBar, preview_button);
-  gtk_widget_class_bind_template_child (widget_class, NautilusActionBar, preview_icon);
+  gtk_widget_class_bind_template_child (widget_class, NautilusActionBar, primary_label);
+  gtk_widget_class_bind_template_child (widget_class, NautilusActionBar, secondary_label);
   gtk_widget_class_bind_template_child (widget_class, NautilusActionBar, stack);
 
   gtk_widget_class_bind_template_callback (widget_class, open_preview_cb);
@@ -565,8 +488,6 @@ nautilus_action_bar_class_init (NautilusActionBarClass *klass)
 static void
 nautilus_action_bar_init (NautilusActionBar *self)
 {
-  self->show_thumbnail = TRUE;
-
   gtk_widget_init_template (GTK_WIDGET (self));
 
   update_paste_button (self);
@@ -590,24 +511,3 @@ nautilus_action_bar_new (NautilusView *view)
                        "view", view,
                        NULL);
 }
-
-/**
- * nautilus_action_bar_set_show_thumbnail:
- * @actionbar: a #NautilusActionBar
- * @show_thumbnail: %TRUE if it shows available thumbnails, %FALSE otherwise
- *
- * Sets whether @actionbar should show the thumbnail or not.
- */
-void
-nautilus_action_bar_set_show_thumbnail (NautilusActionBar *actionbar,
-                                        gboolean           show_thumbnail)
-{
-  g_return_if_fail (NAUTILUS_IS_ACTION_BAR (actionbar));
-
-  if (actionbar->show_thumbnail != show_thumbnail)
-    {
-      actionbar->show_thumbnail = show_thumbnail;
-
-      g_object_notify (G_OBJECT (actionbar), "show-thumbnail");
-    }
-}
diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c
index d0fa0b2..970f573 100644
--- a/src/nautilus-canvas-view.c
+++ b/src/nautilus-canvas-view.c
@@ -24,7 +24,6 @@
 
 #include "nautilus-canvas-view.h"
 
-#include "nautilus-action-bar.h"
 #include "nautilus-canvas-view-container.h"
 #include "nautilus-desktop-canvas-view.h"
 #include "nautilus-error-reporting.h"
@@ -2016,11 +2015,6 @@ nautilus_canvas_view_init (NautilusCanvasView *canvas_view)
        /* Keep the action synced with the actual value, so the toolbar can poll it */
        g_action_group_change_action_state (nautilus_files_view_get_action_group (NAUTILUS_FILES_VIEW 
(canvas_view)),
                                            "zoom-to-level", g_variant_new_int32 (get_default_zoom_level 
(canvas_view)));
-
-        /* Don't show thumbnails */
-        view = NAUTILUS_VIEW (canvas_view);
-        nautilus_action_bar_set_show_thumbnail (NAUTILUS_ACTION_BAR (nautilus_view_get_action_bar (view)),
-                                                FALSE);
 }
 
 NautilusFilesView *
diff --git a/src/resources/ui/nautilus-action-bar.ui b/src/resources/ui/nautilus-action-bar.ui
index c296f25..6be5cf1 100644
--- a/src/resources/ui/nautilus-action-bar.ui
+++ b/src/resources/ui/nautilus-action-bar.ui
@@ -3,8 +3,8 @@
   <requires lib="gtk+" version="3.18"/>
   <template class="NautilusActionBar" parent="GtkFrame">
     <property name="visible">True</property>
-    <property name="vexpand">False</property>
     <property name="can_focus">False</property>
+    <property name="vexpand">False</property>
     <child>
       <object class="GtkStack" id="stack">
         <property name="visible">True</property>
@@ -17,209 +17,147 @@
             <property name="visible">True</property>
             <property name="can_focus">False</property>
             <property name="valign">center</property>
-            <property name="hexpand">True</property>
             <property name="border_width">6</property>
             <property name="spacing">6</property>
             <child>
-              <object class="GtkButton" id="paste_button">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="action_name">view.paste</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton">
-                <property name="label" translatable="yes">New Folder…</property>
+              <object class="GtkBox">
                 <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>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="position">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkMenuButton">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="menu_model">no-selection-menu</property>
+                <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
+                <property name="orientation">vertical</property>
+                <property name="valign">center</property>
                 <child>
-                  <object class="GtkImage">
+                  <object class="GtkLabel" id="primary_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="icon_name">view-more-symbolic</property>
+                    <property name="vexpand">True</property>
+                    <property name="ellipsize">end</property>
+                    <property name="xalign">0</property>
                   </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">0</property>
+                  </packing>
                 </child>
-                <style>
-                  <class name="image-button"/>
-                </style>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="pack_type">end</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="name">normal</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkGrid">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="column_spacing">6</property>
-            <child>
-              <object class="GtkButton" id="preview_button">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="vexpand">True</property>
-                <property name="relief">none</property>
-                <signal name="clicked" handler="open_preview_cb" object="NautilusActionBar" swapped="yes"/>
                 <child>
-                  <object class="GtkImage" id="preview_icon">
+                  <object class="GtkLabel" id="secondary_label">
                     <property name="visible">True</property>
                     <property name="can_focus">False</property>
-                    <property name="stock">gtk-missing-image</property>
+                    <property name="ellipsize">end</property>
+                    <property name="xalign">0</property>
+                    <attributes>
+                      <attribute name="scale" value="0.86"/>
+                    </attributes>
+                    <style>
+                      <class name="dim-label"/>
+                    </style>
                   </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                    <property name="position">1</property>
+                  </packing>
                 </child>
-                <style>
-                  <class name="thumbnail-button"/>
-                </style>
               </object>
               <packing>
-                <property name="left_attach">0</property>
-                <property name="top_attach">0</property>
-                <property name="height">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkLabel" id="file_name_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="valign">end</property>
-                <property name="hexpand">True</property>
-                <property name="ellipsize">end</property>
-                <property name="xalign">0</property>
-                <attributes>
-                  <attribute name="weight" value="bold"/>
-                </attributes>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">0</property>
+                <property name="expand">False</property>
+                <property name="fill">True</property>
+                <property name="position">0</property>
               </packing>
             </child>
             <child>
-              <object class="GtkLabel" id="file_size_label">
+              <object class="GtkBox">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="valign">start</property>
-                <property name="xalign">0</property>
+                <property name="hexpand">False</property>
+                <property name="valign">center</property>
                 <style>
-                  <class name="dim-label"/>
+                  <class name="linked"/>
                 </style>
-              </object>
-              <packing>
-                <property name="left_attach">1</property>
-                <property name="top_attach">1</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton">
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="valign">center</property>
-                <property name="action_name">view.move-to-trash</property>
                 <child>
-                  <object class="GtkImage">
+                  <object class="GtkButton" id="cut_button">
+                    <property name="visible" bind-source="cut_button" bind-property="sensitive" 
bind-flags="default" />
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="tooltip_text" translatable="yes">Cut item</property>
+                    <property name="action_name">view.cut</property>
+                    <child>
+                      <object class="GtkImage">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="icon_name">edit-cut-symbolic</property>
+                      </object>
+                    </child>
+                    <style>
+                      <class name="image-button"/>
+                    </style>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkButton" id="copy_button">
+                    <property name="visible" bind-source="copy_button" bind-property="sensitive" 
bind-flags="default" />
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="icon_name">user-trash-symbolic</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="tooltip_text" translatable="yes">Copy item</property>
+                    <property name="action_name">view.copy</property>
+                    <child>
+                      <object class="GtkImage">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="icon_name">edit-copy-symbolic</property>
+                      </object>
+                    </child>
+                    <style>
+                      <class name="image-button"/>
+                    </style>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkButton" id="paste_button">
+                    <property name="visible" bind-source="paste_button" bind-property="sensitive" 
bind-flags="default" />
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="action_name">view.paste</property>
+                    <child>
+                      <object class="GtkImage">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="icon_name">edit-paste-symbolic</property>
+                      </object>
+                    </child>
+                    <style>
+                      <class name="image-button"/>
+                    </style>
+                  </object>
+                </child>
+                <child>
+                  <object class="GtkButton" id="trash_button">
+                    <property name="visible" bind-source="trash_button" bind-property="sensitive" 
bind-flags="default" />
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="tooltip_text" translatable="yes">Move to trash</property>
+                    <property name="action_name">view.move-to-trash</property>
+                    <child>
+                      <object class="GtkImage">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="icon_name">user-trash-symbolic</property>
+                      </object>
+                    </child>
+                    <style>
+                      <class name="image-button"/>
+                    </style>
                   </object>
                 </child>
-              </object>
-              <packing>
-                <property name="left_attach">2</property>
-                <property name="top_attach">0</property>
-                <property name="height">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton">
-                <property name="label" translatable="yes">Move To…</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="valign">center</property>
-                <property name="action_name">view.move-to</property>
-              </object>
-              <packing>
-                <property name="left_attach">3</property>
-                <property name="top_attach">0</property>
-                <property name="height">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton">
-                <property name="label" translatable="yes">Open</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="valign">center</property>
-                <property name="margin_end">6</property>
-                <property name="action_name">view.open-with-default-application</property>
-                <style>
-                  <class name="suggested-action"/>
-                </style>
-              </object>
-              <packing>
-                <property name="left_attach">4</property>
-                <property name="top_attach">0</property>
-                <property name="height">2</property>
-              </packing>
-            </child>
-          </object>
-          <packing>
-            <property name="name">single-selection</property>
-            <property name="position">1</property>
-          </packing>
-        </child>
-        <child>
-          <object class="GtkBox">
-            <property name="visible">True</property>
-            <property name="can_focus">False</property>
-            <property name="valign">center</property>
-            <property name="hexpand">True</property>
-            <property name="border_width">6</property>
-            <property name="spacing">6</property>
-            <child>
-              <object class="GtkLabel" id="multi_selection_label">
-                <property name="visible">True</property>
-                <property name="can_focus">False</property>
-                <property name="hexpand">True</property>
-                <property name="ellipsize">end</property>
-                <property name="lines">2</property>
-                <property name="xalign">0</property>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">True</property>
-                <property name="position">0</property>
+                <property name="pack_type">end</property>
+                <property name="position">4</property>
               </packing>
             </child>
             <child>
@@ -227,7 +165,8 @@
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
-                <property name="menu-model">multi-selection-menu</property>
+                <property name="menu_model">selection-menu</property>
+                <property name="valign">center</property>
                 <child>
                   <object class="GtkImage">
                     <property name="visible">True</property>
@@ -243,79 +182,82 @@
                 <property name="expand">False</property>
                 <property name="fill">True</property>
                 <property name="pack_type">end</property>
-                <property name="position">0</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton">
-                <property name="label" translatable="yes">New Folder With Selection…</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="action_name">view.new-folder-with-selection</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="pack_type">end</property>
                 <property name="position">1</property>
               </packing>
             </child>
             <child>
-              <object class="GtkButton">
-                <property name="label" translatable="yes">Move To…</property>
+              <object class="GtkBox">
                 <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="action_name">view.move-to</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="pack_type">end</property>
-                <property name="position">2</property>
-              </packing>
-            </child>
-            <child>
-              <object class="GtkButton">
-                <property name="label" translatable="yes">Copy To…</property>
-                <property name="visible">True</property>
-                <property name="can_focus">True</property>
-                <property name="receives_default">True</property>
-                <property name="action_name">view.copy-to</property>
-              </object>
-              <packing>
-                <property name="expand">False</property>
-                <property name="fill">True</property>
-                <property name="pack_type">end</property>
-                <property name="position">3</property>
-              </packing>
-            </child>
-            <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.move-to-trash</property>
+                <property name="can_focus">False</property>
+                <property name="spacing">6</property>
+                <property name="valign">center</property>
                 <child>
-                  <object class="GtkImage">
+                  <object class="GtkButton" id="rename_button">
+                    <property name="visible" bind-source="rename_button" bind-property="sensitive" 
bind-flags="default" />
+                    <property name="label" translatable="yes">Rename</property>
                     <property name="visible">True</property>
-                    <property name="can_focus">False</property>
-                    <property name="icon_name">user-trash-symbolic</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="tooltip_text" translatable="yes">Rename the selected file</property>
+                    <property name="action_name">view.rename</property>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton">
+                    <property name="visible">True</property>
+                    <property name="label" translatable="yes">Open</property>
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="tooltip_text" translatable="yes">Open the selected items</property>
+                    <property name="action_name">view.open-with-default-application</property>
+                    <style>
+                      <class name="suggested-action"/>
+                    </style>
+                  </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                  </packing>
+                </child>
+                <child>
+                  <object class="GtkButton">
+                    <property name="visible">True</property>
+                    <property name="can_focus">True</property>
+                    <property name="receives_default">True</property>
+                    <property name="tooltip_text" translatable="yes">Create a new folder</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>
+                    <style>
+                      <class name="image-button"/>
+                    </style>
                   </object>
+                  <packing>
+                    <property name="expand">False</property>
+                    <property name="fill">True</property>
+                  </packing>
                 </child>
               </object>
               <packing>
                 <property name="expand">False</property>
                 <property name="fill">True</property>
                 <property name="pack_type">end</property>
-                <property name="position">4</property>
+                <property name="position">2</property>
               </packing>
             </child>
           </object>
           <packing>
-            <property name="name">multi-selection</property>
-            <property name="position">2</property>
+            <property name="name">main</property>
           </packing>
         </child>
         <child>
@@ -325,6 +267,7 @@
             <property name="valign">center</property>
             <property name="border_width">6</property>
             <property name="spacing">6</property>
+            <property name="valign">center</property>
             <child>
               <object class="GtkSpinner">
                 <property name="visible">True</property>
@@ -373,21 +316,13 @@
           </object>
           <packing>
             <property name="name">loading</property>
-            <property name="position">3</property>
+            <property name="position">1</property>
           </packing>
         </child>
       </object>
     </child>
   </template>
-  <menu id="no-selection-menu">
-    <section>
-      <item>
-        <attribute name="label" translatable="yes">Properties</attribute>
-        <attribute name="action">view.properties</attribute>
-      </item>
-    </section>
-  </menu>
-  <menu id="multi-selection-menu">
+  <menu id="selection-menu">
     <section>
       <item>
         <attribute name="label" translatable="yes">Open in New Window</attribute>
@@ -400,6 +335,20 @@
     </section>
     <section>
       <item>
+        <attribute name="label" translatable="yes">Copy To…</attribute>
+        <attribute name="action">view.copy-to</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">Move To…</attribute>
+        <attribute name="action">view.move-to</attribute>
+      </item>
+      <item>
+        <attribute name="label" translatable="yes">New Folder With Selection…</attribute>
+        <attribute name="action">view.new-folder-with-selection</attribute>
+      </item>
+    </section>
+    <section>
+      <item>
         <attribute name="label" translatable="yes">Properties</attribute>
         <attribute name="action">view.properties</attribute>
       </item>



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