[nautilus/wip/gaction] backup
- From: Carlos Soriano Sánchez <csoriano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus/wip/gaction] backup
- Date: Fri, 31 Oct 2014 14:45:51 +0000 (UTC)
commit 10f247ab75a9eae3e34663e5d47feb7a05adedaf
Author: Carlos Soriano <carlos soriano89 gmail com>
Date: Fri Oct 31 15:45:31 2014 +0100
backup
src/nautilus-canvas-view-menu.xml | 41 +++
src/nautilus-canvas-view.c | 214 +++++++-----
src/nautilus-canvas-view.h | 7 -
src/nautilus-desktop-canvas-view.c | 95 +++++-
src/nautilus-list-view-menu.xml | 10 +
src/nautilus-list-view.c | 26 ++-
src/nautilus-main-menus.xml | 89 +++++-
src/nautilus-sort-menu.xml | 12 +-
src/nautilus-toolbar-view-menu.xml | 145 ++++++++
src/nautilus-toolbar.c | 48 ++-
src/nautilus-toolbar.h | 3 +-
src/nautilus-view.c | 673 ++++++++++++++++++++++++------------
src/nautilus-view.h | 19 +-
src/nautilus-window-menus.c | 127 -------
src/nautilus-window-slot.c | 16 -
src/nautilus-window.c | 22 +-
src/nautilus-window.h | 9 +-
src/nautilus.gresource.xml | 1 +
src/nautilus_view_toolbar_menu.xml | 148 ++++++++
19 files changed, 1203 insertions(+), 502 deletions(-)
---
diff --git a/src/nautilus-canvas-view-menu.xml b/src/nautilus-canvas-view-menu.xml
new file mode 100644
index 0000000..aa0f84f
--- /dev/null
+++ b/src/nautilus-canvas-view-menu.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <menu id="sort-menu">
+ <item>
+ <attribute name="id">sort-label-item</attribute>
+ <attribute name="label" translatable="yes">Sort</attribute>
+ <attribute name="action">win.dummy</attribute>
+ </item>
+ <item>
+ <attribute name="id">sort-by-name-item</attribute>
+ <attribute name="label" translatable="yes">Name</attribute>
+ <attribute name="action">win.sort</attribute>
+ <attribute name="target">sort-by-name</attribute>
+ </item>
+ <item>
+ <attribute name="id">sort-by-size-item</attribute>
+ <attribute name="label" translatable="yes">Size</attribute>
+ <attribute name="action">win.sort</attribute>
+ <attribute name="target">sort-by-size</attribute>
+ </item>
+ <item>
+ <attribute name="id">sort-by-type-item</attribute>
+ <attribute name="label" translatable="yes">Type</attribute>
+ <attribute name="action">win.sort</attribute>
+ <attribute name="target">sort-by-type</attribute>
+ </item>
+ <item>
+ <attribute name="id">sort-by-modification-date-item</attribute>
+ <attribute name="label" translatable="yes">Modification Date</attribute>
+ <attribute name="action">win.sort</attribute>
+ <attribute name="target">sort-by-modification-date</attribute>
+ </item>
+ <item>
+ <attribute name="id">sort-by-access-date-item</attribute>
+ <attribute name="label" translatable="yes">Access Date</attribute>
+ <attribute name="action">win.sort</attribute>
+ <attribute name="target">sort-by-access-date</attribute>
+ </item>
+ </menu>
+</interface>
diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c
index 9122a01..e018331 100644
--- a/src/nautilus-canvas-view.c
+++ b/src/nautilus-canvas-view.c
@@ -175,6 +175,9 @@ static void update_layout_menus (NautilusC
static NautilusFileSortType get_default_sort_order (NautilusFile *file,
gboolean *reversed);
static void nautilus_canvas_view_clear (NautilusView *view);
+static void action_keep_aligned (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data);
G_DEFINE_TYPE (NautilusCanvasView, nautilus_canvas_view, NAUTILUS_TYPE_VIEW);
@@ -811,7 +814,12 @@ nautilus_canvas_view_begin_loading (NautilusView *view)
/* We could changed to a the trash directory or to searching, and then we
* need to update the menus */
window = NAUTILUS_VIEW_CLASS (nautilus_canvas_view_parent_class)->get_window (view);
- nautilus_window_update_menus (window);
+
+ nautilus_view_update_right_click_menus(view);
+ /* FIXME: needed when changing to trash directory to add the trash sorting, but
+ * it redo the toolbar menu, and some options load again the view like hidden files,
+ * wich shouldn't redo the toolbar menu. */
+ nautilus_view_update_toolbar_menus(view);
}
static void
@@ -880,10 +888,6 @@ nautilus_canvas_view_set_zoom_level (NautilusCanvasView *view,
nautilus_canvas_container_set_zoom_level (canvas_container, new_level);
g_signal_emit_by_name (view, "zoom-level-changed");
-
- if (nautilus_view_get_active (NAUTILUS_VIEW (view))) {
- nautilus_view_update_menus (NAUTILUS_VIEW (view));
- }
}
static void
@@ -1024,31 +1028,6 @@ action_keep_aligned_callback (GtkAction *action,
keep_aligned);
}
-void
-nautilus_canvas_view_action_reversed_order (NautilusCanvasView *canvas_view,
- const gboolean reversed_order)
-{
- if (set_sort_reversed (canvas_view, reversed_order, TRUE)) {
- nautilus_canvas_container_sort (get_canvas_container (canvas_view));
- nautilus_canvas_view_reveal_selection (NAUTILUS_VIEW (canvas_view));
- }
-}
-
-void
-nautilus_canvas_view_action_keep_aligned (NautilusCanvasView *canvas_view,
- const gboolean keep_aligned)
-{
- NautilusFile *file;
-
- file = nautilus_view_get_directory_as_file (NAUTILUS_VIEW (canvas_view));
- nautilus_canvas_view_set_directory_keep_aligned (canvas_view,
- file,
- keep_aligned);
-
- nautilus_canvas_container_set_keep_aligned (get_canvas_container (canvas_view),
- keep_aligned);
-}
-
static void
action_sort_radio_callback (GtkAction *action,
GtkRadioAction *current,
@@ -1068,28 +1047,6 @@ action_sort_radio_callback (GtkAction *action,
}
}
-void
-nautilus_canvas_view_action_sort (NautilusCanvasView *canvas_view,
- const gchar* target_name)
-{
- const SortCriterion *sort_criterion;
- g_print ("nautilus_canvas_view_action_sort %s\n", target_name);
- sort_criterion = get_sort_criterion_by_action_target_name (target_name);
-
- g_assert (sort_criterion != NULL);
- /* Note that id might be a toggle item.
- * Ignore non-sort ids so that they don't cause sorting.
- */
- if (sort_criterion->sort_type == NAUTILUS_FILE_SORT_NONE) {
- switch_to_manual_layout (canvas_view);
- } else {
- set_sort_criterion (canvas_view, sort_criterion, TRUE);
-
- nautilus_canvas_container_sort (get_canvas_container (canvas_view));
- nautilus_canvas_view_reveal_selection (NAUTILUS_VIEW (canvas_view));
- }
-}
-
static void
switch_to_manual_layout (NautilusCanvasView *canvas_view)
{
@@ -1147,6 +1104,81 @@ nautilus_canvas_view_start_renaming_file (NautilusView *view,
(get_canvas_container (NAUTILUS_CANVAS_VIEW (view)), select_all);
}
+static void
+action_sort_order_changed (GSimpleAction *action,
+ GVariant *value,
+ gpointer user_data)
+{
+ gchar *target_name;
+ const SortCriterion *sort_criterion;
+
+ g_assert (NAUTILUS_IS_CANVAS_VIEW (user_data));
+
+ target_name = g_variant_get_string (value, NULL);
+ sort_criterion = get_sort_criterion_by_action_target_name (target_name);
+
+ g_assert (sort_criterion != NULL);
+ /* Note that id might be a toggle item.
+ * Ignore non-sort ids so that they don't cause sorting.
+ */
+ if (sort_criterion->sort_type == NAUTILUS_FILE_SORT_NONE) {
+ switch_to_manual_layout (user_data);
+ } else {
+ set_sort_criterion (user_data, sort_criterion, TRUE);
+
+ nautilus_canvas_container_sort (get_canvas_container (user_data));
+ nautilus_canvas_view_reveal_selection (NAUTILUS_VIEW (user_data));
+ }
+
+ g_simple_action_set_state (action, value);
+}
+
+static void
+action_keep_aligned (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusFile *file;
+ NautilusCanvasView *canvas_view;
+ gboolean keep_aligned;
+
+ canvas_view = NAUTILUS_CANVAS_VIEW (user_data);
+ file = nautilus_view_get_directory_as_file (NAUTILUS_VIEW (canvas_view));
+ keep_aligned = g_variant_get_boolean (state);
+
+ nautilus_canvas_view_set_directory_keep_aligned (canvas_view,
+ file,
+ keep_aligned);
+ nautilus_canvas_container_set_keep_aligned (get_canvas_container (canvas_view),
+ keep_aligned);
+
+ g_simple_action_set_state (action, state);
+}
+
+static void
+action_reversed_order (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ gboolean reversed_order;
+
+ g_assert (NAUTILUS_IS_CANVAS_VIEW (user_data));
+
+ reversed_order = g_variant_get_boolean (state);
+ if (set_sort_reversed (user_data, reversed_order, TRUE)) {
+ nautilus_canvas_container_sort (get_canvas_container (user_data));
+ nautilus_canvas_view_reveal_selection (NAUTILUS_VIEW (user_data));
+ }
+
+ g_simple_action_set_state (action, state);
+}
+
+const GActionEntry canvas_view_entries[] = {
+ { "keep-aligned", NULL, NULL, "false", action_keep_aligned },
+ { "reversed-order", NULL, NULL, "false", action_reversed_order },
+ { "sort", NULL, "s", "'sort-by-name'", action_sort_order_changed },
+};
+
static const GtkToggleActionEntry canvas_view_toggle_entries[] = {
/* name, stock id */ { "Reversed Order", NULL,
/* label, accelerator */ N_("Re_versed Order"), NULL,
@@ -1196,29 +1228,44 @@ static const GtkRadioActionEntry arrange_radio_entries[] = {
};
static void
-update_view_menu (NautilusView *view)
+nautilus_canvas_view_update_right_click_menus (NautilusView *view)
+{
+ NAUTILUS_VIEW_CLASS (nautilus_canvas_view_parent_class)->update_right_click_menus (view);
+}
+
+static void
+nautilus_canvas_view_update_toolbar_menus (NautilusView *view)
{
NautilusWindow *window;
+ NautilusCanvasView *canvas_view;
+ GActionGroup *view_action_group;
GMenu *sort_menu, *main_view_menu;
GMenuItem *sort_trash_item, *sort_search_item, *reversed_order_item;
NautilusFile *file;
-
-
- NAUTILUS_VIEW_CLASS (nautilus_canvas_view_parent_class)->update_view_menu (view);
-
+ gboolean keep_aligned;
+ GSimpleAction *action;
GtkBuilder *builder;
+ GtkWidget *sort_menu_widget;
+
+ NAUTILUS_VIEW_CLASS (nautilus_canvas_view_parent_class)->update_toolbar_menus (view);
+ nautilus_window_reset_toolbar_menus (nautilus_view_get_window (view));
+ sort_menu_widget = nautilus_window_get_sort_menu (nautilus_view_get_window (view));
+ gtk_widget_show (sort_menu_widget);
+ //nautilus_window_update_toolbar_menus (nautilus_view_get_window (view));
+/*
+ canvas_view = NAUTILUS_CANVAS_VIEW (view);
builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-sort-menu.xml");
sort_menu = g_object_ref (G_MENU (gtk_builder_get_object (builder, "sort-menu")));
g_object_unref (builder);
file = nautilus_view_get_directory_as_file (NAUTILUS_VIEW (view));
if (file != NULL && nautilus_file_is_in_trash (file)) {
- sort_trash_item = g_menu_item_new ("Trash", "win.sort('sort-by-trash-time')");
+ sort_trash_item = g_menu_item_new ("Trash", "view.sort('sort-by-trash-time')");
g_menu_append_item (sort_menu, sort_trash_item);
}
if (file != NULL && nautilus_file_is_in_search (file)) {
- sort_search_item = g_menu_item_new ("Search", "win.sort('sort-by-search-relevance')");
+ sort_search_item = g_menu_item_new ("Search", "view.sort('sort-by-search-relevance')");
g_menu_append_item (sort_menu, sort_search_item);
}
@@ -1226,23 +1273,33 @@ update_view_menu (NautilusView *view)
main_view_menu = nautilus_window_get_view_menu (window);
nautilus_gmenu_merge (main_view_menu, sort_menu, "sort-menu");
- reversed_order_item = g_menu_item_new ("Reversed Order", "win.reversed-order");
+ reversed_order_item = g_menu_item_new ("Reversed Order", "view.reversed-order");
nautilus_gmenu_add_item_in_section (main_view_menu, reversed_order_item, "reversed-order");
+ /* Canvas view specific supported actions and menus */
+
/* Match actions state of the settings */
+/* view_action_group = NAUTILUS_VIEW_CLASS(nautilus_canvas_view_parent_class)->get_action_group (view);
if (nautilus_canvas_view_supports_auto_layout (NAUTILUS_CANVAS_VIEW (view))) {
- GAction *action = g_action_map_lookup_action (G_ACTION_MAP (window), "reversed-order");
+ GAction *action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
"reversed-order");
g_action_change_state (action,
g_variant_new_boolean (NAUTILUS_CANVAS_VIEW
(view)->details->sort_reversed));
- action = g_action_map_lookup_action (G_ACTION_MAP (window), "sort");
+ action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), "sort");
g_action_change_state (action,
g_variant_new_string (NAUTILUS_CANVAS_VIEW
(view)->details->sort->action_target_name));
}
- GAction *keep_aligned = g_action_map_lookup_action (G_ACTION_MAP (window), "keep-aligned");
- g_action_change_state (keep_aligned,
- g_variant_new_boolean (nautilus_canvas_container_is_keep_aligned
(get_canvas_container (NAUTILUS_CANVAS_VIEW (view)))));
+ action = G_SIMPLE_ACTION (g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
"keep-aligned"));
+ g_simple_action_set_enabled (action,
+ canvas_view->details->supports_keep_aligned);
+ if (canvas_view->details->supports_keep_aligned)
+ {
+ keep_aligned = nautilus_canvas_container_is_keep_aligned (get_canvas_container (canvas_view));
+ g_action_change_state (G_ACTION (action), g_variant_new_boolean (keep_aligned));
+ }
+*/
+ //nautilus_window_update_toolbar_menus (window);
}
static void
@@ -1280,8 +1337,6 @@ nautilus_canvas_view_merge_menus (NautilusView *view)
gtk_ui_manager_add_ui_from_resource (ui_manager,
"/org/gnome/nautilus/nautilus-canvas-view-ui.xml", NULL);
update_layout_menus (canvas_view);
-
- g_print ("END nautilus_canvas_view_merge_menus\n");
}
static void
@@ -1303,7 +1358,7 @@ nautilus_canvas_view_unmerge_menus (NautilusView *view)
}
static void
-nautilus_canvas_view_update_menus (NautilusView *view)
+nautilus_canvas_view_update_menus_old (NautilusView *view)
{
NautilusCanvasView *canvas_view;
GtkAction *action;
@@ -1311,7 +1366,7 @@ nautilus_canvas_view_update_menus (NautilusView *view)
canvas_view = NAUTILUS_CANVAS_VIEW (view);
- NAUTILUS_VIEW_CLASS (nautilus_canvas_view_parent_class)->update_menus(view);
+ NAUTILUS_VIEW_CLASS (nautilus_canvas_view_parent_class)->update_right_click_menus(view);
editable = nautilus_view_is_editable (view);
action = gtk_action_group_get_action (canvas_view->details->canvas_action_group,
@@ -1610,7 +1665,7 @@ nautilus_canvas_view_react_to_canvas_change_idle_callback (gpointer data)
/* Rebuild the menus since some of them (e.g. Restore Stretched Icons)
* may be different now.
*/
- nautilus_view_update_menus (NAUTILUS_VIEW (canvas_view));
+ nautilus_canvas_view_update_right_click_menus (NAUTILUS_VIEW (canvas_view));
/* Don't call this again (unless rescheduled) */
return FALSE;
@@ -1969,13 +2024,6 @@ create_canvas_container (NautilusCanvasView *canvas_view)
G_CALLBACK (icon_rename_started_cb), canvas_view, 0);
g_signal_connect_object (canvas_container, "icon-rename-ended",
G_CALLBACK (icon_rename_ended_cb), canvas_view, 0);
- g_signal_connect_object (canvas_container, "icon-stretch-started",
- G_CALLBACK (nautilus_view_update_menus), canvas_view,
- G_CONNECT_SWAPPED);
- g_signal_connect_object (canvas_container, "icon-stretch-ended",
- G_CALLBACK (nautilus_view_update_menus), canvas_view,
- G_CONNECT_SWAPPED);
-
g_signal_connect_object (canvas_container, "get-stored-layout-timestamp",
G_CALLBACK (get_stored_layout_timestamp), canvas_view, 0);
g_signal_connect_object (canvas_container, "store-layout-timestamp",
@@ -2177,11 +2225,11 @@ nautilus_canvas_view_class_init (NautilusCanvasViewClass *klass)
nautilus_view_class->get_zoom_level = nautilus_canvas_view_get_zoom_level;
nautilus_view_class->click_policy_changed = nautilus_canvas_view_click_policy_changed;
nautilus_view_class->merge_menus = nautilus_canvas_view_merge_menus;
- nautilus_view_class->update_view_menu = update_view_menu;
+ nautilus_view_class->update_right_click_menus = nautilus_canvas_view_update_right_click_menus;
+ nautilus_view_class->update_toolbar_menus = nautilus_canvas_view_update_toolbar_menus;
nautilus_view_class->unmerge_menus = nautilus_canvas_view_unmerge_menus;
nautilus_view_class->sort_directories_first_changed =
nautilus_canvas_view_sort_directories_first_changed;
nautilus_view_class->start_renaming_file = nautilus_canvas_view_start_renaming_file;
- nautilus_view_class->update_menus = nautilus_canvas_view_update_menus;
nautilus_view_class->using_manual_layout = nautilus_canvas_view_using_manual_layout;
nautilus_view_class->widget_to_file_operation_position =
nautilus_canvas_view_widget_to_file_operation_position;
nautilus_view_class->get_view_id = nautilus_canvas_view_get_id;
@@ -2227,6 +2275,8 @@ nautilus_canvas_view_init (NautilusCanvasView *canvas_view)
GtkBuilder *builder;
GMenuModel *menu;
+ GActionGroup *view_action_group;
+ GAction *action;
g_return_if_fail (gtk_bin_get_child (GTK_BIN (canvas_view)) == NULL);
@@ -2268,6 +2318,12 @@ nautilus_canvas_view_init (NautilusCanvasView *canvas_view)
g_signal_connect (nautilus_clipboard_monitor_get (),
"clipboard-info",
G_CALLBACK (canvas_view_notify_clipboard_info), canvas_view);
+
+ view_action_group = NAUTILUS_VIEW_CLASS(nautilus_canvas_view_parent_class)->get_action_group
(NAUTILUS_VIEW (canvas_view));
+ g_action_map_add_action_entries (G_ACTION_MAP (view_action_group),
+ canvas_view_entries,
+ G_N_ELEMENTS (canvas_view_entries),
+ canvas_view);
}
NautilusView *
diff --git a/src/nautilus-canvas-view.h b/src/nautilus-canvas-view.h
index d3884a7..e2b77ed 100644
--- a/src/nautilus-canvas-view.h
+++ b/src/nautilus-canvas-view.h
@@ -67,11 +67,4 @@ NautilusView * nautilus_canvas_view_new (NautilusWindowSlot *slot);
NautilusCanvasContainer * nautilus_canvas_view_get_canvas_container (NautilusCanvasView *view);
-void nautilus_canvas_view_action_reversed_order (NautilusCanvasView *canvas_view,
- const gboolean reversed_order);
-void nautilus_canvas_view_action_keep_aligned (NautilusCanvasView *canvas_view,
- const gboolean keep_aligned);
-void nautilus_canvas_view_action_sort (NautilusCanvasView *canvas_view,
- const gchar* action_name);
-
#endif /* NAUTILUS_CANVAS_VIEW_H */
diff --git a/src/nautilus-desktop-canvas-view.c b/src/nautilus-desktop-canvas-view.c
index c6971f5..72679e7 100644
--- a/src/nautilus-desktop-canvas-view.c
+++ b/src/nautilus-desktop-canvas-view.c
@@ -77,7 +77,7 @@ struct NautilusDesktopCanvasViewDetails
static void default_zoom_level_changed (gpointer user_data);
static void real_merge_menus (NautilusView *view);
-static void real_update_menus (NautilusView *view);
+static void real_update_right_click_menus (NautilusView *view);
static void nautilus_desktop_canvas_view_update_canvas_container_fonts (NautilusDesktopCanvasView
*view);
static void font_changed_callback (gpointer callback_data);
@@ -263,7 +263,7 @@ nautilus_desktop_canvas_view_dispose (GObject *object)
font_changed_callback,
canvas_view);
g_signal_handlers_disconnect_by_func (gnome_lockdown_preferences,
- nautilus_view_update_menus,
+ nautilus_view_update_right_click_menus,
canvas_view);
G_OBJECT_CLASS (nautilus_desktop_canvas_view_parent_class)->dispose (object);
@@ -279,7 +279,7 @@ nautilus_desktop_canvas_view_class_init (NautilusDesktopCanvasViewClass *class)
G_OBJECT_CLASS (class)->dispose = nautilus_desktop_canvas_view_dispose;
vclass->merge_menus = real_merge_menus;
- vclass->update_menus = real_update_menus;
+ vclass->update_right_click_menus = real_update_right_click_menus;
vclass->get_view_id = real_get_id;
g_type_class_add_private (class, sizeof (NautilusDesktopCanvasViewDetails));
@@ -517,7 +517,7 @@ nautilus_desktop_canvas_view_init (NautilusDesktopCanvasView *desktop_canvas_vie
g_signal_connect_swapped (gnome_lockdown_preferences,
"changed::" NAUTILUS_PREFERENCES_LOCKDOWN_COMMAND_LINE,
- G_CALLBACK (nautilus_view_update_menus),
+ G_CALLBACK (nautilus_view_update_right_click_menus),
desktop_canvas_view);
}
@@ -638,23 +638,96 @@ trash_link_is_selection (NautilusView *view)
}
static void
-real_update_menus (NautilusView *view)
+action_change_background (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ const gchar *control_center_cmd, *params;
+
+ g_assert (NAUTILUS_VIEW (user_data));
+
+ control_center_cmd = get_control_center_command (¶ms);
+ if (control_center_cmd == NULL) {
+ return;
+ }
+
+ nautilus_launch_application_from_command (gtk_widget_get_screen (GTK_WIDGET (user_data)),
+ control_center_cmd,
+ FALSE,
+ params, NULL);
+}
+
+static void
+action_empty_trash_conditional (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ nautilus_file_operations_empty_trash (GTK_WIDGET (user_data));
+}
+
+static void
+action_organize_desktop_by_name (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ nautilus_canvas_view_clean_up_by_name (NAUTILUS_CANVAS_VIEW (user_data));
+}
+
+const GActionEntry gdesktop_view_entries[] = {
+ { "empty-trash-conditional", action_empty_trash_conditional },
+ { "change-background", action_change_background },
+ { "organize-desktop-by-name", action_organize_desktop_by_name },
+};
+
+static void
+real_update_right_click_menus (NautilusView *view)
{
NautilusDesktopCanvasView *desktop_view;
NautilusCanvasContainer *canvas_container;
gboolean include_empty_trash;
char *label;
- GtkAction *action;
+ GSimpleAction *action;
int selection_count;
+ GActionGroup *view_action_group;
g_assert (NAUTILUS_IS_DESKTOP_CANVAS_VIEW (view));
- NAUTILUS_VIEW_CLASS (nautilus_desktop_canvas_view_parent_class)->update_menus (view);
+ g_print ("------------------------------------DESKTOP UPDATING MENUS\n");
+
+ NAUTILUS_VIEW_CLASS (nautilus_desktop_canvas_view_parent_class)->update_right_click_menus (view);
desktop_view = NAUTILUS_DESKTOP_CANVAS_VIEW (view);
+ view_action_group = NAUTILUS_VIEW_CLASS (nautilus_desktop_canvas_view_parent_class)->get_action_group
(view);
+
+ g_action_map_add_action_entries (G_ACTION_MAP (view_action_group),
+ gdesktop_view_entries,
+ G_N_ELEMENTS (gdesktop_view_entries),
+ view);
+
+ action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), "keep-aligned");
+ g_simple_action_set_enabled (action, TRUE);
+
+ action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), "organize-desktop-by-name");
+ g_simple_action_set_enabled (action, TRUE);
+
+ action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group), "change-background");
+ g_simple_action_set_enabled (action, TRUE);
+
+
+
+
+
+
+
+
+
+
+
/* Empty Trash */
- include_empty_trash = trash_link_is_selection (view);
+/* include_empty_trash = trash_link_is_selection (view);
action = gtk_action_group_get_action (desktop_view->details->desktop_action_group,
NAUTILUS_ACTION_EMPTY_TRASH_CONDITIONAL);
gtk_action_set_visible (action,
@@ -668,7 +741,7 @@ real_update_menus (NautilusView *view)
}
/* Stretch */
- selection_count = nautilus_view_get_selection_count (view);
+/* selection_count = nautilus_view_get_selection_count (view);
canvas_container = get_canvas_container (desktop_view);
action = gtk_action_group_get_action (desktop_view->details->desktop_action_group,
@@ -680,7 +753,7 @@ real_update_menus (NautilusView *view)
gtk_action_set_visible (action, TRUE);
/* Unstretch */
- action = gtk_action_group_get_action (desktop_view->details->desktop_action_group,
+/* action = gtk_action_group_get_action (desktop_view->details->desktop_action_group,
NAUTILUS_ACTION_UNSTRETCH);
g_object_set (action, "label",
(selection_count > 1)
@@ -690,7 +763,7 @@ real_update_menus (NautilusView *view)
gtk_action_set_sensitive (action,
canvas_container != NULL
&& nautilus_canvas_container_is_stretched (canvas_container));
- gtk_action_set_visible (action, TRUE);
+ gtk_action_set_visible (action, TRUE);*/
}
static const GtkActionEntry desktop_view_entries[] = {
diff --git a/src/nautilus-list-view-menu.xml b/src/nautilus-list-view-menu.xml
new file mode 100644
index 0000000..494fd2a
--- /dev/null
+++ b/src/nautilus-list-view-menu.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<interface>
+ <!-- interface-requires gtk+ 3.0 -->
+ <menu id="view-details">
+ <item>
+ <attribute name="label" translatable="yes">Visible Columns…</attribute>
+ <attribute name="action">win.visible-colums</attribute>
+ </item>
+ </menu>
+</interface>
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
index b361734..bb5b45a 100644
--- a/src/nautilus-list-view.c
+++ b/src/nautilus-list-view.c
@@ -3068,7 +3068,7 @@ nautilus_list_view_unmerge_menus (NautilusView *view)
}
static void
-nautilus_list_view_update_menus (NautilusView *view)
+nautilus_list_view_update_right_click_menus (NautilusView *view)
{
NautilusListView *list_view;
@@ -3079,9 +3079,25 @@ nautilus_list_view_update_menus (NautilusView *view)
return;
}
- NAUTILUS_VIEW_CLASS (nautilus_list_view_parent_class)->update_menus (view);
+ NAUTILUS_VIEW_CLASS (nautilus_list_view_parent_class)->update_right_click_menus (view);
}
+static void
+nautilus_list_view_update_toolbar_menus (NautilusView *view)
+{
+ NautilusListView *list_view;
+
+ list_view = NAUTILUS_LIST_VIEW (view);
+
+ /* don't update if the menus aren't ready */
+ if (!list_view->details->menus_ready) {
+ return;
+ }
+
+ NAUTILUS_VIEW_CLASS (nautilus_list_view_parent_class)->update_toolbar_menus (view);
+}
+
+
/* Reset sort criteria and zoom level to match defaults */
static void
nautilus_list_view_reset_to_defaults (NautilusView *view)
@@ -3146,7 +3162,8 @@ nautilus_list_view_set_zoom_level (NautilusListView *view,
"surface", column,
NULL);
- nautilus_view_update_menus (NAUTILUS_VIEW (view));
+ /* Zoom level changed, notify the toolbar zoom widget about it */ //FIXME
+ nautilus_view_update_toolbar_menus (NAUTILUS_VIEW (view));
set_up_pixbuf_size (view);
}
@@ -3600,7 +3617,8 @@ nautilus_list_view_class_init (NautilusListViewClass *class)
nautilus_view_class->remove_file = nautilus_list_view_remove_file;
nautilus_view_class->merge_menus = nautilus_list_view_merge_menus;
nautilus_view_class->unmerge_menus = nautilus_list_view_unmerge_menus;
- nautilus_view_class->update_menus = nautilus_list_view_update_menus;
+ nautilus_view_class->update_right_click_menus = nautilus_list_view_update_right_click_menus;
+ nautilus_view_class->update_toolbar_menus = nautilus_list_view_update_toolbar_menus;
nautilus_view_class->reset_to_defaults = nautilus_list_view_reset_to_defaults;
nautilus_view_class->restore_default_zoom_level = nautilus_list_view_restore_default_zoom_level;
nautilus_view_class->reveal_selection = nautilus_list_view_reveal_selection;
diff --git a/src/nautilus-main-menus.xml b/src/nautilus-main-menus.xml
index 7ef8142..0602dcb 100644
--- a/src/nautilus-main-menus.xml
+++ b/src/nautilus-main-menus.xml
@@ -21,7 +21,7 @@
<attribute name="display-hint">horizontal-buttons</attribute>
<item>
<attribute name="label" translatable="yes">Zoom Out</attribute>
- <attribute name="action">win.zoom-out</attribute>
+ <attribute name="action">view.zoom-out</attribute>
<attribute name="verb-icon">list-remove-symbolic</attribute>
</item>
<item>
@@ -30,7 +30,7 @@
</item>
<item>
<attribute name="label" translatable="yes">Zoom In</attribute>
- <attribute name="action">win.zoom-in</attribute>
+ <attribute name="action">view.zoom-in</attribute>
<attribute name="verb-icon">list-add-symbolic</attribute>
</item>
</section>
@@ -52,7 +52,7 @@
<section>
<item>
<attribute name="label" translatable="yes">Show Hidden Files</attribute>
- <attribute name="action">win.show-hidden-files</attribute>
+ <attribute name="action">view.show-hidden-files</attribute>
</item>
<item>
<attribute name="label" translatable="yes">Reload</attribute>
@@ -64,7 +64,7 @@
<section>
<item>
<attribute name="label" translatable="yes">New Folder</attribute>
- <attribute name="action">win.new-folder</attribute>
+ <attribute name="action">view.new-folder</attribute>
</item>
<item>
<attribute name="label" translatable="yes">New Tab</attribute>
@@ -74,17 +74,17 @@
<section>
<item>
<attribute name="label" translatable="yes">Undo</attribute>
- <attribute name="action">win.undo</attribute>
+ <attribute name="action">view.undo</attribute>
</item>
<item>
<attribute name="label" translatable="yes">Redo</attribute>
- <attribute name="action">win.redo</attribute>
+ <attribute name="action">view.redo</attribute>
</item>
</section>
<section>
<item>
<attribute name="label" translatable="yes">Select All</attribute>
- <attribute name="action">win.select-all</attribute>
+ <attribute name="action">view.select-all</attribute>
</item>
<item>
<attribute name="label" translatable="yes">Enter Location</attribute>
@@ -98,4 +98,79 @@
</item>
</section>
</menu>
+ <menu id="background-menu">
+ <section>
+ <attribute name="id">templates-menu</attribute>
+ </section>
+ <item>
+ <attribute name="label" translatable="yes">New Folder</attribute>
+ <attribute name="action">view.new-folder</attribute>
+ </item>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Paste</attribute>
+ <attribute name="action">view.paste</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Mount Volume</attribute>
+ <attribute name="action">view.mount-volume</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Unmount Volume</attribute>
+ <attribute name="action">view.unmount-volume</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Eject Volume</attribute>
+ <attribute name="action">view.eject-volume</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Stop Volume</attribute>
+ <attribute name="action">view.stop-volume</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Poll</attribute>
+ <attribute name="action">view.poll</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Select All</attribute>
+ <attribute name="action">view.select-all</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Properties</attribute>
+ <attribute name="action">view.properties</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Keep aligned</attribute>
+ <attribute name="action">view.keep-aligned</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ </item>
+ <item>
+ <attribute name="label" translatable="yes">Organize Desktop by Name</attribute>
+ <attribute name="action">view.organize-desktop-by-name</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ </item>
+ </section>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Change Background</attribute>
+ <attribute name="action">view.change-background</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ </item>
+ </section>
+ </menu>
+ <menu id="selection-menu">
+ </menu>
</interface>
\ No newline at end of file
diff --git a/src/nautilus-sort-menu.xml b/src/nautilus-sort-menu.xml
index aa0f84f..a67d849 100644
--- a/src/nautilus-sort-menu.xml
+++ b/src/nautilus-sort-menu.xml
@@ -5,36 +5,36 @@
<item>
<attribute name="id">sort-label-item</attribute>
<attribute name="label" translatable="yes">Sort</attribute>
- <attribute name="action">win.dummy</attribute>
+ <attribute name="action">view.dummy</attribute>
</item>
<item>
<attribute name="id">sort-by-name-item</attribute>
<attribute name="label" translatable="yes">Name</attribute>
- <attribute name="action">win.sort</attribute>
+ <attribute name="action">view.sort</attribute>
<attribute name="target">sort-by-name</attribute>
</item>
<item>
<attribute name="id">sort-by-size-item</attribute>
<attribute name="label" translatable="yes">Size</attribute>
- <attribute name="action">win.sort</attribute>
+ <attribute name="action">view.sort</attribute>
<attribute name="target">sort-by-size</attribute>
</item>
<item>
<attribute name="id">sort-by-type-item</attribute>
<attribute name="label" translatable="yes">Type</attribute>
- <attribute name="action">win.sort</attribute>
+ <attribute name="action">view.sort</attribute>
<attribute name="target">sort-by-type</attribute>
</item>
<item>
<attribute name="id">sort-by-modification-date-item</attribute>
<attribute name="label" translatable="yes">Modification Date</attribute>
- <attribute name="action">win.sort</attribute>
+ <attribute name="action">view.sort</attribute>
<attribute name="target">sort-by-modification-date</attribute>
</item>
<item>
<attribute name="id">sort-by-access-date-item</attribute>
<attribute name="label" translatable="yes">Access Date</attribute>
- <attribute name="action">win.sort</attribute>
+ <attribute name="action">view.sort</attribute>
<attribute name="target">sort-by-access-date</attribute>
</item>
</menu>
diff --git a/src/nautilus-toolbar-view-menu.xml b/src/nautilus-toolbar-view-menu.xml
new file mode 100644
index 0000000..2ece4c9
--- /dev/null
+++ b/src/nautilus-toolbar-view-menu.xml
@@ -0,0 +1,145 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <object class ="GtkPopoverMenu" id="view-menu-widget">
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">9</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkBox" id="views_box">
+ <property name="visible">True</property>
+ <property name="orientation">horizontal</property>
+ <property name="width_request">200</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkModelButton" id="grid_button">
+ <property name="visible">True</property>
+ <property name="text">Grid</property>
+ <property name="action-name">win.view-mode</property>
+ <property name="action-target">'grid'</property>
+ <property name="iconic">True</property>
+ <property name="centered">True</property>
+ <property name="icon">icon-grid</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="list_button">
+ <property name="visible">True</property>
+ <property name="text">List</property>
+ <property name="action-name">win.view-mode</property>
+ <property name="action-target">'list'</property>
+ <property name="iconic">True</property>
+ <property name="centered">True</property>
+ <property name="icon">icon-list</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="zoom_level_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="draw_value">False</property>
+ <property name="adjustment">zoom_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="restrict_to_fill_level">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="sort-menu">
+ <property name="visible">False</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="sort_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Sort</property>
+ <style>
+ <class name="separator"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="sort_name">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Name</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="sort_size">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">size</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="sort_type">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">type</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="sort_date">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">date</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GThemedIcon" id="icon-grid">
+ <property name="name">view-grid-symbolic</property>
+ </object>
+ <object class="GThemedIcon" id="icon-list">
+ <property name="name">view-list-symbolic</property>
+ </object>
+ <object class="GtkAdjustment" id="zoom_adjustment">
+ <property name="lower">1</property>
+ <property name="upper">3</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">1</property>
+ <property name="value">2</property>
+ </object>
+</interface>
\ No newline at end of file
diff --git a/src/nautilus-toolbar.c b/src/nautilus-toolbar.c
index 82d22f0..a212375 100644
--- a/src/nautilus-toolbar.c
+++ b/src/nautilus-toolbar.c
@@ -56,7 +56,9 @@ struct _NautilusToolbarPrivate {
GtkWidget *view_button;
GtkWidget *action_button;
- GMenu *view_menu;
+
+ GtkWidget *view_menu_widget;
+ GtkWidget *sort_menu;
GMenu *action_menu;
};
@@ -406,6 +408,7 @@ gear_menu_key_press (GtkWidget *widget,
static void
nautilus_toolbar_init (NautilusToolbar *self)
{
+ GtkBuilder *builder;
self->priv = nautilus_toolbar_get_instance_private (self);
gtk_widget_init_template (GTK_WIDGET (self));
@@ -417,6 +420,12 @@ nautilus_toolbar_init (NautilusToolbar *self)
gtk_container_add (GTK_CONTAINER (self->priv->location_entry_container),
self->priv->location_entry);
+ builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-toolbar-view-menu.xml");
+ self->priv->view_menu_widget = g_object_ref (GTK_WIDGET (gtk_builder_get_object (builder,
"view-menu-widget")));
+ self->priv->sort_menu = g_object_ref (GTK_WIDGET (gtk_builder_get_object (builder, "sort-menu")));
+ gtk_menu_button_set_popover (GTK_MENU_BUTTON (self->priv->view_button), self->priv->view_menu_widget);
+ g_object_unref (builder);
+
gtk_widget_show_all (GTK_WIDGET (self));
toolbar_update_appearance (self);
@@ -429,6 +438,7 @@ nautilus_toolbar_get_property (GObject *object,
GParamSpec *pspec)
{
NautilusToolbar *self = NAUTILUS_TOOLBAR (object);
+ GtkBuilder *builder;
switch (property_id) {
case PROP_SHOW_LOCATION_ENTRY:
@@ -510,11 +520,18 @@ nautilus_toolbar_class_init (NautilusToolbarClass *klass)
gtk_widget_class_bind_template_child_private (widget_class, NautilusToolbar,
location_entry_container);
}
+GtkWidget *
+nautilus_toolbar_get_sort_menu (NautilusToolbar *self)
+{
+ return self->priv->sort_menu;
+}
+
void
nautilus_toolbar_update_menus (NautilusToolbar *self)
{
- gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (self->priv->view_button),
- G_MENU_MODEL (self->priv->view_menu));
+ //FIXME
+ /*gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (self->priv->view_button),
+ G_MENU_MODEL (self->priv->view_menu));*/
gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (self->priv->action_button),
G_MENU_MODEL (self->priv->action_menu));
}
@@ -522,22 +539,33 @@ nautilus_toolbar_update_menus (NautilusToolbar *self)
void
nautilus_toolbar_reset_menus (NautilusToolbar *self)
{
- if (self->priv->view_menu != NULL)
- g_object_unref (self->priv->view_menu);
+ NautilusWindowSlot *slot;
+ NautilusView *view;
+ GActionGroup *view_action_group;
+
if (self->priv->action_menu != NULL)
g_object_unref (self->priv->action_menu);
-
+
GtkBuilder *builder;
builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-main-menus.xml");
- self->priv->view_menu = g_object_ref (G_MENU (gtk_builder_get_object (builder, "view-menu")));
self->priv->action_menu = g_object_ref (G_MENU (gtk_builder_get_object (builder, "action-menu")));
g_object_unref (builder);
+
+ /* Map view actions to the view menu and action menu */
+ slot = nautilus_window_get_active_slot (self->priv->window);
+ view = nautilus_window_slot_get_current_view (slot);
+ view_action_group = nautilus_view_get_action_group (view);
+ gtk_widget_insert_action_group (GTK_WIDGET (self),
+ "view",
+ G_ACTION_GROUP (view_action_group));
+ //gtk_widget_show_all (self->priv->view_menu_widget);
+ gtk_widget_hide (self->priv->sort_menu);
}
-GMenu *
-nautilus_toolbar_get_view_menu (NautilusToolbar *self)
+GtkWidget *
+nautilus_toolbar_get_view_menu_widget (NautilusToolbar *self)
{
- return self->priv->view_menu;
+ return self->priv->view_menu_widget;
}
GMenu *
diff --git a/src/nautilus-toolbar.h b/src/nautilus-toolbar.h
index 09b95ff..9fce9c1 100644
--- a/src/nautilus-toolbar.h
+++ b/src/nautilus-toolbar.h
@@ -75,7 +75,8 @@ void nautilus_toolbar_set_show_location_entry (NautilusToolbar *self,
void nautilus_toolbar_update_menus (NautilusToolbar *self);
void nautilus_toolbar_reset_menus (NautilusToolbar *self);
-GMenu * nautilus_toolbar_get_view_menu (NautilusToolbar *self);
+GtkWidget * nautilus_toolbar_get_view_menu (NautilusToolbar *self);
+GtkWidget * nautilus_toolbar_get_sort_menu (NautilusToolbar *self);
GMenu * nautilus_toolbar_get_action_menu (NautilusToolbar *self);
void nautilus_toolbar_sync_navigation_buttons (NautilusToolbar *self);
diff --git a/src/nautilus-view.c b/src/nautilus-view.c
index 53ed6ab..d37ef35 100644
--- a/src/nautilus-view.c
+++ b/src/nautilus-view.c
@@ -189,7 +189,7 @@ struct NautilusViewDetails
guint extensions_menu_merge_id;
guint display_selection_idle_id;
- guint update_menus_timeout_id;
+ guint update_right_click_menus_timeout_id;
guint update_status_idle_id;
guint reveal_selection_idle_id;
@@ -226,7 +226,6 @@ struct NautilusViewDetails
* after it finishes loading the directory and its view.
*/
gboolean loading;
- gboolean menu_states_untrustworthy;
gboolean scripts_invalid;
gboolean templates_invalid;
gboolean templates_present;
@@ -261,6 +260,11 @@ struct NautilusViewDetails
GList *subdirectory_list;
GdkPoint context_menu_position;
+
+ GMenu *selection_menu;
+ GMenu *background_menu;
+
+ GActionGroup *view_action_group;
};
typedef struct {
@@ -286,8 +290,8 @@ static void clipboard_changed_callback (NautilusClipboar
NautilusView *view);
static void open_one_in_new_window (gpointer data,
gpointer callback_data);
-static void schedule_update_menus (NautilusView *view);
-static void remove_update_menus_timeout_callback (NautilusView *view);
+static void schedule_update_right_click_menus (NautilusView *view);
+static void remove_update_right_click_menus_timeout_callback (NautilusView *view);
static void schedule_update_status (NautilusView *view);
static void remove_update_status_idle_callback (NautilusView *view);
static void reset_update_interval (NautilusView *view);
@@ -311,6 +315,34 @@ static gboolean file_list_all_are_folders (GList *file_list
static void unschedule_pop_up_location_context_menu (NautilusView *view);
+static void action_new_folder (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data);
+static void action_new_tab (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data);
+static void action_undo (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data);
+static void action_redo (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data);
+static void action_select_all (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data);
+static void action_zoom_in (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data);
+static void action_zoom_out (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data);
+static void action_zoom_normal (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data);
+static void action_show_hidden_files (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data);
+
G_DEFINE_TYPE (NautilusView, nautilus_view, GTK_TYPE_SCROLLED_WINDOW);
/* virtual methods (public and non-public) */
@@ -334,7 +366,8 @@ nautilus_view_unmerge_menus (NautilusView *view)
{
g_return_if_fail (NAUTILUS_IS_VIEW (view));
- NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->unmerge_menus (view);}
+ NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->unmerge_menus (view);
+}
static char *
real_get_backing_uri (NautilusView *view)
@@ -715,13 +748,13 @@ nautilus_view_get_selection (NautilusView *view)
}
/**
- * nautilus_view_update_menus:
+ * nautilus_view_update_right_click_menus:
*
* Update the sensitivity and wording of dynamic menu items.
* @view: NautilusView in question.
*/
void
-nautilus_view_update_menus (NautilusView *view)
+nautilus_view_update_right_click_menus_old (NautilusView *view)
{
g_return_if_fail (NAUTILUS_IS_VIEW (view));
@@ -729,9 +762,7 @@ nautilus_view_update_menus (NautilusView *view)
return;
}
- NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->update_menus (view);
-
- view->details->menu_states_untrustworthy = FALSE;
+ NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->update_right_click_menus (view);
}
typedef struct {
@@ -904,7 +935,7 @@ create_templates_parameters_free (CreateTemplateParameters *parameters)
g_free (parameters);
}
-static NautilusWindow *
+NautilusWindow *
nautilus_view_get_window (NautilusView *view)
{
return nautilus_window_slot_get_window (view->details->slot);
@@ -977,15 +1008,6 @@ selection_contains_one_item_in_menu_callback (NautilusView *view, GList *selecti
return TRUE;
}
- /* If we've requested a menu update that hasn't yet occurred, then
- * the mismatch here doesn't surprise us, and we won't complain.
- * Otherwise, we will complain.
- */
- if (!view->details->menu_states_untrustworthy) {
- g_warning ("Expected one selected item, found %'d. No action will be performed.",
- g_list_length (selection));
- }
-
return FALSE;
}
@@ -996,14 +1018,6 @@ selection_not_empty_in_menu_callback (NautilusView *view, GList *selection)
return TRUE;
}
- /* If we've requested a menu update that hasn't yet occurred, then
- * the mismatch here doesn't surprise us, and we won't complain.
- * Otherwise, we will complain.
- */
- if (!view->details->menu_states_untrustworthy) {
- g_warning ("Empty selection found when selection was expected. No action will be performed.");
- }
-
return FALSE;
}
@@ -1556,7 +1570,7 @@ action_save_search_callback (GtkAction *action,
nautilus_search_directory_save_search (search);
/* Save search is disabled */
- schedule_update_menus (directory_view);
+ schedule_update_right_click_menus (directory_view);
}
}
@@ -2189,6 +2203,22 @@ all_selected_items_in_trash (GList *selection)
}
static void
+nautilus_view_set_show_hidden_files (NautilusView *view,
+ gboolean show_hidden)
+{
+ if (view->details->ignore_hidden_file_preferences) {
+ return;
+ }
+
+ if (show_hidden != view->details->show_hidden_files) {
+ view->details->show_hidden_files = show_hidden;
+ if (view->details->model != NULL) {
+ load_directory (view, view->details->model);
+ }
+ }
+}
+
+static void
action_show_hidden_files_callback (GtkAction *action,
gpointer callback_data)
{
@@ -2196,7 +2226,7 @@ action_show_hidden_files_callback (GtkAction *action,
view = NAUTILUS_VIEW (callback_data);
- nautilus_view_action_show_hidden_files
+ nautilus_view_set_show_hidden_files
(view, gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)));
}
@@ -2244,7 +2274,7 @@ show_hidden_files_changed_callback (gpointer callback_data)
preference_value =
g_settings_get_boolean (gtk_filechooser_preferences, NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES);
- nautilus_view_action_show_hidden_files (view, preference_value);
+ nautilus_view_set_show_hidden_files (view, preference_value);
}
static gboolean
@@ -2329,7 +2359,7 @@ scripts_added_or_changed_callback (NautilusDirectory *directory,
view->details->scripts_invalid = TRUE;
if (view->details->active) {
- schedule_update_menus (view);
+ schedule_update_right_click_menus (view);
}
}
@@ -2344,7 +2374,7 @@ templates_added_or_changed_callback (NautilusDirectory *directory,
view->details->templates_invalid = TRUE;
if (view->details->active) {
- schedule_update_menus (view);
+ schedule_update_right_click_menus (view);
}
}
@@ -2444,8 +2474,11 @@ slot_active (NautilusWindowSlot *slot,
g_print ("slot active\n");
nautilus_view_merge_menus (view);
- nautilus_window_update_menus (nautilus_view_get_window (view));
- schedule_update_menus (view);
+
+ nautilus_view_update_right_click_menus(view);
+ nautilus_view_update_toolbar_menus (view);
+
+ schedule_update_right_click_menus (view);
}
static void
@@ -2460,7 +2493,7 @@ slot_inactive (NautilusWindowSlot *slot,
view->details->active = FALSE;
nautilus_view_unmerge_menus (view);
- remove_update_menus_timeout_callback (view);
+ remove_update_right_click_menus_timeout_callback (view);
}
void
@@ -2622,100 +2655,6 @@ have_bulk_rename_tool ()
}
static void
-nautilus_view_init (NautilusView *view)
-{
- AtkObject *atk_object;
- NautilusDirectory *scripts_directory;
- NautilusDirectory *templates_directory;
- char *templates_uri;
-
- nautilus_profile_start (NULL);
-
- view->details = G_TYPE_INSTANCE_GET_PRIVATE (view, NAUTILUS_TYPE_VIEW,
- NautilusViewDetails);
-
- /* Default to true; desktop-icon-view sets to false */
- view->details->show_foreign_files = TRUE;
-
- view->details->non_ready_files =
- g_hash_table_new_full (file_and_directory_hash,
- file_and_directory_equal,
- (GDestroyNotify)file_and_directory_free,
- NULL);
-
- gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (view),
- GTK_POLICY_AUTOMATIC,
- GTK_POLICY_AUTOMATIC);
- gtk_scrolled_window_set_hadjustment (GTK_SCROLLED_WINDOW (view), NULL);
- gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (view), NULL);
-
- gtk_style_context_set_junction_sides (gtk_widget_get_style_context (GTK_WIDGET (view)),
- GTK_JUNCTION_TOP | GTK_JUNCTION_LEFT);
-
- if (set_up_scripts_directory_global ()) {
- scripts_directory = nautilus_directory_get_by_uri (scripts_directory_uri);
- add_directory_to_scripts_directory_list (view, scripts_directory);
- nautilus_directory_unref (scripts_directory);
- } else {
- g_warning ("Ignoring scripts directory, it may be a broken link\n");
- }
-
- if (nautilus_should_use_templates_directory ()) {
- templates_uri = nautilus_get_templates_directory_uri ();
- templates_directory = nautilus_directory_get_by_uri (templates_uri);
- g_free (templates_uri);
- add_directory_to_templates_directory_list (view, templates_directory);
- nautilus_directory_unref (templates_directory);
- }
- update_templates_directory (view);
-
- view->details->sort_directories_first =
- g_settings_get_boolean (nautilus_preferences, NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST);
- view->details->show_hidden_files =
- g_settings_get_boolean (gtk_filechooser_preferences, NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES);
-
- g_signal_connect_object (nautilus_trash_monitor_get (), "trash-state-changed",
- G_CALLBACK (nautilus_view_trash_state_changed_callback), view, 0);
-
- /* React to clipboard changes */
- g_signal_connect_object (nautilus_clipboard_monitor_get (), "clipboard-changed",
- G_CALLBACK (clipboard_changed_callback), view, 0);
-
- /* Register to menu provider extension signal managing menu updates */
- g_signal_connect_object (nautilus_signaller_get_current (), "popup-menu-changed",
- G_CALLBACK (schedule_update_menus), view, G_CONNECT_SWAPPED);
-
- gtk_widget_show (GTK_WIDGET (view));
-
- g_signal_connect_swapped (nautilus_preferences,
- "changed::" NAUTILUS_PREFERENCES_ENABLE_DELETE,
- G_CALLBACK (schedule_update_menus), view);
- g_signal_connect_swapped (nautilus_preferences,
- "changed::" NAUTILUS_PREFERENCES_CLICK_POLICY,
- G_CALLBACK (click_policy_changed_callback),
- view);
- g_signal_connect_swapped (nautilus_preferences,
- "changed::" NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST,
- G_CALLBACK (sort_directories_first_changed_callback), view);
- g_signal_connect_swapped (gtk_filechooser_preferences,
- "changed::" NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES,
- G_CALLBACK (show_hidden_files_changed_callback), view);
- g_signal_connect_swapped (gnome_lockdown_preferences,
- "changed::" NAUTILUS_PREFERENCES_LOCKDOWN_COMMAND_LINE,
- G_CALLBACK (schedule_update_menus), view);
-
- g_signal_connect_object (nautilus_file_undo_manager_get (), "undo-changed",
- G_CALLBACK (undo_manager_changed_cb), view, 0);
-
- /* Accessibility */
- atk_object = gtk_widget_get_accessible (GTK_WIDGET (view));
- atk_object_set_name (atk_object, _("Content View"));
- atk_object_set_description (atk_object, _("View of the current folder"));
-
- nautilus_profile_end (NULL);
-}
-
-static void
real_unmerge_menus (NautilusView *view)
{
GtkUIManager *ui_manager;
@@ -2770,7 +2709,7 @@ nautilus_view_destroy (GtkWidget *object)
view->details->subdirectory_list->data);
}
- remove_update_menus_timeout_callback (view);
+ remove_update_right_click_menus_timeout_callback (view);
remove_update_status_idle_callback (view);
if (view->details->display_selection_idle_id != 0) {
@@ -2812,7 +2751,7 @@ nautilus_view_finalize (GObject *object)
view = NAUTILUS_VIEW (object);
g_signal_handlers_disconnect_by_func (nautilus_preferences,
- schedule_update_menus, view);
+ schedule_update_right_click_menus, view);
g_signal_handlers_disconnect_by_func (nautilus_preferences,
click_policy_changed_callback, view);
g_signal_handlers_disconnect_by_func (nautilus_preferences,
@@ -2823,7 +2762,7 @@ nautilus_view_finalize (GObject *object)
nautilus_view_display_selection_info, view);
g_signal_handlers_disconnect_by_func (gnome_lockdown_preferences,
- schedule_update_menus, view);
+ schedule_update_right_click_menus, view);
unschedule_pop_up_location_context_menu (view);
if (view->details->location_popup_event != NULL) {
@@ -3065,7 +3004,8 @@ done_loading (NautilusView *view,
* is no NautilusWindow any more.
*/
if (window != NULL) {
- schedule_update_menus (view);
+ g_print ("done_loading\n");
+ schedule_update_right_click_menus (view);
schedule_update_status (view);
reset_update_interval (view);
@@ -3317,7 +3257,7 @@ copy_move_done_callback (GHashTable *debuting_files,
G_CONNECT_AFTER);
}
/* Schedule menu update for undo items */
- schedule_update_menus (directory_view);
+ schedule_update_right_click_menus (directory_view);
}
copy_move_done_data_free (copy_move_done_data);
@@ -3578,27 +3518,25 @@ display_selection_info_idle_callback (gpointer data)
}
static void
-remove_update_menus_timeout_callback (NautilusView *view)
+remove_update_right_click_menus_timeout_callback (NautilusView *view)
{
- if (view->details->update_menus_timeout_id != 0) {
- g_source_remove (view->details->update_menus_timeout_id);
- view->details->update_menus_timeout_id = 0;
+ if (view->details->update_right_click_menus_timeout_id != 0) {
+ g_source_remove (view->details->update_right_click_menus_timeout_id);
+ view->details->update_right_click_menus_timeout_id = 0;
}
}
static void
-update_menus_if_pending (NautilusView *view)
+update_right_click_menus_if_pending (NautilusView *view)
{
- if (!view->details->menu_states_untrustworthy) {
- return;
- }
+ remove_update_right_click_menus_timeout_callback (view);
+ g_print ("update_menus if pending \n");
- remove_update_menus_timeout_callback (view);
- nautilus_view_update_menus (view);
+ nautilus_view_update_right_click_menus(view);
}
static gboolean
-update_menus_timeout_callback (gpointer data)
+update_right_click_menus_timeout_callback (gpointer data)
{
NautilusView *view;
@@ -3606,8 +3544,9 @@ update_menus_timeout_callback (gpointer data)
g_object_ref (G_OBJECT (view));
- view->details->update_menus_timeout_id = 0;
- nautilus_view_update_menus (view);
+ view->details->update_right_click_menus_timeout_id = 0;
+ g_print("update_menus_timeout_callback\n");
+ nautilus_view_update_right_click_menus(view);
g_object_unref (G_OBJECT (view));
@@ -3829,7 +3768,8 @@ files_changed_callback (NautilusDirectory *directory,
/* A change in MIME type could affect the Open with menu, for
* one thing, so we need to update menus when files change.
*/
- schedule_update_menus (view);
+ g_print ("files_changed\n");
+ schedule_update_right_click_menus (view);
}
static void
@@ -4404,7 +4344,7 @@ get_x_content_async_callback (const char **content,
view = NAUTILUS_VIEW (user_data);
if (view->details->slot != NULL) {
- schedule_update_menus (view);
+ schedule_update_right_click_menus (view);
}
g_object_unref (view);
}
@@ -7086,42 +7026,88 @@ nautilus_view_get_show_hidden_files (NautilusView *view)
return view->details->show_hidden_files;
}
-void
-nautilus_view_action_show_hidden_files (NautilusView *view,
- gboolean show_hidden)
+static void
+action_show_hidden_files (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
{
- if (view->details->ignore_hidden_file_preferences) {
- return;
- }
+ gboolean show_hidden;
+ NautilusView *view;
- if (show_hidden != view->details->show_hidden_files) {
- view->details->show_hidden_files = show_hidden;
- if (view->details->model != NULL) {
- load_directory (view, view->details->model);
- }
- }
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+ show_hidden = g_variant_get_boolean (state);
+
+ nautilus_view_set_show_hidden_files (view, show_hidden);
+
+ g_simple_action_set_state (action, state);
}
-void
-nautilus_view_action_new_folder (NautilusView *view)
+static void
+action_new_folder (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
{
- g_assert (NAUTILUS_IS_VIEW (view));
+ NautilusView *view;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
nautilus_view_new_folder (view, FALSE);
}
-void
-nautilus_view_action_new_tab (NautilusView *view)
+static void
+action_select_all (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusView *view;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+
+ nautilus_view_select_all (view);
+}
+
+static void
+action_paste_files (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusView *view;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+
+ g_object_ref (view);
+ gtk_clipboard_request_contents (nautilus_clipboard_get (GTK_WIDGET (view)),
+ copied_files_atom,
+ paste_clipboard_received_callback,
+ view);
+}
+
+
+static void
+action_new_tab (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
{
GList *selection;
GtkWindow *window;
- selection = nautilus_view_get_selection (view);
+ g_assert (NAUTILUS_IS_VIEW (user_data));
- window = nautilus_view_get_containing_window (view);
+
+ selection = nautilus_view_get_selection (user_data);
+
+ window = nautilus_view_get_containing_window (user_data);
if (nautilus_view_confirm_multiple (window, g_list_length (selection), TRUE)) {
- nautilus_view_activate_files (view,
+ nautilus_view_activate_files (user_data,
selection,
NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB,
FALSE);
@@ -7130,26 +7116,80 @@ nautilus_view_action_new_tab (NautilusView *view)
nautilus_file_list_free (selection);
}
-void
-nautilus_view_action_undo (NautilusView *view)
+static void
+action_undo (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
{
- real_action_undo (view);
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ real_action_undo (user_data);
}
-void
-nautilus_view_action_redo (NautilusView *view)
+static void
+action_redo (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
{
- real_action_redo (view);
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ real_action_redo (user_data);
}
-void
-nautilus_view_action_select_all (NautilusView *view)
+static void
+action_zoom_in (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
{
- g_assert (NAUTILUS_IS_VIEW (view));
+ NautilusView *view;
- nautilus_view_select_all (view);
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+
+ nautilus_view_bump_zoom_level (view, 1);
+}
+
+static void
+action_zoom_out (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusView *view;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+
+ nautilus_view_bump_zoom_level (view, -1);
+}
+
+static void
+action_zoom_normal (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusView *view;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+
+ nautilus_view_restore_default_zoom_level (view);
}
+const GActionEntry view_entries[] = {
+ { "new-folder", action_new_folder },
+ { "select-all", action_select_all },
+ { "paste", action_paste_files },
+ { "zoom-in", action_zoom_in },
+ { "zoom-out", action_zoom_out },
+ { "zoom-normal", action_zoom_normal },
+ { "undo", action_undo },
+ { "redo", action_redo },
+ { "show-hidden-files", NULL, NULL, "true", action_show_hidden_files },
+};
+
static const GtkActionEntry directory_view_entries[] = {
/* name, stock id, label */ { NAUTILUS_ACTION_NEW_DOCUMENTS, "document-new", N_("New _Document") },
/* name, stock id, label */ { NAUTILUS_ACTION_OPEN_WITH, NULL, N_("Open Wit_h"),
@@ -7459,20 +7499,6 @@ pre_activate (NautilusView *view,
}
}
-void
-nautilus_view_update_view_menu (NautilusView *view)
-{
- g_assert(NAUTILUS_IS_VIEW (view));
-
- NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->update_view_menu (view);
-}
-
-static void
-real_update_view_menu (NautilusView *view)
-{
- g_print("real_update_view_menu \n");
-}
-
static void
real_merge_menus (NautilusView *view)
{
@@ -8451,7 +8477,7 @@ can_trash_all (GList *files)
}
static void
-real_update_menus (NautilusView *view)
+real_update_menus_old (NautilusView *view)
{
GList *selection, *l;
gint selection_count;
@@ -8849,6 +8875,95 @@ real_update_menus (NautilusView *view)
gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), view->details->show_hidden_files);
}
+GActionGroup *
+nautilus_view_get_action_group (NautilusView *view)
+{
+ g_assert (NAUTILUS_IS_VIEW (view));
+
+ return view->details->view_action_group;
+}
+
+
+static void
+real_update_right_click_menus (NautilusView *view)
+{
+ g_print ("view real_update_right_click_menus\n");
+ if (view->details->background_menu != NULL)
+ g_object_unref (view->details->background_menu);
+ if (view->details->selection_menu != NULL)
+ g_object_unref (view->details->selection_menu);
+
+ GtkBuilder *builder;
+ builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-main-menus.xml");
+ view->details->background_menu = g_object_ref (G_MENU (gtk_builder_get_object (builder,
"background-menu")));
+ view->details->selection_menu = g_object_ref (G_MENU (gtk_builder_get_object (builder,
"selection-menu")));
+ g_object_unref (builder);
+}
+
+static void
+real_update_toolbar_menus (NautilusView *view)
+{
+ //nautilus_window_reset_toolbar_menus (nautilus_view_get_window (view));
+ //nautilus_window_update_toolbar_menus (nautilus_view_get_window (view));
+ g_print ("view real_update_toolbar_menus\n");
+}
+
+void
+nautilus_view_update_right_click_menus (NautilusView *view)
+{
+ g_assert(NAUTILUS_IS_VIEW (view));
+
+ NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->update_right_click_menus (view);
+}
+
+void
+nautilus_view_update_toolbar_menus (NautilusView *view)
+{
+ g_assert(NAUTILUS_IS_VIEW (view));
+
+ NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->update_toolbar_menus (view);
+}
+
+
+static void
+create_right_click_menu (NautilusView *view,
+ GMenu *menu,
+ GdkEventButton *event)
+{
+ GtkWidget *gtk_menu;
+
+ int button;
+
+ g_return_if_fail (G_IS_MENU (menu));
+
+ gtk_menu = gtk_menu_new_from_model (G_MENU_MODEL (menu));
+ gtk_menu_attach_to_widget (GTK_MENU (gtk_menu), GTK_WIDGET (view), NULL);
+ /* The event button needs to be 0 if we're popping up this menu from
+ * a button release, else a 2nd click outside the menu with any button
+ * other than the one that invoked the menu will be ignored (instead
+ * of dismissing the menu). This is a subtle fragility of the GTK menu code.
+ */
+ if (event) {
+ button = event->type == GDK_BUTTON_RELEASE
+ ? 0
+ : event->button;
+ } else {
+ button = 0;
+ }
+
+ gtk_menu_popup (GTK_MENU (gtk_menu), /* menu */
+ NULL, /* parent_menu_shell */
+ NULL, /* parent_menu_item */
+ NULL, /* popup_position_func */
+ NULL, /* popup_position_data */
+ button, /* button */
+ event ? event->time : gtk_get_current_event_time ()); /* activate_time */
+
+ g_object_ref_sink (gtk_menu);
+ g_object_unref (gtk_menu);
+}
+
+
/**
* nautilus_view_pop_up_selection_context_menu
*
@@ -8868,13 +8983,11 @@ nautilus_view_pop_up_selection_context_menu (NautilusView *view,
/* Make the context menu items not flash as they update to proper disabled,
* etc. states by forcing menus to update now.
*/
- update_menus_if_pending (view);
+ update_right_click_menus_if_pending (view);
update_context_menu_position_from_event (view, event);
- eel_pop_up_context_menu (create_popup_menu
- (view, NAUTILUS_VIEW_POPUP_PATH_SELECTION),
- event);
+ create_right_click_menu (view, view->details->selection_menu, event);
}
/**
@@ -8895,14 +9008,11 @@ nautilus_view_pop_up_background_context_menu (NautilusView *view,
/* Make the context menu items not flash as they update to proper disabled,
* etc. states by forcing menus to update now.
*/
- update_menus_if_pending (view);
+ update_right_click_menus_if_pending (view);
update_context_menu_position_from_event (view, event);
-
- eel_pop_up_context_menu (create_popup_menu
- (view, NAUTILUS_VIEW_POPUP_PATH_BACKGROUND),
- event);
+ create_right_click_menu (view, view->details->background_menu, event);
}
static void
@@ -9008,7 +9118,7 @@ nautilus_view_pop_up_location_context_menu (NautilusView *view,
}
static void
-schedule_update_menus (NautilusView *view)
+schedule_update_right_click_menus (NautilusView *view)
{
g_assert (NAUTILUS_IS_VIEW (view));
@@ -9020,12 +9130,10 @@ schedule_update_menus (NautilusView *view)
return;
}
- view->details->menu_states_untrustworthy = TRUE;
-
/* Schedule a menu update with the current update interval */
- if (view->details->update_menus_timeout_id == 0) {
- view->details->update_menus_timeout_id
- = g_timeout_add (view->details->update_interval, update_menus_timeout_callback, view);
+ if (view->details->update_right_click_menus_timeout_id == 0) {
+ view->details->update_right_click_menus_timeout_id
+ = g_timeout_add (view->details->update_interval,
update_right_click_menus_timeout_callback, view);
}
}
@@ -9111,7 +9219,8 @@ nautilus_view_notify_selection_changed (NautilusView *view)
*/
/* Schedule an update of menu item states to match selection */
- schedule_update_menus (view);
+ g_print ("selection_changed\n");
+ schedule_update_right_click_menus (view);
}
}
@@ -9122,7 +9231,8 @@ file_changed_callback (NautilusFile *file, gpointer callback_data)
schedule_changes (view);
- schedule_update_menus (view);
+ g_print ("file_changed\n");
+ schedule_update_right_click_menus (view);
schedule_update_status (view);
}
@@ -9157,7 +9267,8 @@ load_directory (NautilusView *view,
* location, so they won't have any false lingering knowledge
* of old selection.
*/
- schedule_update_menus (view);
+ g_print ("load_directory\n");
+ schedule_update_right_click_menus (view);
while (view->details->subdirectory_list != NULL) {
nautilus_view_remove_subdirectory (view,
@@ -9589,7 +9700,7 @@ nautilus_view_trash_state_changed_callback (NautilusTrashMonitor *trash_monitor,
view = (NautilusView *) callback_data;
g_assert (NAUTILUS_IS_VIEW (view));
- schedule_update_menus (view);
+ schedule_update_right_click_menus (view);
}
void
@@ -9756,12 +9867,12 @@ nautilus_view_parent_set (GtkWidget *widget,
nautilus_view_merge_menus (view);
g_print("parent set \n");
- nautilus_window_update_menus (nautilus_view_get_window (view));
- schedule_update_menus (view);
+ nautilus_view_update_right_click_menus(view);
+ nautilus_view_update_toolbar_menus (view);
}
} else {
nautilus_view_unmerge_menus (view);
- remove_update_menus_timeout_callback (view);
+ remove_update_right_click_menus_timeout_callback (view);
}
}
@@ -9896,10 +10007,11 @@ nautilus_view_class_init (NautilusViewClass *klass)
klass->merge_menus = real_merge_menus;
klass->unmerge_menus = real_unmerge_menus;
klass->get_window = nautilus_view_get_window;
- klass->update_menus = real_update_menus;
+ klass->get_action_group = nautilus_view_get_action_group;
+ klass->update_right_click_menus = real_update_right_click_menus;
+ klass->update_toolbar_menus = real_update_toolbar_menus;
klass->trash = real_trash;
klass->delete = real_delete;
- klass->update_view_menu = real_update_view_menu;
copied_files_atom = gdk_atom_intern ("x-special/gnome-copied-files", FALSE);
@@ -9929,6 +10041,129 @@ nautilus_view_class_init (NautilusViewClass *klass)
"delete", 0);
}
+static void
+nautilus_view_init (NautilusView *view)
+{
+ AtkObject *atk_object;
+ NautilusDirectory *scripts_directory;
+ NautilusDirectory *templates_directory;
+ char *templates_uri;
+
+ nautilus_profile_start (NULL);
+
+ view->details = G_TYPE_INSTANCE_GET_PRIVATE (view, NAUTILUS_TYPE_VIEW,
+ NautilusViewDetails);
+
+ /* Default to true; desktop-icon-view sets to false */
+ view->details->show_foreign_files = TRUE;
+
+ view->details->non_ready_files =
+ g_hash_table_new_full (file_and_directory_hash,
+ file_and_directory_equal,
+ (GDestroyNotify)file_and_directory_free,
+ NULL);
+
+ gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (view),
+ GTK_POLICY_AUTOMATIC,
+ GTK_POLICY_AUTOMATIC);
+ gtk_scrolled_window_set_hadjustment (GTK_SCROLLED_WINDOW (view), NULL);
+ gtk_scrolled_window_set_vadjustment (GTK_SCROLLED_WINDOW (view), NULL);
+
+ gtk_style_context_set_junction_sides (gtk_widget_get_style_context (GTK_WIDGET (view)),
+ GTK_JUNCTION_TOP | GTK_JUNCTION_LEFT);
+
+ if (set_up_scripts_directory_global ()) {
+ scripts_directory = nautilus_directory_get_by_uri (scripts_directory_uri);
+ add_directory_to_scripts_directory_list (view, scripts_directory);
+ nautilus_directory_unref (scripts_directory);
+ } else {
+ g_warning ("Ignoring scripts directory, it may be a broken link\n");
+ }
+
+ if (nautilus_should_use_templates_directory ()) {
+ templates_uri = nautilus_get_templates_directory_uri ();
+ templates_directory = nautilus_directory_get_by_uri (templates_uri);
+ g_free (templates_uri);
+ add_directory_to_templates_directory_list (view, templates_directory);
+ nautilus_directory_unref (templates_directory);
+ }
+ update_templates_directory (view);
+
+ view->details->sort_directories_first =
+ g_settings_get_boolean (nautilus_preferences, NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST);
+ view->details->show_hidden_files =
+ g_settings_get_boolean (gtk_filechooser_preferences, NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES);
+
+ g_signal_connect_object (nautilus_trash_monitor_get (), "trash-state-changed",
+ G_CALLBACK (nautilus_view_trash_state_changed_callback), view, 0);
+
+ /* React to clipboard changes */
+ g_signal_connect_object (nautilus_clipboard_monitor_get (), "clipboard-changed",
+ G_CALLBACK (clipboard_changed_callback), view, 0);
+
+ /* Register to menu provider extension signal managing menu updates */
+ g_signal_connect_object (nautilus_signaller_get_current (), "popup-menu-changed",
+ G_CALLBACK (schedule_update_right_click_menus), view, G_CONNECT_SWAPPED);
+
+ gtk_widget_show (GTK_WIDGET (view));
+
+ g_signal_connect_swapped (nautilus_preferences,
+ "changed::" NAUTILUS_PREFERENCES_ENABLE_DELETE,
+ G_CALLBACK (schedule_update_right_click_menus), view);
+ g_signal_connect_swapped (nautilus_preferences,
+ "changed::" NAUTILUS_PREFERENCES_CLICK_POLICY,
+ G_CALLBACK (click_policy_changed_callback),
+ view);
+ g_signal_connect_swapped (nautilus_preferences,
+ "changed::" NAUTILUS_PREFERENCES_SORT_DIRECTORIES_FIRST,
+ G_CALLBACK (sort_directories_first_changed_callback), view);
+ g_signal_connect_swapped (gtk_filechooser_preferences,
+ "changed::" NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES,
+ G_CALLBACK (show_hidden_files_changed_callback), view);
+ g_signal_connect_swapped (gnome_lockdown_preferences,
+ "changed::" NAUTILUS_PREFERENCES_LOCKDOWN_COMMAND_LINE,
+ G_CALLBACK (schedule_update_right_click_menus), view);
+
+ g_signal_connect_object (nautilus_file_undo_manager_get (), "undo-changed",
+ G_CALLBACK (undo_manager_changed_cb), view, 0);
+
+ /* Accessibility */
+ atk_object = gtk_widget_get_accessible (GTK_WIDGET (view));
+ atk_object_set_name (atk_object, _("Content View"));
+ atk_object_set_description (atk_object, _("View of the current folder"));
+
+ /* Background and selection menus */
+ /*builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-main-menus.xml");
+ view->details->background_menus = g_object_ref (G_MENU (gtk_builder_get_object (builder,
"background-menu")));
+ view->details->selection_menu = g_object_ref (G_MENU (gtk_builder_get_object (builder,
"selection-menu")));
+ g_object_unref (builder);*/
+
+ view->details->view_action_group = G_ACTION_GROUP (g_simple_action_group_new ());
+ g_action_map_add_action_entries (G_ACTION_MAP (view->details->view_action_group),
+ view_entries,
+ G_N_ELEMENTS (view_entries),
+ view);
+ gtk_widget_insert_action_group (GTK_WIDGET (view),
+ "view",
+ G_ACTION_GROUP (view->details->view_action_group));
+
+
+ /* Set initial sensitivity */
+ /*action = g_action_map_lookup_action (G_ACTION_MAP (obj->priv->action_group),
+ "previous_location");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
+
+ action = g_action_map_lookup_action (G_ACTION_MAP (obj->priv->action_group),
+ "next_location");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE);
+
+ gtk_widget_insert_action_group (GTK_WIDGET (obj),
+ "browser",
+ G_ACTION_GROUP (obj->priv->action_group));*/
+
+ nautilus_profile_end (NULL);
+}
+
NautilusView *
nautilus_view_new (const gchar *id,
NautilusWindowSlot *slot)
diff --git a/src/nautilus-view.h b/src/nautilus-view.h
index 755e266..f6aecbf 100644
--- a/src/nautilus-view.h
+++ b/src/nautilus-view.h
@@ -227,7 +227,9 @@ struct NautilusViewClass {
* It is called (at least) whenever the selection changes. If overridden,
* subclasses must call parent class's function.
*/
- void (* update_menus) (NautilusView *view);
+ void (* update_right_click_menus) (NautilusView *view);
+
+ void (* update_toolbar_menus) (NautilusView *view);
/* sort_files is a function pointer that subclasses can override
* to provide a sorting order to determine which files should be
@@ -296,9 +298,8 @@ struct NautilusViewClass {
gboolean (* trash) (NautilusView *view);
gboolean (* delete) (NautilusView *view);
- void (*update_view_menu) (NautilusView *view);
-
NautilusWindow * (*get_window) (NautilusView *view);
+ GActionGroup * (*get_action_group) (NautilusView *view);
};
/* GObject support */
@@ -362,6 +363,7 @@ void nautilus_view_remove_subdirectory (NautilusView
NautilusDirectory*directory);
gboolean nautilus_view_is_editable (NautilusView *view);
+NautilusWindow * nautilus_view_get_window (NautilusView *view);
/* NautilusView methods */
const char * nautilus_view_get_view_id (NautilusView *view);
@@ -413,15 +415,14 @@ void nautilus_view_pop_up_location_context_menu (NautilusView *v
void nautilus_view_grab_focus (NautilusView *view);
void nautilus_view_update_menus (NautilusView *view);
+void nautilus_view_update_right_click_menus (NautilusView *view);
+void nautilus_view_update_toolbar_menus (NautilusView *view);
+void nautilus_view_update_all_menus (NautilusView *view);
+
gboolean nautilus_view_get_show_hidden_files (NautilusView *view);
void nautilus_view_action_show_hidden_files (NautilusView *view,
gboolean show_hidden);
-void nautilus_view_update_view_menu (NautilusView *view);
-void nautilus_view_action_new_folder (NautilusView *view);
-void nautilus_view_action_new_tab (NautilusView *view);
-void nautilus_view_action_undo (NautilusView *view);
-void nautilus_view_action_redo (NautilusView *view);
-void nautilus_view_action_select_all (NautilusView *view);
+GActionGroup * nautilus_view_get_action_group (NautilusView *view);
#endif /* NAUTILUS_VIEW_H */
diff --git a/src/nautilus-window-menus.c b/src/nautilus-window-menus.c
index 4dd8f67..6b64e30 100644
--- a/src/nautilus-window-menus.c
+++ b/src/nautilus-window-menus.c
@@ -528,72 +528,6 @@ action_toggle_state (GSimpleAction *action,
}
static void
-action_zoom_in (GSimpleAction *action,
- GVariant *parameter,
- gpointer user_data)
-{
-
- nautilus_view_bump_zoom_level (get_current_view (user_data), 1);
-}
-
-static void
-action_zoom_out (GSimpleAction *action,
- GVariant *parameter,
- gpointer user_data)
-{
- nautilus_view_bump_zoom_level (get_current_view (user_data), -1);
-}
-
-static void
-action_zoom_normal (GSimpleAction *action,
- GVariant *parameter,
- gpointer user_data)
-{
- nautilus_view_restore_default_zoom_level (get_current_view (user_data));
-}
-
-static void
-action_reversed_order (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- nautilus_canvas_view_action_reversed_order (NAUTILUS_CANVAS_VIEW (get_current_view (user_data)),
- g_variant_get_boolean (state));
- g_simple_action_set_state (action, state);
-}
-
-static void
-action_keep_aligned (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- nautilus_canvas_view_action_keep_aligned (NAUTILUS_CANVAS_VIEW (get_current_view (user_data)),
- g_variant_get_boolean (state));
- g_simple_action_set_state (action, state);
-}
-
-static void
-action_sort_order_changed (GSimpleAction *action,
- GVariant *value,
- gpointer user_data)
-{
- nautilus_canvas_view_action_sort (NAUTILUS_CANVAS_VIEW (get_current_view (user_data)),
- g_variant_get_string (value, NULL));
- g_simple_action_set_state (action, value);
-}
-
-static void
-action_show_hidden_files (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
-
- nautilus_view_action_show_hidden_files (NAUTILUS_VIEW (get_current_view (user_data)),
- g_variant_get_boolean (state));
- g_simple_action_set_state (action, state);
-}
-
-static void
action_show_sidebar (GSimpleAction *action,
GVariant *state,
gpointer user_data)
@@ -623,14 +557,6 @@ action_reload (GSimpleAction *action,
}
static void
-action_new_folder (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- nautilus_view_action_new_folder (NAUTILUS_VIEW (get_current_view (user_data)));
-}
-
-static void
action_new_tab (GSimpleAction *action,
GVariant *state,
gpointer user_data)
@@ -639,31 +565,6 @@ action_new_tab (GSimpleAction *action,
}
static void
-action_undo (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- nautilus_view_action_undo (NAUTILUS_VIEW (get_current_view (user_data)));
-}
-
-static void
-action_redo (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- nautilus_view_action_redo (NAUTILUS_VIEW (get_current_view (user_data)));
-}
-
-static void
-action_select_all (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- nautilus_view_action_select_all (NAUTILUS_VIEW (get_current_view (user_data)));
-}
-
-
-static void
action_enter_location (GSimpleAction *action,
GVariant *state,
gpointer user_data)
@@ -723,20 +624,9 @@ const GActionEntry win_entries[] = {
{ "back", action_back },
{ "forward", action_forward },
{ "gear-menu", action_toggle_state, NULL, "false", NULL },
- { "zoom-in", action_zoom_in },
- { "zoom-out", action_zoom_out },
- { "zoom-normal", action_zoom_normal },
- { "show-hidden-files", NULL, NULL, "true", action_show_hidden_files },
{ "show-sidebar", NULL, NULL, "false", action_show_sidebar },
- { "reversed-order", NULL, NULL, "false", action_reversed_order },
- { "keep-aligned", NULL, NULL, "true", action_keep_aligned },
{ "reload", action_reload },
- { "sort", NULL, "s", "'sort-by-name'", action_sort_order_changed },
- { "new-folder", action_new_folder },
{ "new-tab", action_new_tab },
- { "undo", action_undo },
- { "redo", action_redo },
- { "select-all", action_select_all },
{ "enter-location", action_enter_location },
{ "bookmark-current-location", action_bookmark_current_location },
{ "toggle-search", NULL, NULL, "false", action_toggle_search },
@@ -757,23 +647,6 @@ nautilus_window_initialize_actions (NautilusWindow *window)
g_action_change_state (action, g_variant_new_boolean (show_sidebar));
}
-void
-nautilus_window_reset_menus (NautilusWindow *window)
-{
- NautilusView *active_view;
- NautilusWindowSlot *active_slot;
-
- g_print ("##### Reseting menus\n");
-
- active_slot = nautilus_window_get_active_slot (window);
- active_view = nautilus_window_slot_get_view (active_slot);
-
- nautilus_toolbar_reset_menus (NAUTILUS_TOOLBAR (window->details->toolbar));
- nautilus_view_update_view_menu (active_view);
-
- nautilus_toolbar_update_menus (NAUTILUS_TOOLBAR (window->details->toolbar));
-}
-
/**
* nautilus_window_initialize_menus
*
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 4350136..a905839 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -1357,21 +1357,6 @@ got_file_info_for_view_selection_callback (NautilusFile *file,
nautilus_profile_end (NULL);
}
-static void
-menus_updated_cb (NautilusView *view,
- NautilusWindowSlot *slot)
-{
- NautilusWindow *window;
-
- window = nautilus_window_slot_get_window (slot);
-
- if (NAUTILUS_IS_DESKTOP_WINDOW (window)) {
- return;
- }
-
- //nautilus_window_update_menus (window, view);
-}
-
/* Load a view into the window, either reusing the old one or creating
* a new one. This happens when you want to load a new location, or just
* switch to a different view.
@@ -1416,7 +1401,6 @@ create_content_view (NautilusWindowSlot *slot,
} else {
/* create a new content view */
view = nautilus_view_new (view_id, slot);
- g_signal_connect (view, "menus-updated", G_CALLBACK (menus_updated_cb), slot);
slot->details->new_content_view = view;
nautilus_window_slot_connect_new_content_view (slot);
g_print("NEW VIEW CONNECTED######\n");
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index ef533c3..06860a0 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -1248,11 +1248,11 @@ notebook_popup_menu_cb (GtkWidget *widget,
return TRUE;
}
-GMenu *
-nautilus_window_get_view_menu (NautilusWindow *window)
+GtkWidget *
+nautilus_window_get_view_menu_widget (NautilusWindow *window)
{
- return nautilus_toolbar_get_view_menu (NAUTILUS_TOOLBAR (window->details->toolbar));
+ return nautilus_toolbar_get_view_menu_widget (NAUTILUS_TOOLBAR (window->details->toolbar));
}
GMenu *
@@ -1262,10 +1262,22 @@ nautilus_window_get_action_menu (NautilusWindow *window)
return nautilus_toolbar_get_action_menu (NAUTILUS_TOOLBAR (window->details->toolbar));
}
+GtkWidget *
+nautilus_window_get_sort_menu (NautilusWindow *window)
+{
+ return nautilus_toolbar_get_sort_menu (NAUTILUS_TOOLBAR (window->details->toolbar));
+}
+
+void
+nautilus_window_reset_toolbar_menus (NautilusWindow *window)
+{
+ nautilus_toolbar_reset_menus (NAUTILUS_TOOLBAR (window->details->toolbar));
+}
+
void
-nautilus_window_update_menus (NautilusWindow *window)
+nautilus_window_update_toolbar_menus (NautilusWindow *window)
{
- nautilus_window_reset_menus (window);
+ nautilus_toolbar_update_menus (NAUTILUS_TOOLBAR (window->details->toolbar));
}
static GtkWidget *
diff --git a/src/nautilus-window.h b/src/nautilus-window.h
index d617602..25c72bd 100644
--- a/src/nautilus-window.h
+++ b/src/nautilus-window.h
@@ -135,7 +135,14 @@ gboolean nautilus_window_disable_chrome_mapping (GValue *value,
NautilusWindowOpenFlags nautilus_event_get_window_open_flags (void);
void nautilus_window_show_about_dialog (NautilusWindow *window);
-GMenu * nautilus_window_get_view_menu (NautilusWindow *window);
+GtkWidget * nautilus_window_get_view_menu_widget (NautilusWindow *window);
GMenu * nautilus_window_get_action_menu (NautilusWindow *window);
+GtkWidget *
+nautilus_window_get_sort_menu (NautilusWindow *window);
+void
+nautilus_window_reset_toolbar_menus (NautilusWindow *window);
+void
+nautilus_window_update_toolbar_menus (NautilusWindow *window);
+
#endif
diff --git a/src/nautilus.gresource.xml b/src/nautilus.gresource.xml
index 2e58ca8..67bd3d9 100644
--- a/src/nautilus.gresource.xml
+++ b/src/nautilus.gresource.xml
@@ -12,6 +12,7 @@
<file>nautilus-sort-menu.xml</file>
<file>nautilus-main-menus.xml</file>
<file>nautilus-toolbar-ui.xml</file>
+ <file>nautilus-toolbar-view-menu.xml</file>
<file alias="icons/thumbnail_frame.png">../icons/thumbnail_frame.png</file>
<file alias="icons/filmholes.png">../icons/filmholes.png</file>
<file alias="icons/knob.png">../icons/knob.png</file>
diff --git a/src/nautilus_view_toolbar_menu.xml b/src/nautilus_view_toolbar_menu.xml
new file mode 100644
index 0000000..a8cdbde
--- /dev/null
+++ b/src/nautilus_view_toolbar_menu.xml
@@ -0,0 +1,148 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <object class ="GtkPopoverMenu" id="view_menu_widget">
+ <child>
+ <object class="GtkBox">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="border_width">9</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkBox" id="views_box">
+ <property name="visible">True</property>
+ <property name="orientation">horizontal</property>
+ <property name="width_request">200</property>
+ <style>
+ <class name="linked"/>
+ </style>
+ <child>
+ <object class="GtkModelButton" id="grid_button">
+ <property name="visible">True</property>
+ <property name="text">Grid</property>
+ <property name="action-name">win.view-mode</property>
+ <property name="action-target">'grid'</property>
+ <property name="iconic">True</property>
+ <property name="centered">True</property>
+ <property name="icon">icon-grid</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="list_button">
+ <property name="visible">True</property>
+ <property name="text">List</property>
+ <property name="action-name">win.view-mode</property>
+ <property name="action-target">'list'</property>
+ <property name="iconic">True</property>
+ <property name="centered">True</property>
+ <property name="icon">icon-list</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="GtkScale" id="zoom_level_scale">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="draw_value">False</property>
+ <property name="adjustment">zoom_adjustment</property>
+ <property name="round_digits">0</property>
+ <property name="restrict_to_fill_level">False</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkBox" id="sort-menu">
+ <property name="visible">False</property>
+ <property name="can_focus">False</property>
+ <property name="orientation">vertical</property>
+ <child>
+ <object class="GtkLabel" id="sort_label">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes">Sort</property>
+ <style>
+ <class name="separator"/>
+ </style>
+ </object>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="sort_name">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">Name</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="sort_size">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">size</property>
+ <property name="group">sort_name</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="sort_type">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">type</property>
+ <property name="group">sort_name</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkModelButton" id="sort_date">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="label" translatable="yes">date</property>
+ <property name="group">sort_name</property>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ <property name="fill">True</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ <object class="GThemedIcon" id="icon-grid">
+ <property name="name">view-grid-symbolic</property>
+ </object>
+ <object class="GThemedIcon" id="icon-list">
+ <property name="name">view-list-symbolic</property>
+ </object>
+ <object class="GtkAdjustment" id="zoom_adjustment">
+ <property name="lower">1</property>
+ <property name="upper">3</property>
+ <property name="step_increment">1</property>
+ <property name="page_increment">1</property>
+ <property name="value">2</property>
+ </object>
+</interface>
\ No newline at end of file
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]