类
GtkPrintOperation
描述 [src]
class Gtk.PrintOperation : GObject.Object
implements Gtk.PrintOperationPreview {
/* No available fields */
}
GtkPrintOperation
是高级便携式打印 API。
它与其他 GTK 对话框(例如 GtkFileChooser
)看起来有点不同,因为某些平台没有公开足够的底层设施以实现良好的打印对话。在这些平台上,GtkPrintOperation
使用本机打印对话。对于不提供本机打印对话的平台,GTK 使用其自己,请参阅 GtkPrintUnixDialog
。
使用高级打印 API 的典型方式是,当用户选择打印时,使用 gtk_print_operation_new()
创建 GtkPrintOperation
对象。然后,在它上面设置一些属性,例如页面大小、先前打印操作中的任何 GtkPrintSettings
、页面数、当前页,等等。
然后,通过调用 gtk_print_operation_run()
启动打印操作。它将显示一个对话,让用户选择打印机和选项。当用户完成对话后,将在 GtkPrintOperation
上发出各种信号,主要信号是 GtkPrintOperation::draw-page
,你应该处理它并在所提供的 GtkPrintContext
上使用 Cairo 渲染页面。
高级打印 API
static GtkPrintSettings *settings = NULL;
static void
do_print (void)
{
GtkPrintOperation *print;
GtkPrintOperationResult res;
print = gtk_print_operation_new ();
if (settings != NULL)
gtk_print_operation_set_print_settings (print, settings);
g_signal_connect (print, "begin_print", G_CALLBACK (begin_print), NULL);
g_signal_connect (print, "draw_page", G_CALLBACK (draw_page), NULL);
res = gtk_print_operation_run (print, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
GTK_WINDOW (main_window), NULL);
if (res == GTK_PRINT_OPERATION_RESULT_APPLY)
{
if (settings != NULL)
g_object_unref (settings);
settings = g_object_ref (gtk_print_operation_get_print_settings (print));
}
g_object_unref (print);
}
默认情况下,GtkPrintOperation
使用外部应用程序进行打印预览。要实现自定义打印预览,应用程序必须连接到 preview 信号。当实现打印预览时,函数 gtk_print_operation_preview_render_page()
、gtk_print_operation_preview_end_preview()
和 gtk_print_operation_preview_is_selected()
很有用。
实例方法
gtk_print_operation_set_defer_drawing
设置 GtkPrintOperation
等待从应用程序调用 [[email protected]_page_finish .
gtk_print_operation_set_use_full_page
如果 full_page
为 TRUE
,从 GtkPrintContext
获取的 cairo 上下文的转换会将原点放在页面的左上角。
从 GtkPrintOperationPreview 继承的方法(3)
gtk_print_operation_preview_end_preview
结束预览。
gtk_print_operation_preview_is_selected
返回给定页面是否包含在已选择的要打印的页面集中。
gtk_print_operation_preview_render_page
将页面渲染到预览。
信号
Gtk.PrintOperation::custom-widget-apply
如果您在 ::create-custom-widget 处理程序中添加了自定义小组件,则在 ::begin-print 之前发出。
从 GObject 继承的信号 (1)
GObject::notify
当某个属性的值通过 g_object_set_property()、g_object_set() 等设置时,将在对象上发出 notify 信号。
从 GtkPrintOperationPreview 继承的信号 (2)
GtkPrintOperationPreview::got-page-size
呈现到预览的每一页发出一次。
GtkPrintOperationPreview::ready
在呈现第一页之前,每个预览操作会发出一次 ::ready 信号。
类结构
struct GtkPrintOperationClass {
GObjectClass parent_class;
void (* done) (
GtkPrintOperation* operation,
GtkPrintOperationResult result
);
void (* begin_print) (
GtkPrintOperation* operation,
GtkPrintContext* context
);
gboolean (* paginate) (
GtkPrintOperation* operation,
GtkPrintContext* context
);
void (* request_page_setup) (
GtkPrintOperation* operation,
GtkPrintContext* context,
int page_nr,
GtkPageSetup* setup
);
void (* draw_page) (
GtkPrintOperation* operation,
GtkPrintContext* context,
int page_nr
);
void (* end_print) (
GtkPrintOperation* operation,
GtkPrintContext* context
);
void (* status_changed) (
GtkPrintOperation* operation
);
GtkWidget* (* create_custom_widget) (
GtkPrintOperation* operation
);
void (* custom_widget_apply) (
GtkPrintOperation* operation,
GtkWidget* widget
);
gboolean (* preview) (
GtkPrintOperation* operation,
GtkPrintOperationPreview* preview,
GtkPrintContext* context,
GtkWindow* parent
);
void (* update_custom_widget) (
GtkPrintOperation* operation,
GtkWidget* widget,
GtkPageSetup* setup,
GtkPrintSettings* settings
);
}
无可用描述。
类成员
parent_class: GObjectClass
父类。
done: void (* done) ( GtkPrintOperation* operation, GtkPrintOperationResult result )
当打印操作运行完成执行打印所需的所有操作时发出的信号。
begin_print: void (* begin_print) ( GtkPrintOperation* operation, GtkPrintContext* context )
在用户完成更改对话框中的打印设置(在实际呈现开始之前)后发出。
paginate: gboolean (* paginate) ( GtkPrintOperation* operation, GtkPrintContext* context )
在“begin-print”信号之后发出(但在实际呈现开始之前)。
request_page_setup: void (* request_page_setup) ( GtkPrintOperation* operation, GtkPrintContext* context, int page_nr, GtkPageSetup* setup )
针对每个打印页面发出一次,以便应用程序修改页面设置。
draw_page: void (* draw_page) ( GtkPrintOperation* operation, GtkPrintContext* context, int page_nr )
针对每个打印页面发出的信号。
end_print: void (* end_print) ( GtkPrintOperation* operation, GtkPrintContext* context )
在所有页面都已呈现后发出的信号。
status_changed: void (* status_changed) ( GtkPrintOperation* operation )
在打印操作的不同阶段之间发出。
create_custom_widget: GtkWidget* (* create_custom_widget) ( GtkPrintOperation* operation )
在显示打印对话框时发出的信号。
custom_widget_apply: void (* custom_widget_apply) ( GtkPrintOperation* operation, GtkWidget* widget )
如果您在“create-custom-widget”处理程序中添加了自定义小部件,则在“begin-print”之前发出的信号。
preview: gboolean (* preview) ( GtkPrintOperation* operation, GtkPrintOperationPreview* preview, GtkPrintContext* context, GtkWindow* parent )
在从本机对话框请求预览时发出的信号。
update_custom_widget: void (* update_custom_widget) ( GtkPrintOperation* operation, GtkWidget* widget, GtkPageSetup* setup, GtkPrintSettings* settings )
选定的打印机更改后发出。
虚拟方法
Gtk.PrintOperationClass.custom_widget_apply
如果您在“create-custom-widget”处理程序中添加了自定义小部件,则在“begin-print”之前发出的信号。