]> Pileus Git - ~andy/gtk/commitdiff
Add a GtkPrintOperation::show-preview property
authorMatthias Clasen <matthiasc@src.gnome.org>
Sat, 3 Jun 2006 03:30:21 +0000 (03:30 +0000)
committerMatthias Clasen <matthiasc@src.gnome.org>
Sat, 3 Jun 2006 03:30:21 +0000 (03:30 +0000)
ChangeLog
ChangeLog.pre-2-10
gtk/gtkprintoperation-private.h
gtk/gtkprintoperation-unix.c
gtk/gtkprintoperation.c
gtk/gtkprintoperation.h

index 899b936a4c3613a70b5c8cdd344b027e6a85b272..89385a848f8dd218e71f62fc12912e0ff88b2b5c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,10 @@
 2006-06-02  Matthias Clasen  <mclasen@redhat.com>
+       
+       * gtk/gtkprintoperation-private.h:
+       * gtk/gtkprintoperation.h:
+       * gtk/gtkprintoperation.c: Add a show-preview property. 
+
+       * gtk/gtkprintoperation-unix.c: Implement it here.
 
        * gtk/gtkprintoperation-unix.c: Cleanups
 
index 899b936a4c3613a70b5c8cdd344b027e6a85b272..89385a848f8dd218e71f62fc12912e0ff88b2b5c 100644 (file)
@@ -1,4 +1,10 @@
 2006-06-02  Matthias Clasen  <mclasen@redhat.com>
+       
+       * gtk/gtkprintoperation-private.h:
+       * gtk/gtkprintoperation.h:
+       * gtk/gtkprintoperation.c: Add a show-preview property. 
+
+       * gtk/gtkprintoperation-unix.c: Implement it here.
 
        * gtk/gtkprintoperation-unix.c: Cleanups
 
index 7edfc0cdce0c7077225d01c4f033fc7c97257821..dbc25bfa56eedd1f431d40109b85c63790d2ad9b 100644 (file)
@@ -38,6 +38,7 @@ struct _GtkPrintOperationPrivate
   gchar *pdf_target;
   guint use_full_page      : 1;
   guint show_dialog        : 1;
+  guint show_preview       : 1;
   guint track_print_status : 1;
   guint show_progress      : 1;
   guint cancelled          : 1;
