[gnome-control-center] printers: Allow printer_get_ppd_async() to get PPD from remote host



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]