[nautilus/wip/gaction] 28-11-2014
- From: Carlos Soriano Sánchez <csoriano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus/wip/gaction] 28-11-2014
- Date: Fri, 28 Nov 2014 15:35:56 +0000 (UTC)
commit e68ac2281d65546af9da3dade218014f32807587
Author: Carlos Soriano <carlos sorian89 gmail com>
Date: Fri Nov 28 16:35:06 2014 +0100
28-11-2014
libnautilus-private/nautilus-ui-utilities.c | 52 +-
libnautilus-private/nautilus-ui-utilities.h | 2 +-
src/nautilus-canvas-view.c | 5 +-
src/nautilus-desktop-canvas-view.c | 7 -
src/nautilus-list-view.c | 11 +-
src/nautilus-main-menus.xml | 9 +-
src/nautilus-toolbar.c | 43 +
src/nautilus-toolbar.h | 4 +-
src/nautilus-view-right-click-menus.xml | 56 +-
src/nautilus-view.c | 2494 +++------------------------
src/nautilus-view.h | 9 +-
11 files changed, 358 insertions(+), 2334 deletions(-)
---
diff --git a/libnautilus-private/nautilus-ui-utilities.c b/libnautilus-private/nautilus-ui-utilities.c
index fa62d4e..3f2281e 100644
--- a/libnautilus-private/nautilus-ui-utilities.c
+++ b/libnautilus-private/nautilus-ui-utilities.c
@@ -41,43 +41,52 @@ add_accelerator (GApplication *app,
NULL
};
- gtk_application_set_accels_for_action (app, action_name, vaccels);
+ gtk_application_set_accels_for_action (GTK_APPLICATION (app), action_name, vaccels);
}
static GMenuModel *
find_gmenu_model (GMenuModel *model,
- const gchar *section_id)
+ const gchar *insertion_id)
{
gint i, n_items;
- GMenuModel *section = NULL;
+ GMenuModel *insertion_model = NULL;
n_items = g_menu_model_get_n_items (model);
- for (i = 0; i < n_items && !section; i++)
+ for (i = 0; i < n_items && !insertion_model; i++)
{
gchar *id = NULL;
-
if (g_menu_model_get_item_attribute (model, i, "id", "s", &id) &&
- strcmp (id, section_id) == 0)
+ strcmp (id, insertion_id) == 0)
{
- section = g_menu_model_get_item_link (model, i, G_MENU_LINK_SECTION);
+ insertion_model = g_menu_model_get_item_link (model, i, G_MENU_LINK_SECTION);
+ if (!insertion_model)
+ {
+ insertion_model = g_menu_model_get_item_link (model, i, G_MENU_LINK_SUBMENU);
+ }
}
else
{
- GMenuModel *subsection;
+ GMenuModel *submodel;
GMenuModel *submenu;
gint j, j_items;
- subsection = g_menu_model_get_item_link (model, i, G_MENU_LINK_SECTION);
+ submodel = g_menu_model_get_item_link (model, i, G_MENU_LINK_SECTION);
- j_items = g_menu_model_get_n_items (subsection);
+ if (!submodel)
+ {
+ submodel = g_menu_model_get_item_link (model, i, G_MENU_LINK_SUBMENU);
+ if (!submodel)
+ continue;
+ }
- for (j = 0; j < j_items && !section; j++)
+ j_items = g_menu_model_get_n_items (submodel);
+ for (j = 0; j < j_items && !insertion_model; j++)
{
- submenu = g_menu_model_get_item_link (subsection, j, G_MENU_LINK_SUBMENU);
+ submenu = g_menu_model_get_item_link (submodel, j, G_MENU_LINK_SUBMENU);
if (submenu)
{
- section = find_gmenu_model (submenu, section_id);
+ insertion_model = find_gmenu_model (submenu, insertion_id);
}
}
}
@@ -85,7 +94,7 @@ find_gmenu_model (GMenuModel *model,
g_free (id);
}
- return section;
+ return insertion_model;
}
/*
@@ -123,20 +132,20 @@ nautilus_gmenu_merge (GMenu *original,
* the item @item.
*/
void
-nautilus_gmenu_add_item_in_section (GMenu *menu,
+nautilus_gmenu_add_item_in_submodel (GMenu *menu,
GMenuItem *item,
- const gchar *section_name)
+ const gchar *submodel_name)
{
- GMenuModel *section;
+ GMenuModel *submodel;
g_return_if_fail (G_IS_MENU (menu));
g_return_if_fail (G_IS_MENU_ITEM (item));
- section = find_gmenu_model (G_MENU_MODEL (menu), section_name);
+ submodel = find_gmenu_model (G_MENU_MODEL (menu), submodel_name);
- g_return_if_fail (section != NULL);
+ g_return_if_fail (submodel != NULL);
- g_menu_append_item (G_MENU (section), item);
+ g_menu_append_item (G_MENU (submodel), item);
}
void
@@ -270,6 +279,9 @@ nautilus_escape_action_name (const char *action_name,
case '"':
g_string_append (s, "\\q");
break;
+ case ' ':
+ g_string_append (s, "+");
+ break;
default:
g_string_append_c (s, *action_name);
}
diff --git a/libnautilus-private/nautilus-ui-utilities.h b/libnautilus-private/nautilus-ui-utilities.h
index f4f7caf..ae802e2 100644
--- a/libnautilus-private/nautilus-ui-utilities.h
+++ b/libnautilus-private/nautilus-ui-utilities.h
@@ -38,7 +38,7 @@ void nautilus_gmenu_merge (GMenu *original,
GMenu *gmenu_to_merge,
const gchar *section_name);
-void nautilus_gmenu_add_item_in_section (GMenu *menu,
+void nautilus_gmenu_add_item_in_submodel (GMenu *menu,
GMenuItem *item,
const gchar *section_name);
diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c
index c2509d8..1c807b5 100644
--- a/src/nautilus-canvas-view.c
+++ b/src/nautilus-canvas-view.c
@@ -1477,10 +1477,11 @@ icon_rename_started_cb (NautilusCanvasContainer *container,
NautilusView *directory_view;
directory_view = NAUTILUS_VIEW (callback_data);
- nautilus_clipboard_set_up_editable
+ //FIXME
+ /*nautilus_clipboard_set_up_editable
(GTK_EDITABLE (widget),
nautilus_view_get_ui_manager (directory_view),
- FALSE);
+ FALSE);*/
}
static char *
diff --git a/src/nautilus-desktop-canvas-view.c b/src/nautilus-desktop-canvas-view.c
index 6638f97..ca1a6f8 100644
--- a/src/nautilus-desktop-canvas-view.c
+++ b/src/nautilus-desktop-canvas-view.c
@@ -248,13 +248,6 @@ nautilus_desktop_canvas_view_dispose (GObject *object)
canvas_view->details->reload_desktop_timeout = 0;
}
- ui_manager = nautilus_view_get_ui_manager (NAUTILUS_VIEW (canvas_view));
- if (ui_manager != NULL) {
- nautilus_ui_unmerge_ui (ui_manager,
- &canvas_view->details->desktop_merge_id,
- &canvas_view->details->desktop_action_group);
- }
-
g_signal_handlers_disconnect_by_func (nautilus_icon_view_preferences,
default_zoom_level_changed,
canvas_view);
diff --git a/src/nautilus-list-view.c b/src/nautilus-list-view.c
index d8d85fc..a1514b9 100644
--- a/src/nautilus-list-view.c
+++ b/src/nautilus-list-view.c
@@ -89,7 +89,6 @@ struct NautilusListViewDetails {
gboolean drag_started;
gboolean ignore_button_release;
gboolean row_selected_on_button_down;
- gboolean menus_ready;
gboolean active;
GHashTable *columns;
@@ -1288,10 +1287,11 @@ cell_renderer_editing_started_cb (GtkCellRenderer *renderer,
g_signal_connect (entry, "focus-out-event",
G_CALLBACK (editable_focus_out_cb), list_view);
- nautilus_clipboard_set_up_editable
+//FIXME
+ /*nautilus_clipboard_set_up_editable
(GTK_EDITABLE (entry),
nautilus_view_get_ui_manager (NAUTILUS_VIEW (list_view)),
- FALSE);
+ FALSE);*/
}
static void
@@ -3045,11 +3045,6 @@ nautilus_list_view_update_right_click_menus (NautilusView *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_right_click_menus (view);
}
diff --git a/src/nautilus-main-menus.xml b/src/nautilus-main-menus.xml
index 6ed6a66..2274c00 100644
--- a/src/nautilus-main-menus.xml
+++ b/src/nautilus-main-menus.xml
@@ -13,14 +13,7 @@
</item>
</section>
<section>
- <item>
- <attribute name="label" translatable="yes">Undo</attribute>
- <attribute name="action">view.undo</attribute>
- </item>
- <item>
- <attribute name="label" translatable="yes">Redo</attribute>
- <attribute name="action">view.redo</attribute>
- </item>
+ <attribute name="id">undo-redo-section</attribute>
</section>
<section>
<item>
diff --git a/src/nautilus-toolbar.c b/src/nautilus-toolbar.c
index c92590d..62b88a1 100644
--- a/src/nautilus-toolbar.c
+++ b/src/nautilus-toolbar.c
@@ -60,6 +60,9 @@ struct _NautilusToolbarPrivate {
GtkWidget *view_button;
GtkWidget *action_button;
+ GtkWidget *undo_label;
+ GtkWidget *redo_label;
+
GtkWidget *view_menu_widget;
GtkAdjustment *zoom_adjustment;
GtkWidget *zoom_level_scale;
@@ -469,6 +472,8 @@ nautilus_toolbar_init (NautilusToolbar *self)
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->undo_label = g_object_ref (GTK_WIDGET (gtk_builder_get_object (builder, "undo_label")));
+ self->priv->redo_label = g_object_ref (GTK_WIDGET (gtk_builder_get_object (builder, "redo_label")));
self->priv->zoom_level_scale = g_object_ref (GTK_WIDGET (gtk_builder_get_object (builder,
"zoom_level_scale")));
self->priv->zoom_adjustment = g_object_ref (GTK_ADJUSTMENT (gtk_builder_get_object (builder,
"zoom_adjustment")));
gtk_menu_button_set_popover (GTK_MENU_BUTTON (self->priv->view_button),
@@ -606,12 +611,32 @@ hide_widget_recursive (GtkWidget *widget,
return found;
}
+GMenu *
+nautilus_toolbar_action_menu_add_item (NautilusToolbar *self,
+ GMenuItem *item,
+ const gchar *section_name)
+{
+ nautilus_gmenu_add_item_in_submodel (self->priv->action_menu,
+ item,
+ section_name);
+}
+
void
nautilus_toolbar_reset_menus (NautilusToolbar *self)
{
NautilusWindowSlot *slot;
NautilusView *view;
GActionGroup *view_action_group;
+ GtkBuilder *builder;
+
+ if (self->priv->action_menu)
+ g_object_unref (self->priv->action_menu);
+
+ builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-main-menus.xml");
+ self->priv->action_menu = g_object_ref (G_MENU (gtk_builder_get_object (builder, "action-menu")));
+ gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (self->priv->action_button),
+ G_MENU_MODEL (self->priv->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);
@@ -636,6 +661,24 @@ nautilus_toolbar_view_menu_widget_show_element (NautilusToolbar *self,
show_widget_recursive (GTK_WIDGET (self->priv->view_menu_widget), id);
}
+void
+nautilus_toolbar_view_menu_widget_set_undo_label (NautilusToolbar *self,
+ gchar *label)
+{
+ g_assert (NAUTILUS_IS_TOOLBAR (self));
+
+ gtk_label_set_text (GTK_LABEL (self->priv->undo_label), label);
+}
+
+void
+nautilus_toolbar_view_menu_widget_set_redo_label (NautilusToolbar *self,
+ gchar *label)
+{
+ g_assert (NAUTILUS_IS_TOOLBAR (self));
+
+ gtk_label_set_text (GTK_LABEL (self->priv->redo_label), label);
+}
+
static gboolean
show_widget_recursive (GtkWidget *widget,
gchar *id)
diff --git a/src/nautilus-toolbar.h b/src/nautilus-toolbar.h
index ad6616f..4972065 100644
--- a/src/nautilus-toolbar.h
+++ b/src/nautilus-toolbar.h
@@ -72,7 +72,9 @@ void nautilus_toolbar_set_show_main_bar (NautilusToolbar *self,
gboolean show_main_bar);
void nautilus_toolbar_set_show_location_entry (NautilusToolbar *self,
gboolean show_location_entry);
-
+GMenu * nautilus_toolbar_action_menu_add_item (NautilusToolbar *self,
+ GMenuItem *item,
+ const gchar *section_name);
void nautilus_toolbar_reset_menus (NautilusToolbar *self);
void nautilus_toolbar_sync_navigation_buttons (NautilusToolbar *self);
diff --git a/src/nautilus-view-right-click-menus.xml b/src/nautilus-view-right-click-menus.xml
index a70d41b..5ee0d79 100755
--- a/src/nautilus-view-right-click-menus.xml
+++ b/src/nautilus-view-right-click-menus.xml
@@ -1,13 +1,16 @@
<?xml version="1.0"?>
<interface>
<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>
+ <submenu>
+ <attribute name="id">templates-submenu</attribute>
+ <attribute name="label" translatable="yes">New Document</attribute>
+ <attribute name="action">view.new-document</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ </submenu>
<section>
<item>
<attribute name="label" translatable="yes">Paste</attribute>
@@ -16,33 +19,6 @@
</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>
@@ -77,6 +53,19 @@
<section>
<attribute name="id">open-with-default-application-section</attribute>
</section>
+ <submenu>
+ <attribute name="id">scripts-submenu</attribute>
+ <attribute name="label" translatable="yes">Scripts</attribute>
+ <attribute name="action">view.scripts</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ <section>
+ <item>
+ <attribute name="label" translatable="yes">Open Scripts Folder</attribute>
+ <attribute name="action">view.open-scripts-folder</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ </item>
+ </section>
+ </submenu>
<section>
<item>
<attribute name="label" translatable="yes">Open Item Location</attribute>
@@ -170,6 +159,11 @@
<attribute name="hidden-when">action-disabled</attribute>
</item>
<item>
+ <attribute name="label" translatable="yes">Delete Permanently</attribute>
+ <attribute name="action">view.delete</attribute>
+ <attribute name="hidden-when">action-disabled</attribute>
+ </item>
+ <item>
<attribute name="label" translatable="yes">Empty Trash</attribute>
<attribute name="action">view.empty-trash</attribute>
<attribute name="hidden-when">action-disabled</attribute>
@@ -220,4 +214,4 @@
</item>
</section>
</menu>
-</interface>
\ No newline at end of file
+</interface>
diff --git a/src/nautilus-view.c b/src/nautilus-view.c
index c214ea5..6bf7ded 100755
--- a/src/nautilus-view.c
+++ b/src/nautilus-view.c
@@ -227,9 +227,8 @@ struct NautilusViewDetails
* after it finishes loading the directory and its view.
*/
gboolean loading;
- gboolean scripts_invalid;
- gboolean templates_invalid;
gboolean templates_present;
+ gboolean scripts_present;
/* flag to indicate that no file updates should be dispatched to subclasses.
* This is a workaround for bug #87701 that prevents the list view from
@@ -277,19 +276,13 @@ typedef struct {
/* forward declarations */
static gboolean display_selection_info_idle_callback (gpointer data);
-static void nautilus_view_create_links_for_files (NautilusView *view,
- GList *files,
- GArray *item_locations);
static void trash_or_delete_files (GtkWindow *parent_window,
const GList *files,
- gboolean
delete_if_all_already_in_trash,
NautilusView *view);
static void load_directory (NautilusView *view,
NautilusDirectory *directory);
static void clipboard_changed_callback (NautilusClipboardMonitor *monitor,
NautilusView *view);
-static void open_one_in_new_window (gpointer data,
- gpointer callback_data);
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);
@@ -428,21 +421,6 @@ nautilus_view_get_selection_for_file_transfer (NautilusView *view)
return NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->get_selection_for_file_transfer (view);
}
-/**
- * nautilus_view_get_selected_icon_locations:
- *
- * return an array of locations of selected icons if available
- * Return value: GArray of GdkPoints
- *
- **/
-static GArray *
-nautilus_view_get_selected_icon_locations (NautilusView *view)
-{
- g_return_val_if_fail (NAUTILUS_IS_VIEW (view), NULL);
-
- return NAUTILUS_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->get_selected_icon_locations (view);
-}
-
static void
nautilus_view_invert_selection (NautilusView *view)
{
@@ -917,39 +895,6 @@ nautilus_view_get_containing_window (NautilusView *view)
}
static gboolean
-nautilus_view_confirm_multiple (GtkWindow *parent_window,
- int count,
- gboolean tabs)
-{
- GtkDialog *dialog;
- char *prompt;
- char *detail;
- int response;
-
- if (count <= SILENT_WINDOW_OPEN_LIMIT) {
- return TRUE;
- }
-
- prompt = _("Are you sure you want to open all files?");
- if (tabs) {
- detail = g_strdup_printf (ngettext("This will open %'d separate tab.",
- "This will open %'d separate tabs.", count), count);
- } else {
- detail = g_strdup_printf (ngettext("This will open %'d separate window.",
- "This will open %'d separate windows.", count), count);
- }
- dialog = eel_show_yes_no_dialog (prompt, detail,
- _("_OK"), _("_Cancel"),
- parent_window);
- g_free (detail);
-
- response = gtk_dialog_run (dialog);
- gtk_widget_destroy (GTK_WIDGET (dialog));
-
- return response == GTK_RESPONSE_YES;
-}
-
-static gboolean
selection_contains_one_item_in_menu_callback (NautilusView *view, GList *selection)
{
if (g_list_length (selection) == 1) {
@@ -1058,8 +1003,8 @@ nautilus_view_activate_file (NautilusView *view,
static void
action_open_with_default_application (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
NautilusView *view;
@@ -1068,27 +1013,9 @@ action_open_with_default_application (GSimpleAction *action,
}
static void
-action_open_close_parent (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- GList *selection;
- NautilusView *view;
-
- view = NAUTILUS_VIEW (user_data);
-
- selection = nautilus_view_get_selection (view);
- nautilus_view_activate_files (view,
- selection,
- NAUTILUS_WINDOW_OPEN_FLAG_CLOSE_BEHIND,
- TRUE);
- nautilus_file_list_free (selection);
-}
-
-static void
action_open_item_location (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
NautilusView *view;
GList *selection;
@@ -1129,13 +1056,10 @@ action_open_item_new_tab (GSimpleAction *action,
selection = nautilus_view_get_selection (view);
window = nautilus_view_get_containing_window (view);
-
- if (nautilus_view_confirm_multiple (window, g_list_length (selection), TRUE)) {
- nautilus_view_activate_files (view,
- selection,
- NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB,
- FALSE);
- }
+ nautilus_view_activate_files (view,
+ selection,
+ NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB,
+ FALSE);
nautilus_file_list_free (selection);
}
@@ -1260,7 +1184,7 @@ trash_or_delete_selected_files (NautilusView *view)
if (!view->details->selection_was_removed) {
selection = nautilus_view_get_selection_for_file_transfer (view);
trash_or_delete_files (nautilus_view_get_containing_window (view),
- selection, TRUE,
+ selection,
view);
nautilus_file_list_free (selection);
view->details->selection_was_removed = TRUE;
@@ -1291,6 +1215,14 @@ action_move_to_trash (GSimpleAction *action,
}
static void
+action_delete (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ trash_or_delete_selected_files (NAUTILUS_VIEW (user_data));
+}
+
+static void
delete_selected_files (NautilusView *view)
{
GList *selection;
@@ -1316,11 +1248,11 @@ delete_selected_files (NautilusView *view)
}
static void
-action_delete (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- delete_selected_files (NAUTILUS_VIEW (user_data));
+action_delete_withouth_trash (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ delete_selected_files (NAUTILUS_VIEW (user_data));
}
static void
@@ -1357,28 +1289,6 @@ real_delete (NautilusView *view)
}
static void
-action_create_link (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- NautilusView *view;
- GList *selection;
- GArray *selected_item_locations;
-
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
- view = NAUTILUS_VIEW (user_data);
- selection = nautilus_view_get_selection (view);
- if (selection_not_empty_in_menu_callback (view, selection)) {
- selected_item_locations = nautilus_view_get_selected_icon_locations (view);
- nautilus_view_create_links_for_files (view, selection, selected_item_locations);
- g_array_free (selected_item_locations, TRUE);
- }
-
- nautilus_file_list_free (selection);
-}
-
-static void
action_select_all (GSimpleAction *action,
GVariant *state,
gpointer user_data)
@@ -1509,25 +1419,6 @@ action_select_pattern (GSimpleAction *action,
}
static void
-action_save_search_callback (GtkAction *action,
- gpointer callback_data)
-{
- NautilusSearchDirectory *search;
- NautilusView *directory_view;
-
- directory_view = NAUTILUS_VIEW (callback_data);
-
- if (directory_view->details->model &&
- NAUTILUS_IS_SEARCH_DIRECTORY (directory_view->details->model)) {
- search = NAUTILUS_SEARCH_DIRECTORY (directory_view->details->model);
- nautilus_search_directory_save_search (search);
-
- /* Save search is disabled */
- schedule_update_right_click_menus (directory_view);
- }
-}
-
-static void
query_name_entry_changed_cb (GtkWidget *entry, GtkWidget *button)
{
const char *text;
@@ -1540,114 +1431,6 @@ query_name_entry_changed_cb (GtkWidget *entry, GtkWidget *button)
gtk_widget_set_sensitive (button, sensitive);
}
-
-static void
-action_save_search_as_callback (GtkAction *action,
- gpointer callback_data)
-{
- NautilusView *directory_view;
- NautilusSearchDirectory *search;
- GtkWidget *dialog, *grid, *label, *entry, *chooser, *save_button;
- const char *entry_text;
- char *filename, *filename_utf8, *dirname, *path, *uri;
- GFile *location;
-
- directory_view = NAUTILUS_VIEW (callback_data);
-
- if (directory_view->details->model &&
- NAUTILUS_IS_SEARCH_DIRECTORY (directory_view->details->model)) {
- search = NAUTILUS_SEARCH_DIRECTORY (directory_view->details->model);
-
- dialog = gtk_dialog_new_with_buttons (_("Save Search as"),
- nautilus_view_get_containing_window (directory_view),
- 0,
- _("_Cancel"), GTK_RESPONSE_CANCEL,
- NULL);
- save_button = gtk_dialog_add_button (GTK_DIALOG (dialog),
- _("_Save"), GTK_RESPONSE_OK);
- gtk_dialog_set_default_response (GTK_DIALOG (dialog),
- GTK_RESPONSE_OK);
- gtk_container_set_border_width (GTK_CONTAINER (dialog), 5);
- gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), 2);
- gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
-
- grid = gtk_grid_new ();
- g_object_set (grid,
- "orientation", GTK_ORIENTATION_VERTICAL,
- "border-width", 5,
- "row-spacing", 6,
- "column-spacing", 12,
- NULL);
- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), grid, TRUE,
TRUE, 0);
- gtk_widget_show (grid);
-
- label = gtk_label_new_with_mnemonic (_("Search _name:"));
- gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
- gtk_container_add (GTK_CONTAINER (grid), label);
- gtk_widget_show (label);
-
- entry = gtk_entry_new ();
- gtk_widget_set_hexpand (entry, TRUE);
- gtk_grid_attach_next_to (GTK_GRID (grid), entry, label,
- GTK_POS_RIGHT, 1, 1);
- gtk_entry_set_activates_default (GTK_ENTRY (entry), TRUE);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), entry);
-
- gtk_widget_set_sensitive (save_button, FALSE);
- g_signal_connect (entry, "changed",
- G_CALLBACK (query_name_entry_changed_cb), save_button);
-
- gtk_widget_show (entry);
- label = gtk_label_new_with_mnemonic (_("_Folder:"));
- gtk_misc_set_alignment (GTK_MISC(label), 0.0, 0.5);
- gtk_container_add (GTK_CONTAINER (grid), label);
- gtk_widget_show (label);
-
- chooser = gtk_file_chooser_button_new (_("Select Folder to Save Search In"),
- GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
- gtk_widget_set_hexpand (chooser, TRUE);
- gtk_grid_attach_next_to (GTK_GRID (grid), chooser, label,
- GTK_POS_RIGHT, 1, 1);
- gtk_label_set_mnemonic_widget (GTK_LABEL (label), chooser);
- gtk_widget_show (chooser);
-
- gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (chooser), TRUE);
-
- gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (chooser),
- g_get_home_dir ());
-
- if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) {
- entry_text = gtk_entry_get_text (GTK_ENTRY (entry));
- if (g_str_has_suffix (entry_text, NAUTILUS_SAVED_SEARCH_EXTENSION)) {
- filename_utf8 = g_strdup (entry_text);
- } else {
- filename_utf8 = g_strconcat (entry_text, NAUTILUS_SAVED_SEARCH_EXTENSION,
NULL);
- }
-
- filename = g_filename_from_utf8 (filename_utf8, -1, NULL, NULL, NULL);
- g_free (filename_utf8);
-
- dirname = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (chooser));
-
- path = g_build_filename (dirname, filename, NULL);
- g_free (filename);
- g_free (dirname);
-
- uri = g_filename_to_uri (path, NULL, NULL);
- g_free (path);
-
- nautilus_search_directory_save_to_file (search, uri);
- location = g_file_new_for_uri (uri);
- nautilus_file_changes_queue_file_added (location);
- g_object_unref (location);
- nautilus_file_changes_consume_changes (TRUE);
- g_free (uri);
- }
-
- gtk_widget_destroy (dialog);
- }
-}
-
typedef struct {
NautilusView *view;
NautilusFile *new_file;
@@ -2054,8 +1837,8 @@ nautilus_view_new_file (NautilusView *directory_view,
static void
action_new_folder (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
g_assert (NAUTILUS_IS_VIEW (user_data));
@@ -2064,8 +1847,8 @@ action_new_folder (GSimpleAction *action,
static void
action_properties (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
NautilusView *view;
GList *selection;
@@ -2091,8 +1874,8 @@ action_properties (GSimpleAction *action,
static void
action_pathbar_properties (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
NautilusView *view;
GList *files;
@@ -2156,21 +1939,9 @@ nautilus_view_set_show_hidden_files (NautilusView *view,
}
static void
-action_show_hidden_files_callback (GtkAction *action,
- gpointer callback_data)
-{
- NautilusView *view;
-
- view = NAUTILUS_VIEW (callback_data);
-
- nautilus_view_set_show_hidden_files
- (view, gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)));
-}
-
-static void
action_show_hidden_files (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
gboolean show_hidden;
NautilusView *view;
@@ -2187,8 +1958,8 @@ action_show_hidden_files (GSimpleAction *action,
static void
action_undo (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
GtkWidget *toplevel;
NautilusView *view;
@@ -2202,8 +1973,8 @@ action_undo (GSimpleAction *action,
static void
action_redo (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
GtkWidget *toplevel;
NautilusView *view;
@@ -2231,8 +2002,8 @@ action_zoom_in (GSimpleAction *action,
static void
action_zoom_out (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
NautilusView *view;
@@ -2245,8 +2016,8 @@ action_zoom_out (GSimpleAction *action,
static void
action_zoom_normal (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
NautilusView *view;
@@ -2259,8 +2030,8 @@ action_zoom_normal (GSimpleAction *action,
static void
action_zoom_to_level (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
NautilusView *view;
gdouble zoom_value;
@@ -2294,8 +2065,8 @@ action_location_open_alternate_callback (GtkAction *action,
static void
action_open_item_new_window (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
NautilusView *view;
GList *selection;
@@ -2306,12 +2077,10 @@ action_open_item_new_window (GSimpleAction *action,
window = nautilus_view_get_containing_window (view);
- if (nautilus_view_confirm_multiple (window, g_list_length (selection), TRUE)) {
- nautilus_view_activate_files (view,
- selection,
- NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW,
- FALSE);
- }
+ nautilus_view_activate_files (view,
+ selection,
+ NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW,
+ FALSE);
nautilus_file_list_free (selection);
}
@@ -2385,24 +2154,9 @@ paste_clipboard_received_callback (GtkClipboard *clipboard,
}
static void
-action_paste_files_callback (GtkAction *action,
- gpointer callback_data)
-{
- NautilusView *view;
-
- view = NAUTILUS_VIEW (callback_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_paste_files (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
NautilusView *view;
@@ -2417,8 +2171,6 @@ action_paste_files (GSimpleAction *action,
view);
}
-/*************** END ACTIONS **********************/
-
static void
click_policy_changed_callback (gpointer callback_data)
{
@@ -2546,7 +2298,6 @@ scripts_added_or_changed_callback (NautilusDirectory *directory,
view = NAUTILUS_VIEW (callback_data);
- view->details->scripts_invalid = TRUE;
if (view->details->active) {
schedule_update_right_click_menus (view);
}
@@ -2561,7 +2312,6 @@ templates_added_or_changed_callback (NautilusDirectory *directory,
view = NAUTILUS_VIEW (callback_data);
- view->details->templates_invalid = TRUE;
if (view->details->active) {
schedule_update_right_click_menus (view);
}
@@ -2674,7 +2424,6 @@ slot_inactive (NautilusWindowSlot *slot,
return;
}
- g_print ("slot inactive\n");
view->details->active = FALSE;
remove_update_right_click_menus_timeout_callback (view);
@@ -2784,14 +2533,14 @@ update_undo_actions (NautilusView *view)
}
static void
-undo_manager_changed_cb (NautilusFileUndoManager* manager,
+undo_manager_changed (NautilusFileUndoManager* manager,
NautilusView *view)
{
if (!view->details->active) {
return;
}
- update_undo_actions (view);
+ nautilus_view_update_toolbar_menus (view);
}
void
@@ -2839,33 +2588,6 @@ have_bulk_rename_tool ()
}
static void
-real_unmerge_menus (NautilusView *view)
-{
- GtkUIManager *ui_manager;
- g_print(" real unmerge menus\n");
- ui_manager = nautilus_view_get_ui_manager (view);
- if (ui_manager == NULL) {
- return;
- }
-
- nautilus_ui_unmerge_ui (ui_manager,
- &view->details->dir_merge_id,
- &view->details->dir_action_group);
- nautilus_ui_unmerge_ui (ui_manager,
- &view->details->extensions_menu_merge_id,
- &view->details->extensions_menu_action_group);
- nautilus_ui_unmerge_ui (ui_manager,
- &view->details->open_with_merge_id,
- &view->details->open_with_action_group);
- nautilus_ui_unmerge_ui (ui_manager,
- &view->details->scripts_merge_id,
- &view->details->scripts_action_group);
- nautilus_ui_unmerge_ui (ui_manager,
- &view->details->templates_merge_id,
- &view->details->templates_action_group);
-}
-
-static void
nautilus_view_destroy (GtkWidget *object)
{
NautilusView *view;
@@ -2983,7 +2705,6 @@ nautilus_view_display_selection_info (NautilusView *view)
char *detail_status;
NautilusFile *file;
- g_print ("display select info %s\n", G_OBJECT_TYPE_NAME (view));
g_return_if_fail (NAUTILUS_IS_VIEW (view));
selection = nautilus_view_get_selection (view);
@@ -3188,7 +2909,6 @@ done_loading (NautilusView *view,
* is no NautilusWindow any more.
*/
if (window != NULL) {
- g_print ("done_loading\n");
schedule_update_right_click_menus (view);
schedule_update_status (view);
reset_update_interval (view);
@@ -3714,7 +3434,6 @@ static void
update_right_click_menus_if_pending (NautilusView *view)
{
remove_update_right_click_menus_timeout_callback (view);
- g_print ("update_menus if pending \n");
nautilus_view_update_right_click_menus(view);
}
@@ -3729,7 +3448,6 @@ update_right_click_menus_timeout_callback (gpointer data)
g_object_ref (G_OBJECT (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));
@@ -4067,19 +3785,6 @@ nautilus_view_get_loading (NautilusView *view)
return view->details->loading;
}
-GtkUIManager *
-nautilus_view_get_ui_manager (NautilusView *view)
-{
- NautilusWindow *window;
-
- if (view->details->slot == NULL) {
- return NULL;
- }
-
- window = nautilus_window_slot_get_window (view->details->slot);
- return nautilus_window_get_ui_manager (window);
-}
-
/**
* nautilus_view_get_model:
*
@@ -4106,20 +3811,6 @@ nautilus_view_get_copied_files_atom (NautilusView *view)
}
static void
-prepend_uri_one (gpointer data, gpointer callback_data)
-{
- NautilusFile *file;
- GList **result;
-
- g_assert (NAUTILUS_IS_FILE (data));
- g_assert (callback_data != NULL);
-
- result = (GList **) callback_data;
- file = (NautilusFile *) data;
- *result = g_list_prepend (*result, nautilus_file_get_uri (file));
-}
-
-static void
offset_drop_points (GArray *relative_item_points,
int x_offset, int y_offset)
{
@@ -4135,41 +3826,6 @@ offset_drop_points (GArray *relative_item_points,
}
}
-static void
-nautilus_view_create_links_for_files (NautilusView *view, GList *files,
- GArray *relative_item_points)
-{
- GList *uris;
- char *dir_uri;
- CopyMoveDoneData *copy_move_done_data;
- g_assert (relative_item_points->len == 0
- || g_list_length (files) == relative_item_points->len);
-
- g_assert (NAUTILUS_IS_VIEW (view));
- g_assert (files != NULL);
-
- /* create a list of URIs */
- uris = NULL;
- g_list_foreach (files, prepend_uri_one, &uris);
- uris = g_list_reverse (uris);
-
- g_assert (g_list_length (uris) == g_list_length (files));
-
- /* offset the drop locations a bit so that we don't pile
- * up the icons on top of each other
- */
- offset_drop_points (relative_item_points,
- DUPLICATE_HORIZONTAL_ICON_OFFSET,
- DUPLICATE_VERTICAL_ICON_OFFSET);
-
- copy_move_done_data = pre_copy_move (view);
- dir_uri = nautilus_view_get_backing_uri (view);
- nautilus_file_operations_copy_move (uris, relative_item_points, dir_uri, GDK_ACTION_LINK,
- GTK_WIDGET (view), copy_move_done_callback, copy_move_done_data);
- g_free (dir_uri);
- g_list_free_full (uris, g_free);
-}
-
/* special_link_in_selection
*
* Return TRUE if one of our special links is in the selection.
@@ -4241,7 +3897,6 @@ trash_or_delete_done_cb (GHashTable *debuting_uris,
static void
trash_or_delete_files (GtkWindow *parent_window,
const GList *files,
- gboolean delete_if_all_already_in_trash,
NautilusView *view)
{
GList *locations;
@@ -4308,19 +3963,6 @@ update_context_menu_position_from_event (NautilusView *view,
}
}
-/* handle the open command */
-
-static void
-open_one_in_new_window (gpointer data, gpointer callback_data)
-{
- g_assert (NAUTILUS_IS_FILE (data));
- g_assert (NAUTILUS_IS_VIEW (callback_data));
-
- nautilus_view_activate_file (NAUTILUS_VIEW (callback_data),
- NAUTILUS_FILE (data),
- NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW);
-}
-
NautilusFile *
nautilus_view_get_directory_as_file (NautilusView *view)
{
@@ -4329,19 +3971,6 @@ nautilus_view_get_directory_as_file (NautilusView *view)
return view->details->directory_as_file;
}
-static void
-open_with_launch_application_callback (GtkAction *action,
- gpointer callback_data)
-{
- ApplicationLaunchParameters *launch_parameters;
-
- launch_parameters = (ApplicationLaunchParameters *) callback_data;
- nautilus_launch_application
- (launch_parameters->application,
- launch_parameters->files,
- nautilus_view_get_containing_window (launch_parameters->directory_view));
-}
-
static char *
escape_action_path (const char *action_path)
{
@@ -4426,373 +4055,6 @@ add_submenu (GtkUIManager *ui_manager,
}
}
-static void
-menu_item_show_image (GtkUIManager *ui_manager,
- const char *parent_path,
- const char *action_name)
-{
- char *path;
- GtkWidget *menuitem;
-
- path = g_strdup_printf ("%s/%s", parent_path, action_name);
- menuitem = gtk_ui_manager_get_widget (ui_manager,
- path);
- if (menuitem != NULL) {
- gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem),
- TRUE);
- }
- g_free (path);
-}
-
-static void
-add_application_to_open_with_menu (NautilusView *view,
- GAppInfo *application,
- GList *files,
- int index,
- const char *menu_placeholder,
- const char *popup_placeholder,
- const gboolean submenu)
-{
- ApplicationLaunchParameters *launch_parameters;
- char *tip;
- char *label;
- char *action_name;
- char *escaped_app;
- GtkAction *action;
- GIcon *app_icon;
- GtkUIManager *ui_manager;
-
- launch_parameters = application_launch_parameters_new
- (application, files, view);
- escaped_app = eel_str_double_underscores (g_app_info_get_name (application));
- if (submenu)
- label = g_strdup_printf ("%s", escaped_app);
- else
- label = g_strdup_printf (_("Open With %s"), escaped_app);
-
- tip = g_strdup_printf (ngettext ("Use “%s” to open the selected item",
- "Use “%s” to open the selected items",
- g_list_length (files)),
- escaped_app);
- g_free (escaped_app);
-
- action_name = g_strdup_printf ("open_with_%d", index);
-
- action = gtk_action_new (action_name,
- label,
- tip,
- NULL);
-
- app_icon = g_app_info_get_icon (application);
- if (app_icon != NULL) {
- g_object_ref (app_icon);
- } else {
- app_icon = g_themed_icon_new ("application-x-executable");
- }
-
- gtk_action_set_gicon (action, app_icon);
- g_object_unref (app_icon);
-
- g_signal_connect_data (action, "activate",
- G_CALLBACK (open_with_launch_application_callback),
- launch_parameters,
- (GClosureNotify)application_launch_parameters_free, 0);
-
- gtk_action_group_add_action (view->details->open_with_action_group,
- action);
- g_object_unref (action);
-
- ui_manager = nautilus_view_get_ui_manager (view);
- gtk_ui_manager_add_ui (ui_manager,
- view->details->open_with_merge_id,
- popup_placeholder,
- action_name,
- action_name,
- GTK_UI_MANAGER_MENUITEM,
- FALSE);
-
- menu_item_show_image (ui_manager, popup_placeholder, action_name);
-
- g_free (action_name);
- g_free (label);
- g_free (tip);
-}
-
-static void
-get_x_content_async_callback (const char **content,
- gpointer user_data)
-{
- NautilusView *view;
-
- view = NAUTILUS_VIEW (user_data);
-
- if (view->details->slot != NULL) {
- schedule_update_right_click_menus (view);
- }
- g_object_unref (view);
-}
-
-static void
-add_x_content_apps (NautilusView *view, NautilusFile *file, GList **applications)
-{
- GMount *mount;
- char **x_content_types;
- unsigned int n;
-
- g_return_if_fail (applications != NULL);
-
- mount = nautilus_file_get_mount (file);
-
- if (mount == NULL) {
- return;
- }
-
- x_content_types = nautilus_get_cached_x_content_types_for_mount (mount);
- if (x_content_types != NULL) {
- for (n = 0; x_content_types[n] != NULL; n++) {
- char *x_content_type = x_content_types[n];
- GList *app_info_for_x_content_type;
-
- app_info_for_x_content_type = g_app_info_get_all_for_type (x_content_type);
- *applications = g_list_concat (*applications, app_info_for_x_content_type);
- }
- g_strfreev (x_content_types);
- } else {
- nautilus_get_x_content_types_for_mount_async (mount,
- get_x_content_async_callback,
- NULL,
- g_object_ref (view));
-
- }
-
- g_object_unref (mount);
-}
-
-static void
-reset_open_with_menu (NautilusView *view, GList *selection)
-{
- GList *applications, *node;
- NautilusFile *file;
- gboolean submenu_visible, filter_default;
- int num_applications;
- int index;
- gboolean other_applications_visible;
- gboolean open_with_chooser_visible;
- GtkUIManager *ui_manager;
- GtkAction *action;
- GAppInfo *default_app;
-
- /* Clear any previous inserted items in the applications and viewers placeholders */
-
- ui_manager = nautilus_view_get_ui_manager (view);
- nautilus_ui_unmerge_ui (ui_manager,
- &view->details->open_with_merge_id,
- &view->details->open_with_action_group);
-
- nautilus_ui_prepare_merge_ui (ui_manager,
- "OpenWithGroup",
- &view->details->open_with_merge_id,
- &view->details->open_with_action_group);
-
- other_applications_visible = (selection != NULL);
- filter_default = (selection != NULL);
-
- for (node = selection; node != NULL; node = node->next) {
-
- file = NAUTILUS_FILE (node->data);
-
- other_applications_visible &= (!nautilus_mime_file_opens_in_view (file) &&
- !nautilus_file_is_nautilus_link (file));
- }
-
- default_app = NULL;
- if (filter_default) {
- default_app = nautilus_mime_get_default_application_for_files (selection);
- }
-
- applications = NULL;
- if (other_applications_visible) {
- applications = nautilus_mime_get_applications_for_files (selection);
- }
-
- if (g_list_length (selection) == 1) {
- add_x_content_apps (view, NAUTILUS_FILE (selection->data), &applications);
- }
-
-
- num_applications = g_list_length (applications);
-
- submenu_visible = (num_applications > 1);
-
- for (node = applications, index = 0; node != NULL; node = node->next, index++) {
- GAppInfo *application;
- char *menu_path;
- char *popup_path;
-
- application = node->data;
-
- if (default_app != NULL && g_app_info_equal (default_app, application)) {
- continue;
- }
-
- if (submenu_visible) {
- menu_path = NAUTILUS_VIEW_MENU_PATH_APPLICATIONS_SUBMENU_PLACEHOLDER;
- popup_path = NAUTILUS_VIEW_POPUP_PATH_APPLICATIONS_SUBMENU_PLACEHOLDER;
- } else {
- menu_path = NAUTILUS_VIEW_MENU_PATH_APPLICATIONS_PLACEHOLDER;
- popup_path = NAUTILUS_VIEW_POPUP_PATH_APPLICATIONS_PLACEHOLDER;
- }
-
- gtk_ui_manager_add_ui (nautilus_view_get_ui_manager (view),
- view->details->open_with_merge_id,
- menu_path,
- "separator",
- NULL,
- GTK_UI_MANAGER_SEPARATOR,
- FALSE);
-
- add_application_to_open_with_menu (view,
- node->data,
- selection,
- index,
- menu_path, popup_path, submenu_visible);
- }
- g_list_free_full (applications, g_object_unref);
- if (default_app != NULL) {
- g_object_unref (default_app);
- }
-
- open_with_chooser_visible = other_applications_visible &&
- g_list_length (selection) == 1;
-
- if (submenu_visible) {
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_OTHER_APPLICATION1);
- gtk_action_set_visible (action, open_with_chooser_visible);
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_OTHER_APPLICATION2);
- gtk_action_set_visible (action, FALSE);
- } else {
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_OTHER_APPLICATION1);
- gtk_action_set_visible (action, FALSE);
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_OTHER_APPLICATION2);
- gtk_action_set_visible (action, open_with_chooser_visible);
- }
-}
-
-static GList *
-get_all_extension_menu_items (GtkWidget *window,
- GList *selection)
-{
- GList *items;
- GList *providers;
- GList *l;
-
- providers = nautilus_module_get_extensions_for_type (NAUTILUS_TYPE_MENU_PROVIDER);
- items = NULL;
-
- for (l = providers; l != NULL; l = l->next) {
- NautilusMenuProvider *provider;
- GList *file_items;
-
- provider = NAUTILUS_MENU_PROVIDER (l->data);
- file_items = nautilus_menu_provider_get_file_items (provider,
- window,
- selection);
- items = g_list_concat (items, file_items);
- }
-
- nautilus_module_extension_list_free (providers);
-
- return items;
-}
-
-typedef struct
-{
- NautilusMenuItem *item;
- NautilusView *view;
- GList *selection;
- GtkAction *action;
-} ExtensionActionCallbackData;
-
-
-static void
-extension_action_callback_data_free (ExtensionActionCallbackData *data)
-{
- g_object_unref (data->item);
- nautilus_file_list_free (data->selection);
-
- g_free (data);
-}
-
-static gboolean
-search_in_menu_items (GList* items, const char *item_name)
-{
- GList* list;
-
- for (list = items; list != NULL; list = list->next) {
- NautilusMenu* menu;
- char *name;
-
- g_object_get (list->data, "name", &name, NULL);
- if (strcmp (name, item_name) == 0) {
- g_free (name);
- return TRUE;
- }
- g_free (name);
-
- menu = NULL;
- g_object_get (list->data, "menu", &menu, NULL);
- if (menu != NULL) {
- gboolean ret;
- GList* submenus;
-
- submenus = nautilus_menu_get_items (menu);
- ret = search_in_menu_items (submenus, item_name);
- nautilus_menu_item_list_free (submenus);
- g_object_unref (menu);
- if (ret) {
- return TRUE;
- }
- }
- }
- return FALSE;
-}
-
-static void
-extension_action_callback (GtkAction *action,
- gpointer callback_data)
-{
- ExtensionActionCallbackData *data;
- char *item_name;
- gboolean is_valid;
- GList *l;
- GList *items;
-
- data = callback_data;
-
- /* Make sure the selected menu item is valid for the final sniffed
- * mime type */
- g_object_get (data->item, "name", &item_name, NULL);
- items = get_all_extension_menu_items (gtk_widget_get_toplevel (GTK_WIDGET (data->view)),
- data->selection);
-
- is_valid = search_in_menu_items (items, item_name);
-
- for (l = items; l != NULL; l = l->next) {
- g_object_unref (l->data);
- }
- g_list_free (items);
-
- g_free (item_name);
-
- if (is_valid) {
- nautilus_menu_item_activate (data->item);
- }
-}
-
static GdkPixbuf *
get_menu_icon_for_file (NautilusFile *file,
GtkWidget *widget)
@@ -4811,153 +4073,6 @@ get_menu_icon_for_file (NautilusFile *file,
return pixbuf;
}
-static GtkAction *
-add_extension_action_for_files (NautilusView *view,
- NautilusMenuItem *item,
- GList *files)
-{
- char *name, *label, *tip, *icon;
- gboolean sensitive, priority;
- GtkAction *action;
- GdkPixbuf *pixbuf;
- ExtensionActionCallbackData *data;
-
- g_object_get (G_OBJECT (item),
- "name", &name, "label", &label,
- "tip", &tip, "icon", &icon,
- "sensitive", &sensitive,
- "priority", &priority,
- NULL);
-
- action = gtk_action_new (name,
- label,
- tip,
- NULL);
-
- if (icon != NULL) {
- pixbuf = nautilus_ui_get_menu_icon (icon, GTK_WIDGET (view));
- if (pixbuf != NULL) {
- gtk_action_set_gicon (action, G_ICON (pixbuf));
- g_object_unref (pixbuf);
- }
- }
-
- gtk_action_set_sensitive (action, sensitive);
- g_object_set (action, "is-important", priority, NULL);
-
- data = g_new0 (ExtensionActionCallbackData, 1);
- data->item = g_object_ref (item);
- data->view = view;
- data->selection = nautilus_file_list_copy (files);
- data->action = action;
-
- g_signal_connect_data (action, "activate",
- G_CALLBACK (extension_action_callback),
- data,
- (GClosureNotify)extension_action_callback_data_free, 0);
-
- gtk_action_group_add_action (view->details->extensions_menu_action_group,
- GTK_ACTION (action));
- g_object_unref (action);
-
- g_free (name);
- g_free (label);
- g_free (tip);
- g_free (icon);
-
- return action;
-}
-
-static void
-add_extension_menu_items (NautilusView *view,
- GList *files,
- GList *menu_items,
- const char *subdirectory)
-{
- GtkUIManager *ui_manager;
- GList *l;
-
- ui_manager = nautilus_view_get_ui_manager (view);
-
- for (l = menu_items; l; l = l->next) {
- NautilusMenuItem *item;
- NautilusMenu *menu;
- GtkAction *action;
- char *path;
-
- item = NAUTILUS_MENU_ITEM (l->data);
-
- g_object_get (item, "menu", &menu, NULL);
-
- action = add_extension_action_for_files (view, item, files);
-
- path = g_build_path ("/", NAUTILUS_VIEW_POPUP_PATH_EXTENSION_ACTIONS, subdirectory, NULL);
- gtk_ui_manager_add_ui (ui_manager,
- view->details->extensions_menu_merge_id,
- path,
- gtk_action_get_name (action),
- gtk_action_get_name (action),
- (menu != NULL) ? GTK_UI_MANAGER_MENU : GTK_UI_MANAGER_MENUITEM,
- FALSE);
- g_free (path);
-
- path = g_build_path ("/", NAUTILUS_VIEW_MENU_PATH_EXTENSION_ACTIONS_PLACEHOLDER,
subdirectory, NULL);
- gtk_ui_manager_add_ui (ui_manager,
- view->details->extensions_menu_merge_id,
- path,
- gtk_action_get_name (action),
- gtk_action_get_name (action),
- (menu != NULL) ? GTK_UI_MANAGER_MENU : GTK_UI_MANAGER_MENUITEM,
- FALSE);
- g_free (path);
-
- /* recursively fill the menu */
- if (menu != NULL) {
- char *subdir;
- GList *children;
-
- children = nautilus_menu_get_items (menu);
-
- subdir = g_build_path ("/", subdirectory, gtk_action_get_name (action), NULL);
- add_extension_menu_items (view,
- files,
- children,
- subdir);
-
- nautilus_menu_item_list_free (children);
- g_free (subdir);
- }
- }
-}
-
-static void
-reset_extension_actions_menu (NautilusView *view, GList *selection)
-{
- GList *items;
- GtkUIManager *ui_manager;
-
- /* Clear any previous inserted items in the extension actions placeholder */
- ui_manager = nautilus_view_get_ui_manager (view);
-
- nautilus_ui_unmerge_ui (ui_manager,
- &view->details->extensions_menu_merge_id,
- &view->details->extensions_menu_action_group);
-
- nautilus_ui_prepare_merge_ui (ui_manager,
- "DirExtensionsMenuGroup",
- &view->details->extensions_menu_merge_id,
- &view->details->extensions_menu_action_group);
-
- items = get_all_extension_menu_items (gtk_widget_get_toplevel (GTK_WIDGET (view)),
- selection);
- if (items != NULL) {
- add_extension_menu_items (view, selection, items, "");
-
- g_list_foreach (items, (GFunc) g_object_unref, NULL);
- g_list_free (items);
- }
-}
-
static char *
change_to_view_directory (NautilusView *view)
{
@@ -5151,7 +4266,9 @@ unset_script_environment_variables (void)
}
static void
-run_script_callback (GtkAction *action, gpointer callback_data)
+run_script (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
{
ScriptLaunchParameters *launch_parameters;
GdkScreen *screen;
@@ -5162,7 +4279,7 @@ run_script_callback (GtkAction *action, gpointer callback_data)
char *old_working_dir;
char **parameters;
- launch_parameters = (ScriptLaunchParameters *) callback_data;
+ launch_parameters = (ScriptLaunchParameters *) user_data;
file_uri = nautilus_file_get_uri (launch_parameters->file);
local_file_path = g_filename_from_uri (file_uri, NULL, NULL);
@@ -5182,7 +4299,7 @@ run_script_callback (GtkAction *action, gpointer callback_data)
screen = gtk_widget_get_screen (GTK_WIDGET (launch_parameters->directory_view));
- DEBUG ("run_script_callback, script_path=“%s” (omitting script parameters)",
+ DEBUG ("run_script, script_path=“%s” (omitting script parameters)",
local_file_path);
nautilus_launch_application_from_command_array (screen, quoted_path, FALSE,
@@ -5197,86 +4314,50 @@ run_script_callback (GtkAction *action, gpointer callback_data)
}
static void
-add_script_to_scripts_menus (NautilusView *directory_view,
- NautilusFile *file,
- const char *menu_path,
- const char *popup_path,
- const char *popup_bg_path)
+add_script_to_scripts_menus (NautilusView *view,
+ NautilusFile *file)
{
+ gchar *name;
+ GdkPixbuf *mimetype_icon;
+ gchar *action_name, *detailed_action_name, *prefix;
ScriptLaunchParameters *launch_parameters;
- char *tip;
- char *name;
- char *uri;
- char *action_name;
- char *escaped_label;
- GdkPixbuf *pixbuf;
- GtkUIManager *ui_manager;
- GtkAction *action;
-
- name = nautilus_file_get_display_name (file);
- uri = nautilus_file_get_uri (file);
- tip = g_strdup_printf (_("Run “%s” on any selected items"), name);
-
- launch_parameters = script_launch_parameters_new (file, directory_view);
-
- action_name = nautilus_escape_action_name (uri, "script_");
- escaped_label = eel_str_double_underscores (name);
+ GAction *action;
+ GMenuItem *menu_item;
- action = gtk_action_new (action_name,
- escaped_label,
- tip,
- NULL);
+ launch_parameters = script_launch_parameters_new (file, view);
- pixbuf = get_menu_icon_for_file (file, GTK_WIDGET (directory_view));
- if (pixbuf != NULL) {
- gtk_action_set_gicon (action, G_ICON (pixbuf));
- g_object_unref (pixbuf);
- }
+ name = nautilus_file_get_display_name (file);
+ action_name = nautilus_escape_action_name (name, "script_");
+ action = G_ACTION (g_simple_action_new (action_name, NULL));
+
g_signal_connect_data (action, "activate",
- G_CALLBACK (run_script_callback),
+ G_CALLBACK (run_script),
launch_parameters,
(GClosureNotify)script_launch_parameters_free, 0);
- gtk_action_group_add_action_with_accel (directory_view->details->scripts_action_group,
- action, NULL);
+ g_action_map_add_action (G_ACTION_MAP (view->details->view_action_group), action);
+
g_object_unref (action);
+
+ detailed_action_name = g_strconcat ("view.", action_name, NULL);
+ menu_item = g_menu_item_new (name, detailed_action_name);
- ui_manager = nautilus_view_get_ui_manager (directory_view);
-
- gtk_ui_manager_add_ui (ui_manager,
- directory_view->details->scripts_merge_id,
- menu_path,
- action_name,
- action_name,
- GTK_UI_MANAGER_MENUITEM,
- FALSE);
- gtk_ui_manager_add_ui (ui_manager,
- directory_view->details->scripts_merge_id,
- popup_path,
- action_name,
- action_name,
- GTK_UI_MANAGER_MENUITEM,
- FALSE);
- gtk_ui_manager_add_ui (ui_manager,
- directory_view->details->scripts_merge_id,
- popup_bg_path,
- action_name,
- action_name,
- GTK_UI_MANAGER_MENUITEM,
- FALSE);
-
- menu_item_show_image (ui_manager, menu_path, action_name);
- menu_item_show_image (ui_manager, popup_path, action_name);
- menu_item_show_image (ui_manager, popup_bg_path, action_name);
+ mimetype_icon = get_menu_icon_for_file (file, GTK_WIDGET (view));
+ if (mimetype_icon != NULL) {
+ g_menu_item_set_icon (menu_item, G_ICON (mimetype_icon));
+ g_object_unref (mimetype_icon);
+ }
+ nautilus_gmenu_add_item_in_submodel (view->details->selection_menu,
+ menu_item,
+ "scripts-submenu");
g_free (name);
- g_free (uri);
- g_free (tip);
g_free (action_name);
- g_free (escaped_label);
+ g_free (detailed_action_name);
}
-
+//FIXME
+/*
static void
add_submenu_to_directory_menus (NautilusView *directory_view,
GtkActionGroup *action_group,
@@ -5303,7 +4384,7 @@ add_submenu_to_directory_menus (NautilusView *directory_view,
}
g_free (name);
g_free (uri);
-}
+}*/
static gboolean
directory_belongs_in_scripts_menu (const char *uri)
@@ -5332,27 +4413,10 @@ directory_belongs_in_scripts_menu (const char *uri)
static gboolean
update_directory_in_scripts_menu (NautilusView *view, NautilusDirectory *directory)
{
- char *menu_path, *popup_path, *popup_bg_path;
GList *file_list, *filtered, *node;
gboolean any_scripts;
NautilusFile *file;
NautilusDirectory *dir;
- char *uri;
- char *escaped_path;
-
- uri = nautilus_directory_get_uri (directory);
- escaped_path = escape_action_path (uri + scripts_directory_uri_length);
- g_free (uri);
- menu_path = g_strconcat (NAUTILUS_VIEW_MENU_PATH_SCRIPTS_PLACEHOLDER,
- escaped_path,
- NULL);
- popup_path = g_strconcat (NAUTILUS_VIEW_POPUP_PATH_SCRIPTS_PLACEHOLDER,
- escaped_path,
- NULL);
- popup_bg_path = g_strconcat (NAUTILUS_VIEW_POPUP_PATH_BACKGROUND_SCRIPTS_PLACEHOLDER,
- escaped_path,
- NULL);
- g_free (escaped_path);
file_list = nautilus_directory_get_file_list (directory);
filtered = nautilus_file_list_filter_hidden (file_list, FALSE);
@@ -5365,32 +4429,13 @@ update_directory_in_scripts_menu (NautilusView *view, NautilusDirectory *directo
file = node->data;
if (nautilus_file_is_launchable (file)) {
- add_script_to_scripts_menus (view, file, menu_path, popup_path, popup_bg_path);
+ add_script_to_scripts_menus (view, file);
any_scripts = TRUE;
- } else if (nautilus_file_is_directory (file)) {
- uri = nautilus_file_get_uri (file);
- if (directory_belongs_in_scripts_menu (uri)) {
- dir = nautilus_directory_get_by_uri (uri);
- add_directory_to_scripts_directory_list (view, dir);
- nautilus_directory_unref (dir);
-
- add_submenu_to_directory_menus (view,
- view->details->scripts_action_group,
- view->details->scripts_merge_id,
- file, menu_path, popup_path, popup_bg_path);
-
- any_scripts = TRUE;
- }
- g_free (uri);
- }
+ }
}
nautilus_file_list_free (file_list);
- g_free (popup_path);
- g_free (popup_bg_path);
- g_free (menu_path);
-
return any_scripts;
}
@@ -5404,21 +4449,6 @@ update_scripts_menu (NautilusView *view)
GtkUIManager *ui_manager;
GtkAction *action;
- /* There is a race condition here. If we don't mark the scripts menu as
- valid before we begin our task then we can lose script menu updates that
- occur before we finish. */
- view->details->scripts_invalid = FALSE;
-
- ui_manager = nautilus_view_get_ui_manager (view);
- nautilus_ui_unmerge_ui (ui_manager,
- &view->details->scripts_merge_id,
- &view->details->scripts_action_group);
-
- nautilus_ui_prepare_merge_ui (ui_manager,
- "ScriptsGroup",
- &view->details->scripts_merge_id,
- &view->details->scripts_action_group);
-
/* As we walk through the directories, remove any that no longer belong. */
any_scripts = FALSE;
sorted_copy = nautilus_directory_list_sort_by_uri
@@ -5436,92 +4466,74 @@ update_scripts_menu (NautilusView *view)
}
nautilus_directory_list_free (sorted_copy);
- action = gtk_action_group_get_action (view->details->dir_action_group, NAUTILUS_ACTION_SCRIPTS);
- gtk_action_set_visible (action, any_scripts);
+ view->details->scripts_present = any_scripts;
}
static void
-create_template_callback (GtkAction *action, gpointer callback_data)
+create_template (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
{
+
CreateTemplateParameters *parameters;
- parameters = callback_data;
+ parameters = user_data;
nautilus_view_new_file (parameters->directory_view, NULL, parameters->file);
}
static void
-add_template_to_templates_menus (NautilusView *directory_view,
- NautilusFile *file,
- const char *menu_path,
- const char *popup_bg_path)
+add_template_to_templates_menus (NautilusView *view,
+ NautilusFile *file)
{
char *tmp, *tip, *uri, *name;
char *escaped_label;
- GdkPixbuf *pixbuf;
- char *action_name;
+ GdkPixbuf *mimetype_icon;
+ gchar *action_name, *detailed_action_name, *prefix;
CreateTemplateParameters *parameters;
- GtkUIManager *ui_manager;
- GtkAction *action;
+ GAction *action;
+ GMenuItem *menu_item;
tmp = nautilus_file_get_display_name (file);
name = eel_filename_strip_extension (tmp);
g_free (tmp);
uri = nautilus_file_get_uri (file);
- tip = g_strdup_printf (_("Create a new document from template “%s”"), name);
- action_name = nautilus_escape_action_name (uri, "template_");
+ action_name = nautilus_escape_action_name (name, "template_");
escaped_label = eel_str_double_underscores (name);
- parameters = create_template_parameters_new (file, directory_view);
+ parameters = create_template_parameters_new (file, view);
- action = gtk_action_new (action_name,
- escaped_label,
- tip,
- NULL);
+ action = G_ACTION (g_simple_action_new (action_name, NULL));
- pixbuf = get_menu_icon_for_file (file, GTK_WIDGET (directory_view));
- if (pixbuf != NULL) {
- gtk_action_set_gicon (action, G_ICON (pixbuf));
- g_object_unref (pixbuf);
- }
-
g_signal_connect_data (action, "activate",
- G_CALLBACK (create_template_callback),
+ G_CALLBACK (create_template),
parameters,
(GClosureNotify)create_templates_parameters_free, 0);
+
+ g_action_map_add_action (G_ACTION_MAP (view->details->view_action_group), action);
- gtk_action_group_add_action (directory_view->details->templates_action_group,
- action);
g_object_unref (action);
-
- ui_manager = nautilus_view_get_ui_manager (directory_view);
-
- gtk_ui_manager_add_ui (ui_manager,
- directory_view->details->templates_merge_id,
- menu_path,
- action_name,
- action_name,
- GTK_UI_MANAGER_MENUITEM,
- FALSE);
- gtk_ui_manager_add_ui (ui_manager,
- directory_view->details->templates_merge_id,
- popup_bg_path,
- action_name,
- action_name,
- GTK_UI_MANAGER_MENUITEM,
- FALSE);
+ detailed_action_name = g_strconcat ("view.", action_name, NULL);
+ menu_item = g_menu_item_new (name, detailed_action_name);
+
+ mimetype_icon = get_menu_icon_for_file (file, GTK_WIDGET (view));
+ if (mimetype_icon != NULL) {
+ g_menu_item_set_icon (menu_item, G_ICON (mimetype_icon));
+ g_object_unref (mimetype_icon);
+ }
- menu_item_show_image (ui_manager, menu_path, action_name);
- menu_item_show_image (ui_manager, popup_bg_path, action_name);
+ nautilus_gmenu_add_item_in_submodel (view->details->background_menu,
+ menu_item,
+ "templates-submenu");
g_free (escaped_label);
g_free (name);
- g_free (tip);
g_free (uri);
g_free (action_name);
+ g_free (detailed_action_name);
}
static void
@@ -5579,7 +4591,6 @@ update_directory_in_templates_menu (NautilusView *view,
const char *templates_directory_uri,
NautilusDirectory *directory)
{
- char *menu_path, *popup_bg_path;
GList *file_list, *filtered, *node;
gboolean any_templates;
NautilusFile *file;
@@ -5594,12 +4605,6 @@ update_directory_in_templates_menu (NautilusView *view,
uri = nautilus_directory_get_uri (directory);
escaped_path = escape_action_path (uri + strlen (templates_directory_uri));
g_free (uri);
- menu_path = g_strconcat (NAUTILUS_VIEW_MENU_PATH_NEW_DOCUMENTS_PLACEHOLDER,
- escaped_path,
- NULL);
- popup_bg_path = g_strconcat (NAUTILUS_VIEW_POPUP_PATH_BACKGROUND_NEW_DOCUMENTS_PLACEHOLDER,
- escaped_path,
- NULL);
g_free (escaped_path);
file_list = nautilus_directory_get_file_list (directory);
@@ -5614,31 +4619,14 @@ update_directory_in_templates_menu (NautilusView *view,
file = node->data;
if (nautilus_file_is_directory (file)) {
- uri = nautilus_file_get_uri (file);
- if (directory_belongs_in_templates_menu (templates_directory_uri, uri)) {
- dir = nautilus_directory_get_by_uri (uri);
- add_directory_to_templates_directory_list (view, dir);
- nautilus_directory_unref (dir);
-
- add_submenu_to_directory_menus (view,
- view->details->templates_action_group,
- view->details->templates_merge_id,
- file, menu_path, NULL, popup_bg_path);
-
- any_templates = TRUE;
- }
- g_free (uri);
} else if (nautilus_file_can_read (file)) {
- add_template_to_templates_menus (view, file, menu_path, popup_bg_path);
+ add_template_to_templates_menus (view, file);
any_templates = TRUE;
}
}
nautilus_file_list_free (file_list);
- g_free (popup_bg_path);
- g_free (menu_path);
-
return any_templates;
}
@@ -5660,21 +4648,6 @@ update_templates_menu (NautilusView *view)
templates_directory_uri = NULL;
}
- /* There is a race condition here. If we don't mark the scripts menu as
- valid before we begin our task then we can lose template menu updates that
- occur before we finish. */
- view->details->templates_invalid = FALSE;
-
- ui_manager = nautilus_view_get_ui_manager (view);
- nautilus_ui_unmerge_ui (ui_manager,
- &view->details->templates_merge_id,
- &view->details->templates_action_group);
-
- nautilus_ui_prepare_merge_ui (ui_manager,
- "TemplatesGroup",
- &view->details->templates_merge_id,
- &view->details->templates_action_group);
-
/* As we walk through the directories, remove any that no longer belong. */
any_templates = FALSE;
sorted_copy = nautilus_directory_list_sort_by_uri
@@ -5701,9 +4674,10 @@ update_templates_menu (NautilusView *view)
static void
-action_open_scripts_folder_callback (GtkAction *action,
- gpointer callback_data)
-{
+action_open_scripts_folder (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
NautilusView *view;
static GFile *location = NULL;
@@ -5711,24 +4685,10 @@ action_open_scripts_folder_callback (GtkAction *action,
location = g_file_new_for_uri (scripts_directory_uri);
}
- view = NAUTILUS_VIEW (callback_data);
+ view = NAUTILUS_VIEW (user_data);
nautilus_window_slot_open_location (view->details->slot, location, 0);
}
-static GtkMenu *
-create_popup_menu (NautilusView *view, const char *popup_path)
-{
- GtkWidget *menu;
-
- menu = gtk_ui_manager_get_widget (nautilus_view_get_ui_manager (view),
- popup_path);
- gtk_menu_set_screen (GTK_MENU (menu),
- gtk_widget_get_screen (GTK_WIDGET (view)));
- gtk_widget_show (GTK_WIDGET (menu));
-
- return GTK_MENU (menu);
-}
-
typedef struct _CopyCallbackData {
NautilusView *view;
GtkFileChooser *chooser;
@@ -6145,23 +5105,9 @@ copy_or_cut_files (NautilusView *view,
}
static void
-action_copy_files_callback (GtkAction *action,
- gpointer callback_data)
-{
- NautilusView *view;
- GList *selection;
-
- view = NAUTILUS_VIEW (callback_data);
-
- selection = nautilus_view_get_selection_for_file_transfer (view);
- copy_or_cut_files (view, selection, FALSE);
- nautilus_file_list_free (selection);
-}
-
-static void
-action_copy(GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+action_copy (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
{
NautilusView *view;
GList *selection;
@@ -6174,23 +5120,9 @@ action_copy(GSimpleAction *action,
}
static void
-action_cut_files_callback (GtkAction *action,
- gpointer callback_data)
-{
- NautilusView *view;
- GList *selection;
-
- view = NAUTILUS_VIEW (callback_data);
-
- selection = nautilus_view_get_selection_for_file_transfer (view);
- copy_or_cut_files (view, selection, TRUE);
- nautilus_file_list_free (selection);
-}
-
-static void
action_cut (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
NautilusView *view;
GList *selection;
@@ -6203,16 +5135,6 @@ action_cut (GSimpleAction *action,
}
static void
-action_copy_to_callback (GtkAction *action,
- gpointer callback_data)
-{
- NautilusView *view;
-
- view = NAUTILUS_VIEW (callback_data);
- copy_or_move_selection (view, FALSE);
-}
-
-static void
action_copy_to (GSimpleAction *action,
GVariant *state,
gpointer user_data)
@@ -6224,16 +5146,6 @@ action_copy_to (GSimpleAction *action,
}
static void
-action_move_to_callback (GtkAction *action,
- gpointer callback_data)
-{
- NautilusView *view;
-
- view = NAUTILUS_VIEW (callback_data);
- copy_or_move_selection (view, TRUE);
-}
-
-static void
action_move_to (GSimpleAction *action,
GVariant *state,
gpointer user_data)
@@ -6296,22 +5208,6 @@ paste_into (NautilusView *view,
}
static void
-action_paste_files_into_callback (GtkAction *action,
- gpointer callback_data)
-{
- NautilusView *view;
- GList *selection;
-
- view = NAUTILUS_VIEW (callback_data);
- selection = nautilus_view_get_selection (view);
- if (selection != NULL) {
- paste_into (view, NAUTILUS_FILE (selection->data));
- nautilus_file_list_free (selection);
- }
-
-}
-
-static void
action_paste_files_into (GSimpleAction *action,
GVariant *state,
gpointer user_data)
@@ -6378,20 +5274,6 @@ real_action_redo (NautilusView *view)
}
static void
-action_undo_callback (GtkAction *action,
- gpointer callback_data)
-{
- real_action_undo (NAUTILUS_VIEW (callback_data));
-}
-
-static void
-action_redo_callback (GtkAction *action,
- gpointer callback_data)
-{
- real_action_redo (NAUTILUS_VIEW (callback_data));
-}
-
-static void
real_action_rename (NautilusView *view,
gboolean select_all)
{
@@ -6423,28 +5305,13 @@ real_action_rename (NautilusView *view,
}
static void
-action_rename_callback (GtkAction *action,
- gpointer callback_data)
-{
- real_action_rename (NAUTILUS_VIEW (callback_data), FALSE);
-}
-
-static void
action_rename (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
+ GVariant *state,
+ gpointer user_data)
{
real_action_rename (NAUTILUS_VIEW (user_data), FALSE);
}
-
-static void
-action_rename_select_all_callback (GtkAction *action,
- gpointer callback_data)
-{
- real_action_rename (NAUTILUS_VIEW (callback_data), TRUE);
-}
-
#define BG_KEY_PRIMARY_COLOR "primary-color"
#define BG_KEY_SECONDARY_COLOR "secondary-color"
#define BG_KEY_COLOR_TYPE "color-shading-type"
@@ -6837,125 +5704,6 @@ action_detect_media (GSimpleAction *action,
nautilus_file_list_free (selection);
}
-static void
-action_self_mount_volume_callback (GtkAction *action,
- gpointer data)
-{
- NautilusFile *file;
- NautilusView *view;
- GMountOperation *mount_op;
-
- view = NAUTILUS_VIEW (data);
-
- file = nautilus_view_get_directory_as_file (view);
- if (file == NULL) {
- return;
- }
-
- mount_op = gtk_mount_operation_new (nautilus_view_get_containing_window (view));
- g_mount_operation_set_password_save (mount_op, G_PASSWORD_SAVE_FOR_SESSION);
- nautilus_file_mount (file, mount_op, NULL, file_mount_callback, view);
- g_object_unref (mount_op);
-}
-
-static void
-action_self_unmount_volume_callback (GtkAction *action,
- gpointer data)
-{
- NautilusFile *file;
- NautilusView *view;
- GMountOperation *mount_op;
-
- view = NAUTILUS_VIEW (data);
-
- file = nautilus_view_get_directory_as_file (view);
- if (file == NULL) {
- return;
- }
-
- mount_op = gtk_mount_operation_new (nautilus_view_get_containing_window (view));
- nautilus_file_unmount (file, mount_op, NULL, file_unmount_callback, g_object_ref (view));
- g_object_unref (mount_op);
-}
-
-static void
-action_self_eject_volume_callback (GtkAction *action,
- gpointer data)
-{
- NautilusFile *file;
- NautilusView *view;
- GMountOperation *mount_op;
-
- view = NAUTILUS_VIEW (data);
-
- file = nautilus_view_get_directory_as_file (view);
- if (file == NULL) {
- return;
- }
-
- mount_op = gtk_mount_operation_new (nautilus_view_get_containing_window (view));
- nautilus_file_eject (file, mount_op, NULL, file_eject_callback, g_object_ref (view));
- g_object_unref (mount_op);
-}
-
-static void
-action_self_start_volume_callback (GtkAction *action,
- gpointer data)
-{
- NautilusFile *file;
- NautilusView *view;
- GMountOperation *mount_op;
-
- view = NAUTILUS_VIEW (data);
-
- file = nautilus_view_get_directory_as_file (view);
- if (file == NULL) {
- return;
- }
-
- mount_op = gtk_mount_operation_new (nautilus_view_get_containing_window (view));
- nautilus_file_start (file, mount_op, NULL, file_start_callback, view);
- g_object_unref (mount_op);
-}
-
-static void
-action_self_stop_volume_callback (GtkAction *action,
- gpointer data)
-{
- NautilusFile *file;
- NautilusView *view;
- GMountOperation *mount_op;
-
- view = NAUTILUS_VIEW (data);
-
- file = nautilus_view_get_directory_as_file (view);
- if (file == NULL) {
- return;
- }
-
- mount_op = gtk_mount_operation_new (nautilus_view_get_containing_window (view));
- nautilus_file_stop (file, mount_op, NULL,
- file_stop_callback, view);
- g_object_unref (mount_op);
-}
-
-static void
-action_self_detect_media_callback (GtkAction *action,
- gpointer data)
-{
- NautilusFile *file;
- NautilusView *view;
-
- view = NAUTILUS_VIEW (data);
-
- file = nautilus_view_get_directory_as_file (view);
- if (file == NULL) {
- return;
- }
-
- nautilus_file_poll_for_media (file);
-}
-
gboolean
nautilus_view_get_show_hidden_files (NautilusView *view)
{
@@ -6963,19 +5711,22 @@ nautilus_view_get_show_hidden_files (NautilusView *view)
}
const GActionEntry view_entries[] = {
- /* Toolbar menu */
- { "zoom-in", action_zoom_in },
- { "zoom-out", action_zoom_out },
- { "zoom-to-level", NULL, NULL, "1", action_zoom_to_level },
- { "zoom-normal", action_zoom_normal },
- { "undo", action_undo },
- { "redo", action_redo },
- { "show-hidden-files", NULL, NULL, "true", action_show_hidden_files },
- /* Background menu */
+ /* Toolbar menu */
+ { "zoom-in", action_zoom_in },
+ { "zoom-out", action_zoom_out },
+ { "zoom-to-level", NULL, NULL, "1", action_zoom_to_level },
+ { "zoom-normal", action_zoom_normal },
+ { "undo", action_undo },
+ { "redo", action_redo },
+ { "show-hidden-files", NULL, NULL, "true", action_show_hidden_files },
+ /* Background menu */
{ "new-folder", action_new_folder },
{ "select-all", action_select_all },
- { "paste", action_paste_files },
+ { "paste", action_paste_files },
+ { "new-document" },
/* Selection menu */
+ { "scripts" },
+ { "open-scripts-folder", action_open_scripts_folder },
{ "open-item-location", action_open_item_location },
{ "open-with-default-application", action_open_with_default_application },
{ "open-with-other-application", action_open_with_other_application },
@@ -6986,6 +5737,7 @@ const GActionEntry view_entries[] = {
{ "move-to", action_move_to},
{ "copy-to", action_copy_to},
{ "move-to-trash", action_move_to_trash},
+ { "delete", action_delete},
{ "restore-from-trash", action_restore_from_trash},
{ "paste-into", action_paste_files_into },
{ "rename", action_rename},
@@ -7006,132 +5758,6 @@ const GActionEntry view_entries[] = {
{ "invert-selection", action_invert_selection }
};
-static const GtkActionEntry directory_view_entries[] = {
- /* name, stock id, label */ { NAUTILUS_ACTION_NEW_DOCUMENTS, "document-new", N_("New _Document") },
- /* name, stock id */ { NAUTILUS_ACTION_OPEN_SCRIPTS_FOLDER, NULL,
- /* label, accelerator */ N_("_Open Scripts Folder"), NULL,
- /* tooltip */ N_("Show the folder containing the scripts that appear in this menu"),
- G_CALLBACK (action_open_scripts_folder_callback) },
- /*
- * multiview-TODO: decide whether "Reset to Defaults" should
- * be window-wide, and not just view-wide.
- * Since this also resets the "Show hidden files" mode,
- * it is a mixture of both ATM.
- */
- /* name, stock id */ { NAUTILUS_ACTION_SELF_MOUNT_VOLUME, NULL,
- /* label, accelerator */ N_("_Mount"), NULL,
- /* tooltip */ N_("Mount the volume associated with the open folder"),
- G_CALLBACK (action_self_mount_volume_callback) },
- /* name, stock id */ { NAUTILUS_ACTION_SELF_UNMOUNT_VOLUME, NULL,
- /* label, accelerator */ N_("_Unmount"), NULL,
- /* tooltip */ N_("Unmount the volume associated with the open folder"),
- G_CALLBACK (action_self_unmount_volume_callback) },
- /* name, stock id */ { NAUTILUS_ACTION_SELF_EJECT_VOLUME, NULL,
- /* label, accelerator */ N_("_Eject"), NULL,
- /* tooltip */ N_("Eject the volume associated with the open folder"),
- G_CALLBACK (action_self_eject_volume_callback) },
- /* name, stock id */ { NAUTILUS_ACTION_SELF_START_VOLUME, NULL,
- /* label, accelerator */ N_("_Start"), NULL,
- /* tooltip */ N_("Start the volume associated with the open folder"),
- G_CALLBACK (action_self_start_volume_callback) },
- /* name, stock id */ { NAUTILUS_ACTION_SELF_STOP_VOLUME, NULL,
- /* label, accelerator */ N_("_Stop"), NULL,
- /* tooltip */ N_("Stop the volume associated with the open folder"),
- G_CALLBACK (action_self_stop_volume_callback) },
- /* name, stock id */ { NAUTILUS_ACTION_SELF_POLL, NULL,
- /* label, accelerator */ N_("_Detect Media"), NULL,
- /* tooltip */ N_("Detect media in the selected drive"),
- G_CALLBACK (action_self_detect_media_callback) },
-};
-
-static const GtkToggleActionEntry directory_view_toggle_entries[] = {
- /* name, stock id */ { NAUTILUS_ACTION_SHOW_HIDDEN_FILES, NULL,
- /* label, accelerator */ N_("Show _Hidden Files"), "<control>H",
- /* tooltip */ N_("Toggle the display of hidden files in the current window"),
- G_CALLBACK (action_show_hidden_files_callback),
- TRUE },
-};
-
-static void
-pre_activate (NautilusView *view,
- GtkAction *action,
- GtkActionGroup *action_group)
-{
- GdkEvent *event;
- GtkWidget *proxy;
- gboolean activated_from_popup;
-
- /* check whether action was activated through a popup menu.
- * If not, unset the last stored context menu popup position */
- activated_from_popup = FALSE;
-
- event = gtk_get_current_event ();
- proxy = gtk_get_event_widget (event);
-
- if (proxy != NULL) {
- GtkWidget *toplevel;
- GdkWindowTypeHint hint;
-
- toplevel = gtk_widget_get_toplevel (proxy);
-
- if (GTK_IS_WINDOW (toplevel)) {
- hint = gtk_window_get_type_hint (GTK_WINDOW (toplevel));
-
- if (hint == GDK_WINDOW_TYPE_HINT_POPUP_MENU) {
- activated_from_popup = TRUE;
- }
- }
- }
-
- if (!activated_from_popup) {
- update_context_menu_position_from_event (view, NULL);
- }
-}
-
-static void
-real_merge_menus (NautilusView *view)
-{
- GtkActionGroup *action_group;
- GtkUIManager *ui_manager;
- GtkAction *action;
- char *tooltip;
-
- g_print("real merge menus\n");
-
- ui_manager = nautilus_view_get_ui_manager (view);
-
- action_group = gtk_action_group_new ("DirViewActions");
- gtk_action_group_set_translation_domain (action_group, GETTEXT_PACKAGE);
- view->details->dir_action_group = action_group;
- gtk_action_group_add_actions (action_group,
- directory_view_entries, G_N_ELEMENTS (directory_view_entries),
- view);
- gtk_action_group_add_toggle_actions (action_group,
- directory_view_toggle_entries, G_N_ELEMENTS
(directory_view_toggle_entries),
- view);
-
- tooltip = g_strdup (_("Run or manage scripts"));
- /* Create a script action here specially because its tooltip is dynamic */
- action = gtk_action_new ("Scripts", _("_Scripts"), tooltip, NULL);
- gtk_action_group_add_action (action_group, action);
- g_object_unref (action);
- g_free (tooltip);
-
- g_signal_connect_object (action_group, "pre-activate",
- G_CALLBACK (pre_activate), G_OBJECT (view),
- G_CONNECT_SWAPPED);
-
- /* Insert action group at end so clipboard action group ends up before it */
- gtk_ui_manager_insert_action_group (ui_manager, action_group, -1);
- g_object_unref (action_group); /* owned by ui manager */
-
- view->details->dir_merge_id = gtk_ui_manager_add_ui_from_resource (ui_manager,
"/org/gnome/nautilus/nautilus-directory-view-ui.xml", NULL);
-
- view->details->scripts_invalid = TRUE;
- view->details->templates_invalid = TRUE;
-}
-
-
static gboolean
can_paste_into_file (NautilusFile *file)
{
@@ -7197,13 +5823,13 @@ clipboard_targets_received (GtkClipboard *clipboard,
/* Take into account if the action was previously disabled for other reasons,
like the directory not being writabble */
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
- can_paste && g_action_get_enabled (action));
+ can_paste && g_action_get_enabled (action));
action = g_action_map_lookup_action (G_ACTION_MAP (view->details->view_action_group),
"paste-into");
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
- can_paste && g_action_get_enabled (action));
+ can_paste && g_action_get_enabled (action));
g_object_unref (view);
@@ -7306,57 +5932,6 @@ file_should_show_foreach (NautilusFile *file,
*start_stop_type = nautilus_file_get_start_stop_type (file);
}
-static void
-file_should_show_self (NautilusFile *file,
- gboolean *show_mount,
- gboolean *show_unmount,
- gboolean *show_eject,
- gboolean *show_start,
- gboolean *show_stop,
- gboolean *show_poll,
- GDriveStartStopType *start_stop_type)
-{
- *show_mount = FALSE;
- *show_unmount = FALSE;
- *show_eject = FALSE;
- *show_start = FALSE;
- *show_stop = FALSE;
- *show_poll = FALSE;
-
- if (file == NULL) {
- return;
- }
-
- if (nautilus_file_can_eject (file)) {
- *show_eject = TRUE;
- }
-
- if (nautilus_file_can_mount (file)) {
- *show_mount = TRUE;
- }
-
- if (nautilus_file_can_start (file) || nautilus_file_can_start_degraded (file)) {
- *show_start = TRUE;
- }
-
- if (nautilus_file_can_stop (file)) {
- *show_stop = TRUE;
- }
-
- /* Dot not show both Unmount and Eject/Safe Removal; too confusing to
- * have too many menu entries */
- if (nautilus_file_can_unmount (file) && !*show_eject && !*show_stop) {
- *show_unmount = TRUE;
- }
-
- if (nautilus_file_can_poll_for_media (file) && !nautilus_file_is_media_check_automatic (file)) {
- *show_poll = TRUE;
- }
-
- *start_stop_type = nautilus_file_get_start_stop_type (file);
-
-}
-
static gboolean
files_are_all_directories (GList *files)
{
@@ -7433,231 +6008,6 @@ can_restore_from_trash (GList *files)
}
static void
-real_update_menus_volumes (NautilusView *view,
- GList *selection,
- gint selection_count)
-{
- GList *l;
- NautilusFile *file;
- gboolean show_mount;
- gboolean show_unmount;
- gboolean show_eject;
- gboolean show_start;
- gboolean show_stop;
- gboolean show_poll;
- GDriveStartStopType start_stop_type;
- gboolean show_self_mount;
- gboolean show_self_unmount;
- gboolean show_self_eject;
- gboolean show_self_start;
- gboolean show_self_stop;
- gboolean show_self_poll;
- GDriveStartStopType self_start_stop_type;
- GtkAction *action;
-
- show_mount = (selection != NULL);
- show_unmount = (selection != NULL);
- show_eject = (selection != NULL);
- show_start = (selection != NULL && selection_count == 1);
- show_stop = (selection != NULL && selection_count == 1);
- show_poll = (selection != NULL && selection_count == 1);
- start_stop_type = G_DRIVE_START_STOP_TYPE_UNKNOWN;
- self_start_stop_type = G_DRIVE_START_STOP_TYPE_UNKNOWN;
-
- for (l = selection; l != NULL && (show_mount || show_unmount
- || show_eject
- || show_start || show_stop
- || show_poll);
- l = l->next) {
- gboolean show_mount_one;
- gboolean show_unmount_one;
- gboolean show_eject_one;
- gboolean show_start_one;
- gboolean show_stop_one;
- gboolean show_poll_one;
-
- file = NAUTILUS_FILE (l->data);
- file_should_show_foreach (file,
- &show_mount_one,
- &show_unmount_one,
- &show_eject_one,
- &show_start_one,
- &show_stop_one,
- &show_poll_one,
- &start_stop_type);
-
- show_mount &= show_mount_one;
- show_unmount &= show_unmount_one;
- show_eject &= show_eject_one;
- show_start &= show_start_one;
- show_stop &= show_stop_one;
- show_poll &= show_poll_one;
- }
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_MOUNT_VOLUME);
- gtk_action_set_visible (action, show_mount);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_UNMOUNT_VOLUME);
- gtk_action_set_visible (action, show_unmount);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_EJECT_VOLUME);
- gtk_action_set_visible (action, show_eject);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_START_VOLUME);
- gtk_action_set_visible (action, show_start);
- if (show_start) {
- switch (start_stop_type) {
- default:
- case G_DRIVE_START_STOP_TYPE_UNKNOWN:
- gtk_action_set_label (action, _("_Start"));
- gtk_action_set_tooltip (action, _("Start the selected drive"));
- break;
- case G_DRIVE_START_STOP_TYPE_SHUTDOWN:
- gtk_action_set_label (action, _("_Start"));
- gtk_action_set_tooltip (action, _("Start the selected drive"));
- break;
- case G_DRIVE_START_STOP_TYPE_NETWORK:
- gtk_action_set_label (action, _("_Connect"));
- gtk_action_set_tooltip (action, _("Connect to the selected drive"));
- break;
- case G_DRIVE_START_STOP_TYPE_MULTIDISK:
- gtk_action_set_label (action, _("_Start Multi-disk Drive"));
- gtk_action_set_tooltip (action, _("Start the selected multi-disk drive"));
- break;
- case G_DRIVE_START_STOP_TYPE_PASSWORD:
- gtk_action_set_label (action, _("U_nlock Drive"));
- gtk_action_set_tooltip (action, _("Unlock the selected drive"));
- break;
- }
- }
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_STOP_VOLUME);
- gtk_action_set_visible (action, show_stop);
- if (show_stop) {
- switch (start_stop_type) {
- default:
- case G_DRIVE_START_STOP_TYPE_UNKNOWN:
- gtk_action_set_label (action, _("_Stop"));
- gtk_action_set_tooltip (action, _("Stop the selected drive"));
- break;
- case G_DRIVE_START_STOP_TYPE_SHUTDOWN:
- gtk_action_set_label (action, _("_Safely Remove Drive"));
- gtk_action_set_tooltip (action, _("Safely remove the selected drive"));
- break;
- case G_DRIVE_START_STOP_TYPE_NETWORK:
- gtk_action_set_label (action, _("_Disconnect"));
- gtk_action_set_tooltip (action, _("Disconnect the selected drive"));
- break;
- case G_DRIVE_START_STOP_TYPE_MULTIDISK:
- gtk_action_set_label (action, _("_Stop Multi-disk Drive"));
- gtk_action_set_tooltip (action, _("Stop the selected multi-disk drive"));
- break;
- case G_DRIVE_START_STOP_TYPE_PASSWORD:
- gtk_action_set_label (action, _("_Lock Drive"));
- gtk_action_set_tooltip (action, _("Lock the selected drive"));
- break;
- }
- }
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_POLL);
- gtk_action_set_visible (action, show_poll);
-
- show_self_mount = show_self_unmount = show_self_eject =
- show_self_start = show_self_stop = show_self_poll = FALSE;
-
- file = nautilus_view_get_directory_as_file (view);
- file_should_show_self (file,
- &show_self_mount,
- &show_self_unmount,
- &show_self_eject,
- &show_self_start,
- &show_self_stop,
- &show_self_poll,
- &self_start_stop_type);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_SELF_MOUNT_VOLUME);
- gtk_action_set_visible (action, show_self_mount);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_SELF_UNMOUNT_VOLUME);
- gtk_action_set_visible (action, show_self_unmount);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_SELF_EJECT_VOLUME);
- gtk_action_set_visible (action, show_self_eject);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_SELF_START_VOLUME);
- gtk_action_set_visible (action, show_self_start);
- if (show_self_start) {
- switch (self_start_stop_type) {
- default:
- case G_DRIVE_START_STOP_TYPE_UNKNOWN:
- gtk_action_set_label (action, _("_Start"));
- gtk_action_set_tooltip (action, _("Start the drive associated with the open folder"));
- break;
- case G_DRIVE_START_STOP_TYPE_SHUTDOWN:
- gtk_action_set_label (action, _("_Start"));
- gtk_action_set_tooltip (action, _("Start the drive associated with the open folder"));
- break;
- case G_DRIVE_START_STOP_TYPE_NETWORK:
- gtk_action_set_label (action, _("_Connect"));
- gtk_action_set_tooltip (action, _("Connect to the drive associated with the open
folder"));
- break;
- case G_DRIVE_START_STOP_TYPE_MULTIDISK:
- gtk_action_set_label (action, _("_Start Multi-disk Drive"));
- gtk_action_set_tooltip (action, _("Start the multi-disk drive associated with the
open folder"));
- break;
- case G_DRIVE_START_STOP_TYPE_PASSWORD:
- gtk_action_set_label (action, _("_Unlock Drive"));
- gtk_action_set_tooltip (action, _("Unlock the drive associated with the open
folder"));
- break;
- }
- }
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_SELF_STOP_VOLUME);
- gtk_action_set_visible (action, show_self_stop);
- if (show_self_stop) {
- switch (self_start_stop_type) {
- default:
- case G_DRIVE_START_STOP_TYPE_UNKNOWN:
- gtk_action_set_label (action, _("_Stop"));
- gtk_action_set_tooltip (action, _("_Stop the drive associated with the open folder"));
- break;
- case G_DRIVE_START_STOP_TYPE_SHUTDOWN:
- gtk_action_set_label (action, _("_Safely Remove Drive"));
- gtk_action_set_tooltip (action, _("Safely remove the drive associated with the open
folder"));
- break;
- case G_DRIVE_START_STOP_TYPE_NETWORK:
- gtk_action_set_label (action, _("_Disconnect"));
- gtk_action_set_tooltip (action, _("Disconnect the drive associated with the open
folder"));
- break;
- case G_DRIVE_START_STOP_TYPE_MULTIDISK:
- gtk_action_set_label (action, _("_Stop Multi-disk Drive"));
- gtk_action_set_tooltip (action, _("Stop the multi-disk drive associated with the open
folder"));
- break;
- case G_DRIVE_START_STOP_TYPE_PASSWORD:
- gtk_action_set_label (action, _("_Lock Drive"));
- gtk_action_set_tooltip (action, _("Lock the drive associated with the open folder"));
- break;
- }
- }
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_SELF_POLL);
- gtk_action_set_visible (action, show_self_poll);
-
-}
-
-static void
clipboard_changed_callback (NautilusClipboardMonitor *monitor, NautilusView *view)
{
/* Update paste menu item */
@@ -7694,403 +6044,6 @@ can_trash_all (GList *files)
return TRUE;
}
-static void
-real_update_menus_old (NautilusView *view)
-{
- GList *selection, *l;
- gint selection_count;
- const char *tip, *label;
- char *label_with_underscore;
- gboolean selection_contains_special_link;
- gboolean selection_contains_desktop_or_home_dir;
- gboolean selection_contains_recent;
- gboolean selection_contains_search;
- gboolean selection_all_in_trash;
- gboolean can_create_files;
- gboolean can_delete_files;
- gboolean can_move_files;
- gboolean can_trash_files;
- gboolean can_copy_files;
- gboolean can_link_files;
- gboolean show_separate_delete_command;
- gboolean show_open_alternate;
- gboolean show_open_in_new_tab;
- gboolean can_open;
- gboolean show_app, show_run;
- gboolean show_save_search;
- gboolean save_search_sensitive;
- gboolean show_save_search_as;
- GtkAction *action;
- GAppInfo *app;
- GIcon *app_icon;
- GtkWidget *menuitem;
- gboolean show_properties;
-
- selection = nautilus_view_get_selection (view);
- selection_count = g_list_length (selection);
-
- selection_contains_special_link = special_link_in_selection (selection);
- selection_contains_desktop_or_home_dir = desktop_or_home_dir_in_selection (selection);
- selection_contains_recent = showing_recent_directory (view);
- selection_contains_search = view->details->model &&
- NAUTILUS_IS_SEARCH_DIRECTORY (view->details->model);
- selection_all_in_trash = all_selected_items_in_trash (selection);
-
- can_create_files = nautilus_view_supports_creating_files (view);
- can_delete_files =
- can_delete_all (selection) &&
- selection_count != 0 &&
- !selection_contains_special_link &&
- !selection_contains_desktop_or_home_dir;
- can_trash_files =
- can_trash_all (selection) &&
- selection_count != 0 &&
- !selection_contains_special_link &&
- !selection_contains_desktop_or_home_dir;
- can_copy_files = selection_count != 0
- && !selection_contains_special_link;
-
- can_move_files = can_delete_files && !selection_contains_recent;
- can_link_files = can_create_files && can_copy_files;
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_RENAME);
- /* rename sensitivity depending on selection */
- if (selection_count > 1) {
- /* If multiple files are selected, sensitivity depends on whether a bulk renamer is
registered. */
- gtk_action_set_sensitive (action, have_bulk_rename_tool ());
- } else {
- gtk_action_set_sensitive (action,
- selection_count == 1 &&
- nautilus_view_can_rename_file (view, selection->data));
- }
- gtk_action_set_visible (action, !selection_contains_recent);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_SET_AS_WALLPAPER);
- /* rename sensitivity depending on selection */
- if (can_set_wallpaper (selection)) {
- gtk_action_set_visible (action, TRUE);
- } else {
- gtk_action_set_visible (action, FALSE);
- }
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_OPEN_ITEM_LOCATION);
- if (selection_count == 1 &&
- (selection_contains_recent || selection_contains_search))
- {
- gtk_action_set_visible (action, TRUE);
- } else {
- gtk_action_set_visible (action, FALSE);
- }
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_NEW_FOLDER);
- gtk_action_set_sensitive (action, can_create_files);
- gtk_action_set_visible (action, !selection_contains_recent);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_NEW_FOLDER_WITH_SELECTION);
- gtk_action_set_sensitive (action, can_create_files && can_delete_files && (selection_count > 1));
- gtk_action_set_visible (action, !selection_contains_recent && (selection_count > 1));
- label_with_underscore = g_strdup_printf (ngettext("New Folder with Selection (%'d Item)",
- "New Folder with Selection (%'d Items)",
- selection_count),
- selection_count);
- g_object_set (action, "label", label_with_underscore, NULL);
- g_free (label_with_underscore);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_OPEN);
- gtk_action_set_sensitive (action, selection_count != 0);
-
- can_open = show_app = show_run = selection_count != 0;
-
- for (l = selection; l != NULL; l = l->next) {
- NautilusFile *file;
-
- file = NAUTILUS_FILE (selection->data);
-
- if (!nautilus_mime_file_opens_in_external_app (file)) {
- show_app = FALSE;
- }
-
- if (!nautilus_mime_file_launches (file)) {
- show_run = FALSE;
- }
-
- if (!show_app && !show_run) {
- break;
- }
- }
-
- label_with_underscore = NULL;
-
- app = NULL;
- app_icon = NULL;
-
- if (can_open && show_app) {
- app = nautilus_mime_get_default_application_for_files (selection);
- }
-
- if (app != NULL) {
- char *escaped_app;
-
- escaped_app = eel_str_double_underscores (g_app_info_get_name (app));
- label_with_underscore = g_strdup_printf (_("_Open With %s"),
- escaped_app);
-
- app_icon = g_app_info_get_icon (app);
- if (app_icon != NULL) {
- g_object_ref (app_icon);
- }
-
- g_free (escaped_app);
- g_object_unref (app);
- } else if (show_run) {
- label_with_underscore = g_strdup (_("Run"));
- } else {
- label_with_underscore = g_strdup (_("_Open"));
- }
-
- g_object_set (action, "label", label_with_underscore, NULL);
- g_free (label_with_underscore);
-
- menuitem = gtk_ui_manager_get_widget (
- nautilus_view_get_ui_manager (view),
- NAUTILUS_VIEW_POPUP_PATH_OPEN);
-
- /* Only force displaying the icon if it is an application icon */
- gtk_image_menu_item_set_always_show_image (GTK_IMAGE_MENU_ITEM (menuitem), app_icon != NULL);
-
- if (app_icon == NULL) {
- app_icon = g_themed_icon_new ("gtk-open");
- }
-
- gtk_action_set_gicon (action, app_icon);
- g_object_unref (app_icon);
-
- gtk_action_set_visible (action, can_open);
-
- show_open_alternate = file_list_all_are_folders (selection) &&
- selection_count > 0 &&
- !NAUTILUS_IS_DESKTOP_CANVAS_VIEW (view);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_OPEN_ALTERNATE);
-
- gtk_action_set_sensitive (action, selection_count != 0);
- gtk_action_set_visible (action, show_open_alternate);
-
- if (selection_count == 0 || selection_count == 1) {
- label_with_underscore = g_strdup (_("Open in New _Window"));
- } else {
- label_with_underscore = g_strdup_printf (ngettext("Open in %'d New _Window",
- "Open in %'d New _Windows",
- selection_count),
- selection_count);
- }
-
- g_object_set (action, "label",
- label_with_underscore,
- NULL);
- g_free (label_with_underscore);
-
- show_open_in_new_tab = show_open_alternate;
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_OPEN_IN_NEW_TAB);
- gtk_action_set_sensitive (action, selection_count != 0);
- gtk_action_set_visible (action, show_open_in_new_tab);
-
- if (selection_count == 0 || selection_count == 1) {
- label_with_underscore = g_strdup (_("Open in New _Tab"));
- } else {
- label_with_underscore = g_strdup_printf (ngettext("Open in %'d New _Tab",
- "Open in %'d New _Tabs",
- selection_count),
- selection_count);
- }
-
- g_object_set (action, "label",
- label_with_underscore,
- NULL);
- g_free (label_with_underscore);
-
- /* Broken into its own function just for convenience */
- reset_open_with_menu (view, selection);
- reset_extension_actions_menu (view, selection);
-
- if (selection_all_in_trash) {
- label = _("_Delete Permanently");
- tip = _("Delete all selected items permanently");
- show_separate_delete_command = FALSE;
- } else {
- label = _("Mo_ve to Trash");
- tip = _("Move each selected item to the Trash");
- show_separate_delete_command = g_settings_get_boolean (nautilus_preferences,
NAUTILUS_PREFERENCES_ENABLE_DELETE);
- }
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_TRASH);
- g_object_set (action,
- "label", label,
- "tooltip", tip,
- "icon-name", selection_all_in_trash ?
- NAUTILUS_ICON_DELETE : NAUTILUS_ICON_TRASH_FULL,
- NULL);
- /* if the backend supports delete but not trash then don't show trash */
- if (!can_trash_files && can_delete_files) {
- gtk_action_set_visible (action, FALSE);
- } else {
- gtk_action_set_visible (action, TRUE);
- gtk_action_set_sensitive (action, can_trash_files);
- }
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_DELETE);
- /* if the backend doesn't support trash but supports delete
- show the delete option. or if the user set this pref */
- gtk_action_set_visible (action, (!can_trash_files && can_delete_files) ||
show_separate_delete_command);
-
- if (selection_contains_recent) {
- label = _("Remo_ve from Recent");
- tip = _("Remove each selected item from the recently used list");
- } else {
- label = _("_Delete");
- tip = _("Delete each selected item, without moving to the Trash");
- }
-
- if ((!can_trash_files && can_delete_files) || show_separate_delete_command) {
- g_object_set (action,
- "label", label,
- "tooltip", tip,
- "icon-name", NAUTILUS_ICON_DELETE,
- NULL);
- }
- gtk_action_set_sensitive (action, can_delete_files);
-
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_RESTORE_FROM_TRASH);
- //update_restore_from_trash_action (action, selection, FALSE);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_CREATE_LINK);
- gtk_action_set_sensitive (action, can_link_files);
- gtk_action_set_visible (action, !selection_contains_recent);
- g_object_set (action, "label",
- ngettext ("Ma_ke Link",
- "Ma_ke Links",
- selection_count),
- NULL);
-
- show_properties = !showing_network_directory (view)
- && (!NAUTILUS_IS_DESKTOP_CANVAS_VIEW (view) || selection_count > 0);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_PROPERTIES);
-
- gtk_action_set_sensitive (action, show_properties);
- gtk_action_set_visible (action, show_properties);
-
- if (selection_count == 0) {
- gtk_action_set_tooltip (action, _("View or modify the properties of the open folder"));
- } else {
- gtk_action_set_tooltip (action, _("View or modify the properties of each selected item"));
- }
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_PROPERTIES_ACCEL);
-
- gtk_action_set_sensitive (action, show_properties);
- gtk_action_set_visible (action, show_properties);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_EMPTY_TRASH);
- g_object_set (action,
- "label", _("E_mpty Trash"),
- NULL);
- gtk_action_set_sensitive (action, !nautilus_trash_monitor_is_empty ());
- //gtk_action_set_visible (action, should_show_empty_trash (view));
-
- show_save_search = FALSE;
- save_search_sensitive = FALSE;
- show_save_search_as = FALSE;
- if (selection_contains_search) {
- NautilusSearchDirectory *search;
-
- search = NAUTILUS_SEARCH_DIRECTORY (view->details->model);
- if (nautilus_search_directory_is_saved_search (search)) {
- show_save_search = TRUE;
- save_search_sensitive = nautilus_search_directory_is_modified (search);
- } else {
- show_save_search_as = TRUE;
- }
- }
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_SAVE_SEARCH);
- gtk_action_set_visible (action, show_save_search);
- gtk_action_set_sensitive (action, save_search_sensitive);
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_SAVE_SEARCH_AS);
- gtk_action_set_visible (action, show_save_search_as);
-
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_SELECT_ALL);
- gtk_action_set_sensitive (action, !nautilus_view_is_empty (view));
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_SELECT_PATTERN);
- gtk_action_set_sensitive (action, !nautilus_view_is_empty (view));
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_INVERT_SELECTION);
- gtk_action_set_sensitive (action, !nautilus_view_is_empty (view));
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_CUT);
- gtk_action_set_sensitive (action, can_move_files);
- gtk_action_set_visible (action, !selection_contains_recent);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_COPY);
- gtk_action_set_sensitive (action, can_copy_files);
-
- real_update_menus_volumes (view, selection, selection_count);
-
- update_undo_actions (view);
-
- nautilus_file_list_free (selection);
-
- if (view->details->scripts_invalid) {
- update_scripts_menu (view);
- }
-
- if (can_create_files
- && !selection_contains_recent
- && view->details->templates_invalid) {
- update_templates_menu (view);
- }
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_NEW_DOCUMENTS);
- gtk_action_set_sensitive (action, can_create_files);
- gtk_action_set_visible (action, !selection_contains_recent && view->details->templates_present);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_COPY_TO);
- gtk_action_set_sensitive (action, can_copy_files);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
- NAUTILUS_ACTION_MOVE_TO);
- gtk_action_set_sensitive (action, can_move_files);
- gtk_action_set_visible (action, !selection_contains_recent);
-
- action = gtk_action_group_get_action (view->details->dir_action_group,
NAUTILUS_ACTION_SHOW_HIDDEN_FILES);
- gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), view->details->show_hidden_files);
-}
-
GActionGroup *
nautilus_view_get_action_group (NautilusView *view)
{
@@ -8123,9 +6076,6 @@ real_update_actions_state (NautilusView *view)
gboolean show_open_alternate;
gboolean show_open_in_new_tab;
gboolean show_app, show_run;
- gboolean show_save_search;
- gboolean save_search_sensitive;
- gboolean show_save_search_as;
gboolean item_opens_in_view;
gboolean is_read_only;
gboolean test;
@@ -8144,13 +6094,15 @@ real_update_actions_state (NautilusView *view)
gboolean show_stop;
gboolean show_detect_media;
GDriveStartStopType start_stop_type;
+ NautilusFileUndoInfo *info;
+ NautilusFileUndoManagerState undo_state;
+ gboolean undo_active, redo_active;
+ gboolean is_undo;
window = nautilus_view_get_window (view);
view_action_group = view->details->view_action_group;
- g_print ("entering update actions state\n");
-
selection = nautilus_view_get_selection (view);
selection_count = g_list_length (selection);
selection_contains_special_link = special_link_in_selection (selection);
@@ -8251,8 +6203,16 @@ real_update_actions_state (NautilusView *view)
action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
"move-to-trash");
- g_simple_action_set_enabled (G_SIMPLE_ACTION (action), can_trash_files &&
- can_delete_files);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action), can_trash_files);
+
+ action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
+ "delete");
+ /* Only show it in trash folder or if the setting to include a delete menu item
+ * is enabled */
+ show_separate_delete_command = g_settings_get_boolean (nautilus_preferences,
NAUTILUS_PREFERENCES_ENABLE_DELETE);
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
+ can_delete_files &&
+ (!can_trash_files || show_separate_delete_command));
action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
"cut");
@@ -8310,6 +6270,11 @@ real_update_actions_state (NautilusView *view)
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
show_detect_media);
+ action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
+ "scripts");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
+ view->details->scripts_present);
+
/* Background menu actions */
action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
"new-folder");
@@ -8329,6 +6294,13 @@ real_update_actions_state (NautilusView *view)
"properties");
g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
show_properties);
+ action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
+ "new-document");
+ g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
+ can_create_files &&
+ !selection_contains_recent &&
+ view->details->templates_present);
+
/* Ask the clipboard */
g_object_ref (view); /* Need to keep the object alive until we get the reply */
gtk_clipboard_request_targets (nautilus_clipboard_get (GTK_WIDGET (view)),
@@ -8341,13 +6313,28 @@ real_update_actions_state (NautilusView *view)
!nautilus_view_is_empty (view));
/* Toolbar menu actions */
+ /* Undo and Redo */
+ info = nautilus_file_undo_manager_get_action ();
+ undo_state = nautilus_file_undo_manager_get_state ();
+ undo_active = redo_active = FALSE;
+ if (info != NULL &&
+ (undo_state > NAUTILUS_FILE_UNDO_MANAGER_STATE_NONE)) {
+ is_undo = (undo_state == NAUTILUS_FILE_UNDO_MANAGER_STATE_UNDO);
+ undo_active = is_undo;
+ redo_active = !is_undo;
+ }
+
+ action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
+ "undo");
+ g_simple_action_set_enabled (action, undo_active);
+ action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
+ "redo");
+ g_simple_action_set_enabled (action, redo_active);
+
action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
"show-hidden-files");
g_action_change_state (action,
g_variant_new_boolean (view->details->show_hidden_files));
-
- g_print ("exiting update actions state\n");
-
}
/* Convenience function to be called when updating menus,
@@ -8376,13 +6363,11 @@ update_selection_menu (NautilusView *view)
gboolean show_app, show_run;
gboolean item_opens_in_view;
GAction *action;
+ gchar *label_with_underscore;
+ gchar *start_label, *stop_label;
GAppInfo *app;
- GMenuItem *open_menu_item;
- GMenuItem *start_menu_item;
- GMenuItem *stop_menu_item;
GIcon *app_icon;
- char *label_with_underscore;
- gchar *start_label, *stop_label;
+ GMenuItem *open_menu_item, *start_menu_item, *stop_menu_item;
gboolean show_mount;
gboolean show_unmount;
gboolean show_eject;
@@ -8435,14 +6420,14 @@ update_selection_menu (NautilusView *view)
if (app_icon != NULL)
g_menu_item_set_icon (open_menu_item, app_icon);
- nautilus_gmenu_add_item_in_section (view->details->selection_menu,
- open_menu_item,
- "open-with-default-application-section");
+ nautilus_gmenu_add_item_in_submodel (view->details->selection_menu,
+ open_menu_item,
+ "open-with-default-application-section");
g_free (label_with_underscore);
}
- /* Drive menu */
+ /* Drives */
if (file != NULL && selection_count == 1) {
start_stop_type = G_DRIVE_START_STOP_TYPE_UNKNOWN;
file_should_show_foreach (file,
@@ -8473,7 +6458,7 @@ update_selection_menu (NautilusView *view)
}
start_menu_item = g_menu_item_new (start_label, "view.start-volume");
- nautilus_gmenu_add_item_in_section (view->details->selection_menu,
+ nautilus_gmenu_add_item_in_submodel (view->details->selection_menu,
start_menu_item,
"drive-section");
@@ -8500,18 +6485,28 @@ update_selection_menu (NautilusView *view)
}
stop_menu_item = g_menu_item_new (stop_label, "view.stop-volume");
- nautilus_gmenu_add_item_in_section (view->details->selection_menu,
+ nautilus_gmenu_add_item_in_submodel (view->details->selection_menu,
stop_menu_item,
"drive-section");
}
}
+
+ update_scripts_menu (view);
+}
+
+static void
+update_background_menu (NautilusView *view)
+{
+
+ if (nautilus_view_supports_creating_files (view) &&
+ !showing_recent_directory (view))
+ update_templates_menu (view);
}
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)
@@ -8527,6 +6522,7 @@ real_update_right_click_menus (NautilusView *view)
g_object_unref (builder);
update_selection_menu (view);
+ update_background_menu (view);
nautilus_view_update_actions_state (view);
}
@@ -8551,9 +6547,39 @@ static void
real_update_toolbar_menus (NautilusView *view)
{
NautilusToolbar *toolbar;
+ NautilusFileUndoInfo *info;
+ NautilusFileUndoManagerState undo_state;
+ gboolean undo_active, redo_active;
+ gchar *undo_label, *undo_description, *redo_label, *redo_description;
+ GMenuItem *undo_menu_item, *redo_menu_item;
+ gboolean is_undo;
+
+ undo_label = undo_description = redo_label = redo_description = NULL;
toolbar = nautilus_window_get_toolbar (nautilus_view_get_window (view));
nautilus_toolbar_reset_menus (toolbar);
+
+ /* Undo and Redo */
+ info = nautilus_file_undo_manager_get_action ();
+ undo_state = nautilus_file_undo_manager_get_state ();
+ undo_active = redo_active = FALSE;
+ if (info != NULL &&
+ (undo_state > NAUTILUS_FILE_UNDO_MANAGER_STATE_NONE)) {
+ is_undo = (undo_state == NAUTILUS_FILE_UNDO_MANAGER_STATE_UNDO);
+ undo_active = is_undo;
+ redo_active = !is_undo;
+ nautilus_file_undo_info_get_strings (info,
+ &undo_label, &undo_description,
+ &redo_label, &redo_description);
+ }
+
+ undo_label = undo_active ? undo_label : _("Undo");
+ redo_label = redo_active ? redo_label : _("Redo");
+ undo_menu_item = g_menu_item_new (undo_label, "view.undo");
+ redo_menu_item = g_menu_item_new (redo_label, "view.redo");
+ nautilus_toolbar_action_menu_add_item (toolbar, undo_menu_item, "undo-redo-section");
+ nautilus_toolbar_action_menu_add_item (toolbar, redo_menu_item, "undo-redo-section");
+
nautilus_view_update_actions_state (view);
}
@@ -8568,8 +6594,8 @@ nautilus_view_update_toolbar_menus (NautilusView *view)
static void
create_right_click_menu (NautilusView *view,
- GMenu *menu,
- GdkEventButton *event)
+ GMenu *menu,
+ GdkEventButton *event)
{
GtkWidget *gtk_menu;
@@ -8856,7 +6882,6 @@ nautilus_view_notify_selection_changed (NautilusView *view)
*/
/* Schedule an update of menu item states to match selection */
- g_print ("selection_changed\n");
schedule_update_right_click_menus (view);
}
}
@@ -8868,7 +6893,6 @@ file_changed_callback (NautilusFile *file, gpointer callback_data)
schedule_changes (view);
- g_print ("file_changed\n");
schedule_update_right_click_menus (view);
schedule_update_status (view);
}
@@ -9616,22 +7640,6 @@ nautilus_view_class_init (NautilusViewClass *klass)
NULL, NULL,
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
- signals[TRASH] =
- g_signal_new ("trash",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (NautilusViewClass, trash),
- g_signal_accumulator_true_handled, NULL,
- g_cclosure_marshal_generic,
- G_TYPE_BOOLEAN, 0);
- signals[DELETE] =
- g_signal_new ("delete",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (NautilusViewClass, delete),
- g_signal_accumulator_true_handled, NULL,
- g_cclosure_marshal_generic,
- G_TYPE_BOOLEAN, 0);
klass->get_selected_icon_locations = real_get_selected_icon_locations;
klass->is_read_only = real_is_read_only;
@@ -9639,16 +7647,12 @@ nautilus_view_class_init (NautilusViewClass *klass)
klass->start_renaming_file = start_renaming_file;
klass->get_backing_uri = real_get_backing_uri;
klass->using_manual_layout = real_using_manual_layout;
- klass->merge_menus = real_merge_menus;
- klass->unmerge_menus = real_unmerge_menus;
klass->get_window = nautilus_view_get_window;
klass->get_action_group = nautilus_view_get_action_group;
klass->update_right_click_menus = real_update_right_click_menus;
klass->update_actions_state = real_update_actions_state;
klass->update_toolbar_menus = real_update_toolbar_menus;
klass->zoom_to_level = real_zoom_to_level;
- klass->trash = real_trash;
- klass->delete = real_delete;
copied_files_atom = gdk_atom_intern ("x-special/gnome-copied-files", FALSE);
@@ -9668,14 +7672,6 @@ nautilus_view_class_init (NautilusViewClass *klass)
G_PARAM_STATIC_STRINGS);
g_object_class_install_properties (oclass, NUM_PROPERTIES, properties);
-
- binding_set = gtk_binding_set_by_class (klass);
- gtk_binding_entry_add_signal (binding_set, GDK_KEY_Delete, GDK_CONTROL_MASK,
- "trash", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Delete, GDK_CONTROL_MASK,
- "trash", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_KEY_KP_Delete, GDK_SHIFT_MASK,
- "delete", 0);
}
static void
@@ -9762,7 +7758,7 @@ nautilus_view_init (NautilusView *view)
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);
+ G_CALLBACK (undo_manager_changed), view, 0);
/* Accessibility */
atk_object = gtk_widget_get_accessible (GTK_WIDGET (view));
diff --git a/src/nautilus-view.h b/src/nautilus-view.h
index f5c04a3..7ce4113 100644
--- a/src/nautilus-view.h
+++ b/src/nautilus-view.h
@@ -296,12 +296,8 @@ struct NautilusViewClass {
void (* scroll_to_file) (NautilusView *view,
const char *uri);
- /* Signals used only for keybindings */
- gboolean (* trash) (NautilusView *view);
- gboolean (* delete) (NautilusView *view);
-
- NautilusWindow * (*get_window) (NautilusView *view);
- GActionGroup * (*get_action_group) (NautilusView *view);
+ NautilusWindow * (*get_window) (NautilusView *view);
+ GActionGroup * (*get_action_group) (NautilusView *view);
};
/* GObject support */
@@ -338,7 +334,6 @@ void nautilus_view_preview_files (NautilusView
void nautilus_view_start_batching_selection_changes (NautilusView *view);
void nautilus_view_stop_batching_selection_changes (NautilusView *view);
void nautilus_view_notify_selection_changed (NautilusView *view);
-GtkUIManager * nautilus_view_get_ui_manager (NautilusView *view);
NautilusDirectory *nautilus_view_get_model (NautilusView *view);
NautilusFile *nautilus_view_get_directory_as_file (NautilusView *view);
void nautilus_view_pop_up_background_right_click_menu (NautilusView *view,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]