[gthumb: 5/14] find duplicates: added ability to delete the selected files



commit 487abd6bfcc496d2c9aa127052a1213651dcf78c
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Wed Jan 26 23:00:27 2011 +0100

    find duplicates: added ability to delete the selected files

 extensions/file_manager/actions.c                  |   28 +++++++++++----
 extensions/file_manager/actions.h                  |    3 ++
 extensions/find_duplicates/Makefile.am             |    2 +-
 .../find_duplicates.extension.in.in                |    2 +-
 extensions/find_duplicates/gth-find-duplicates.c   |   35 ++++++++++++++++---
 5 files changed, 54 insertions(+), 16 deletions(-)
---
diff --git a/extensions/file_manager/actions.c b/extensions/file_manager/actions.c
index 70f4a4e..5aaacbe 100644
--- a/extensions/file_manager/actions.c
+++ b/extensions/file_manager/actions.c
@@ -554,18 +554,14 @@ gth_browser_activate_action_edit_trash (GtkAction  *action,
 
 
 void
-gth_browser_activate_action_edit_delete (GtkAction  *action,
-					 GthBrowser *browser)
+gth_file_mananger_delete_files (GtkWindow *window,
+				GList     *file_list /* GthFileData list */)
 {
-	GList     *items;
-	GList     *file_list;
 	int        file_count;
 	char      *prompt;
 	GtkWidget *d;
 
-	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);
-
+	file_list = _g_object_list_ref (file_list);
 	file_count = g_list_length (file_list);
 	if (file_count == 1) {
 		GthFileData *file_data = file_list->data;
@@ -578,7 +574,7 @@ gth_browser_activate_action_edit_delete (GtkAction  *action,
 					  	   "the %'d selected files?", file_count),
 					  file_count);
 
-	d = _gtk_message_dialog_new (GTK_WINDOW (browser),
+	d = _gtk_message_dialog_new (window,
 				     GTK_DIALOG_MODAL,
 				     GTK_STOCK_DIALOG_QUESTION,
 				     prompt,
@@ -590,6 +586,22 @@ gth_browser_activate_action_edit_delete (GtkAction  *action,
 	gtk_widget_show (d);
 
 	g_free (prompt);
+}
+
+
+void
+gth_browser_activate_action_edit_delete (GtkAction  *action,
+					 GthBrowser *browser)
+{
+	GList *items;
+	GList *file_list;
+
+
+	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);
+	gth_file_mananger_delete_files (GTK_WINDOW (browser), file_list);
+
+	_g_object_list_unref (file_list);
 	_gtk_tree_path_list_free (items);
 }
 
diff --git a/extensions/file_manager/actions.h b/extensions/file_manager/actions.h
index 1518cef..1b259ba 100644
--- a/extensions/file_manager/actions.h
+++ b/extensions/file_manager/actions.h
@@ -45,4 +45,7 @@ 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)
 
+void   gth_file_mananger_delete_files (GtkWindow *window,
+				       GList     *file_list /* GthFileData list */);
+
 #endif /* ACTIONS_H */
diff --git a/extensions/find_duplicates/Makefile.am b/extensions/find_duplicates/Makefile.am
index e4830a4..1293510 100644
--- a/extensions/find_duplicates/Makefile.am
+++ b/extensions/find_duplicates/Makefile.am
@@ -16,7 +16,7 @@ libfind_duplicates_la_SOURCES = 	\
 
 libfind_duplicates_la_CFLAGS = $(GTHUMB_CFLAGS) -I$(top_srcdir) -I$(top_builddir)/gthumb 
 libfind_duplicates_la_LDFLAGS = $(EXTENSION_LIBTOOL_FLAGS)
-libfind_duplicates_la_LIBADD = $(GTHUMB_LIBS) ../catalogs/libcatalogs.la
+libfind_duplicates_la_LIBADD = $(GTHUMB_LIBS) ../catalogs/libcatalogs.la ../file_manager/libfile_manager.la
 libfind_duplicates_la_DEPENDENCIES = $(top_builddir)/gthumb/gthumb$(EXEEXT)
 
 extensioninidir = $(extensiondir)
diff --git a/extensions/find_duplicates/find_duplicates.extension.in.in b/extensions/find_duplicates/find_duplicates.extension.in.in
index 92f3652..826b5c4 100644
--- a/extensions/find_duplicates/find_duplicates.extension.in.in
+++ b/extensions/find_duplicates/find_duplicates.extension.in.in
@@ -9,4 +9,4 @@ Category=Browser
 [Loader]
 Type=module
 File=%LIBRARY%
-Requires=catalogs
+Requires=catalogs;file_manager
diff --git a/extensions/find_duplicates/gth-find-duplicates.c b/extensions/find_duplicates/gth-find-duplicates.c
index d163871..9e3cfa0 100644
--- a/extensions/find_duplicates/gth-find-duplicates.c
+++ b/extensions/find_duplicates/gth-find-duplicates.c
@@ -24,6 +24,7 @@
 #include <glib/gi18n.h>
 #include <gthumb.h>
 #include <extensions/catalogs/gth-catalog.h>
+#include <extensions/file_manager/actions.h>
 #include "gth-find-duplicates.h"
 
 
@@ -599,7 +600,7 @@ get_selected_files (GthFindDuplicates *self)
 				    1, &active,
 				    -1);
 		if (active)
