aboutsummaryrefslogtreecommitdiffstats
path: root/e-util
diff options
context:
space:
mode:
Diffstat (limited to 'e-util')
-rw-r--r--e-util/ChangeLog9
-rw-r--r--e-util/e-print.c183
-rw-r--r--e-util/e-print.h10
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);