[gthumb: 4/24] copy_move_to_folder: add preference dialog



commit 559c8ead45bfc40e654fb7a0c9580e19b2b6b0fe
Author: Marlodavampire <vworker.com>
Date:   Wed Nov 10 15:25:09 2010 +1100

    copy_move_to_folder: add preference dialog

 extensions/copy_move_to_folder/Makefile.am         |    2 +
 extensions/copy_move_to_folder/data/ui/Makefile.am |    3 +-
 .../data/ui/copy-move-to-folder-preferences.ui     |   66 +++++++++++++++
 .../dlg-copy-move-to-folder-preferences.c          |   87 ++++++++++++++++++++
 .../dlg-copy-move-to-folder-preferences.h          |   29 +++++++
 extensions/copy_move_to_folder/main.c              |    4 +-
 6 files changed, 189 insertions(+), 2 deletions(-)
---
diff --git a/extensions/copy_move_to_folder/Makefile.am b/extensions/copy_move_to_folder/Makefile.am
index 5166a93..c9c3d09 100644
--- a/extensions/copy_move_to_folder/Makefile.am
+++ b/extensions/copy_move_to_folder/Makefile.am
@@ -11,6 +11,8 @@ libcopy_move_to_folder_la_SOURCES = \
 	preferences.h \
 	dlg-copy-complete.c \
 	dlg-copy-complete.h \
+	dlg-copy-move-to-folder-preferences.c \
+	dlg-copy-move-to-folder-preferences.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/data/ui/Makefile.am b/extensions/copy_move_to_folder/data/ui/Makefile.am
index e21643f..2e6f0ce 100644
--- a/extensions/copy_move_to_folder/data/ui/Makefile.am
+++ b/extensions/copy_move_to_folder/data/ui/Makefile.am
@@ -1,7 +1,8 @@
 uidir = $(pkgdatadir)/ui
 ui_DATA = 					\
 	copy-move-to-folder-copy-complete.ui	\
-	copy-move-to-folder-move-complete.ui
+	copy-move-to-folder-move-complete.ui	\
+	copy-move-to-folder-preferences.ui
 
 EXTRA_DIST = $(ui_DATA)
 