-			list = g_list_prepend (list, g_object_ref (file_data->file));
+			list = g_list_prepend (list, g_object_ref (file_data));
 	}
 	while (gtk_tree_model_iter_next (model, &iter));
 
@@ -612,24 +613,42 @@ view_button_clicked_cb (GtkWidget *button,
 			gpointer   user_data)
 {
 	GthFindDuplicates *self = user_data;
-	GList             *files;
+	GList             *file_data_list;
+	GList             *file_list;
 	GthCatalog        *catalog;
 	GFile             *catalog_file;
 
-	files = get_selected_files (self);
-	if (files == NULL)
+	file_data_list = get_selected_files (self);
+	if (file_data_list == NULL)
 		return;
 
+	file_list = gth_file_data_list_to_file_list (file_data_list);
 	catalog = gth_catalog_new ();
 	catalog_file = gth_catalog_file_from_relative_path (_("Duplicates"), ".catalog");
 	gth_catalog_set_file (catalog, catalog_file);
-	gth_catalog_set_file_list (catalog, files);
+	gth_catalog_set_file_list (catalog, file_data_list);
 	gth_catalog_save (catalog);
 	gth_browser_go_to (self->priv->browser, catalog_file, NULL);
 
 	g_object_unref (catalog_file);
 	g_object_unref (catalog);
-	_g_object_list_unref (files);
+	_g_object_list_unref (file_list);
+	_g_object_list_unref (file_data_list);
+}
+
+
+static void
+delete_button_clicked_cb (GtkWidget *button,
+			  gpointer   user_data)
+{
+	GthFindDuplicates *self = user_data;
+	GList             *file_data_list;
+
+	file_data_list = get_selected_files (self);
+	if (file_data_list != NULL)
+		gth_file_mananger_delete_files (GTK_WINDOW (GET_WIDGET ("find_duplicates_dialog")), file_data_list);
+
+	_g_object_list_unref (file_data_list);
 }
 
 
@@ -728,6 +747,10 @@ gth_find_duplicates_exec (GthBrowser *browser,
 			  "clicked",
 			  G_CALLBACK (view_button_clicked_cb),
 			  self);
+	g_signal_connect (GET_WIDGET ("delete_button"),
+			  "clicked",
+			  G_CALLBACK (delete_button_clicked_cb),
+			  self);
 	g_signal_connect (GET_WIDGET ("select_all_button"),
 			  "clicked",
 			  G_CALLBACK (select_all_button_clicked_cb),



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