diff options
author | Srinivasa Ragavan <sragavan@src.gnome.org> | 2007-02-12 14:11:14 +0800 |
---|---|---|
committer | Srinivasa Ragavan <sragavan@src.gnome.org> | 2007-02-12 14:11:14 +0800 |
commit | 9862306af9b5019372cbcb6693b5ae1d56297776 (patch) | |
tree | 25b7efb0d1b3478601a172e289f0360df96c0f0a /e-util | |
parent | 0670e0a9070dac6359d34822f7433e9502fc1d22 (diff) | |
download | gsoc2013-evolution-9862306af9b5019372cbcb6693b5ae1d56297776.tar.gz gsoc2013-evolution-9862306af9b5019372cbcb6693b5ae1d56297776.tar.zst gsoc2013-evolution-9862306af9b5019372cbcb6693b5ae1d56297776.zip |
Print migration updates from Ebby Wiselyn.
svn path=/trunk/; revision=33201
Diffstat (limited to 'e-util')
-rw-r--r-- | e-util/ChangeLog | 9 | ||||
-rw-r--r-- | e-util/e-print.c | 183 | ||||
-rw-r--r-- | e-util/e-print.h | 10 |
3 files changed, 72 insertions, 130 deletions
diff --git a/e-util/ChangeLog b/e-util/ChangeLog index 9945df293d..e18a3bc65a 100644 --- a/e-util/ChangeLog +++ b/e-util/ChangeLog @@ -1,3 +1,12 @@ +2007-02-12 Srinivasa Ragavan <sragavan@novell.com> + + ** Print settings revamp from Matthew Barnes + + * e-print.c: (pack_settings), (unpack_settings), + (e_print_load_settings), (e_print_save_settings), + (print_dialog_response), (e_print_get_dialog): + * e-print.h: + 2007-01-27 Andre Klapper <a9016009@gmx.de> * e-html-utils.c: (e_text_to_html_full): diff --git a/e-util/e-print.c b/e-util/e-print.c index 33eecca14b..edec919eac 100644 --- a/e-util/e-print.c +++ b/e-util/e-print.c @@ -19,155 +19,89 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ +#include "e-print.h" + #include <stdio.h> #include <string.h> -#include <gconf/gconf-client.h> -#include "e-print.h" #include <gtk/gtk.h> #include <gtk/gtkprintunixdialog.h> -#define PRINTER "/apps/evolution/shell/printer" -#define SCALE "/apps/evolution/shell/scale" -#define PRINT_PAGES "/apps/evolution/shell/print_pages" -#define PAGE_RANGES "/apps/evolution/shell/page_ranges" -#define PAGE_SET "/apps/evolution/shell/page_set" -#define COLLATE "/apps/evolution/shell/collate" -#define REVERSE "/apps/evolution/shell/reverse" -#define N_COPIES "/apps/evolution/shell/n_copies" -#define LPR_COMMANDLINE "/apps/evolution/shell/lpr_commandline" -#define OUTPUT_URI "/apps/evolution/shell/output_uri" -#define OUTPUT_FILE_FORMAT "/apps/evolution/shell/output_file_format" - -/* Loads the print settings that were saved previously */ +#include <gconf/gconf-client.h> +#define PRINTING "/apps/evolution/shell/printing" +static void +pack_settings (const gchar *key, const gchar *value, GSList **p_list) +{ + gchar *item; + item = g_strdup_printf ("%s=%s", key, value); + *p_list = g_slist_prepend (*p_list, item); +} +static void +unpack_settings (gchar *item, GtkPrintSettings *settings) +{ + gchar *cp, *key, *value; + cp = strchr (item, '='); + if (cp == NULL) + return; + *cp ++ = '\0'; + key = g_strstrip (item); + value = g_strstrip (cp); + gtk_print_settings_set (settings, key, value); + g_free (item); +} GtkPrintSettings * -e_print_load_config (void) +e_print_load_settings (void) { - GConfClient *gconf; + GConfClient *client; GtkPrintSettings *settings; - gchar *printer_name; - gchar *collate; - gchar *n_copies; - gchar *print_pages; - gchar *page_set; - gchar *scale; - gchar *output_uri; - gchar *output_file_format; - gchar *reverse; - gchar *page_ranges; - gchar *lpr_commandline; + GSList *list; + GError *error = NULL; + client = gconf_client_get_default (); settings = gtk_print_settings_new (); - gconf = gconf_client_get_default (); - - printer_name = gconf_client_get_string (gconf, PRINTER, NULL); - gtk_print_settings_set (settings, "printer", printer_name); - - n_copies = gconf_client_get_string (gconf, N_COPIES, NULL); - gtk_print_settings_set (settings, "n-copies",n_copies); - - collate = gconf_client_get_string (gconf, COLLATE, NULL); - gtk_print_settings_set (settings, "collate", collate); - - lpr_commandline = gconf_client_get_string (gconf, LPR_COMMANDLINE, NULL); - gtk_print_settings_set (settings, "lpr-commandline", lpr_commandline); - - print_pages = gconf_client_get_string (gconf, PRINT_PAGES, NULL); - gtk_print_settings_set (settings, "print-pages", print_pages); - - page_set = gconf_client_get_string (gconf, PAGE_SET, NULL); - gtk_print_settings_set (settings, "page-set", page_set); - - output_uri = gconf_client_get_string (gconf, OUTPUT_URI, NULL); - gtk_print_settings_set (settings, "output-uri", output_uri); - - output_file_format = gconf_client_get_string (gconf, OUTPUT_FILE_FORMAT, NULL); - gtk_print_settings_set (settings, "output-file-format",output_file_format); - - reverse = gconf_client_get_string (gconf, REVERSE, NULL); - gtk_print_settings_set (settings, "reverse", reverse); - - scale = gconf_client_get_string (gconf, SCALE, NULL); - gtk_print_settings_set (settings, "scale", scale); - - page_ranges = gconf_client_get_string (gconf, PAGE_RANGES, NULL); - gtk_print_settings_set (settings, "page-ranges", page_ranges); - - g_free (printer_name); - g_free (collate); - g_free (n_copies); - g_free (print_pages); - g_free (page_set); - g_free (scale); - g_free (output_uri); - g_free (output_file_format); - g_free (reverse); - g_free (page_ranges); - g_free (lpr_commandline); - g_object_unref (gconf); + list = gconf_client_get_list ( + client, PRINTING, GCONF_VALUE_STRING, &error); + if (error == NULL) { + g_slist_foreach (list, (GFunc) unpack_settings, settings); + g_slist_free (list); + } else { + g_warning ("%s: %s", G_STRFUNC, error->message); + g_error_free (error); + } + g_object_unref (client); return settings; } /* Saves the print settings */ void -e_print_save_config (GtkPrintSettings *settings) +e_print_save_settings (GtkPrintSettings *settings) { - GConfClient *gconf; - const gchar *printer_name; - const gchar *collate; - const gchar *n_copies; - const gchar *print_pages; - const gchar *page_set; - const gchar *scale; - const gchar *output_uri; - const gchar *output_file_format; - const gchar *reverse; - const gchar *page_ranges; - const gchar *lpr_commandline; - - gconf = gconf_client_get_default (); - printer_name = gtk_print_settings_get (settings, "printer"); - gconf_client_set_string (gconf, PRINTER, printer_name, NULL); - - scale = gtk_print_settings_get (settings, "scale"); - gconf_client_set_string (gconf, SCALE, scale, NULL); - - page_set = gtk_print_settings_get (settings, "page-set"); - gconf_client_set_string (gconf, PAGE_SET, page_set, NULL); - - print_pages = gtk_print_settings_get (settings, "print-pages"); - gconf_client_set_string (gconf, PRINT_PAGES, print_pages, NULL); - - lpr_commandline = gtk_print_settings_get (settings, "lpr-commandline"); - gconf_client_set_string (gconf, LPR_COMMANDLINE, lpr_commandline, NULL); + GConfClient *client; + GSList *list = NULL; + GError *error = NULL; - collate = gtk_print_settings_get (settings, "collate"); - gconf_client_set_string (gconf, COLLATE, collate, NULL); + client = gconf_client_get_default (); - output_uri = gtk_print_settings_get (settings, "output-uri"); - gconf_client_set_string (gconf, OUTPUT_URI, output_uri, NULL); - - output_file_format = gtk_print_settings_get (settings, "output-file-format"); - gconf_client_set_string (gconf, OUTPUT_FILE_FORMAT, output_file_format, NULL); - - reverse = gtk_print_settings_get (settings, "reverse"); - gconf_client_set_string (gconf, REVERSE, reverse, NULL); - - n_copies = gtk_print_settings_get (settings, "n_copies"); - gconf_client_set_string (gconf, N_COPIES, n_copies, NULL); - - page_ranges = gtk_print_settings_get (settings, "page-ranges"); - gconf_client_set_string (gconf, PAGE_RANGES, "page-ranges",NULL); - - g_object_unref (gconf); + gtk_print_settings_foreach ( + settings, (GtkPrintSettingsFunc) pack_settings, &list); + gconf_client_set_list ( + client, PRINTING, GCONF_VALUE_STRING, list, &error); + if (error != NULL) { + g_warning ("%s: %s", G_STRFUNC, error->message); + g_error_free (error); + } + g_slist_foreach (list, (GFunc) g_free, NULL); + g_slist_free (list); + + g_object_unref (client); } static void print_dialog_response(GtkWidget *widget, int resp, gpointer data) { if (resp == GTK_RESPONSE_OK) { - e_print_save_config (gtk_print_unix_dialog_get_settings(GTK_PRINT_UNIX_DIALOG (widget))); + e_print_save_settings (gtk_print_unix_dialog_get_settings(GTK_PRINT_UNIX_DIALOG (widget))); } } @@ -178,7 +112,8 @@ e_print_get_dialog (const char *title, int flags) GtkPrintSettings *settings; GtkWidget *dialog; - settings = e_print_load_config (); + settings = gtk_print_settings_new (); + settings = e_print_load_settings (); dialog = e_print_get_dialog_with_config (title, flags, settings); g_object_unref (settings); return dialog; diff --git a/e-util/e-print.h b/e-util/e-print.h index c8ca551203..8ae99a2900 100644 --- a/e-util/e-print.h +++ b/e-util/e-print.h @@ -19,17 +19,15 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ -#include <gtk/gtk.h> -#include <libgnomeprint/gnome-print.h> -#include <libgnomeprintui/gnome-print-dialog.h> - #ifndef __E_PRINT__ #define __E_PRINT__ +#include <gtk/gtk.h> + G_BEGIN_DECLS -GtkPrintSettings *e_print_load_config (void); -void e_print_save_config (GtkPrintSettings *settings); +GtkPrintSettings *e_print_load_settings (void); +void e_print_save_settings (GtkPrintSettings *settings); GtkWidget *e_print_get_dialog (const char *title, int flags); GtkWidget *e_print_get_dialog_with_config (const char *title, int flags, GtkPrintSettings *settings); |