方法
GtkPrintOperationrun
声明 [src]
GtkPrintOperationResult
gtk_print_operation_run (
GtkPrintOperation* op,
GtkPrintOperationAction action,
GtkWindow* parent,
GError** error
)
描述 [src]
运行打印操作。
通常,此函数不会返回,直到所有页面的渲染完成。您可以通过连接到 op
上的 GtkPrintOperation::status-changed
信号来获取有关打印操作进度的信息。
此外,它可能使用递归的主循环来显示打印对话框。
如果设置了 [Gtk.PrintOperation:allow-async] 属性,并且平台支持,则操作将以异步方式运行。当操作完成时(即当对话框被取消,或者打印成功或失败时),将通过 GtkPrintOperation::done
信号发出操作结果。
if (settings != NULL)
gtk_print_operation_set_print_settings (print, settings);
if (page_setup != NULL)
gtk_print_operation_set_default_page_setup (print, page_setup);
g_signal_connect (print, "begin-print",
G_CALLBACK (begin_print), &data);
g_signal_connect (print, "draw-page",
G_CALLBACK (draw_page), &data);
res = gtk_print_operation_run (print,
GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
parent,
&error);
if (res == GTK_PRINT_OPERATION_RESULT_ERROR)
{
error_dialog = gtk_message_dialog_new (GTK_WINDOW (parent),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
"Error printing file:\n%s",
error->message);
g_signal_connect (error_dialog, "response",
G_CALLBACK (gtk_window_destroy), NULL);
gtk_window_present (GTK_WINDOW (error_dialog));
g_error_free (error);
}
else 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));
}
请注意,只能对给定的 GtkPrintOperation
调用一次 gtk_print_operation_run()
。
参数
返回值
打印操作的结果。返回值为 GTK_PRINT_OPERATION_RESULT_APPLY
表示打印成功完成。在这种情况下,获取使用的打印设置并使用 gtk_print_operation_get_print_settings()
保存它们,以便在下一次打印操作中重复使用是个好主意。值为 GTK_PRINT_OPERATION_RESULT_IN_PROGRESS
表示操作正在异步运行,操作完成后将发出 GtkPrintOperation::done
信号。