X-Git-Url: http://pileus.org/git/?a=blobdiff_plain;f=gtk%2Fgtkprintoperation-private.h;h=6a7b509978e6e0b55ad8cfa453c33de27a15ef44;hb=d97861bd8b338c3d25d7ffb5496edee9eee9bfbb;hp=5109e9cce5bcd3019011745fef025f66719da372;hpb=27f746fbd0e56872a8d3b4bfff2588ad0b7cd7c4;p=~andy%2Fgtk diff --git a/gtk/gtkprintoperation-private.h b/gtk/gtkprintoperation-private.h index 5109e9cce..6a7b50997 100644 --- a/gtk/gtkprintoperation-private.h +++ b/gtk/gtkprintoperation-private.h @@ -13,9 +13,7 @@ * 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 . */ #ifndef __GTK_PRINT_OPERATION_PRIVATE_H__ @@ -25,54 +23,113 @@ G_BEGIN_DECLS +/* Page drawing states */ +typedef enum +{ + GTK_PAGE_DRAWING_STATE_READY, + GTK_PAGE_DRAWING_STATE_DRAWING, + GTK_PAGE_DRAWING_STATE_DEFERRED_DRAWING +} GtkPageDrawingState; + struct _GtkPrintOperationPrivate { + GtkPrintOperationAction action; GtkPrintStatus status; - char *status_string; + GError *error; + gchar *status_string; GtkPageSetup *default_page_setup; GtkPrintSettings *print_settings; - char *job_name; - int nr_of_pages; - int current_page; - gboolean use_full_page; + gchar *job_name; + gint nr_of_pages; + gint nr_of_pages_to_print; + gint page_position; + gint current_page; GtkUnit unit; - gboolean show_dialog; - char *pdf_target; + gchar *export_filename; + guint use_full_page : 1; + guint track_print_status : 1; + guint show_progress : 1; + guint cancelled : 1; + guint allow_async : 1; + guint is_sync : 1; + guint support_selection : 1; + guint has_selection : 1; + guint embed_page_setup : 1; + + GtkPageDrawingState page_drawing_state; - /* Data for the print job: */ - cairo_surface_t *surface; - double dpi_x, dpi_y; + guint print_pages_idle_id; + guint show_progress_timeout_id; + GtkPrintContext *print_context; + GtkPrintPages print_pages; GtkPageRange *page_ranges; - int num_page_ranges; + gint num_page_ranges; - int manual_num_copies; - gboolean manual_collation; - gboolean manual_reverse; - gboolean manual_orientation; + gint manual_num_copies; + guint manual_collation : 1; + guint manual_reverse : 1; + guint manual_orientation : 1; double manual_scale; GtkPageSet manual_page_set; - - void *platform_data; + guint manual_number_up; + GtkNumberUpLayout manual_number_up_layout; - void (*start_page) (GtkPrintOperation *operation, - GtkPrintContext *print_context, - GtkPageSetup *page_setup); - void (*end_page) (GtkPrintOperation *operation, - GtkPrintContext *print_context); - void (*end_run) (GtkPrintOperation *operation); + GtkWidget *custom_widget; + gchar *custom_tab_label; + + gpointer platform_data; GDestroyNotify free_platform_data; + + GMainLoop *rloop; /* recursive mainloop */ + + void (*start_page) (GtkPrintOperation *operation, + GtkPrintContext *print_context, + GtkPageSetup *page_setup); + void (*end_page) (GtkPrintOperation *operation, + GtkPrintContext *print_context); + void (*end_run) (GtkPrintOperation *operation, + gboolean wait, + gboolean cancelled); }; -GtkPrintOperationResult _gtk_print_operation_platform_backend_run_dialog (GtkPrintOperation *operation, - GtkWindow *parent, - gboolean *do_print, - GError **error); + +typedef void (* GtkPrintOperationPrintFunc) (GtkPrintOperation *op, + GtkWindow *parent, + gboolean do_print, + GtkPrintOperationResult result); + +GtkPrintOperationResult _gtk_print_operation_platform_backend_run_dialog (GtkPrintOperation *operation, + gboolean show_dialog, + GtkWindow *parent, + gboolean *do_print); +void _gtk_print_operation_platform_backend_run_dialog_async (GtkPrintOperation *op, + gboolean show_dialog, + GtkWindow *parent, + GtkPrintOperationPrintFunc print_cb); +void _gtk_print_operation_platform_backend_launch_preview (GtkPrintOperation *op, + cairo_surface_t *surface, + GtkWindow *parent, + const char *filename); +cairo_surface_t * _gtk_print_operation_platform_backend_create_preview_surface (GtkPrintOperation *op, + GtkPageSetup *page_setup, + gdouble *dpi_x, + gdouble *dpi_y, + gchar **target); +void _gtk_print_operation_platform_backend_resize_preview_surface (GtkPrintOperation *op, + GtkPageSetup *page_setup, + cairo_surface_t *surface); +void _gtk_print_operation_platform_backend_preview_start_page (GtkPrintOperation *op, + cairo_surface_t *surface, + cairo_t *cr); +void _gtk_print_operation_platform_backend_preview_end_page (GtkPrintOperation *op, + cairo_surface_t *surface, + cairo_t *cr); void _gtk_print_operation_set_status (GtkPrintOperation *op, - GtkPrintStatus status, - const char *string); + GtkPrintStatus status, + const gchar *string); /* GtkPrintContext private functions: */ @@ -81,6 +138,12 @@ void _gtk_print_context_set_page_setup (GtkPrintCon GtkPageSetup *page_setup); void _gtk_print_context_translate_into_margin (GtkPrintContext *context); void _gtk_print_context_rotate_according_to_orientation (GtkPrintContext *context); +void _gtk_print_context_reverse_according_to_orientation (GtkPrintContext *context); +void _gtk_print_context_set_hard_margins (GtkPrintContext *context, + gdouble top, + gdouble bottom, + gdouble left, + gdouble right); G_END_DECLS