[gthumb: 5/14] find duplicates: added ability to delete the selected files
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb: 5/14] find duplicates: added ability to delete the selected files
- Date: Fri, 28 Jan 2011 00:53:34 +0000 (UTC)
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]