[gnome-control-center] printers: Allow printer_get_ppd_async() to get PPD from remote host
- From: Marek KaÅÃk <mkasik src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] printers: Allow printer_get_ppd_async() to get PPD from remote host
- Date: Tue, 4 Sep 2012 12:11:34 +0000 (UTC)
commit 6f8b9e88254cb01879ff4a9891b123eb8270b488
Author: Marek Kasik <mkasik redhat com>
Date: Mon Sep 3 20:33:21 2012 +0200
printers: Allow printer_get_ppd_async() to get PPD from remote host
Adds host_name and port parameters to printer_get_ppd_async(). If host_name
is NULL then it gets the PPD from local CUPS server. (#683229)
panels/printers/pp-options-dialog.c | 2 ++
panels/printers/pp-ppd-option-widget.c | 2 ++
panels/printers/pp-utils.c | 23 ++++++++++++++++++++++-
panels/printers/pp-utils.h | 2 ++
4 files changed, 28 insertions(+), 1 deletions(-)
---
diff --git a/panels/printers/pp-options-dialog.c b/panels/printers/pp-options-dialog.c
index ea9c8af..269b5b4 100644
--- a/panels/printers/pp-options-dialog.c
+++ b/panels/printers/pp-options-dialog.c
@@ -797,6 +797,8 @@ populate_options (PpOptionsDialog *dialog)
gtk_widget_show (widget);
printer_get_ppd_async (dialog->printer_name,
+ NULL,
+ 0,
printer_get_ppd_cb,
dialog);
diff --git a/panels/printers/pp-ppd-option-widget.c b/panels/printers/pp-ppd-option-widget.c
index 22cb301..bca1f8b 100644
--- a/panels/printers/pp-ppd-option-widget.c
+++ b/panels/printers/pp-ppd-option-widget.c
@@ -619,6 +619,8 @@ update_widget (PpPPDOptionWidget *widget)
widget);
printer_get_ppd_async (priv->printer_name,
+ NULL,
+ 0,
printer_get_ppd_cb,
widget);
}
diff --git a/panels/printers/pp-utils.c b/panels/printers/pp-utils.c
index e43e4a2..9d40a0a 100644
--- a/panels/printers/pp-utils.c
+++ b/panels/printers/pp-utils.c
@@ -4305,6 +4305,8 @@ get_standard_manufacturers_name (gchar *name)
typedef struct
{
gchar *printer_name;
+ gchar *host_name;
+ gint port;
gchar *result;
PGPCallback callback;
gpointer user_data;
@@ -4330,6 +4332,7 @@ printer_get_ppd_data_free (gpointer user_data)
g_main_context_unref (data->context);
g_free (data->result);
g_free (data->printer_name);
+ g_free (data->host_name);
g_free (data);
}
@@ -4353,7 +4356,21 @@ printer_get_ppd_func (gpointer user_data)
{
PGPData *data = (PGPData *) user_data;
- data->result = g_strdup (cupsGetPPD (data->printer_name));
+ if (data->host_name)
+ {
+ http_t *http;
+
+ http = httpConnect (data->host_name, data->port);
+ if (http)
+ {
+ data->result = g_strdup (cupsGetPPD2 (http, data->printer_name));
+ httpClose (http);
+ }
+ }
+ else
+ {
+ data->result = g_strdup (cupsGetPPD (data->printer_name));
+ }
printer_get_ppd_cb (data);
@@ -4362,6 +4379,8 @@ printer_get_ppd_func (gpointer user_data)
void
printer_get_ppd_async (const gchar *printer_name,
+ const gchar *host_name,
+ gint port,
PGPCallback callback,
gpointer user_data)
{
@@ -4371,6 +4390,8 @@ printer_get_ppd_async (const gchar *printer_name,
data = g_new0 (PGPData, 1);
data->printer_name = g_strdup (printer_name);
+ data->host_name = g_strdup (host_name);
+ data->port = port;
data->callback = callback;
data->user_data = user_data;
data->context = g_main_context_ref_thread_default ();
diff --git a/panels/printers/pp-utils.h b/panels/printers/pp-utils.h
index 5343e0e..f8b763d 100644
--- a/panels/printers/pp-utils.h
+++ b/panels/printers/pp-utils.h
@@ -227,6 +227,8 @@ typedef void (*PGPCallback) (const gchar *ppd_filename,
gpointer user_data);
void printer_get_ppd_async (const gchar *printer_name,
+ const gchar *host_name,
+ gint port,
PGPCallback callback,
gpointer user_data);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]