#include "gtkcupsutils.h"
+#ifdef HAVE_COLORD
+#include <colord.h>
+#endif
typedef struct _GtkPrintBackendCupsClass GtkPrintBackendCupsClass;
GHashTable *auth;
gchar *username;
gboolean authentication_lock;
+#ifdef HAVE_COLORD
+ CdClient *colord_client;
+#endif
};
static GObjectClass *backend_parent_class;
backend_cups->username = NULL;
+#ifdef HAVE_COLORD
+ backend_cups->colord_client = cd_client_new ();
+#endif
+
cups_get_local_default_printer (backend_cups);
}
g_free (backend_cups->username);
+#ifdef HAVE_COLORD
+ g_object_unref (backend_cups->colord_client);
+#endif
+
backend_parent_class->finalize (object);
}
char *cups_server; /* CUPS server */
list_has_changed = TRUE;
- cups_printer = gtk_printer_cups_new (printer_name, backend);
+#ifdef HAVE_COLORD
+ cups_printer = gtk_printer_cups_new (printer_name,
+ backend,
+ cups_backend->colord_client);
+#else
+ cups_printer = gtk_printer_cups_new (printer_name, backend, NULL);
+#endif
cups_printer->device_uri = g_strdup_printf ("/printers/%s", printer_name);
}
+#ifdef HAVE_COLORD
+
+typedef struct {
+ GtkPrintSettings *settings;
+ GtkPrinter *printer;
+} GtkPrintBackendCupsColordHelper;
+
+static void
+colord_printer_option_set_changed_cb (GtkPrinterOptionSet *set,
+ GtkPrintBackendCupsColordHelper *helper)
+{
+ gtk_printer_cups_update_settings (GTK_PRINTER_CUPS (helper->printer),
+ helper->settings,
+ set);
+}
+#endif
+
static GtkPrinterOptionSet *
cups_printer_get_options (GtkPrinter *printer,
GtkPrintSettings *settings,
GtkPrintBackendCups *backend;
GtkTextDirection text_direction;
GtkPrinterCups *cups_printer = NULL;
-
+#ifdef HAVE_COLORD
+ GtkPrintBackendCupsColordHelper *helper;
+#endif
set = gtk_printer_option_set_new ();
cupsFreeOptions (num_opts, opts);
+#ifdef HAVE_COLORD
+ /* TRANSLATORS: this this the ICC color profile to use for this job */
+ option = gtk_printer_option_new ("colord-profile",
+ _("Printer Profile"),
+ GTK_PRINTER_OPTION_TYPE_INFO);
+
+ /* assign it to the color page */
+ option->group = g_strdup ("ColorPage");
+
+ /* TRANSLATORS: this is when color profile information is unavailable */
+ gtk_printer_option_set (option, _("Unavailable"));
+ gtk_printer_option_set_add (set, option);
+
+ /* watch to see if the user changed the options */
+ helper = g_new (GtkPrintBackendCupsColordHelper, 1);
+ helper->printer = printer;
+ helper->settings = settings;
+ g_signal_connect_data (set, "changed",
+ G_CALLBACK (colord_printer_option_set_changed_cb),
+ helper,
+ (GClosureNotify) g_free,
+ 0);
+
+ /* initial coldplug */
+ gtk_printer_cups_update_settings (GTK_PRINTER_CUPS (printer),
+ settings, set);
+ g_object_bind_property (printer, "profile-title",
+ option, "value",
+ G_BINDING_DEFAULT);
+
+#endif
+
return set;
}