index 2eb0799adb163729c749a585fad9e077e574ae0b..2f66fa1ca8e4cade8cd6cda8d93e5a9b03dffdfc 100644 (file)
@@ -504,7 +504,10 @@ found_printer (GtkPrinter        *printer,
 
   if (printer != NULL) 
     {
-      rdata->result = GTK_PRINT_OPERATION_RESULT_APPLY;
+      if (priv->show_preview)
+        rdata->result = GTK_PRINT_OPERATION_RESULT_PREVIEW;
+      else
+        rdata->result = GTK_PRINT_OPERATION_RESULT_APPLY;
 
       rdata->do_print = TRUE;
 
@@ -835,8 +838,11 @@ printer_added_cb (GtkPrintBackend *backend,
                   GtkPrinter      *printer, 
                  PrinterFinder   *finder)
 {
-  if (gtk_printer_is_virtual (printer) ||
-      finder->found_printer)
+  if (finder->found_printer)
+    return;
+
+  /* FIXME this skips "Print to PDF" - is this intentional ? */
+  if (gtk_printer_is_virtual (printer))
     return;
 
   if (finder->printer_name != NULL &&
index d4f8fa25a340bd61ea8ff6cef4073b52d8691e41..56810f67ce4bcbbc2e96bc5c9e0b15e2dbb69592 100644 (file)
@@ -60,6 +60,7 @@ enum {
   PROP_TRACK_PRINT_STATUS,
   PROP_UNIT,
   PROP_SHOW_DIALOG,
+  PROP_SHOW_PREVIEW,
   PROP_SHOW_PROGRESS,
   PROP_PDF_TARGET,
   PROP_STATUS,
@@ -146,6 +147,7 @@ gtk_print_operation_init (GtkPrintOperation *operation)
   priv->current_page = -1;
   priv->use_full_page = FALSE;
   priv->show_dialog = TRUE;
+  priv->show_preview = FALSE;
   priv->show_progress = FALSE;
   priv->pdf_target = NULL;
   priv->track_print_status = FALSE;
@@ -283,6 +285,9 @@ gtk_print_operation_set_property (GObject      *object,
     case PROP_SHOW_DIALOG:
       gtk_print_operation_set_show_dialog (op, g_value_get_boolean (value));
       break;
+    case PROP_SHOW_PREVIEW:
+      gtk_print_operation_set_show_preview (op, g_value_get_boolean (value));
+      break;
     case PROP_SHOW_PROGRESS:
       gtk_print_operation_set_show_progress (op, g_value_get_boolean (value));
       break;
@@ -336,6 +341,9 @@ gtk_print_operation_get_property (GObject    *object,
     case PROP_SHOW_DIALOG:
       g_value_set_boolean (value, priv->show_dialog);
       break;
+    case PROP_SHOW_PREVIEW:
+      g_value_set_boolean (value, priv->show_preview);
+      break;
     case PROP_SHOW_PROGRESS:
       g_value_set_boolean (value, priv->show_progress);
       break;
@@ -988,8 +996,23 @@ gtk_print_operation_class_init (GtkPrintOperationClass *class)
                                                         P_("TRUE if gtk_print_operation_run() should show the print dialog."),
                                                         TRUE,
                                                         GTK_PARAM_READWRITE));
-  
 
+  /**
+   * GtkPrintOperation:show-preview:
+   *
+   * Determines whether calling gtk_print_operation_run() will present
+   * the print preview to the user.
+   *
+   * Since: 2.10
+   */
+  g_object_class_install_property (gobject_class,
+                                  PROP_SHOW_PREVIEW,
+                                  g_param_spec_boolean ("show-preview",
+                                                        P_("Show Preview"),
+                                                        P_("TRUE if gtk_print_operation_run() should show the print preview."),
+                                                        TRUE,
+                                                        GTK_PARAM_READWRITE));
+  
   /**
    * GtkPrintOperation:show-progress:
    *
@@ -1573,6 +1596,35 @@ gtk_print_operation_set_show_dialog (GtkPrintOperation *op,
     }
 }
 
+/**
+ * gtk_print_operation_set_show_preview:
+ * @op: a #GtkPrintOperation
+ * @show_preview: %TRUE to show the print preview
+ * 
+ * Sets whether calling gtk_print_operation_run() will present
+ * the print preview to the user.
+ *
+ * Since: 2.10
+ */
+void
+gtk_print_operation_set_show_preview (GtkPrintOperation *op,
+                                     gboolean           show_preview)
+{
+  GtkPrintOperationPrivate *priv;
+
+  g_return_if_fail (GTK_IS_PRINT_OPERATION (op));
+
+  priv = op->priv;
+
+  show_preview = show_preview != FALSE;
+
+  if (priv->show_preview != show_preview)
+    {
+      priv->show_preview = show_preview;
+
+      g_object_notify (G_OBJECT (op), "show-preview");
+    }
+}
 
 /**
  * gtk_print_operation_set_show_progress:
index 4b8443c0645bcf9d3440b6558561d76ffa96f35a..09ae769cb4b964f7d929627cfb7063bd3afa5080 100644 (file)
@@ -140,6 +140,8 @@ void                    gtk_print_operation_set_unit               (GtkPrintOper
                                                                    GtkUnit             unit);
 void                    gtk_print_operation_set_show_dialog        (GtkPrintOperation  *op,
                                                                    gboolean            show_dialog);
+void                    gtk_print_operation_set_show_preview       (GtkPrintOperation  *op,
+                                                                   gboolean            show_preview);
 void                    gtk_print_operation_set_pdf_target         (GtkPrintOperation  *op,
                                                                    const gchar        *filename);
 void                    gtk_print_operation_set_track_print_status (GtkPrintOperation  *op,
@@ -151,6 +153,8 @@ void                    gtk_print_operation_set_custom_tab_label   (GtkPrintOper
 GtkPrintOperationResult gtk_print_operation_run                    (GtkPrintOperation  *op,
                                                                    GtkWindow          *parent,
                                                                    GError            **error);
+void                    gtk_print_operation_run_preview            (GtkPrintOperation  *op,
+                                                                    GtkWindow          *parent);
 GtkPrintStatus          gtk_print_operation_get_status             (GtkPrintOperation  *op);
 G_CONST_RETURN gchar *  gtk_print_operation_get_status_string      (GtkPrintOperation  *op);
 gboolean                gtk_print_operation_is_finished            (GtkPrintOperation  *op);