GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Implemented Interfaces | | Known Implementations | Properties | Signals |
GtkPrintOperationGtkPrintOperation Высший уровень Printing API |
#include <gtk/gtk.h>
GtkPrintOperation;
enum GtkPrintStatus;
enum GtkPrintOperationAction;
enum GtkPrintOperationResult;
enum GtkPrintError;
#define GTK_PRINT_ERROR
GtkPrintOperation* gtk_print_operation_new (void);
void gtk_print_operation_set_allow_async
(GtkPrintOperation *op,
gboolean allow_async);
void gtk_print_operation_get_error (GtkPrintOperation *op,
GError **error);
void gtk_print_operation_set_default_page_setup
(GtkPrintOperation *op,
GtkPageSetup *default_page_setup);
GtkPageSetup* gtk_print_operation_get_default_page_setup
(GtkPrintOperation *op);
void gtk_print_operation_set_print_settings
(GtkPrintOperation *op,
GtkPrintSettings *print_settings);
GtkPrintSettings* gtk_print_operation_get_print_settings
(GtkPrintOperation *op);
void gtk_print_operation_set_job_name
(GtkPrintOperation *op,
const gchar *job_name);
void gtk_print_operation_set_n_pages (GtkPrintOperation *op,
gint n_pages);
void gtk_print_operation_set_current_page
(GtkPrintOperation *op,
gint current_page);
void gtk_print_operation_set_use_full_page
(GtkPrintOperation *op,
gboolean full_page);
void gtk_print_operation_set_unit (GtkPrintOperation *op,
GtkUnit unit);
void gtk_print_operation_set_export_filename
(GtkPrintOperation *op,
const gchar *filename);
void gtk_print_operation_set_show_progress
(GtkPrintOperation *op,
gboolean show_progress);
void gtk_print_operation_set_track_print_status
(GtkPrintOperation *op,
gboolean track_status);
void gtk_print_operation_set_custom_tab_label
(GtkPrintOperation *op,
const gchar *label);
GtkPrintOperationResult gtk_print_operation_run
(GtkPrintOperation *op,
GtkPrintOperationAction action,
GtkWindow *parent,
GError **error);
void gtk_print_operation_cancel (GtkPrintOperation *op);
GtkPrintStatus gtk_print_operation_get_status
(GtkPrintOperation *op);
const gchar* gtk_print_operation_get_status_string
(GtkPrintOperation *op);
gboolean gtk_print_operation_is_finished (GtkPrintOperation *op);
void gtk_print_operation_get_error (GtkPrintOperation *op,
GError **error);
GtkPageSetup* gtk_print_run_page_setup_dialog
(GtkWindow *parent,
GtkPageSetup *page_setup,
GtkPrintSettings *settings);
void (*GtkPageSetupDoneFunc) (GtkPageSetup *page_setup,
gpointer data);
void gtk_print_run_page_setup_dialog_async
(GtkWindow *parent,
GtkPageSetup *page_setup,
GtkPrintSettings *settings,
GtkPageSetupDoneFunc done_cb,
gpointer data);
GtkPrintOperationPreview;
void gtk_print_operation_preview_end_preview
(GtkPrintOperationPreview *preview);
gboolean gtk_print_operation_preview_is_selected
(GtkPrintOperationPreview *preview,
gint page_nr);
void gtk_print_operation_preview_render_page
(GtkPrintOperationPreview *preview,
gint page_nr);
GObject
+----GtkPrintOperation
GInterface
+----GtkPrintOperationPreview
GtkPrintOperationPreview требует GObject.
GtkPrintOperation реализует GtkPrintOperationPreview.
GtkPrintOperationPreview реализован GtkPrintOperation.
"allow-async" gboolean : Read / Write
"current-page" gint : Read / Write
"custom-tab-label" gchararray : Read / Write
"default-page-setup" GtkPageSetup : Read / Write
"export-filename" gchararray : Read / Write
"job-name" gchararray : Read / Write
"n-pages" gint : Read / Write
"print-settings" GtkPrintSettings : Read / Write
"show-progress" gboolean : Read / Write
"status" GtkPrintStatus : Read
"status-string" gchararray : Read
"track-print-status" gboolean : Read / Write
"unit" GtkUnit : Read / Write
"use-full-page" gboolean : Read / Write
"begin-print"
void user_function (GtkPrintOperation *operation,
GtkPrintContext *context,
gpointer user_data) : Run last
"create-custom-widget"
GObject* user_function (GtkPrintOperation *operation,
gpointer user_data) : Run last
"custom-widget-apply"
void user_function (GtkPrintOperation *operation,
GtkWidget *widget,
gpointer user_data) : Run last
"done" void user_function (GtkPrintOperation *operation,
GtkPrintOperationResult result,
gpointer user_data) : Run last
"draw-page" void user_function (GtkPrintOperation *operation,
GtkPrintContext *context,
gint page_nr,
gpointer user_data) : Run last
"end-print" void user_function (GtkPrintOperation *operation,
GtkPrintContext *context,
gpointer user_data) : Run last
"paginate" gboolean user_function (GtkPrintOperation *operation,
GtkPrintContext *context,
gpointer user_data) : Run last
"preview" gboolean user_function (GtkPrintOperation *operation,
GtkPrintOperationPreview *preview,
GtkPrintContext *context,
GtkWindow *parent,
gpointer user_data) : Run last
"request-page-setup"
void user_function (GtkPrintOperation *operation,
GtkPrintContext *context,
gint page_nr,
GtkPageSetup *setup,
gpointer user_data) : Run last
"status-changed"
void user_function (GtkPrintOperation *operation,
gpointer user_data) : Run last
GtkPrintOperation это высший уровень, портируемого API печати. Он выглядит немного иначе чем другие диалоги GTK+, такие как GtkFileChooser, так как некоторые платформы не представляют достаточно инфраструктуры для реализации хороших диалогов печати. На таких платформах, GtkPrintOperation использует родные диалоги печати. На платформах которые не обеспечивают родные диалоги печати, GTK+ использует собственный, смотрите GtkPrintUnixDialog.
Обычный способ использования high-level
printing API это создание объекта GtkPrintOperation
с помощью gtk_print_operation_new()
когда пользователь выбирает печать.
Затем вы устанавливаете некоторые
свойства, например размер страницы,
любые GtkPrintSettings из
предварительных операций печати,
количество страниц, текущую страницу,
и т.д..
Потом вы вызываете операцию печати
используя gtk_print_operation_run()
.
Она покажет пользователю диалог, позволяя
выбрать принтер и опции. Когда пользователь
закончит, диалог издаст различные
сигналы GtkPrintOperation,
основным из которых является ::draw-page, вы
должны перехватить его и создать страницу
обеспечивая GtkPrintContext
используя Cairo.
Пример 1. The high-level printing 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 использует
внешние приложения для предварительного
просмотра печатаемой страницы. Для
настройки предварительного просмотра
печати приложение должно подключиться
к сигналу предварительного просмотра.
Функции gtk_print_operation_print_preview_render_page()
,
gtk_print_operation_preview_end_preview()
и gtk_print_operation_preview_is_selected()
полезны при реализации предварительного
просмотра.
Печать поддерживается начиная с версии GTK+ 2.10.
typedef struct _GtkPrintOperation GtkPrintOperation;
enum GtkPrintStatus
typedef enum { GTK_PRINT_STATUS_INITIAL, GTK_PRINT_STATUS_PREPARING, GTK_PRINT_STATUS_GENERATING_DATA, GTK_PRINT_STATUS_SENDING_DATA, GTK_PRINT_STATUS_PENDING, GTK_PRINT_STATUS_PENDING_ISSUE, GTK_PRINT_STATUS_PRINTING, GTK_PRINT_STATUS_FINISHED, GTK_PRINT_STATUS_FINISHED_ABORTED } GtkPrintStatus;
Выдаёт состояние приблизительно указывая выполнение запущенной операции печати.
Печать не началась; Это состояние устанавливается первоначально во время отображения диалога печати. |
|
Это состояние устанавливается во время издания сигнала начала печати в течении разбора страниц. |
|
Это состояние устанавливается во время формирования страниц. |
|
Задание печати отправлено на принтер. |
|
Задание печати отправлено на принтер, но по некоторым причинам не выполняется, например принтер может быть заблокирован. |
|
В течении печати произошла какая-то проблема, например заедание бумаги. |
|
Принтер выполняет печать. |
|
Печать полностью выполнена. |
|
Печать прервана. |
typedef enum {
GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
GTK_PRINT_OPERATION_ACTION_PRINT,
GTK_PRINT_OPERATION_ACTION_PREVIEW,
GTK_PRINT_OPERATION_ACTION_EXPORT
} GtkPrintOperationAction;
Параметр action
в
gtk_print_operation_run()
определяет какое действие операции
печати должно быть выполнено.
Показать диалог печати. |
|
Начать печать без отображения диалога печати, полагаясь на текущие установки печати. |
|
Показать предварительный просмотр печати. |
|
Экспорт в файл. Это требует установки свойства имени файла для экспорта. |
typedef enum {
GTK_PRINT_OPERATION_RESULT_ERROR,
GTK_PRINT_OPERATION_RESULT_APPLY,
GTK_PRINT_OPERATION_RESULT_CANCEL,
GTK_PRINT_OPERATION_RESULT_IN_PROGRESS
} GtkPrintOperationResult;
Значение этого типа возвращается из
gtk_print_operation_run()
.
Произошла ошибка. |
|
Настройки печати должны быть сохранены. |
|
Операция печати завершена, установки печати не должны сохраняться. |
|
Операция печати уже полностью выполнена. Это значение возвращается только при асинхронном выполнении. |
typedef enum
{
GTK_PRINT_ERROR_GENERAL,
GTK_PRINT_ERROR_INTERNAL_ERROR,
GTK_PRINT_ERROR_NOMEM
} GtkPrintError;
#define GTK_PRINT_ERROR gtk_print_error_quark ()GQuark используется для GtkPrintError ошибок.
gtk_print_operation_new ()
GtkPrintOperation* gtk_print_operation_new (void);Создаёт новый GtkPrintOperation.
Возвращает : |
новый GtkPrintOperation |
Начиная с версии 2.10
void gtk_print_operation_set_allow_async
(GtkPrintOperation *op,
gboolean allow_async);
Устанавливает может ли gtk_print_operation_run()
вернуть результат перед выполнением
операции печати. Помните, некоторые
платформы не позволяют асинхронные
операции.
|
|
|
|
Начиная с версии 2.10
void gtk_print_operation_get_error (GtkPrintOperation *op,
GError **error);
Эта функция вызывается когда результат
операции печати равен
GTK_PRINT_OPERATION_RESULT_ERROR
,
любой возвращаемой gtk_print_operation_run()
,
или в обработчике сигнала ::done. Возвращаемый
GError должен
содержать подробности произошедшего.
|
|
|
Возвращаемая ошибка |
Начиная с версии 2.10
void gtk_print_operation_set_default_page_setup
(GtkPrintOperation *op,
GtkPageSetup *default_page_setup);
Делает default_page_setup
параметрами
страницы по умолчанию для op
.
Эта страница будет использована в
gtk_print_operation_run()
,
но она может быть переписана на основании
предварительной страницы подключением
сигнала ::request-page-setup.
|
|
|
GtkPageSetup, или |
Начиная с версии 2.10
GtkPageSetup* gtk_print_operation_get_default_page_setup
(GtkPrintOperation *op);
Возвращает установки страницы по
умолчанию, смотрите
gtk_print_operation_set_default_page_setup()
.
|
|
Возвращает : |
Установки страницы по умолчанию |
Начиная с версии 2.10
void gtk_print_operation_set_print_settings
(GtkPrintOperation *op,
GtkPrintSettings *print_settings);
Устанавливает настройки принтера для
op
. Это обычно используется
для пере-установки настроек принтера
из предыдущей операции, смотрите
gtk_print_operation_run()
.
|
|
|
GtkPrintSettings, или
|
Начиная с версии 2.10
GtkPrintSettings* gtk_print_operation_get_print_settings
(GtkPrintOperation *op);
Возвращает текущие настройки принтера.
Помните что возвращаемое значение
NULL
до тех пор пока не вызвана
gtk_print_operation_set_print_settings()
или gtk_print_operation_run()
.
|
|
Возвращает : |
Текущие настройки принтера |
Начиная с версии 2.10
void gtk_print_operation_set_job_name
(GtkPrintOperation *op,
const gchar *job_name);
Устанавливает имя задания принтера. Имя используется для идентификации задания (например в приложении контроля такой как eggcups).
Если вы не установили имя задания, GTK+ выберет один из номеров последовательности заданий печати.
|
|
|
Строка идентифицирующая задание печати |
Начиная с версии 2.10
void gtk_print_operation_set_n_pages (GtkPrintOperation *op,
gint n_pages);
Устанавливает количество страниц в документе.
Должно устанавливаться в положительное значение перед началом представления страниц. Может быть установлено обработчиком сигнала ::begin-print.
Запомните, количество страниц помещаемое
в ::request-page-setup и ::draw-page сигналы начинается
с 0, то есть если пользователь выберет
для печати все страницы, последний
сигнал ::draw-page будет для страницы n_pages
- 1.
|
|
|
Количество страниц |
Начиная с версии 2.10
void gtk_print_operation_set_current_page
(GtkPrintOperation *op,
gint current_page);
Устанавливает текущую страницу.
Если она вызвана перед
gtk_print_operation_run()
,
пользователь сможет выбрать печать
только текущемй страницы.
Отметьте сто это имеет смысл только для документов предварительно разбитых постранично.
|
|
|
Текущая страница, начиная с 0 |
Начиная с версии 2.10
void gtk_print_operation_set_use_full_page
(GtkPrintOperation *op,
gboolean full_page);
Если параметр full_page
равен
TRUE
,
преобразует контекст GtkPrintContext
в контекст cairo, помещая начало в верхний
левый угол страницы (который может не
быть верхним левым углом листа, зависит
от ориентации страницы и номера страницы
относительно листа). Иначе, начало в
левом верхнем углу изображаемой области
(то есть в пределах границ).
|
|
|
|
Начиная с версии 2.10
void gtk_print_operation_set_unit (GtkPrintOperation *op,
GtkUnit unit);
Устанавливает преобразование полученного
GtkPrintContext в контекст
cairo, таким образом что расстояние измеряется
в единицах unit
.
|
|
|
Используемые единицы |
Начиная с версии 2.10
void gtk_print_operation_set_export_filename
(GtkPrintOperation *op,
const gchar *filename);
Устанавливает GtkPrintOperation для генерации файла, вместо отображения диалога печати. Эта функция используется для осуществления операции "Export to PDF". В настоящее время, PDF единственный поддерживаемый формат.
"Print to PDF" поддерживается независимо от этого, позволяя пользователю выбрать пункт "Print to PDF" из списка принтеров в диалоге печати.
|
|
|
Имя файла для экспорта |
Начиная с версии 2.10
void gtk_print_operation_set_show_progress
(GtkPrintOperation *op,
gboolean show_progress);
Если параметр show_progress
равен
TRUE
,
операция печати будет отображать диалог
шкалы выполнения в процессе печати.
|
|
|
|
Начиная с версии 2.10
void gtk_print_operation_set_track_print_status
(GtkPrintOperation *op,
gboolean track_status);
Если track_status равен TRUE
,
операция печати будет пытаться сообщать
статус задания печати в очереди печати
и принтера. Это позволит вашему приложению
отображать такие сообщения как
"закончилась бумага" или задание
печати отправлено на принтер.
Эта функция часто реализуется используя некоторую форму опроса, поэтому она не должна использоваться без явной необходимости.
|
|
|
|
Начиная с версии 2.10
void gtk_print_operation_set_custom_tab_label
(GtkPrintOperation *op,
const gchar *label);
Устанавливает ярлык для вкладки содержащей виджеты настроек.
|
|
|
Используемый ярлык, или |
Начиная с версии 2.10
GtkPrintOperationResult gtk_print_operation_run
(GtkPrintOperation *op,
GtkPrintOperationAction action,
GtkWindow *parent,
GError **error);
Выполняет операцию печати, сначала позволяя пользователю изменить настройки печати с помощью диалога, а затем печатает документ.
Обычно эта функция не возвращается
до тех пор пока не выполнит представление
всех страниц. Вы можете подключить
сигнал ::status-changed к op
для
определения некоторой информации о
процессе выполнения печати. Кроме того,
можно использовать рекурсию основного
цикла (mainloop) для отображения диалога
печати.
Если вы вызвали gtk_print_operation_set_allow_async()
или установили свойство позволяющее
асинхронные операции (allow-async) то эта
операция будет выполняться асинхронно,
если позволяет платформа. Сигнал ::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:\ns
",
error->message);
g_signal_connect (error_dialog, "response",
G_CALLBACK (gtk_widget_destroy), NULL);
gtk_widget_show (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));
}
|
|
|
Начинающее действие |
|
Переходный родитель диалога, или
|
|
Ошибки, или |
Возвращает : |
Результат операции печати. Возвращённое
значение |
Начиная с версии 2.10
void gtk_print_operation_cancel (GtkPrintOperation *op);Прекращает запущенную операцию печати. Эта функция может быть вызвана при начале печати, разбиении на страницы или при обработке сигнала draw-page для остановки текущемй выполняемой операции печати.
|
Начиная с версии 2.10
GtkPrintStatus gtk_print_operation_get_status
(GtkPrintOperation *op);
Определяет статус операции печати.
Смотрите также gtk_print_operation_get_status_string()
.
|
|
Возвращает : |
Статус операции печати |
Начиная с версии 2.10
const gchar* gtk_print_operation_get_status_string
(GtkPrintOperation *op);
Возвращает строку представляющую статус операции печати. Строка преобразована и удобна для отображения состояния печати например в GtkStatusbar.
Используйте gtk_print_operation_get_status()
для определения значения статуса
подходящего для программного использования.
|
|
Возвращает : |
Строка представляющая статус операции печати |
Начиная с версии 2.10
gboolean gtk_print_operation_is_finished (GtkPrintOperation *op);Удобная функция для определения закончилась ли операция печати успешно (
GTK_PRINT_STATUS_FINISHED
) или нет (GTK_PRINT_STATUS_FINISHED_ABORTED
).Помните: когда вы позволяете отслеживание статуса операции печати, она может находиться в не завершённом состоянии даже после выполнения, так как статус операции отслеживает статус задания печати на принтере.
|
|
Возвращает : |
|
Начиная с версии 2.10
void gtk_print_operation_get_error (GtkPrintOperation *op,
GError **error);
Вызывается когда результат операции
печати равен GTK_PRINT_OPERATION_RESULT_ERROR
,
любой возвращенный из gtk_print_operation_run()
,
или в обработчике сигнала ::done. Возвращаемый
GError будет
содержать подробности произошедшего.
|
|
|
ошибка |
Начиная с версии 2.10
GtkPageSetup* gtk_print_run_page_setup_dialog
(GtkWindow *parent,
GtkPageSetup *page_setup,
GtkPrintSettings *settings);
Запускает диалог параметров страницы,
позволяя пользователю изменять значения
из page_setup
. Если пользователь
отменил диалог, возвращаемый GtkPageSetup
идентичен переданному в page_setup
,
иначе он содержит изменения сделанные
с помощью диалога.
Помните, эта функция может использовать
рекурсию основного цикла (mainloop) для
отображения диалога параметров страницы.
Смотрите gtk_print_run_page_setup_dialog_async()
если это проблема.
|
Переходный родитель, или |
|
Существующий GtkPageSetup,
или |
|
|
Возвращает : |
Новый GtkPageSetup |
Начиная с версии 2.10
void (*GtkPageSetupDoneFunc) (GtkPageSetup *page_setup,
gpointer data);
Тип функции помещаемой в
gtk_print_run_page_setup_dialog_async()
.
Эта функция вызывается когда диалог
параметров страницы отключен, а так же
служит как уведомление завершения для
data
.
|
|
|
Пользовательские данные помещаемые
в |
void gtk_print_run_page_setup_dialog_async
(GtkWindow *parent,
GtkPageSetup *page_setup,
GtkPrintSettings *settings,
GtkPageSetupDoneFunc done_cb,
gpointer data);
Запускает диалог параметров страницы,
позволяя пользователю изменять значения
из page_setup
.
В отличии от gtk_print_run_page_setup_dialog()
,
эта функция возвращается после отображения
диалога параметров страницы на платформах
которые это поддерживают, и вызывает
done_cb
из обработчика сигнала
::response диалога.
|
Переходный родитель, или |
|
Существующий GtkPageSetup,
или |
|
|
|
Функция вызываемая когда пользователь сохраняет изменённые параметры страницы |
|
Пользовательские данные помещаемые
в |
Начиная с версии 2.10
typedef struct _GtkPrintOperationPreview GtkPrintOperationPreview;
gtk_print_operation_preview_end_preview ()
void gtk_print_operation_preview_end_preview (GtkPrintOperationPreview *preview);
Завершает предварительный промотр.
Эта функция должна вызываться для завершения выбранного предварительного просмотра печати.
|
Начиная с версии 2.10
gboolean gtk_print_operation_preview_is_selected
(GtkPrintOperationPreview *preview,
gint page_nr);
Определяет включена ли данная страница в набор страниц которые выбраны для печати.
|
|
|
Номер страницы |
Возвращает : |
|
Начиная с версии 2.10
void gtk_print_operation_preview_render_page
(GtkPrintOperationPreview *preview,
gint page_nr);
Представляет страницу для предварительного
просмотра, используя контекст печати
который передаётся в обработчик
GtkPrintOperation::preview вместе с preview
.
Помните, этой функции требуется чтобы контекст cairo был связан с контекстом печати.
|
|
|
Представляемая страница |
Начиная с версии 2.10
allow-async
""allow-async" gboolean : Read / WriteОпределяет может ли операция печати выполняться в асинхронном режиме.
Некоторые системы не поддерживают асинхронную печать, но те которые это делают, возвращают
GTK_PRINT_OPERATION_RESULT_IN_PROGRESS
как статус, и издают сигнал выполнено когда операция фактически выполнится.Windows порт не поддерживает асинхронные операции вообще (это вряд ли изменится). На других платформах, все действия за исключением
GTK_PRINT_OPERATION_ACTION_EXPORT
поддерживают асинхронные операции.Значение по умолчанию: FALSE
Начиная с версии 2.10
Свойство "
current-page
""current-page" gint : Read / WriteТекущая страница в документе.
Если установлена перед
gtk_print_operation_run()
, пользователь сможет выбрать только текущую страницу для печати.Помните, это имеет смысл только для документов предварительно разбитых на страницы.
Допустимые значения: >= -1
Значение по умолчанию: -1
Начиная с версии 2.10
Свойство "
custom-tab-label
""custom-tab-label" gchararray : Read / WriteИспользуется как ярлык вкладки содержащей виджеты настройки. Это свойство может игнорироваться на некоторых платформах.
Если оно равно
NULL
, GTK+ использует ярлык по умолчанию.Значение по умолчанию: NULL
Начиная с версии 2.10
Свойство "
default-page-setup
""default-page-setup" GtkPageSetup : Read / WriteGtkPageSetup используемый по умолчанию.
Эти настройки страницы используются в
gtk_print_operation_run()
, но они могут быть переписаны на основании предварительно установленной странице, подключив сигнал ::request-page-setup.Начиная с версии 2.10
Свойство "
export-filename
""export-filename" gchararray : Read / WriteИмя файла для генерации вместо отображения диалога печати. В данный момент, поддерживается только формат PDF.
Преднамеренное использование этого свойства реализуется действием "Export to PDF".
"Print to PDF" поддерживается, независимо от того установлено это свойство или нет, с помощью пункта меню "Print to PDF" из списка принтеров в диалоге печати.
Значение по умолчанию: NULL
Начиная с версии 2.10
Свойство "
job-name
""job-name" gchararray : Read / WriteСтрока используемая для идентификации задания (например в приложениях контроля таких как eggcups).
Если вы не установили имя задания, GTK+ выберет по умолчанию один из номеров последовательности заданий.
Значение по умолчанию: ""
Начиная с версии 2.10
Свойство "
n-pages
""n-pages" gint : Read / WriteКоличество страниц в документе.
Устанавливается в положительное число перед началом представления страниц. Может быть установлено обработчиком сигнала ::begin-print.
Помните, количество помещаемых сигналов ::request-page-setup и ::draw-page начинается с 0, то есть если пользователь выбрал печать всех страниц, последний сигнал ::draw-page будет для
n_pages
- 1.Допустимые значения: >= -1
Значение по умолчанию: -1
Начиная с версии 2.10
Свойство "
print-settings
""print-settings" GtkPrintSettings : Read / WriteGtkPrintSettings используемый для инициализации диалога.
Установка этого свойства обычно используется для пере-установки параметров печати из предыдущей операции печати, смотрите
gtk_print_operation_run()
.Начиная с версии 2.10
Свойство "
show-progress
""show-progress" gboolean : Read / WriteОпределяет показывается ли диалог выполнения в течении операции печати.
Значение по умолчанию: FALSE
Начиная с версии 2.10
Свойство "
status
""status" GtkPrintStatus : ReadСтатус операции печати.
Значение по умолчанию: GTK_PRINT_STATUS_INITIAL
Начиная с версии 2.10
Свойство "
status-string
""status-string" gchararray : ReadСтрока представляющая статус операции. Строка преобразуется для удобного отображения статуса печати, например в GtkStatusbar.
Смотрите свойство ::status которое удобно для программного использования.
Значение по умолчанию: ""
Начиная с версии 2.10
Свойство "
track-print-status
""track-print-status" gboolean : Read / WriteЕсли
TRUE
, операция печати попытается сообщать статус задания печати в очереди принтера и печати. Это позволяет вашему приложению отображать такие случаи как "закончилась бумага", и когда задание печати фактически отправлено на принтер. Однако, это часто реализуется используя опрос и не должно задействоваться без особой необходимости.Значение по умолчанию: FALSE
Начиная с версии 2.10
Свойство "
unit
""unit" GtkUnit : Read / WriteПреобразование в контекст cairo полученного из GtkPrintContext установленного таким образом что расстояния измеряются в единицах
unit
.Значение по умолчанию: GTK_UNIT_PIXEL
Начиная с версии 2.10
Свойство "
use-full-page
""use-full-page" gboolean : Read / WriteЕсли
TRUE
, преобразование в контекст cairo полученного из GtkPrintContext помещает начало в верхний левый угол страницы (который может не быть верхним левым углом листа, в зависимости от ориентации страницы и количества страниц в листе). Иначе, начало это верхний левый угол области изображения (то есть в пределах границ).Значение по умолчанию: FALSE
Начиная с версии 2.10
Детали сигналов
Сигнал "begin-print"
void user_function (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data) : Run last
Издаётся после завершения настроек печати пользователем с помощью диалога, пред фактическим началом представления страниц.
Обычное использование этого сигнала это установка параметров из GtkPrintContext и разбиение на страницы соответственно, а затем установка количества страниц с помощью
gtk_print_operation_set_n_pages()
.
|
GtkPrintOperation в которой издаётся сигнал |
|
GtkPrintContext для текущемй операции |
|
Пользовательские данные помещаемые при подключении обработчика сигнала. |
Начиная с версии 2.10
GObject* user_function (GtkPrintOperation *operation,
gpointer user_data) : Run last
Издаётся при отображении диалога печати. Если вы вернёте виджет в обработчик этого сигнала он будет добавлен во вкладку настройки диалога печати. Обычно возвращается контейнер со множеством виджетов в нем.
Возвращаемым виджетом владеет диалог печати, а время его существования контролирует приложение. Однако, виджет гарантировано останется в течении издания сигнала custom-widget-apply в операции. Тогда вы сможете прочесть вывод любой информации в которой нуждаетесь от виджетов.
|
GtkPrintOperation в которой издаётся сигнал |
|
Пользовательские данные помещаемые при подключении обработчика сигнала. |
Возвращает : |
Виджет настройки который встраивается
в диалог печати, или |
Начиная с версии 2.10
void user_function (GtkPrintOperation *operation,
GtkWidget *widget,
gpointer user_data) : Run last
Издаётся непосредственно перед началом печати, если вы добавили виджет настройки в обработчик create-custom-widget. Когда вы получаете этот сигнал, вам нужно прочесть информацию из виджетов настройки, так как не гарантировано что она будет доступна длительное время.
|
GtkPrintOperation в которой издаётся сигнал |
|
Виджет настройки добавляемый в create-custom-widget |
|
Пользовательские данные помещаемые при подключении обработчика сигнала. |
Начиная с версии 2.10
void user_function (GtkPrintOperation *operation,
GtkPrintOperationResult result,
gpointer user_data) : Run last
Издаётся когда операция печати завершила
выполнять все запросы печати. result
выдаёт вам информацию о произошедшем
во время печати. Если result
это GTK_PRINT_OPERATION_RESULT_ERROR
то для получения подробностей произошедшего
можно вызвать gtk_print_operation_get_error()
.
Если вы включили отслеживание состояния
печати, то когда gtk_print_operation_is_finished()
может продолжить возвращать FALSE
после издания этого сигнала.
|
GtkPrintOperation в которой издаётся сигнал |
|
Результат операции печати |
|
Пользовательские данные помещаемые при подключении обработчика сигнала. |
Начиная с версии 2.10
void user_function (GtkPrintOperation *operation,
GtkPrintContext *context,
gint page_nr,
gpointer user_data) : Run last
Издаётся для каждой печатаемой страницы.
Обработчик сигнала должен представлять
page_nr
's страницу в контексте
cairo полученном из context
используя gtk_print_context_get_cairo_context()
.
static void
draw_page (GtkPrintOperation *operation,
GtkPrintContext *context,
gint page_nr,
gpointer user_data)
{
cairo_t *cr;
PangoLayout *layout;
gdouble width, text_height;
gint layout_height;
PangoFontDescription *desc;
cr = gtk_print_context_get_cairo_context (context);
width = gtk_print_context_get_width (context);
cairo_rectangle (cr, 0, 0, width, HEADER_HEIGHT);
cairo_set_source_rgb (cr, 0.8, 0.8, 0.8);
cairo_fill (cr);
layout = gtk_print_context_create_pango_layout (context);
desc = pango_font_description_from_string ("sans 14");
pango_layout_set_font_description (layout, desc);
pango_font_description_free (desc);
pango_layout_set_text (layout, "some text", -1);
pango_layout_set_width (layout, width);
pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER);
pango_layout_get_size (layout, NULL, &layout_height);
text_height = (gdouble)layout_height / PANGO_SCALE;
cairo_move_to (cr, width / 2, (HEADER_HEIGHT - text_height) / 2);
pango_cairo_show_layout (cr, layout);
g_object_unref (layout);
}
Используйте gtk_print_operation_set_use_full_page()
и gtk_print_operation_set_unit()
перед началом операции печати для
преобразования в контекст cairo согласно
вашим потребностям.
|
GtkPrintOperation в которой издаётся сигнал |
|
GtkPrintContext для текущемй операции |
|
Номер текущемй печатаемой страницы |
|
Пользовательские данные помещаемые при подключении обработчика сигнала. |
Начиная с версии 2.10
void user_function (GtkPrintOperation *operation,
GtkPrintContext *context,
gpointer user_data) : Run last
Издаётся после представления всех страниц (rendered). Обработчик сигнала может очистить любой ресурс который был распределён в обработчике ::begin-print.
|
GtkPrintOperation в которой издаётся сигнал |
|
GtkPrintContext для текущемй операции |
|
Пользовательские данные помещаемые при подключении обработчика сигнала. |
Начиная с версии 2.10
gboolean user_function (GtkPrintOperation *operation,
GtkPrintContext *context,
gpointer user_data) : Run last
Издаётся после сигнала begin-print, но перед
фактическим началом представления
страниц (rendering). Издаётся пока не вернёт
FALSE
.
Этот сигнал предназначен для
постраничного разбиения документа в
небольших частях, избегая блокировки
пользовательского интерфейса в течении
длительного времени. Обработчик сигнала
должен обновлять количество страниц
используя gtk_print_operation_set_n_pages()
,
и возвращать TRUE
если документ полностью разобран
постранично.
Если вам не нужно разбиение по частям, вы можете просто сделать всё в обработчике begin-print, и оттуда же установить количество страниц.
|
GtkPrintOperation в которой издаётся сигнал |
|
GtkPrintContext для текущемй операции |
|
Пользовательские данные помещаемые при подключении обработчика сигнала. |
Возвращает : |
|
Начиная с версии 2.10
gboolean user_function (GtkPrintOperation *operation,
GtkPrintOperationPreview *preview,
GtkPrintContext *context,
GtkWindow *parent,
gpointer user_data) : Run last
Издаётся при запросе предварительного просмотра из родного диалога.
Обработчик по умолчанию для этого сигнала, использует внешнее приложение для предварительного просмотра печати.
Для осуществления выбора предварительного
просмотра печати, приложение должно
вернуть TRUE
из этого обработчика сигнала. Чтобы
использовать поставляемый context
для осуществления предварительного
просмотра, нужно преобразовать в
подходящий cairo контекст с помощью
gtk_print_context_set_cairo_context()
.
Реализованный предварительный просмотр
может использовать
gtk_print_operation_preview_is_selected()
и gtk_print_operation_preview_render_page()
для определения страниц которые выбраны
для печати и представлять их. Предварительный
просмотр должен заканчиваться вызовом
gtk_print_operation_preview_end_preview()
(обычно в ответ на нажатие пользователем
кнопки close).
|
GtkPrintOperation в которой издаётся сигнал |
|
GtkPrintContext для текущемй операции |
|
GtkPrintContext который будет использоваться |
|
GtkWindow для использования
в качестве родительского окна, или
|
|
Пользовательские данные помещаемые при подключении обработчика сигнала. |
Возвращает : |
|
Начиная с версии 2.10
void user_function (GtkPrintOperation *operation,
GtkPrintContext *context,
gint page_nr,
GtkPageSetup *setup,
gpointer user_data) : Run last
Издаётся один раз для каждой печатаемой
страницы, давая приложению возможность
изменить параметры страницы. Любые
изменения выполненные для setup
будут в силе только для печати этой
страницы.
|
GtkPrintOperation в которой издаётся сигнал |
|
GtkPrintContext для текущемй операции |
|
Номер текущемй печатаемой страницы |
|
|
|
Пользовательские данные помещаемые при подключении обработчика сигнала. |
Начиная с версии 2.10
void user_function (GtkPrintOperation *operation,
gpointer user_data) : Run last
Издаётся между различными фазами
операции печати. Смотрите GtkPrintStatus
описывающий различные фазы. Используйте
gtk_print_operation_get_status()
для определения текущемго состояния.
|
GtkPrintOperation в которой издаётся сигнал |
|
Пользовательские данные помещаемые при подключении обработчика сигнала. |
Начиная с версии 2.10
GtkPrintContext, GtkPrintUnixDialog