]> Pileus Git - ~andy/gtk/blobdiff - modules/printbackends/test/gtkprintbackendtest.c
Change FSF Address
[~andy/gtk] / modules / printbackends / test / gtkprintbackendtest.c
index 1b9aa8014eae9e6366b13b1c9d1d0d904db8d8fa..b51fedf1528a067eb36eb3a21f099a79395d117a 100644 (file)
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <config.h>
+#include "config.h"
 
 #include <unistd.h>
 #include <sys/types.h>
 
 #include <glib/gi18n-lib.h>
 
-#include "gtkprintoperation.h"
+#include <gtk/gtkprintbackend.h>
+#include <gtk/gtkunixprint.h>
+#include <gtk/gtkprinter-private.h>
 
-#include "gtkprintbackend.h"
 #include "gtkprintbackendtest.h"
 
-#include "gtkprinter.h"
-#include "gtkprinter-private.h"
 
 typedef struct _GtkPrintBackendTestClass GtkPrintBackendTestClass;
 
@@ -108,7 +105,7 @@ static void                 test_printer_request_details           (GtkPrinter
 static void
 gtk_print_backend_test_register_type (GTypeModule *module)
 {
-  static const GTypeInfo print_backend_test_info =
+  const GTypeInfo print_backend_test_info =
   {
     sizeof (GtkPrintBackendTestClass),
     NULL,              /* base_init */
@@ -238,11 +235,13 @@ output_test_from_settings (GtkPrintSettings *settings,
 
       if (locale_name != NULL)
         {
-          path = g_build_filename (g_get_current_dir (), locale_name, NULL);
+         gchar *current_dir = g_get_current_dir ();
+          path = g_build_filename (current_dir, locale_name, NULL);
           g_free (locale_name);
 
           uri = g_filename_to_uri (path, NULL, NULL);
           g_free (path);
+         g_free (current_dir);
        }
     }
 
@@ -304,8 +303,9 @@ test_printer_create_cairo_surface (GtkPrinter       *printer,
   else
     surface = cairo_pdf_surface_create_for_stream (_cairo_write, cache_io, width, height);
 
-  /* TODO: DPI from settings object? */
-  cairo_surface_set_fallback_resolution (surface, 300, 300);
+  cairo_surface_set_fallback_resolution (surface,
+                                         2.0 * gtk_print_settings_get_printer_lpi (settings),
+                                         2.0 * gtk_print_settings_get_printer_lpi (settings));
 
   return surface;
 }
@@ -458,19 +458,22 @@ gtk_print_backend_test_init (GtkPrintBackendTest *backend)
   int i;
 
   /* make 100 of these printers */
-  for (i=0; i<100; i++)
+  for (i = 0; i < 100; i++)
     {
       char *name;
       name = g_strdup_printf ("%s %i", _("Print to Test Printer"), i);
       printer = g_object_new (GTK_TYPE_PRINTER,
                              "name", name,
                              "backend", backend,
                              "is-virtual", FALSE, /* treat printer like a real one*/
                              NULL); 
-      g_free(name);
+      g_free (name);
+
+      g_message ("TEST Backend: Adding printer %d\n", i);
 
       gtk_printer_set_has_details (printer, FALSE);
-      gtk_printer_set_icon_name (printer, "gtk-delete"); /* use a delete icon just for fun */
+      gtk_printer_set_icon_name (printer, "edit-delete"); /* use a delete icon just for fun */
       gtk_printer_set_is_active (printer, TRUE);
 
       gtk_print_backend_add_printer (GTK_PRINT_BACKEND (backend), printer);
@@ -489,13 +492,7 @@ test_printer_get_options (GtkPrinter           *printer,
   GtkPrinterOptionSet *set;
   GtkPrinterOption *option;
   const gchar *n_up[] = { "1" };
-  const gchar *format_names[N_FORMATS] = { N_("PDF"), N_("Postscript") };
-  const gchar *supported_formats[N_FORMATS];
-  gchar *display_format_names[N_FORMATS];
-  gint n_formats = 0;
   OutputFormat format;
-  gchar *uri;
-  gint current_format = 0;
 
   format = format_from_settings (settings);
 
@@ -526,35 +523,37 @@ test_printer_prepare_for_print (GtkPrinter       *printer,
 {
   gdouble scale;
 
-  print_job->print_pages = gtk_print_settings_get_print_pages (settings);
-  print_job->page_ranges = NULL;
-  print_job->num_page_ranges = 0;
-  
-  if (print_job->print_pages == GTK_PRINT_PAGES_RANGES)
-    print_job->page_ranges =
-      gtk_print_settings_get_page_ranges (settings,
-                                         &print_job->num_page_ranges);
+  gtk_print_job_set_pages (print_job, gtk_print_settings_get_print_pages (settings));
+  gtk_print_job_set_page_ranges (print_job, NULL, 0);
   
-  print_job->collate = gtk_print_settings_get_collate (settings);
-  print_job->reverse = gtk_print_settings_get_reverse (settings);
-  print_job->num_copies = gtk_print_settings_get_n_copies (settings);
+  if (gtk_print_job_get_pages (print_job) == GTK_PRINT_PAGES_RANGES)
+    {
+      GtkPageRange *page_ranges;
+      gint num_page_ranges;
+      page_ranges = gtk_print_settings_get_page_ranges (settings, &num_page_ranges);
+      gtk_print_job_set_page_ranges (print_job, page_ranges, num_page_ranges);
+    }
+
+  gtk_print_job_set_collate (print_job, gtk_print_settings_get_collate (settings));
+  gtk_print_job_set_reverse (print_job, gtk_print_settings_get_reverse (settings));
+  gtk_print_job_set_num_copies (print_job, gtk_print_settings_get_n_copies (settings));
 
   scale = gtk_print_settings_get_scale (settings);
   if (scale != 100.0)
-    print_job->scale = scale/100.0;
+    gtk_print_job_set_scale (print_job, scale/100.0);
 
-  print_job->page_set = gtk_print_settings_get_page_set (settings);
-  print_job->rotate_to_orientation = TRUE;
+  gtk_print_job_set_page_set (print_job, gtk_print_settings_get_page_set (settings));
+  gtk_print_job_set_rotate (print_job, TRUE);
 }
 
 static gboolean
-test_printer_details_aquired_cb (GtkPrinter *printer)
+test_printer_details_acquired_cb (GtkPrinter *printer)
 {
   gboolean success;
   gint weight;
 
-  /* weight twords success */
-  weight = g_random_int_range(0, 100);
+  /* weight towards success */
+  weight = g_random_int_range (0, 100);
 
   success = FALSE;
   if (weight < 75)
@@ -564,7 +563,7 @@ test_printer_details_aquired_cb (GtkPrinter *printer)
   gtk_printer_set_has_details (printer, success);
   g_signal_emit_by_name (printer, "details-acquired", success);
 
-  return FALSE;
+  return G_SOURCE_REMOVE;
 }
 
 static void
@@ -573,14 +572,14 @@ test_printer_request_details (GtkPrinter *printer)
   gint weight;
   gint time;
   /* set the timer to succeed or fail at a random time interval */
-  /* weight twords the shorter end */
-  weight = g_random_int_range(0, 100);
+  /* weight towards the shorter end */
+  weight = g_random_int_range (0, 100);
   if (weight < 50)
-    time = g_random_int_range(0, 2);
+    time = g_random_int_range (0, 2);
   else if (weight < 75)
-    time = g_random_int_range(1, 5);
+    time = g_random_int_range (1, 5);
   else
-    time = g_random_int_range(1, 10);
+    time = g_random_int_range (1, 10);
 
   g_message ("Gathering details in %i seconds", time);
 
@@ -589,10 +588,7 @@ test_printer_request_details (GtkPrinter *printer)
   else
     time *= 1000;
 
-  g_timeout_add(time, 
-                (GSourceFunc) test_printer_details_aquired_cb,
-                printer
-               );
+  g_timeout_add (time, (GSourceFunc) test_printer_details_acquired_cb, printer);
 }