gimp r24960 - in trunk: . plug-ins/print
- From: neo svn gnome org
- To: svn-commits-list gnome org
- Subject: gimp r24960 - in trunk: . plug-ins/print
- Date: Mon, 25 Feb 2008 20:40:22 +0000 (GMT)
Author: neo
Date: Mon Feb 25 20:40:22 2008
New Revision: 24960
URL: http://svn.gnome.org/viewvc/gimp?rev=24960&view=rev
Log:
2008-02-25 Sven Neumann <sven gimp org>
* plug-ins/print/Makefile.am
* plug-ins/print/print-utils.[ch]: added new files with utility
functions.
* plug-ins/print/print-settings.c: use the new utility
functions for loading and saving GKeyFile.
* plug-ins/print/print-page-setup.[ch]
* plug-ins/print/print.c: also store the page setup in an image
parasite. Fixes most of what remained to be done for bug
#513291.
Added:
trunk/plug-ins/print/print-utils.c
trunk/plug-ins/print/print-utils.h
Modified:
trunk/ChangeLog
trunk/plug-ins/print/Makefile.am
trunk/plug-ins/print/print-page-setup.c
trunk/plug-ins/print/print-page-setup.h
trunk/plug-ins/print/print-settings.c
trunk/plug-ins/print/print.c
Modified: trunk/plug-ins/print/Makefile.am
==============================================================================
--- trunk/plug-ins/print/Makefile.am (original)
+++ trunk/plug-ins/print/Makefile.am Mon Feb 25 20:40:22 2008
@@ -49,4 +49,6 @@
print-preview.c \
print-preview.h \
print-settings.c \
- print-settings.h
+ print-settings.h \
+ print-utils.c \
+ print-utils.h
Modified: trunk/plug-ins/print/print-page-setup.c
==============================================================================
--- trunk/plug-ins/print/print-page-setup.c (original)
+++ trunk/plug-ins/print/print-page-setup.c Mon Feb 25 20:40:22 2008
@@ -22,6 +22,7 @@
#include <libgimp/gimpui.h>
#include "print-page-setup.h"
+#include "print-utils.h"
void
@@ -41,49 +42,62 @@
gtk_print_operation_set_default_page_setup (operation, setup);
}
-gboolean
+void
print_page_setup_load (GtkPrintOperation *operation,
gint32 image_ID)
{
- GtkPageSetup *setup;
- gchar *filename;
+ GKeyFile *key_file;
- filename = g_build_filename (gimp_directory (), "print-page-setup", NULL);
+ g_return_if_fail (GTK_IS_PRINT_OPERATION (operation));
- setup = gtk_page_setup_new_from_file (filename, NULL);
+ key_file = print_utils_key_file_load_from_parasite (image_ID,
+ "print-page-setup");
- g_free (filename);
+ if (! key_file)
+ key_file = print_utils_key_file_load_from_rcfile ("print-page-setup");
- if (setup)
+ if (key_file)
{
- gtk_print_operation_set_default_page_setup (operation, setup);
- g_object_unref (setup);
+ GtkPageSetup *setup;
+ GError *error = NULL;
- return TRUE;
- }
+ setup = gtk_page_setup_new_from_key_file (key_file, NULL, &error);
- return FALSE;
+ if (setup)
+ {
+ gtk_print_operation_set_default_page_setup (operation, setup);
+ g_object_unref (setup);
+ }
+ else
+ {
+ g_warning ("unable to read page setup from key file: %s",
+ error->message);
+ g_error_free (error);
+ }
+
+ g_key_file_free (key_file);
+ }
}
void
-print_page_setup_save (GtkPrintOperation *operation)
+print_page_setup_save (GtkPrintOperation *operation,
+ gint32 image_ID)
{
GtkPageSetup *setup;
- gchar *filename;
- GError *error = NULL;
+ GKeyFile *key_file;
- setup = gtk_print_operation_get_default_page_setup (operation);
+ g_return_if_fail (GTK_IS_PRINT_OPERATION (operation));
+
+ key_file = g_key_file_new ();
- filename = g_build_filename (gimp_directory (), "print-page-setup", NULL);
+ setup = gtk_print_operation_get_default_page_setup (operation);
- gtk_page_setup_to_file (setup, filename, &error);
+ gtk_page_setup_to_key_file (setup, key_file, NULL);
- if (error)
- {
- g_message ("Error saving page setup as resource file: %s",
- error->message);
- g_error_free (error);
- }
+ print_utils_key_file_save_as_parasite (key_file,
+ image_ID, "print-page-setup");
+ print_utils_key_file_save_as_rcfile (key_file,
+ "print-page-setup");
- g_free (filename);
+ g_key_file_free (key_file);
}
Modified: trunk/plug-ins/print/print-page-setup.h
==============================================================================
--- trunk/plug-ins/print/print-page-setup.h (original)
+++ trunk/plug-ins/print/print-page-setup.h Mon Feb 25 20:40:22 2008
@@ -17,9 +17,10 @@
*/
-void print_page_setup_dialog (GtkPrintOperation *operation);
-gboolean print_page_setup_load (GtkPrintOperation *operation,
- gint32 image_ID);
-void print_page_setup_save (GtkPrintOperation *operation);
+void print_page_setup_dialog (GtkPrintOperation *operation);
+void print_page_setup_load (GtkPrintOperation *operation,
+ gint32 image_ID);
+void print_page_setup_save (GtkPrintOperation *operation,
+ gint32 image_ID);
Modified: trunk/plug-ins/print/print-settings.c
==============================================================================
--- trunk/plug-ins/print/print-settings.c (original)
+++ trunk/plug-ins/print/print-settings.c Mon Feb 25 20:40:22 2008
@@ -23,6 +23,7 @@
#include "print.h"
#include "print-settings.h"
+#include "print-utils.h"
#define PRINT_SETTINGS_MAJOR_VERSION 0
@@ -31,11 +32,6 @@
static GKeyFile * print_settings_key_file_from_settings (PrintData *data);
-static void print_settings_save_resource_file (GKeyFile *settings_key_file);
-
-static void print_settings_save_as_parasite (GKeyFile *settings_key_file,
- gint32 image_ID);
-
static void print_settings_add_to_key_file (const gchar *key,
const gchar *value,
gpointer data);
@@ -81,7 +77,7 @@
{
GKeyFile *key_file = print_settings_key_file_from_settings (data);
- print_settings_save_resource_file (key_file);
+ print_utils_key_file_save_as_rcfile (key_file, "print-settings");
/* image setup */
if (gimp_image_is_valid (data->image_id))
@@ -101,7 +97,8 @@
g_key_file_set_boolean (key_file, "image-setup",
"use-full-page", data->use_full_page);
- print_settings_save_as_parasite (key_file, data->image_id);
+ print_utils_key_file_save_as_parasite (key_file,
+ data->image_id, "print-settings");
}
g_key_file_free (key_file);
@@ -117,8 +114,6 @@
GtkPrintSettings *settings;
GKeyFile *key_file = g_key_file_new ();
- g_key_file_set_list_separator (key_file, '=');
-
/* put version information into the file */
g_key_file_set_integer (key_file, "meta", "major-version",
PRINT_SETTINGS_MAJOR_VERSION);
@@ -136,67 +131,6 @@
}
/*
- * create a resource file from a GKeyFile holding the settings
- */
-static void
-print_settings_save_resource_file (GKeyFile *settings_key_file)
-{
- gchar *filename;
- gchar *contents;
- gsize length;
- GError *error = NULL;
-
- contents = g_key_file_to_data (settings_key_file, &length, &error);
-
- if (! contents)
- {
- g_warning ("Unable to get contents of settings key file: %s",
- error->message);
- g_error_free (error);
- return;
- }
-
- filename = g_build_filename (gimp_directory (), "print-settings", NULL);
-
- if (! g_file_set_contents (filename, contents, length, &error))
- {
- g_warning ("Unable to write print settings to '%s': %s",
- gimp_filename_to_utf8 (filename), error->message);
- g_error_free (error);
- }
-
- g_free (filename);
- g_free (contents);
-}
-
-/*
- * create an image parasite called "print-settings" from a GKeyFile
- * holding the print settings
- */
-static void
-print_settings_save_as_parasite (GKeyFile *settings_key_file,
- gint32 image_ID)
-{
- gchar *contents;
- gsize length;
- GError *error = NULL;
-
- contents = g_key_file_to_data (settings_key_file, &length, &error);
-
- if (! contents)
- {
- g_warning ("Unable to get contents of settings key file: %s",
- error->message);
- g_error_free (error);
- return;
- }
-
- gimp_image_attach_new_parasite (image_ID, "print-settings",
- 0, length, contents);
- g_free (contents);
-}
-
-/*
* callback used in gtk_print_settings_foreach loop
*/
static void
@@ -215,22 +149,9 @@
static GKeyFile *
print_settings_key_file_from_resource_file (void)
{
- GKeyFile *key_file = g_key_file_new ();
- gchar *filename;
-
- g_key_file_set_list_separator (key_file, '=');
-
- filename = g_build_filename (gimp_directory (), "print-settings", NULL);
-
- if (! g_key_file_load_from_file (key_file, filename, G_KEY_FILE_NONE, NULL))
- {
- g_key_file_free (key_file);
- key_file = NULL;
- }
-
- g_free (filename);
+ GKeyFile *key_file = print_utils_key_file_load_from_rcfile ("print-settings");
- if (! print_settings_check_version (key_file))
+ if (key_file && ! print_settings_check_version (key_file))
{
g_key_file_free (key_file);
return NULL;
@@ -246,30 +167,12 @@
static GKeyFile *
print_settings_key_file_from_parasite (gint32 image_ID)
{
- GimpParasite *parasite;
- GKeyFile *key_file;
-
- parasite = gimp_image_parasite_find (image_ID, "print-settings");
-
- if (! parasite)
- return NULL;
-
- key_file = g_key_file_new ();
-
- g_key_file_set_list_separator (key_file, '=');
-
- if (! g_key_file_load_from_data (key_file,
- gimp_parasite_data (parasite),
- gimp_parasite_data_size (parasite),
- G_KEY_FILE_NONE, NULL))
- {
- g_key_file_free (key_file);
- key_file = NULL;;
- }
+ GKeyFile *key_file;
- gimp_parasite_free (parasite);
+ key_file = print_utils_key_file_load_from_parasite (image_ID,
+ "print-settings");
- if (! print_settings_check_version (key_file))
+ if (key_file && ! print_settings_check_version (key_file))
{
g_key_file_free (key_file);
return FALSE;
Added: trunk/plug-ins/print/print-utils.c
==============================================================================
--- (empty file)
+++ trunk/plug-ins/print/print-utils.c Mon Feb 25 20:40:22 2008
@@ -0,0 +1,142 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+#include "config.h"
+
+#include <libgimp/gimp.h>
+
+#include "print-utils.h"
+
+
+GKeyFile *
+print_utils_key_file_load_from_rcfile (const gchar *basename)
+{
+ GKeyFile *key_file;
+ gchar *filename;
+
+ g_return_val_if_fail (basename != NULL, NULL);
+
+ filename = g_build_filename (gimp_directory (), "print-settings", NULL);
+
+ key_file = g_key_file_new ();
+
+ if (! g_key_file_load_from_file (key_file, filename, G_KEY_FILE_NONE, NULL))
+ {
+ g_key_file_free (key_file);
+ key_file = NULL;
+ }
+
+ g_free (filename);
+
+ return key_file;
+}
+
+GKeyFile *
+print_utils_key_file_load_from_parasite (gint32 image_ID,
+ const gchar *parasite_name)
+{
+ GimpParasite *parasite;
+ GKeyFile *key_file;
+ GError *error = NULL;
+
+ g_return_val_if_fail (parasite_name != NULL, NULL);
+
+ parasite = gimp_image_parasite_find (image_ID, parasite_name);
+
+ if (! parasite)
+ return NULL;
+
+ key_file = g_key_file_new ();
+
+ if (! g_key_file_load_from_data (key_file,
+ gimp_parasite_data (parasite),
+ gimp_parasite_data_size (parasite),
+ G_KEY_FILE_NONE, &error))
+ {
+ g_key_file_free (key_file);
+ gimp_parasite_free (parasite);
+
+ g_warning ("Unable to create key file from image parasite '%s': %s",
+ parasite_name, error->message);
+ g_error_free (error);
+ return NULL;
+ }
+
+ gimp_parasite_free (parasite);
+
+ return key_file;
+}
+
+void
+print_utils_key_file_save_as_rcfile (GKeyFile *key_file,
+ const gchar *basename)
+{
+ gchar *filename;
+ gchar *contents;
+ gsize length;
+ GError *error = NULL;
+
+ g_return_if_fail (basename != NULL);
+
+ contents = g_key_file_to_data (key_file, &length, &error);
+
+ if (! contents)
+ {
+ g_warning ("Unable to get contents of key file for '%s': %s",
+ basename, error->message);
+ g_error_free (error);
+ return;
+ }
+
+ filename = g_build_filename (gimp_directory (), basename, NULL);
+
+ if (! g_file_set_contents (filename, contents, length, &error))
+ {
+ g_warning ("Unable to write settings to '%s': %s",
+ gimp_filename_to_utf8 (filename), error->message);
+ g_error_free (error);
+ }
+
+ g_free (filename);
+ g_free (contents);
+}
+
+void
+print_utils_key_file_save_as_parasite (GKeyFile *key_file,
+ gint32 image_ID,
+ const gchar *parasite_name)
+{
+ gchar *contents;
+ gsize length;
+ GError *error = NULL;
+
+ g_return_if_fail (parasite_name != NULL);
+
+ contents = g_key_file_to_data (key_file, &length, &error);
+
+ if (! contents)
+ {
+ g_warning ("Unable to get contents of key file for parasite '%s': %s",
+ parasite_name, error->message);
+ g_error_free (error);
+ return;
+ }
+
+ gimp_image_attach_new_parasite (image_ID, parasite_name, 0, length, contents);
+ g_free (contents);
+}
Added: trunk/plug-ins/print/print-utils.h
==============================================================================
--- (empty file)
+++ trunk/plug-ins/print/print-utils.h Mon Feb 25 20:40:22 2008
@@ -0,0 +1,27 @@
+/* GIMP - The GNU Image Manipulation Program
+ * Copyright (C) 1995 Spencer Kimball and Peter Mattis
+ *
+ * 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, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ */
+
+GKeyFile * print_utils_key_file_load_from_rcfile (const gchar *basename);
+GKeyFile * print_utils_key_file_load_from_parasite (gint32 image_ID,
+ const gchar *parasite_name);
+
+void print_utils_key_file_save_as_rcfile (GKeyFile *key_file,
+ const gchar *basename);
+void print_utils_key_file_save_as_parasite (GKeyFile *key_file,
+ gint32 image_ID,
+ const gchar *parasite_name);
Modified: trunk/plug-ins/print/print.c
==============================================================================
--- trunk/plug-ins/print/print.c (original)
+++ trunk/plug-ins/print/print.c Mon Feb 25 20:40:22 2008
@@ -301,7 +301,7 @@
print_page_setup_load (operation, image_ID);
print_page_setup_dialog (operation);
- print_page_setup_save (operation);
+ print_page_setup_save (operation, image_ID);
g_object_unref (operation);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]