[gthumb: 3/24] copy_move_to_folder: added copy complete dialog asking if the user wishes to open the destination
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb: 3/24] copy_move_to_folder: added copy complete dialog asking if the user wishes to open the destination
- Date: Mon, 15 Nov 2010 19:25:46 +0000 (UTC)
commit 93576f2d5aae4bb35703834db8b5a0bb5980dd63
Author: Marlodavampire <vworker.com>
Date: Wed Nov 10 14:58:04 2010 +1100
copy_move_to_folder: added copy complete dialog asking if the user wishes to open the destination
configure.ac | 2 +
extensions/copy_move_to_folder/Makefile.am | 4 +
extensions/copy_move_to_folder/actions.c | 20 ++--
extensions/copy_move_to_folder/data/Makefile.am | 3 +
extensions/copy_move_to_folder/data/ui/Makefile.am | 8 ++
.../data/ui/copy-move-to-folder-copy-complete.ui | 80 +++++++++++++
.../data/ui/copy-move-to-folder-move-complete.ui | 80 +++++++++++++
extensions/copy_move_to_folder/dlg-copy-complete.c | 123 ++++++++++++++++++++
extensions/copy_move_to_folder/dlg-copy-complete.h | 31 +++++
extensions/copy_move_to_folder/preferences.h | 2 +
10 files changed, 341 insertions(+), 12 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index f026512..b0009c4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -580,6 +580,8 @@ 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/copy_move_to_folder/Makefile.am b/extensions/copy_move_to_folder/Makefile.am
index 6e3668f..5166a93 100644
--- a/extensions/copy_move_to_folder/Makefile.am
+++ b/extensions/copy_move_to_folder/Makefile.am
@@ -1,3 +1,5 @@
+SUBDIRS = data
+
extensiondir = $(pkglibdir)/extensions
extension_LTLIBRARIES = libcopy_move_to_folder.la
@@ -7,6 +9,8 @@ libcopy_move_to_folder_la_SOURCES = \
callbacks.c \
callbacks.h \
preferences.h \
+ dlg-copy-complete.c \
+ dlg-copy-complete.h \
main.c
libcopy_move_to_folder_la_CFLAGS = $(GTHUMB_CFLAGS) -I$(top_srcdir) -I$(top_builddir)/gthumb
diff --git a/extensions/copy_move_to_folder/actions.c b/extensions/copy_move_to_folder/actions.c
index 1494caf..7b7fb0b 100644
--- a/extensions/copy_move_to_folder/actions.c
+++ b/extensions/copy_move_to_folder/actions.c
@@ -24,10 +24,12 @@
#include <glib/gi18n.h>
#include <gthumb.h>
#include "preferences.h"
+#include "dlg-copy-complete.h"
#include <extensions/file_manager/gth-copy-task.h>
struct _CopyMoveToFolderPrivate{
- GthFileData *destination;
+ GFile *destination;
+ gboolean move;
GthBrowser *browser;
};
@@ -61,18 +63,13 @@ copy_complete_cb(GthTask *task,
/* TODO */
/* what should we do on error here? */
- GthBrowser *browser;
- GthFileData *destination;
CopyMoveToFolderPrivate *priv;
-
priv = data;
- browser = priv->browser;
- destination = priv->destination;
- gth_browser_load_location(browser, destination->file);
+ dlg_copy_complete(priv->browser, priv->move, priv->destination);
- g_object_unref(browser);
- g_object_unref(destination);
+ g_object_unref(priv->browser);
+ g_object_unref(priv->destination);
g_free(priv);
}
@@ -119,10 +116,10 @@ copy_move_to_folder_copy_files(GthBrowser *browser,
// setup copy completed signal
CopyMoveToFolderPrivate *data;
data = g_new0(CopyMoveToFolderPrivate, 1);
- data->destination = destination_path_fd;
+ data->destination = g_file_dup(destination_path_fd->file);
data->browser = browser;
+ data->move = move;
g_object_ref(browser);
- g_object_ref(destination_path_fd);
g_signal_connect (task,
"completed",
G_CALLBACK (copy_complete_cb),
@@ -130,7 +127,6 @@ copy_move_to_folder_copy_files(GthBrowser *browser,
gth_browser_exec_task (browser, task, FALSE);
//free data
- g_object_unref(destination_path_fd);
g_object_unref(file_source);
_g_object_list_unref (file_list);
_gtk_tree_path_list_free (items);
diff --git a/extensions/copy_move_to_folder/data/Makefile.am b/extensions/copy_move_to_folder/data/Makefile.am
new file mode 100644
index 0000000..c1713cf
--- /dev/null
+++ b/extensions/copy_move_to_folder/data/Makefile.am
@@ -0,0 +1,3 @@
+SUBDIRS = ui
+
+-include $(top_srcdir)/git.mk
diff --git a/extensions/copy_move_to_folder/data/ui/Makefile.am b/extensions/copy_move_to_folder/data/ui/Makefile.am
new file mode 100644
index 0000000..e21643f
--- /dev/null
+++ b/extensions/copy_move_to_folder/data/ui/Makefile.am
@@ -0,0 +1,8 @@
+uidir = $(pkgdatadir)/ui
+ui_DATA = \
+ copy-move-to-folder-copy-complete.ui \
+ copy-move-to-folder-move-complete.ui
+
+EXTRA_DIST = $(ui_DATA)
+
+-include $(top_srcdir)/git.mk
diff --git a/extensions/copy_move_to_folder/data/ui/copy-move-to-folder-copy-complete.ui b/extensions/copy_move_to_folder/data/ui/copy-move-to-folder-copy-complete.ui
new file mode 100644
index 0000000..04b91ff
--- /dev/null
+++ b/extensions/copy_move_to_folder/data/ui/copy-move-to-folder-copy-complete.ui
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-naming-policy project-wide -->
+ <object class="GtkMessageDialog" id="completed_messagedialog">
+ <property name="border_width">5</property>
+ <property name="resizable">False</property>
+ <property name="modal">True</property>
+ <property name="type_hint">normal</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="text" translatable="yes">File(s) successfully copied.</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkCheckButton" id="always_button">
+ <property name="label" translatable="yes">Always preform this action</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">center</property>
+ <child>
+ <object class="GtkButton" id="open_button">
+ <property name="label" translatable="yes">_Open in the Browser</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="image">icon_image</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="close_button">
+ <property name="label">gtk-close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="1">open_button</action-widget>
+ <action-widget response="-7">close_button</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkImage" id="icon_image">
+ <property name="visible">True</property>
+ <property name="yalign">0</property>
+ <property name="stock">gtk-jump-to</property>
+ </object>
+</interface>
diff --git a/extensions/copy_move_to_folder/data/ui/copy-move-to-folder-move-complete.ui b/extensions/copy_move_to_folder/data/ui/copy-move-to-folder-move-complete.ui
new file mode 100644
index 0000000..371bd5f
--- /dev/null
+++ b/extensions/copy_move_to_folder/data/ui/copy-move-to-folder-move-complete.ui
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+ <requires lib="gtk+" version="2.16"/>
+ <!-- interface-naming-policy project-wide -->
+ <object class="GtkMessageDialog" id="completed_messagedialog">
+ <property name="border_width">5</property>
+ <property name="resizable">False</property>
+ <property name="modal">True</property>
+ <property name="type_hint">normal</property>
+ <property name="skip_taskbar_hint">True</property>
+ <property name="text" translatable="yes">File(s) successfully moved.</property>
+ <child internal-child="vbox">
+ <object class="GtkVBox" id="dialog-vbox1">
+ <property name="visible">True</property>
+ <property name="spacing">2</property>
+ <child>
+ <object class="GtkCheckButton" id="always_button">
+ <property name="label" translatable="yes">Always preform this action</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">False</property>
+ <property name="draw_indicator">True</property>
+ </object>
+ <packing>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ <child internal-child="action_area">
+ <object class="GtkHButtonBox" id="dialog-action_area1">
+ <property name="visible">True</property>
+ <property name="layout_style">center</property>
+ <child>
+ <object class="GtkButton" id="open_button">
+ <property name="label" translatable="yes">_Open in the Browser</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="image">icon_image</property>
+ <property name="use_underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkButton" id="close_button">
+ <property name="label">gtk-close</property>
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="receives_default">True</property>
+ <property name="use_stock">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="pack_type">end</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ <action-widgets>
+ <action-widget response="1">open_button</action-widget>
+ <action-widget response="-7">close_button</action-widget>
+ </action-widgets>
+ </object>
+ <object class="GtkImage" id="icon_image">
+ <property name="visible">True</property>
+ <property name="yalign">0</property>
+ <property name="stock">gtk-jump-to</property>
+ </object>
+</interface>
diff --git a/extensions/copy_move_to_folder/dlg-copy-complete.c b/extensions/copy_move_to_folder/dlg-copy-complete.c
new file mode 100644
index 0000000..9593558
--- /dev/null
+++ b/extensions/copy_move_to_folder/dlg-copy-complete.c
@@ -0,0 +1,123 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * GThumb
+ *
+ * Copyright (C) 2001-2010 The Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <config.h>
+#include <gtk/gtk.h>
+#include <gthumb.h>
+#include "preferences.h"
+
+#define GET_WIDGET(x) (_gtk_builder_get_widget (data->builder, (x)))
+#define IS_ACTIVE(x) (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (x)))
+
+
+typedef struct {
+ GthBrowser *browser;
+ GtkBuilder *builder;
+ GtkWidget *dialog;
+ GFile *location;
+} DialogData;
+
+
+static void
+dialog_destroy_cb (GtkWidget *widget,
+ DialogData *data)
+{
+ g_object_unref (data->builder);
+ g_object_unref (data->location);
+ g_object_unref (data->browser);
+ g_free (data);
+}
+
+static void
+close_button_clicked (GtkWidget *button,
+ DialogData *data)
+{
+ if (gtk_toggle_button_get_active((GtkToggleButton *)GET_WIDGET ("always_button")))
+ {
+ eel_gconf_set_boolean (PREF_COPY_MOVE_TO_FOLDER_SHOW_DIALOG, FALSE);
+ eel_gconf_set_boolean (PREF_COPY_MOVE_TO_FOLDER_ALWAYS_OPEN, FALSE);
+ }
+ gtk_widget_destroy (data->dialog);
+}
+
+static void
+open_button_clicked (GtkWidget *button,
+ DialogData *data)
+{
+ gth_browser_load_location(data->browser, data->location);
+
+ if (gtk_toggle_button_get_active((GtkToggleButton *)GET_WIDGET ("always_button")))
+ {
+ eel_gconf_set_boolean (PREF_COPY_MOVE_TO_FOLDER_SHOW_DIALOG, FALSE);
+ eel_gconf_set_boolean (PREF_COPY_MOVE_TO_FOLDER_ALWAYS_OPEN, TRUE);
+ }
+
+ gtk_widget_destroy (data->dialog);
+}
+
+
+void
+dlg_copy_complete (GthBrowser *browser,
+ gboolean move,
+ GFile *location)
+{
+ DialogData *data;
+
+ if(eel_gconf_get_boolean (PREF_COPY_MOVE_TO_FOLDER_SHOW_DIALOG, TRUE))
+ {
+ data = g_new0 (DialogData, 1);
+ data->location = g_file_dup(location);
+ data->browser = browser;
+ g_object_ref(browser);
+ if(move)
+ data->builder = _gtk_builder_new_from_file ("copy-move-to-folder-move-complete.ui", "copy_move_to_folder_move_complete");
+ else
+ data->builder = _gtk_builder_new_from_file ("copy-move-to-folder-copy-complete.ui", "copy_move_to_folder_copy_complete");
+ data->dialog = GET_WIDGET ("completed_messagedialog");
+
+ g_signal_connect (G_OBJECT (data->dialog),
+ "destroy",
+ G_CALLBACK (dialog_destroy_cb),
+ data);
+
+ g_signal_connect (GET_WIDGET ("close_button"),
+ "clicked",
+ G_CALLBACK (close_button_clicked),
+ data);
+
+ g_signal_connect (GET_WIDGET ("open_button"),
+ "clicked",
+ G_CALLBACK (open_button_clicked),
+ data);
+
+ gtk_window_set_transient_for (GTK_WINDOW (data->dialog),
+ GTK_WINDOW (browser));
+ gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE);
+ gtk_widget_show (data->dialog);
+ }
+ else
+ {
+ if(eel_gconf_get_boolean (PREF_COPY_MOVE_TO_FOLDER_ALWAYS_OPEN, FALSE))
+ {
+ gth_browser_load_location(browser, location);
+ }
+ }
+}
diff --git a/extensions/copy_move_to_folder/dlg-copy-complete.h b/extensions/copy_move_to_folder/dlg-copy-complete.h
new file mode 100644
index 0000000..f76718a
--- /dev/null
+++ b/extensions/copy_move_to_folder/dlg-copy-complete.h
@@ -0,0 +1,31 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ * GThumb
+ *
+ * Copyright (C) 2001-2010 The Free Software Foundation, Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef DLG_COPY_COMPLETE_H
+#define DLG_COPY_COMPLETE_H
+
+#include <gthumb.h>
+
+void dlg_copy_complete (GthBrowser *browser,
+ gboolean move,
+ GFile *location);
+
+#endif /* DLG_COPY_COMPLETE_H */
diff --git a/extensions/copy_move_to_folder/preferences.h b/extensions/copy_move_to_folder/preferences.h
index f04a406..47e2e99 100644
--- a/extensions/copy_move_to_folder/preferences.h
+++ b/extensions/copy_move_to_folder/preferences.h
@@ -26,6 +26,8 @@ G_BEGIN_DECLS
#define PREF_COPY_MOVE_TO_FOLDER_COPY_URI "/apps/gthumb/ext/copy_move_to_folder/copy_uri"
#define PREF_COPY_MOVE_TO_FOLDER_MOVE_URI "/apps/gthumb/ext/copy_move_to_folder/move_uri"
+#define PREF_COPY_MOVE_TO_FOLDER_SHOW_DIALOG "/apps/gthumb/ext/copy_move_to_folder/show_dialog"
+#define PREF_COPY_MOVE_TO_FOLDER_ALWAYS_OPEN "/apps/gthumb/ext/copy_move_to_folder/always_open"
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]