[gthumb: 19/24] moved the copy_to/move_to commands in the file_manager extension
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb: 19/24] moved the copy_to/move_to commands in the file_manager extension
- Date: Mon, 15 Nov 2010 19:27:07 +0000 (UTC)
commit 45c858839780b1aab3d7e07a87c35694c1908c93
Author: Paolo Bacchilega <paobac src gnome org>
Date: Mon Nov 15 19:19:00 2010 +0100
moved the copy_to/move_to commands in the file_manager extension
configure.ac | 4 +-
extensions/Makefile.am | 3 +-
extensions/copy_move_to_folder/Makefile.am | 30 ----
extensions/copy_move_to_folder/actions.c | 173 --------------------
extensions/copy_move_to_folder/actions.h | 32 ----
extensions/copy_move_to_folder/callbacks.c | 125 --------------
extensions/copy_move_to_folder/callbacks.h | 30 ----
.../copy_move_to_folder.extension.in.in | 13 --
extensions/copy_move_to_folder/main.c | 53 ------
extensions/file_manager/Makefile.am | 5 +-
extensions/file_manager/actions.c | 150 +++++++++++++++++
extensions/file_manager/actions.h | 2 +
extensions/file_manager/callbacks.c | 18 ++
.../data/Makefile.am | 4 +-
.../data/gthumb-file-manager.schemas.in} | 0
.../preferences.h | 0
16 files changed, 178 insertions(+), 464 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index b0009c4..be79633 100644
--- a/configure.ac
+++ b/configure.ac
@@ -515,6 +515,7 @@ extensions/facebook/Makefile
extensions/facebook/data/Makefile
extensions/facebook/data/ui/Makefile
extensions/file_manager/Makefile
+extensions/file_manager/data/Makefile
extensions/file_tools/Makefile
extensions/file_tools/data/Makefile
extensions/file_tools/data/ui/Makefile
@@ -579,9 +580,6 @@ extensions/webalbums/data/albumthemes/ClassicClips/Makefile
extensions/webalbums/data/albumthemes/NeatRound/Makefile
extensions/webalbums/data/albumthemes/Wiki/Makefile
extensions/webalbums/data/ui/Makefile
-extensions/copy_move_to_folder/Makefile
-extensions/copy_move_to_folder/data/Makefile
-extensions/copy_move_to_folder/data/ui/Makefile
gthumb/Makefile
gthumb/cursors/Makefile
po/Makefile.in
diff --git a/extensions/Makefile.am b/extensions/Makefile.am
index e863e94..024bb49 100644
--- a/extensions/Makefile.am
+++ b/extensions/Makefile.am
@@ -33,8 +33,7 @@ SUBDIRS = \
webalbums \
flicker \
burn_disc \
- desktop_background \
- copy_move_to_folder
+ desktop_background
EXTRA_DIST = example
diff --git a/extensions/file_manager/Makefile.am b/extensions/file_manager/Makefile.am
index c3d8ee6..3026214 100644
--- a/extensions/file_manager/Makefile.am
+++ b/extensions/file_manager/Makefile.am
@@ -1,3 +1,5 @@
+SUBDIRS = data
+
extensiondir = $(pkglibdir)/extensions
extension_LTLIBRARIES = libfile_manager.la
@@ -14,7 +16,8 @@ libfile_manager_la_SOURCES = \
gth-duplicate-task.h \
gth-reorder-task.c \
gth-reorder-task.h \
- main.c
+ main.c \
+ preferences.h
libfile_manager_la_CFLAGS = $(GTHUMB_CFLAGS) -I$(top_srcdir) -I$(top_builddir)/gthumb
libfile_manager_la_LDFLAGS = $(EXTENSION_LIBTOOL_FLAGS)
diff --git a/extensions/file_manager/actions.c b/extensions/file_manager/actions.c
index af5468f..4f9f6fb 100644
--- a/extensions/file_manager/actions.c
+++ b/extensions/file_manager/actions.c
@@ -26,6 +26,7 @@
#include "gth-copy-task.h"
#include "gth-delete-task.h"
#include "gth-duplicate-task.h"
+#include "preferences.h"
static void
@@ -878,3 +879,152 @@ gth_browser_activate_action_folder_delete (GtkAction *action,
g_free (prompt);
}
+
+
+/* Copy/Move to folder */
+
+
+typedef struct {
+ GthBrowser *browser;
+ gboolean move;
+ GFile *destination;
+ gboolean view_destination;
+} CopyToFolderData;
+
+
+static void
+copy_to_folder_data_free (CopyToFolderData *data)
+{
+ g_object_unref (data->destination);
+ g_object_unref (data->browser);
+ g_free (data);
+}
+
+
+static void
+copy_complete_cb (GthTask *task,
+ GError *error,
+ gpointer user_data)
+{
+ CopyToFolderData *data = user_data;
+
+ if ((error == NULL) && (data->view_destination))
+ gth_browser_load_location (data->browser, data->destination);
+
+ g_object_unref (task);
+ copy_to_folder_data_free (data);
+}
+
+
+static void
+copy_files_to_folder (GthBrowser *browser,
+ gboolean move,
+ char *destination_uri,
+ gboolean view_destination)
+{
+ GthFileData *destination_data;
+ GthFileSource *file_source;
+ GList *items;
+ GList *file_list;
+ GList *files;
+ CopyToFolderData *data;
+ GthTask *task;
+
+ destination_data = gth_file_data_new_for_uri (destination_uri, NULL);
+ file_source = gth_main_get_file_source (destination_data->file);
+
+ items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser)));
+ file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items);
+ files = gth_file_data_list_to_file_list (file_list);
+
+ data = g_new0 (CopyToFolderData, 1);
+ data->browser = g_object_ref (browser);
+ data->move = move;
+ data->destination = g_file_dup (destination_data->file);
+ data->view_destination = view_destination;
+
+ task = gth_copy_task_new (file_source, destination_data, move, files);
+ g_signal_connect (task,
+ "completed",
+ G_CALLBACK (copy_complete_cb),
+ data);
+ gth_browser_exec_task (browser, task, FALSE);
+
+ _g_object_list_unref (files);
+ _g_object_list_unref (file_list);
+ _gtk_tree_path_list_free (items);
+ g_object_unref (file_source);
+}
+
+
+static void
+copy_to_folder_dialog (GthBrowser *browser,
+ gboolean move)
+{
+ GtkWidget *dialog;
+ char *start_uri;
+ GtkWidget *box;
+ GtkWidget *view_destination_button;
+
+ dialog = gtk_file_chooser_dialog_new (move ? _("Move To") : _("Copy To"),
+ NULL,
+ GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ (move ? _("Move") : _("Copy")), GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ start_uri = eel_gconf_get_string (PREF_FILE_MANAGER_COPY_LAST_FOLDER, get_home_uri ());
+ gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dialog), start_uri);
+ g_free(start_uri);
+
+ box = gtk_vbox_new (FALSE, 6);
+ gtk_container_set_border_width (GTK_CONTAINER (box), 6);
+ gtk_widget_show (box);
+
+ view_destination_button = gtk_check_button_new_with_mnemonic (_("_View the destination"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (view_destination_button),
+ eel_gconf_get_boolean (PREF_FILE_MANAGER_COPY_VIEW_DESTINATION, FALSE));
+ gtk_widget_show (view_destination_button);
+ gtk_box_pack_start (GTK_BOX (box), view_destination_button, FALSE, FALSE, 0);
+
+ gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))), box, FALSE, FALSE, 0);
+
+ if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) {
+ char *destination_uri;
+
+ destination_uri = gtk_file_chooser_get_uri (GTK_FILE_CHOOSER (dialog));
+ if (destination_uri != NULL) {
+ gboolean view_destination;
+
+ /* save the options */
+
+ view_destination = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (view_destination_button));
+ eel_gconf_set_boolean (PREF_FILE_MANAGER_COPY_VIEW_DESTINATION, view_destination);
+ eel_gconf_set_string (PREF_FILE_MANAGER_COPY_LAST_FOLDER, destination_uri);
+
+ /* copy / move the files */
+
+ copy_files_to_folder (browser, move, destination_uri, view_destination);
+ }
+
+ g_free (destination_uri);
+ }
+
+ gtk_widget_destroy (dialog);
+}
+
+
+void
+gth_browser_activate_action_tool_copy_to_folder (GtkAction *action,
+ GthBrowser *browser)
+{
+ copy_to_folder_dialog (browser, FALSE);
+}
+
+
+void
+gth_browser_activate_action_tool_move_to_folder (GtkAction *action,
+ GthBrowser *browser)
+{
+ copy_to_folder_dialog (browser, TRUE);
+}
diff --git a/extensions/file_manager/actions.h b/extensions/file_manager/actions.h
index 10a20e7..1518cef 100644
--- a/extensions/file_manager/actions.h
+++ b/extensions/file_manager/actions.h
@@ -42,5 +42,7 @@ DEFINE_ACTION(gth_browser_activate_action_folder_copy)
DEFINE_ACTION(gth_browser_activate_action_folder_paste)
DEFINE_ACTION(gth_browser_activate_action_folder_trash)
DEFINE_ACTION(gth_browser_activate_action_folder_delete)
+DEFINE_ACTION(gth_browser_activate_action_tool_copy_to_folder)
+DEFINE_ACTION(gth_browser_activate_action_tool_move_to_folder)
#endif /* ACTIONS_H */
diff --git a/extensions/file_manager/callbacks.c b/extensions/file_manager/callbacks.c
index b4cfb71..ba29b5e 100644
--- a/extensions/file_manager/callbacks.c
+++ b/extensions/file_manager/callbacks.c
@@ -40,6 +40,8 @@ static const char *fixed_ui_info =
" <menubar name='MenuBar'>"
" <menu name='Edit' action='EditMenu'>"
" <placeholder name='Folder_Actions_2'>"
+" <menuitem action='Tool_CopyToFolder'/>"
+" <menuitem action='Tool_MoveToFolder'/>"
" <menuitem action='Edit_Trash'/>"
" <menuitem action='Edit_Delete'/>"
" </placeholder>"
@@ -51,6 +53,10 @@ static const char *fixed_ui_info =
" <menuitem action='Edit_CopyFiles'/>"
" <menuitem action='Edit_PasteInFolder'/>"
" </placeholder>"
+" <placeholder name='Folder_Actions'>"
+" <menuitem action='Tool_CopyToFolder'/>"
+" <menuitem action='Tool_MoveToFolder'/>"
+" </placeholder>"
" </popup>"
" <popup name='FilePopup'>"
" <placeholder name='File_Actions'>"
@@ -59,6 +65,8 @@ static const char *fixed_ui_info =
" <menuitem action='Edit_PasteInFolder'/>"
" </placeholder>"
" <placeholder name='Folder_Actions'>"
+" <menuitem action='Tool_CopyToFolder'/>"
+" <menuitem action='Tool_MoveToFolder'/>"
" <menuitem action='Edit_Trash'/>"
" <menuitem action='Edit_Delete'/>"
" </placeholder>"
@@ -204,6 +212,14 @@ static GtkActionEntry action_entries[] = {
N_("_Delete"), NULL,
NULL,
G_CALLBACK (gth_browser_activate_action_folder_delete) },
+ { "Tool_CopyToFolder", NULL,
+ N_("Copy to..."), NULL,
+ N_("Copy the selected files to another folder"),
+ G_CALLBACK (gth_browser_activate_action_tool_copy_to_folder) },
+ { "Tool_MoveToFolder", NULL,
+ N_("Move to..."), NULL,
+ N_("Move the selected files to another folder"),
+ G_CALLBACK (gth_browser_activate_action_tool_move_to_folder) }
};
@@ -812,6 +828,8 @@ fm__gth_browser_update_sensitivity_cb (GthBrowser *browser)
set_action_sensitive (data, "Edit_Trash", sensitive);
set_action_sensitive (data, "Edit_Delete", sensitive);
set_action_sensitive (data, "Edit_Duplicate", sensitive);
+ set_action_sensitive (data, "Tool_MoveToFolder", sensitive);
+ set_action_sensitive (data, "Tool_CopyToFolder", sensitive);
folder = gth_browser_get_folder_popup_file_data (browser);
set_action_sensitive (data, "Folder_Create", (folder != NULL) && g_file_info_get_attribute_boolean (folder->info, G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE));
diff --git a/extensions/copy_move_to_folder/data/Makefile.am b/extensions/file_manager/data/Makefile.am
similarity index 68%
rename from extensions/copy_move_to_folder/data/Makefile.am
rename to extensions/file_manager/data/Makefile.am
index a4ebfaf..c50ae4d 100644
--- a/extensions/copy_move_to_folder/data/Makefile.am
+++ b/extensions/file_manager/data/Makefile.am
@@ -1,12 +1,12 @@
schemadir = @GCONF_SCHEMA_FILE_DIR@
-schema_in_files = gthumb-copy-move-to-folder.schemas.in
+schema_in_files = gthumb-file-manager.schemas.in
schema_DATA = $(schema_in_files:.schemas.in=.schemas)
@INTLTOOL_SCHEMAS_RULE@
if GCONF_SCHEMAS_INSTALL
install-data-local:
- GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(top_builddir)/extensions/copy_move_to_folder/data/$(schema_DATA)
+ GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(top_builddir)/extensions/file_manager/data/$(schema_DATA)
endif
EXTRA_DIST = $(schema_in_files)
diff --git a/extensions/copy_move_to_folder/data/gthumb-copy-move-to-folder.schemas.in b/extensions/file_manager/data/gthumb-file-manager.schemas.in
similarity index 100%
rename from extensions/copy_move_to_folder/data/gthumb-copy-move-to-folder.schemas.in
rename to extensions/file_manager/data/gthumb-file-manager.schemas.in
diff --git a/extensions/copy_move_to_folder/preferences.h b/extensions/file_manager/preferences.h
similarity index 100%
rename from extensions/copy_move_to_folder/preferences.h
rename to extensions/file_manager/preferences.h
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]