diff --git a/extensions/copy_move_to_folder/data/ui/copy-move-to-folder-preferences.ui b/extensions/copy_move_to_folder/data/ui/copy-move-to-folder-preferences.ui
new file mode 100644
index 0000000..87b2efd
--- /dev/null
+++ b/extensions/copy_move_to_folder/data/ui/copy-move-to-folder-preferences.ui
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <requires lib="gtk+" version="2.16"/>
+  <!-- interface-naming-policy project-wide -->
+  <object class="GtkDialog" id="preferences_dialog">
+    <property name="border_width">5</property>
+    <property name="title" translatable="yes">Preferences</property>
+    <property name="type_hint">dialog</property>
+    <child internal-child="vbox">
+      <object class="GtkVBox" id="dialog-vbox7">
+        <property name="visible">True</property>
+        <child>
+          <object class="GtkVBox" id="vbox1">
+            <property name="visible">True</property>
+            <property name="border_width">5</property>
+            <child>
+              <object class="GtkCheckButton" id="ask_button">
+                <property name="label" translatable="yes">_Ask what to do when an operation is complete.</property>
+                <property name="visible">True</property>
+                <property name="can_focus">True</property>
+                <property name="receives_default">False</property>
+                <property name="use_underline">True</property>
+                <property name="draw_indicator">True</property>
+              </object>
+              <packing>
+                <property name="expand">False</property>
+                <property name="position">0</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="position">1</property>
+          </packing>
+        </child>
+        <child internal-child="action_area">
+          <object class="GtkHButtonBox" id="dialog-action_area7">
+            <property name="visible">True</property>
+            <property name="layout_style">end</property>
+            <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">0</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="0">close_button</action-widget>
+    </action-widgets>
+  </object>
+</interface>
diff --git a/extensions/copy_move_to_folder/dlg-copy-move-to-folder-preferences.c b/extensions/copy_move_to_folder/dlg-copy-move-to-folder-preferences.c
new file mode 100644
index 0000000..f93d2d1
--- /dev/null
+++ b/extensions/copy_move_to_folder/dlg-copy-move-to-folder-preferences.c
@@ -0,0 +1,87 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ *  GThumb
+ *
+ *  Copyright (C) 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"
+
+
+typedef struct {
+	GtkBuilder *builder;
+	GtkWidget  *dialog;
+} DialogData;
+
+
+static void
+destroy_cb (GtkWidget  *widget,
+	    DialogData *data)
+{
+	g_object_unref (data->builder);
+	g_free (data);
+}
+
+
+static void
+ask_checkbutton_clicked_cb (GtkWidget  *widget,
+			     DialogData *data)
+{
+	eel_gconf_set_boolean (PREF_COPY_MOVE_TO_FOLDER_SHOW_DIALOG, gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (data->builder, "ask_button"))));
+}
+
+
+void
+dlg_copy_move_to_folder_preferences (GtkWindow *parent)
+{
+	DialogData *data;
+
+	data = g_new0 (DialogData, 1);
+	data->builder = _gtk_builder_new_from_file ("copy-move-to-folder-preferences.ui", "copy-move-to-folder");
+
+	/* Get the widgets. */
+
+	data->dialog = _gtk_builder_get_widget (data->builder, "preferences_dialog");
+
+	/* Set widgets data. */
+
+	gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (gtk_builder_get_object (data->builder, "ask_button")), eel_gconf_get_boolean (PREF_COPY_MOVE_TO_FOLDER_SHOW_DIALOG, TRUE));
+
+	/* Set the signals handlers. */
+
+	g_signal_connect (G_OBJECT (data->dialog),
+			  "destroy",
+			  G_CALLBACK (destroy_cb),
+			  data);
+	g_signal_connect_swapped (gtk_builder_get_object (data->builder, "close_button"),
+				  "clicked",
+				  G_CALLBACK (gtk_widget_destroy),
+				  G_OBJECT (data->dialog));
+	g_signal_connect (gtk_builder_get_object (data->builder, "ask_button"),
+			  "clicked",
+			  G_CALLBACK (ask_checkbutton_clicked_cb),
+			  data);
+
+	/* run dialog. */
+
+	gtk_window_set_transient_for (GTK_WINDOW (data->dialog), parent);
+	gtk_window_set_modal (GTK_WINDOW (data->dialog), TRUE);
+	gtk_widget_show (data->dialog);
+}
diff --git a/extensions/copy_move_to_folder/dlg-copy-move-to-folder-preferences.h b/extensions/copy_move_to_folder/dlg-copy-move-to-folder-preferences.h
new file mode 100644
index 0000000..0fbb8be
--- /dev/null
+++ b/extensions/copy_move_to_folder/dlg-copy-move-to-folder-preferences.h
@@ -0,0 +1,29 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+
+/*
+ *  GThumb
+ *
+ *  Copyright (C) 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_MOVE_TO_FOLDER_PREFERENCES_H
+#define DLG_COPY_MOVE_TO_FOLDER_PREFERENCES_H
+
+#include <gthumb.h>
+
+void dlg_copy_move_to_folder_preferences (GtkWindow *parent);
+
+#endif /* DLG_COPY_MOVE_TO_FOLDER_PREFERENCES_H */
diff --git a/extensions/copy_move_to_folder/main.c b/extensions/copy_move_to_folder/main.c
index 1129959..854d8ca 100644
--- a/extensions/copy_move_to_folder/main.c
+++ b/extensions/copy_move_to_folder/main.c
@@ -24,6 +24,7 @@
 #include <gtk/gtk.h>
 #include <gthumb.h>
 #include "callbacks.h"
+#include "dlg-copy-move-to-folder-preferences.h"
 
 
 G_MODULE_EXPORT void
@@ -43,11 +44,12 @@ gthumb_extension_deactivate (void)
 G_MODULE_EXPORT gboolean
 gthumb_extension_is_configurable (void)
 {
-	return FALSE;
+	return TRUE;
 }
 
 
 G_MODULE_EXPORT void
 gthumb_extension_configure (GtkWindow *parent)
 {
+	dlg_copy_move_to_folder_preferences (parent);
 }



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