[nautilus/wip/gaction] f
- From: Carlos Soriano Sánchez <csoriano src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus/wip/gaction] f
- Date: Wed, 12 Nov 2014 10:34:12 +0000 (UTC)
commit 463c5f57c33b5913636ea62bdf8c4e2baa74752b
Author: Work <Carlos Soriano>
Date: Wed Nov 12 11:29:18 2014 +0100
f
src/nautilus-view.c | 636 ++++++++++++++++++++++++++++++---------------------
1 files changed, 381 insertions(+), 255 deletions(-)
---
diff --git a/src/nautilus-view.c b/src/nautilus-view.c
old mode 100644
new mode 100755
index a70c05d..120c81d
--- a/src/nautilus-view.c
+++ b/src/nautilus-view.c
@@ -1118,6 +1118,8 @@ nautilus_view_activate_file (NautilusView *view,
g_free (path);
}
+/********* ACTIONS *********/
+
static void
action_open_callback (GtkAction *action,
gpointer callback_data)
@@ -1129,6 +1131,17 @@ action_open_callback (GtkAction *action,
}
static void
+action_open_item (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusView *view;
+
+ view = NAUTILUS_VIEW (user_data);
+ nautilus_view_activate_selection (view);
+}
+
+static void
action_open_close_parent_callback (GtkAction *action,
gpointer callback_data)
{
@@ -1175,6 +1188,36 @@ action_open_item_location_callback (GtkAction *action,
nautilus_file_list_free (selection);
}
+static void
+action_open_item_location (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusView *view;
+ GList *selection;
+ NautilusFile *item;
+ GFile *activation_location;
+ NautilusFile *activation_file;
+ NautilusFile *location;
+
+ view = NAUTILUS_VIEW (user_data);
+ selection = nautilus_view_get_selection (view);
+
+ if (!selection)
+ return;
+
+ item = NAUTILUS_FILE (selection->data);
+ activation_location = nautilus_file_get_activation_location (item);
+ activation_file = nautilus_file_get (activation_location);
+ location = nautilus_file_get_parent (activation_file);
+
+ nautilus_view_activate_file (view, location, 0);
+
+ nautilus_file_unref (location);
+ nautilus_file_unref (activation_file);
+ g_object_unref (activation_location);
+ nautilus_file_list_free (selection);
+}
static void
action_open_alternate_callback (GtkAction *action,
@@ -1220,6 +1263,30 @@ action_open_new_tab_callback (GtkAction *action,
}
static void
+action_open_item_new_tab (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusView *view;
+ GList *selection;
+ GtkWindow *window;
+
+ view = NAUTILUS_VIEW (user_data);
+ 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_file_list_free (selection);
+}
+
+static void
app_chooser_dialog_response_cb (GtkDialog *dialog,
gint response_id,
gpointer user_data)
@@ -1443,6 +1510,20 @@ action_select_all_callback (GtkAction *action,
}
static void
+action_select_all (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusView *view;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+
+ nautilus_view_select_all (view);
+}
+
+static void
action_invert_selection_callback (GtkAction *action,
gpointer callback_data)
{
@@ -2129,6 +2210,16 @@ action_new_folder_callback (GtkAction *action,
}
static void
+action_new_folder (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ nautilus_view_new_folder (NAUTILUS_VIEW (user_data), FALSE);
+}
+
+static void
action_new_folder_with_selection_callback (GtkAction *action,
gpointer callback_data)
{
@@ -2241,6 +2332,262 @@ action_show_hidden_files_callback (GtkAction *action,
}
static void
+action_show_hidden_files (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ gboolean show_hidden;
+ NautilusView *view;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+ show_hidden = g_variant_get_boolean (state);
+
+ nautilus_view_set_show_hidden_files (view, show_hidden);
+
+ g_simple_action_set_state (action, state);
+}
+
+static void
+action_new_tab (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ GList *selection;
+ GtkWindow *window;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+
+ selection = nautilus_view_get_selection (user_data);
+
+ window = nautilus_view_get_containing_window (user_data);
+
+ if (nautilus_view_confirm_multiple (window, g_list_length (selection), TRUE)) {
+ nautilus_view_activate_files (user_data,
+ selection,
+ NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB,
+ FALSE);
+ }
+
+ nautilus_file_list_free (selection);
+}
+
+static void
+action_undo (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ GtkWidget *toplevel;
+ NautilusView *view;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view));
+ nautilus_file_undo_manager_undo (GTK_WINDOW (toplevel));
+}
+
+static void
+action_redo (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ GtkWidget *toplevel;
+ NautilusView *view;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (view));
+ nautilus_file_undo_manager_redo (GTK_WINDOW (toplevel));
+}
+
+static void
+action_zoom_in (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusView *view;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+
+ nautilus_view_bump_zoom_level (view, 1);
+}
+
+static void
+action_zoom_out (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusView *view;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+
+ nautilus_view_bump_zoom_level (view, -1);
+}
+
+static void
+action_zoom_normal (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusView *view;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+
+ nautilus_view_restore_default_zoom_level (view);
+}
+
+static void
+action_zoom_to_level (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusView *view;
+ gdouble zoom_value;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+ zoom_value = g_variant_get_int32 (state);
+
+ nautilus_view_zoom_to_level (view, zoom_value);
+}
+
+
+static void
+action_location_open_alternate_callback (GtkAction *action,
+ gpointer callback_data)
+{
+ NautilusView *view;
+ NautilusFile *file;
+
+ view = NAUTILUS_VIEW (callback_data);
+
+ file = view->details->location_popup_directory_as_file;
+ if (file == NULL) {
+ return;
+ }
+ nautilus_view_activate_file (view,
+ file,
+ NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW);
+}
+
+static void
+action_open_item_new_window (GSimpleAction *action,
+ GVariant *state,
+ gpointer user_data)
+{
+ NautilusView *view;
+ GList *selection;
+ GtkWindow *window;
+
+ view = NAUTILUS_VIEW (user_data);
+ 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_WINDOW,
+ FALSE);
+ }
+
+ nautilus_file_list_free (selection);
+}
+
+static void
+paste_clipboard_data (NautilusView *view,
+ GtkSelectionData *selection_data,
+ char *destination_uri)
+{
+ gboolean cut;
+ GList *item_uris;
+
+ cut = FALSE;
+ item_uris = nautilus_clipboard_get_uri_list_from_selection_data (selection_data, &cut,
+ copied_files_atom);
+
+ if (item_uris != NULL && destination_uri != NULL) {
+ nautilus_view_move_copy_items (view, item_uris, NULL, destination_uri,
+ cut ? GDK_ACTION_MOVE : GDK_ACTION_COPY,
+ 0, 0);
+
+ /* If items are cut then remove from clipboard */
+ if (cut) {
+ gtk_clipboard_clear (nautilus_clipboard_get (GTK_WIDGET (view)));
+ }
+
+ g_list_free_full (item_uris, g_free);
+ }
+}
+
+static void
+paste_clipboard_received_callback (GtkClipboard *clipboard,
+ GtkSelectionData *selection_data,
+ gpointer data)
+{
+ NautilusView *view;
+ char *view_uri;
+
+ view = NAUTILUS_VIEW (data);
+
+ view_uri = nautilus_view_get_backing_uri (view);
+
+ if (view->details->slot != NULL) {
+ paste_clipboard_data (view, selection_data, view_uri);
+ }
+
+ g_free (view_uri);
+
+ g_object_unref (view);
+}
+
+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)
+{
+ NautilusView *view;
+
+ g_assert (NAUTILUS_IS_VIEW (user_data));
+
+ view = NAUTILUS_VIEW (user_data);
+
+ g_object_ref (view);
+ gtk_clipboard_request_contents (nautilus_clipboard_get (GTK_WIDGET (view)),
+ copied_files_atom,
+ paste_clipboard_received_callback,
+ view);
+}
+
+/*************** END ACTIONS **********************/
+
+static void
click_policy_changed_callback (gpointer callback_data)
{
NautilusView *view;
@@ -6018,53 +6365,6 @@ action_move_to_callback (GtkAction *action,
copy_or_move_selection (view, TRUE);
}
-static void
-paste_clipboard_data (NautilusView *view,
- GtkSelectionData *selection_data,
- char *destination_uri)
-{
- gboolean cut;
- GList *item_uris;
-
- cut = FALSE;
- item_uris = nautilus_clipboard_get_uri_list_from_selection_data (selection_data, &cut,
- copied_files_atom);
-
- if (item_uris != NULL && destination_uri != NULL) {
- nautilus_view_move_copy_items (view, item_uris, NULL, destination_uri,
- cut ? GDK_ACTION_MOVE : GDK_ACTION_COPY,
- 0, 0);
-
- /* If items are cut then remove from clipboard */
- if (cut) {
- gtk_clipboard_clear (nautilus_clipboard_get (GTK_WIDGET (view)));
- }
-
- g_list_free_full (item_uris, g_free);
- }
-}
-
-static void
-paste_clipboard_received_callback (GtkClipboard *clipboard,
- GtkSelectionData *selection_data,
- gpointer data)
-{
- NautilusView *view;
- char *view_uri;
-
- view = NAUTILUS_VIEW (data);
-
- view_uri = nautilus_view_get_backing_uri (view);
-
- if (view->details->slot != NULL) {
- paste_clipboard_data (view, selection_data, view_uri);
- }
-
- g_free (view_uri);
-
- g_object_unref (view);
-}
-
typedef struct {
NautilusView *view;
NautilusFile *target;
@@ -6097,21 +6397,6 @@ paste_into_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
paste_into (NautilusView *view,
NautilusFile *target)
{
@@ -6881,24 +7166,6 @@ action_location_detect_media_callback (GtkAction *action,
}
static void
-action_location_open_alternate_callback (GtkAction *action,
- gpointer callback_data)
-{
- NautilusView *view;
- NautilusFile *file;
-
- view = NAUTILUS_VIEW (callback_data);
-
- file = view->details->location_popup_directory_as_file;
- if (file == NULL) {
- return;
- }
- nautilus_view_activate_file (view,
- file,
- NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW);
-}
-
-static void
action_location_open_in_new_tab_callback (GtkAction *action,
gpointer callback_data)
{
@@ -7035,174 +7302,6 @@ nautilus_view_get_show_hidden_files (NautilusView *view)
return view->details->show_hidden_files;
}
-static void
-action_show_hidden_files (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- gboolean show_hidden;
- NautilusView *view;
-
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
- view = NAUTILUS_VIEW (user_data);
- show_hidden = g_variant_get_boolean (state);
-
- nautilus_view_set_show_hidden_files (view, show_hidden);
-
- g_simple_action_set_state (action, state);
-}
-
-static void
-action_new_folder (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- NautilusView *view;
-
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
- view = NAUTILUS_VIEW (user_data);
-
- nautilus_view_new_folder (view, FALSE);
-}
-
-static void
-action_select_all (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- NautilusView *view;
-
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
- view = NAUTILUS_VIEW (user_data);
-
- nautilus_view_select_all (view);
-}
-
-static void
-action_paste_files (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- NautilusView *view;
-
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
- view = NAUTILUS_VIEW (user_data);
-
- g_object_ref (view);
- gtk_clipboard_request_contents (nautilus_clipboard_get (GTK_WIDGET (view)),
- copied_files_atom,
- paste_clipboard_received_callback,
- view);
-}
-
-
-static void
-action_new_tab (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- GList *selection;
- GtkWindow *window;
-
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
-
- selection = nautilus_view_get_selection (user_data);
-
- window = nautilus_view_get_containing_window (user_data);
-
- if (nautilus_view_confirm_multiple (window, g_list_length (selection), TRUE)) {
- nautilus_view_activate_files (user_data,
- selection,
- NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB,
- FALSE);
- }
-
- nautilus_file_list_free (selection);
-}
-
-static void
-action_undo (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
- real_action_undo (user_data);
-}
-
-static void
-action_redo (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
- real_action_redo (user_data);
-}
-
-static void
-action_zoom_in (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- NautilusView *view;
-
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
- view = NAUTILUS_VIEW (user_data);
-
- nautilus_view_bump_zoom_level (view, 1);
-}
-
-static void
-action_zoom_out (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- NautilusView *view;
-
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
- view = NAUTILUS_VIEW (user_data);
-
- nautilus_view_bump_zoom_level (view, -1);
-}
-
-static void
-action_zoom_normal (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- NautilusView *view;
-
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
- view = NAUTILUS_VIEW (user_data);
-
- nautilus_view_restore_default_zoom_level (view);
-}
-
-static void
-action_zoom_to_level (GSimpleAction *action,
- GVariant *state,
- gpointer user_data)
-{
- NautilusView *view;
- gdouble zoom_value;
-
- g_assert (NAUTILUS_IS_VIEW (user_data));
-
- view = NAUTILUS_VIEW (user_data);
- zoom_value = g_variant_get_int32 (state);
-
- nautilus_view_zoom_to_level (view, zoom_value);
-}
-
const GActionEntry view_entries[] = {
{ "new-folder", action_new_folder },
{ "select-all", action_select_all },
@@ -7214,6 +7313,11 @@ const GActionEntry view_entries[] = {
{ "undo", action_undo },
{ "redo", action_redo },
{ "show-hidden-files", NULL, NULL, "true", action_show_hidden_files },
+ /* Selection menu */
+ { "open-item-location", action_open_item_location },
+ { "open-item", action_open_item },
+ { "open-item-new-window", action_open_item_new_window },
+ { "open-item-new-tab", action_open_item_new_tab },
};
static const GtkActionEntry directory_view_entries[] = {
@@ -8923,6 +9027,11 @@ real_update_actions_state (NautilusView *view)
g_variant_new_boolean (view->details->show_hidden_files));
}
+/* Convenience function to be called when updating menus,
+ * so children can subclass it and it will be called when
+ * they chain up to the parent in update_right_click_menus
+ * or update_toolbar_menus
+ */
void
nautilus_view_update_actions_state (NautilusView *view)
{
@@ -8932,6 +9041,18 @@ nautilus_view_update_actions_state (NautilusView *view)
}
static void
+update_background_menu (NautilusView *view)
+{
+
+}
+
+static void
+update_selection_menu (NautilusView *view)
+{
+
+}
+
+static void
real_update_right_click_menus (NautilusView *view)
{
g_print ("view real_update_right_click_menus\n");
@@ -8941,14 +9062,25 @@ real_update_right_click_menus (NautilusView *view)
g_object_unref (view->details->selection_menu);
GtkBuilder *builder;
- builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-main-menus.xml");
+ builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-view-right-click-menus.xml");
view->details->background_menu = g_object_ref (G_MENU (gtk_builder_get_object (builder,
"background-menu")));
view->details->selection_menu = g_object_ref (G_MENU (gtk_builder_get_object (builder,
"selection-menu")));
g_object_unref (builder);
+ update_background_menu (view);
+ update_selection_menu (view);
nautilus_view_update_actions_state (view);
}
+/* Convenience function to reset the menus owned
+ * by the view and update them with the current state.
+ * Children can subclass it and add items on the menu
+ * after chaining up to the parent, so menus are already
+ * reseted.
+ * It will also update the actions state, which will also
+ * update children actions state if the children subclass
+ * nautilus_view_update_actions_state
+ */
void
nautilus_view_update_right_click_menus (NautilusView *view)
{
@@ -10183,12 +10315,6 @@ nautilus_view_init (NautilusView *view)
atk_object = gtk_widget_get_accessible (GTK_WIDGET (view));
atk_object_set_name (atk_object, _("Content View"));
atk_object_set_description (atk_object, _("View of the current folder"));
-
- /* Background and selection menus */
- /*builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/nautilus-main-menus.xml");
- view->details->background_menus = g_object_ref (G_MENU (gtk_builder_get_object (builder,
"background-menu")));
- view->details->selection_menu = g_object_ref (G_MENU (gtk_builder_get_object (builder,
"selection-menu")));
- g_object_unref (builder);*/
view->details->view_action_group = G_ACTION_GROUP (g_simple_action_group_new ());
g_action_map_add_action_entries (G_ACTION_MAP (view->details->view_action_group),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]