1 /*
2  * Copyright (c) 2006 by the gtk2-perl team (see the file AUTHORS)
3  *
4  * Licensed under the LGPL, see LICENSE file for more information.
5  *
6  * $Id$
7  */
8 
9 #include "gtk2perl.h"
10 
11 static GPerlCallback *
gtk2perl_page_setup_done_func_create(SV * func,SV * data)12 gtk2perl_page_setup_done_func_create (SV * func, SV * data)
13 {
14 	GType param_types [1];
15 	param_types[0] = GTK_TYPE_PAGE_SETUP;
16 	return gperl_callback_new (func, data, G_N_ELEMENTS (param_types),
17 				   param_types, 0);
18 }
19 
20 static void
gtk2perl_page_setup_done_func(GtkPageSetup * page_setup,gpointer data)21 gtk2perl_page_setup_done_func (GtkPageSetup *page_setup, gpointer data)
22 {
23 	gperl_callback_invoke ((GPerlCallback *) data, NULL, page_setup);
24 	/* The callback is always called exactly once, so free it now. */
25 	gperl_callback_destroy ((GPerlCallback *) data);
26 }
27 
28 MODULE = Gtk2::PrintOperation	PACKAGE = Gtk2::PrintOperation	PREFIX = gtk_print_operation_
29 
30 # GtkPrintOperation * gtk_print_operation_new (void);
31 GtkPrintOperation_noinc * gtk_print_operation_new (class)
32     C_ARGS:
33 	/* void */
34 
35 void gtk_print_operation_set_default_page_setup (GtkPrintOperation *op, GtkPageSetup_ornull *default_page_setup);
36 
37 GtkPageSetup_ornull * gtk_print_operation_get_default_page_setup (GtkPrintOperation *op);
38 
39 void gtk_print_operation_set_print_settings (GtkPrintOperation *op, GtkPrintSettings_ornull *print_settings);
40 
41 GtkPrintSettings_ornull * gtk_print_operation_get_print_settings (GtkPrintOperation *op);
42 
43 void gtk_print_operation_set_job_name (GtkPrintOperation *op, const gchar *job_name);
44 
45 void gtk_print_operation_set_n_pages (GtkPrintOperation *op, gint n_pages);
46 
47 void gtk_print_operation_set_current_page (GtkPrintOperation *op, gint current_page);
48 
49 void gtk_print_operation_set_use_full_page (GtkPrintOperation *op, gboolean full_page);
50 
51 void gtk_print_operation_set_unit (GtkPrintOperation *op, GtkUnit unit);
52 
53 void gtk_print_operation_set_export_filename (GtkPrintOperation *op, const gchar *filename);
54 
55 void gtk_print_operation_set_track_print_status (GtkPrintOperation *op, gboolean track_status);
56 
57 void gtk_print_operation_set_show_progress (GtkPrintOperation *op, gboolean show_progress);
58 
59 void gtk_print_operation_set_allow_async (GtkPrintOperation *op, gboolean allow_async);
60 
61 void gtk_print_operation_set_custom_tab_label (GtkPrintOperation *op, const gchar *label);
62 
63 =for apidoc __gerror__
64 =cut
65 # GtkPrintOperationResult gtk_print_operation_run (GtkPrintOperation *op, GtkPrintOperationAction action, GtkWindow *parent, GError **error);
66 GtkPrintOperationResult
67 gtk_print_operation_run (GtkPrintOperation *op, GtkPrintOperationAction action, GtkWindow_ornull *parent)
68     PREINIT:
69 	GError *error = NULL;
70     CODE:
71 	RETVAL = gtk_print_operation_run (op, action, parent, &error);
72 	if (error)
73 		gperl_croak_gerror (NULL, error);
74     OUTPUT:
75 	RETVAL
76 
77 # FIXME: Does it makes sense to wrap it like this?
78 # void gtk_print_operation_get_error (GtkPrintOperation *op, GError **error);
79 SV *
80 gtk_print_operation_get_error (GtkPrintOperation *op)
81     PREINIT:
82 	GError *error = NULL;
83     CODE:
84 	gtk_print_operation_get_error (op, &error);
85 	RETVAL = gperl_sv_from_gerror (error);
86     OUTPUT:
87 	RETVAL
88 
89 GtkPrintStatus gtk_print_operation_get_status (GtkPrintOperation *op);
90 
91 const gchar * gtk_print_operation_get_status_string (GtkPrintOperation *op);
92 
93 gboolean gtk_print_operation_is_finished (GtkPrintOperation *op);
94 
95 void gtk_print_operation_cancel (GtkPrintOperation *op);
96 
97 #if GTK_CHECK_VERSION (2, 16, 0)
98 
99 =for apidoc
100 
101 =for signature $op->draw_page_finish ()
102 
103 The method draw_page_finish() can only be called if the method
104 set_defer_drawing() has been called previously otherwise a segmentation fault
105 will occur. This means that the application will crash and even an eval will not
106 be able to recover from that error.
107 
108 =cut
109 void gtk_print_operation_draw_page_finish (GtkPrintOperation *op);
110 
111 
112 =for apidoc
113 
114 =for signature $op->set_defer_drawing ()
115 
116 The method set_defer_drawing() can only be called from the callback
117 C<'draw-page'>.
118 
119 =cut
120 void gtk_print_operation_set_defer_drawing (GtkPrintOperation *op);
121 
122 #endif /* 2.16 */
123 
124 #if GTK_CHECK_VERSION (2, 18, 0)
125 
126 void gtk_print_operation_set_embed_page_setup (GtkPrintOperation *op, gboolean embed);
127 
128 gboolean gtk_print_operation_get_embed_page_setup (GtkPrintOperation *op);
129 
130 void gtk_print_operation_set_support_selection (GtkPrintOperation *op, gboolean support_selection);
131 
132 gboolean gtk_print_operation_get_support_selection (GtkPrintOperation *op);
133 
134 void gtk_print_operation_set_has_selection (GtkPrintOperation *op, gboolean has_selection);
135 
136 gboolean gtk_print_operation_get_has_selection (GtkPrintOperation *op);
137 
138 gint gtk_print_operation_get_n_pages_to_print (GtkPrintOperation *op);
139 
140 #endif /* 2.18 */
141 
142 MODULE = Gtk2::PrintOperation	PACKAGE = Gtk2::Print	PREFIX = gtk_print_
143 
144 # GtkPageSetup * gtk_print_run_page_setup_dialog (GtkWindow *parent, GtkPageSetup *page_setup, GtkPrintSettings *settings);
145 GtkPageSetup_noinc *
146 gtk_print_run_page_setup_dialog (class, GtkWindow_ornull *parent, GtkPageSetup_ornull *page_setup, GtkPrintSettings *settings)
147     C_ARGS:
148 	parent, page_setup, settings
149 
150 # void gtk_print_run_page_setup_dialog_async (GtkWindow_ornull *parent, GtkPageSetup_ornull *page_setup, GtkPrintSettings *settings, GtkPageSetupDoneFunc done_cb, gpointer data);
151 void
152 gtk_print_run_page_setup_dialog_async (class, GtkWindow_ornull *parent, GtkPageSetup_ornull *page_setup, GtkPrintSettings *settings, SV *func, SV *data=NULL)
153     PREINIT:
154 	GPerlCallback *callback;
155     CODE:
156 	callback = gtk2perl_page_setup_done_func_create (func, data);
157 	gtk_print_run_page_setup_dialog_async (
158 		parent, page_setup, settings,
159 		gtk2perl_page_setup_done_func,
160 		callback);
161 	/* Since it's always called exactly once, the callback is destroyed
162 	 * directly in the marshaller. */
163