Spec-Zone.ru › GTK 3.24

GtkPrintOperation

GtkPrintOperation — API для высокоуровневой печати

Функции

GtkPrintOperation * gtk_print_operation_new ()
void gtk_print_operation_set_allow_async ()
void gtk_print_operation_get_error ()
void gtk_print_operation_set_default_page_setup ()
GtkPageSetup * gtk_print_operation_get_default_page_setup ()
void gtk_print_operation_set_print_settings ()
GtkPrintSettings * gtk_print_operation_get_print_settings ()
void gtk_print_operation_set_job_name ()
void gtk_print_operation_set_n_pages ()
gint gtk_print_operation_get_n_pages_to_print ()
void gtk_print_operation_set_current_page ()
void gtk_print_operation_set_use_full_page ()
void gtk_print_operation_set_unit ()
void gtk_print_operation_set_export_filename ()
void gtk_print_operation_set_show_progress ()
void gtk_print_operation_set_track_print_status ()
void gtk_print_operation_set_custom_tab_label ()
GtkPrintOperationResult gtk_print_operation_run ()
void gtk_print_operation_cancel ()
void gtk_print_operation_draw_page_finish ()
void gtk_print_operation_set_defer_drawing ()
GtkPrintStatus gtk_print_operation_get_status ()
const gchar * gtk_print_operation_get_status_string ()
gboolean gtk_print_operation_is_finished ()
void gtk_print_operation_set_support_selection ()
gboolean gtk_print_operation_get_support_selection ()
void gtk_print_operation_set_has_selection ()
gboolean gtk_print_operation_get_has_selection ()
void gtk_print_operation_set_embed_page_setup ()
gboolean gtk_print_operation_get_embed_page_setup ()
GtkPageSetup * gtk_print_run_page_setup_dialog ()
void (*GtkPageSetupDoneFunc) ()
void gtk_print_run_page_setup_dialog_async ()
void gtk_print_operation_preview_end_preview ()
gboolean gtk_print_operation_preview_is_selected ()
void gtk_print_operation_preview_render_page ()

Свойства

gboolean allow-async Чтение / Запись
int current-page Чтение / Запись
char * custom-tab-label Чтение / Запись
GtkPageSetup * default-page-setup Чтение / Запись
gboolean embed-page-setup Чтение / Запись
char * export-filename Чтение / Запись
gboolean has-selection Чтение / Запись
char * job-name Чтение / Запись
int n-pages Чтение / Запись
int n-pages-to-print Чтение
GtkPrintSettings * print-settings Чтение / Запись
gboolean show-progress Чтение / Запись
GtkPrintStatus status Чтение
char * status-string Чтение
gboolean support-selection Чтение / Запись
gboolean track-print-status Чтение / Запись
GtkUnit unit Чтение / Запись
gboolean use-full-page Чтение / Запись

Сигналы

void begin-print Выполнить последним
GObject* create-custom-widget Выполнить последним
void custom-widget-apply Выполнить последним
void done Выполнить последним
void draw-page Выполнить последним
void end-print Выполнить последним
gboolean paginate Выполнить последним
gboolean preview Выполнить последним
void request-page-setup Выполнить последним
void status-changed Выполнить последним
void update-custom-widget Выполнить последним
void got-page-size Выполнить последним
void ready Выполнить последним

Типы и значения

структура GtkPrintOperation
структура GtkPrintOperationClass
перечисление GtkPrintStatus
перечисление GtkPrintOperationAction
перечисление GtkPrintOperationResult
перечисление GtkPrintError
#определить GTK_PRINT_ERROR
GtkPrintOperationPreview

Иерархия объектов

    GInterface
    ╰── GtkPrintOperationPreview
    GObject
    ╰── GtkPrintOperation

Предварительные условия

GtkPrintOperationPreview требует GObject.

Реализованные интерфейсы

GtkPrintOperation реализует GtkPrintOperationPreview.

Известные реализации

GtkPrintOperationPreview реализуется GtkPrintOperation.

Файлы заголовков

#include <gtk/gtk.h>

Описание

GtkPrintOperation — это высокоуровневый, переносимый API для печати. Он немного отличается от других диалоговых окон GTK+, таких как GtkFileChooser, так как некоторые платформы не предоставляют достаточной инфраструктуры для реализации хорошего диалога печати. На таких платформах GtkPrintOperation использует собственный диалог печати. На платформах, где нет собственного диалога печати, GTK+ использует свой собственный, см. GtkPrintUnixDialog.

Типичный способ использования высокоуровневого API печати — создание объекта GtkPrintOperation с помощью gtk_print_operation_new() при выборе пользователем печати. Затем вы задаете некоторые свойства, например, размер страницы, любые GtkPrintSettings из предыдущих операций печати, количество страниц, текущую страницу и т. д.

Затем вы запускаете операцию печати, вызвав gtk_print_operation_run(). Затем он отобразит диалог, позволит пользователю выбрать принтер и параметры. Когда пользователь завершит диалог, на GtkPrintOperation будут отправляться различные сигналы, основной из которых — «draw-page», который вы должны перехватить и отрисовать страницу на предоставленном GtkPrintContext с помощью Cairo.

Высокоуровневый API печати

По умолчанию GtkPrintOperation использует внешнее приложение для предварительного просмотра печати. Чтобы реализовать пользовательский предварительный просмотр печати, приложение должно подключиться к сигналу предварительного просмотра. Функции gtk_print_operation_preview_render_page(), gtk_print_operation_preview_end_preview() и gtk_print_operation_preview_is_selected() полезны при реализации предварительного просмотра печати.

Функции

gtk_print_operation_new ()

GtkPrintOperation *
gtk_print_operation_new (void);

Создаёт новый GtkPrintOperation.

Возвращаемое значение

новый GtkPrintOperation

С: 2.10

gtk_print_operation_set_allow_async ()

void
gtk_print_operation_set_allow_async (GtkPrintOperation *op,
                                     gboolean allow_async);

Устанавливает, может ли gtk_print_operation_run() возвратиться до завершения операции печати. Обратите внимание, что некоторые платформы могут не допускать асинхронной работы.

Параметры

op

a GtkPrintOperation

allow_async

TRUE для разрешения асинхронной работы

С: 2.10

gtk_print_operation_get_error ()

void
gtk_print_operation_get_error (GtkPrintOperation *op,
                               GError **error);

Вызывайте эту функцию, когда результат операции печати — GTK_PRINT_OPERATION_RESULT_ERROR, например, возвращённый gtk_print_operation_run() или в обработчике сигнала “done”. Возвращаемый GError будет содержать более подробную информацию о возникшей ошибке.

Параметры

op

a GtkPrintOperation

error

место для возврата ошибки

С: 2.10

gtk_print_operation_set_default_page_setup ()

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”.

Параметры

op

a GtkPrintOperation

default_page_setup

a GtkPageSetup, или NULL.

[allow-none]

С: 2.10

gtk_print_operation_get_default_page_setup ()

GtkPageSetup *
gtk_print_operation_get_default_page_setup
                               (GtkPrintOperation *op);

Возвращает стандартную настройку страницы, см. gtk_print_operation_set_default_page_setup().

Параметры

op

a GtkPrintOperation

Возвращаемое значение

стандартную настройку страницы.

[transfer none]

С: 2.10

gtk_print_operation_set_print_settings ()

void
gtk_print_operation_set_print_settings
                               (GtkPrintOperation *op,
                                GtkPrintSettings *print_settings);

Устанавливает настройки печати для op . Обычно используется для восстановления настроек печати из предыдущей операции печати, см. gtk_print_operation_run().

Параметры

op

a GtkPrintOperation

print_settings

GtkPrintSettings.

[allow-none]

С: 2.10

gtk_print_operation_get_print_settings ()

GtkPrintSettings *
gtk_print_operation_get_print_settings
                               (GtkPrintOperation *op);

Возвращает текущие настройки печати.

Обратите внимание, что значение возврата — NULL до тех пор, пока не были вызваны либо gtk_print_operation_set_print_settings(), либо gtk_print_operation_run().

Параметры

op

a GtkPrintOperation

Возвращаемое значение

текущие настройки печати для op .

[transfer none]

С: 2.10

gtk_print_operation_set_job_name ()

void
gtk_print_operation_set_job_name (GtkPrintOperation *op,
                                  const gchar *job_name);

Устанавливает имя задания печати. Имя используется для идентификации задания (например, в приложениях мониторинга, таких как eggcups).

Если вы не установите имя задания, GTK+ выберет для него значение по умолчанию, присваивая порядковый номер последовательно создаваемым заданиям печати.

Параметры

op

a GtkPrintOperation

job_name

строка, идентифицирующая задание печати

С: 2.10

gtk_print_operation_set_n_pages ()

void
gtk_print_operation_set_n_pages (GtkPrintOperation *op,
                                 gint n_pages);

Устанавливает количество страниц в документе.

Это значение должно быть установлено до начала рендеринга. Его можно установить в обработчике сигнала “begin-print”.

Обратите внимание, что номера страниц, передаваемые в сигналы “request-page-setup” и “draw-page”, нумеруются с нуля, т.е. если пользователь выбрал печать всех страниц, последний сигнал ::draw-page будет для страницы n_pages - 1.

Параметры

op

a GtkPrintOperation

n_pages

количество страниц

С: 2.10

gtk_print_operation_get_n_pages_to_print ()

gint
gtk_print_operation_get_n_pages_to_print
                               (GtkPrintOperation *op);

Возвращает количество страниц, которые будут распечатаны.

Обратите внимание, что это значение устанавливается во время фазы подготовки печати (GTK_PRINT_STATUS_PREPARING), поэтому эта функция никогда не должна вызываться до фазы генерации данных (GTK_PRINT_STATUS_GENERATING_DATA). Вы можете подключиться к сигналу “status-changed” и вызвать gtk_print_operation_get_n_pages_to_print(), когда статус печати равен GTK_PRINT_STATUS_GENERATING_DATA. Это обычно используется для отслеживания прогресса операции печати.

Параметры

op

объект GtkPrintOperation

Возвращаемое значение

количество страниц, которые будут распечатаны

С: 2.18

gtk_print_operation_set_current_page ()

void
gtk_print_operation_set_current_page (GtkPrintOperation *op,
                                      gint current_page);

Устанавливает текущую страницу.

Если это вызывается до gtk_print_operation_run(), пользователь сможет выбрать для печати только текущую страницу.

Обратите внимание, что это имеет смысл только для предварительно постраничных документов.

Параметры

op

объект GtkPrintOperation

current_page

текущая страница (нумерация с 0)

С: 2.10

gtk_print_operation_set_use_full_page ()

void
gtk_print_operation_set_use_full_page (GtkPrintOperation *op,
                                       gboolean full_page);

Если full_page равно TRUE, преобразование для контекста cairo, полученного из GtkPrintContext, устанавливает начало в верхнем левом углу страницы (что может не быть верхним левым углом листа, в зависимости от ориентации страницы и количества страниц на листе). В противном случае начало находится в верхнем левом углу области изображения (т. е. внутри полей).

Параметры

op

объект GtkPrintOperation

full_page

TRUE для настройки GtkPrintContext для всей страницы

С: 2.10

gtk_print_operation_set_unit ()

void
gtk_print_operation_set_unit (GtkPrintOperation *op,
                              GtkUnit unit);

Настраивает преобразование для контекста cairo, полученного из GtkPrintContext, таким образом, что расстояния измеряются в единицах unit.

Параметры

op

объект GtkPrintOperation

unit

используемая единица измерения

С: 2.10

gtk_print_operation_set_export_filename ()

void
gtk_print_operation_set_export_filename
                               (GtkPrintOperation *op,
                                const gchar *filename);

Настраивает GtkPrintOperation для генерации файла вместо отображения диалога печати. Предполагаемое использование этой функции – для реализации действий «Экспорт в PDF». В настоящее время поддерживается только формат PDF.

Поддержка «Печать в PDF» независима от этого и выполняется путем предоставления пользователю возможности выбрать пункт «Печать в PDF» из списка принтеров в диалоге печати.

Параметры

op

объект GtkPrintOperation

filename

имя файла для экспортируемого файла.

[type filename]

С: 2.10

gtk_print_operation_set_show_progress ()

void
gtk_print_operation_set_show_progress (GtkPrintOperation *op,
                                       gboolean show_progress);

Если show_progress равно TRUE, операция печати отобразит диалог прогресса во время операции печати.

Параметры

op

объект GtkPrintOperation

show_progress

TRUE для отображения диалога прогресса

С: 2.10

gtk_print_operation_set_track_print_status ()

void
gtk_print_operation_set_track_print_status
                               (GtkPrintOperation *op,
                                gboolean track_status);

Если track_status равно TRUE, операция печати будет пытаться продолжать сообщать о статусе задания печати в очередях принтера и самом принтере. Это позволяет вашему приложению показывать такие проблемы, как «бумага закончилась», и когда задание печати фактически достигает принтера.

Эта функция часто реализуется с помощью некоторой формы опроса, поэтому ее следует включать только в том случае, если это необходимо.

Параметры

op

объект GtkPrintOperation

track_status

TRUE для отслеживания состояния после печати

С: 2.10

gtk_print_operation_set_custom_tab_label ()

void
gtk_print_operation_set_custom_tab_label
                               (GtkPrintOperation *op,
                                const gchar *label);

Устанавливает метку для вкладки, содержащей пользовательские виджеты.

Параметры

op

объект GtkPrintOperation

label

используемая метка или NULL, чтобы использовать стандартную метку.

[allow-none]

С: 2.10

gtk_print_operation_run ()

GtkPrintOperationResult
gtk_print_operation_run (GtkPrintOperation *op,
                         GtkPrintOperationAction action,
                         GtkWindow *parent,
                         GError **error);

Выполняет операцию печати, сначала позволяя пользователю изменить настройки печати в диалоговом окне печати, а затем напечатать документ.

Обычно эта функция не возвращает значение, пока не завершится рендеринг всех страниц. Вы можете подключиться к сигналу “status-changed” на op, чтобы получить некоторую информацию о ходе операции печати. Кроме того, она может использовать рекурсивный цикл обработки событий для отображения диалогового окна печати.

Если вы вызываете gtk_print_operation_set_allow_async() или задаёте свойство “allow-async”, операция будет выполняться асинхронно, если это поддерживается платформой. Сигнал “done” будет отправлен с результатом операции, когда она завершится (то есть, когда диалоговое окно отменено или печать выполнена успешно или неуспешно).

Обратите внимание, что gtk_print_operation_run() может быть вызван только один раз для данного GtkPrintOperation.

Параметры

op

a GtkPrintOperation

action

действие для запуска

parent

Временный родитель диалогового окна.

[allow-none]

error

Место возврата ошибок или NULL.

[allow-none]

Возвращаемое значение

результат операции печати. Возвращаемое значение GTK_PRINT_OPERATION_RESULT_APPLY указывает на успешное завершение печати. В этом случае рекомендуется получить использованные настройки печати с помощью gtk_print_operation_get_print_settings() и сохранить их для повторного использования в следующей операции печати. Значение GTK_PRINT_OPERATION_RESULT_IN_PROGRESS означает, что операция выполняется асинхронно и отправит сигнал “done”, когда завершится.

С: 2.10

gtk_print_operation_cancel ()

void
gtk_print_operation_cancel (GtkPrintOperation *op);

Отменяет выполняемую операцию печати. Эта функция может быть вызвана из обработчика сигнала “begin-print”, “paginate” или “draw-page” для остановки текущей выполняемой операции печати.

Параметры

op

a GtkPrintOperation

С: 2.10

gtk_print_operation_draw_page_finish ()

void
gtk_print_operation_draw_page_finish (GtkPrintOperation *op);

Указывает, что отрисовка определенной страницы завершена.

Вызывается после завершения отрисовки страницы (например, отрисовки в другом потоке). Если gtk_print_operation_set_defer_drawing() был вызван ранее, то эта функция должна быть вызвана приложением. В противном случае она вызывается самой библиотекой.

Параметры

op

a GtkPrintOperation

С: 2.16

gtk_print_operation_set_defer_drawing ()

void
gtk_print_operation_set_defer_drawing (GtkPrintOperation *op);

Настраивает GtkPrintOperation на ожидание вызова gtk_print_operation_draw_page_finish() из приложения. Может использоваться для отрисовки страницы в другом потоке.

Эта функция должна вызываться в обработчике сигнала “draw-page”.

Параметры

op

a GtkPrintOperation

С: 2.16

gtk_print_operation_get_status ()

GtkPrintStatus
gtk_print_operation_get_status (GtkPrintOperation *op);

Возвращает состояние операции печати. Также см. gtk_print_operation_get_status_string().

Параметры

op

a GtkPrintOperation

Возвращаемое значение

состояние операции печати

С: 2.10

gtk_print_operation_get_status_string ()

const gchar *
gtk_print_operation_get_status_string (GtkPrintOperation *op);

Возвращает строковое представление состояния операции печати. Строка переведена и подходит для отображения состояния печати, например, в GtkStatusbar.

Используйте gtk_print_operation_get_status() для получения значения состояния, подходящего для программирования.

Параметры

op

a GtkPrintOperation

Возвращаемое значение

строковое представление состояния операции печати

С: 2.10

gtk_print_operation_is_finished ()

gboolean
gtk_print_operation_is_finished (GtkPrintOperation *op);

Вспомогательная функция для определения, завершена ли операция печати, успешно (GTK_PRINT_STATUS_FINISHED) или неуспешно (GTK_PRINT_STATUS_FINISHED_ABORTED).

Примечание: при включении отслеживания состояния печати операция печати может находиться в незавершенном состоянии даже после вызова done, так как состояние операции тогда отслеживает состояние задания печати на принтере.

Параметры

op

a GtkPrintOperation

Возвращаемое значение

TRUE, если операция печати завершена.

С: 2.10

gtk_print_operation_set_support_selection ()

void
gtk_print_operation_set_support_selection
                               (GtkPrintOperation *op,
                                gboolean support_selection);

Устанавливает, поддерживается ли выбор GtkPrintOperation.

Параметры

op

a GtkPrintOperation

support_selection

TRUE для поддержки выбора

С: 2.18

gtk_print_operation_get_support_selection ()

gboolean
gtk_print_operation_get_support_selection
                               (GtkPrintOperation *op);

Получает значение свойства “support-selection”.

Параметры

op

объект GtkPrintOperation

Возвращаемое значение

указывает, поддерживает ли приложение печать выделения

С: 2.18

gtk_print_operation_set_has_selection ()

void
gtk_print_operation_set_has_selection (GtkPrintOperation *op,
                                       gboolean has_selection);

Устанавливает, существует ли выделение для печати.

Приложение должно задать количество страниц, на которых будет отображаться выделение, с помощью gtk_print_operation_set_n_pages() в обработчике сигнала “begin-print”.

Параметры

op

объект GtkPrintOperation

has_selection

TRUE указывает, что выделение существует

С: 2.18

gtk_print_operation_get_has_selection ()

gboolean
gtk_print_operation_get_has_selection (GtkPrintOperation *op);

Получает значение свойства “has-selection”.

Параметры

op

объект GtkPrintOperation

Возвращаемое значение

указывает, существует ли выделение

С: 2.18

gtk_print_operation_set_embed_page-setup ()

void
gtk_print_operation_set_embed_page_setup
                               (GtkPrintOperation *op,
                                gboolean embed);

Встраивает поля для выбора размера и ориентации страницы в диалог настройки страницы. Выбранные параметры страницы сохраняются как параметры по умолчанию в GtkPrintOperation.

Параметры

op

объект GtkPrintOperation

embed

TRUE для встраивания выбора параметров страницы в GtkPrintUnixDialog

С: 2.18

gtk_print_operation_get_embed_page-setup ()

gboolean
gtk_print_operation_get_embed_page_setup
                               (GtkPrintOperation *op);

Получает значение свойства “embed-page-setup”.

Параметры

op

объект GtkPrintOperation

Возвращаемое значение

указывает, встроены ли поля для выбора параметров страницы

С: 2.18

gtk_print_run_page_setup_dialog ()

GtkPageSetup *
gtk_print_run_page_setup_dialog (GtkWindow *parent,
                                 GtkPageSetup *page_setup,
                                 GtkPrintSettings *settings);

Запускает диалог настройки страницы, позволяя пользователю изменить значения из page_setup. Если пользователь отменяет диалог, возвращаемый GtkPageSetup будет идентичен переданному page_setup, иначе он будет содержать внесённые изменения.

Обратите внимание, что эта функция может использовать рекурсивный цикл обработки событий для отображения диалога настройки страницы. См. gtk_print_run_page_setup_dialog_async(), если это проблема.

Параметры

parent

родительский элемент.

[allow-none]

page_setup

существующий объект GtkPageSetup.

[allow-none]

settings

объект GtkPrintSettings

Возвращаемое значение

новый объект GtkPageSetup.

[transfer full]

С: 2.10

GtkPageSetupDoneFunc ()

void
(*GtkPageSetupDoneFunc) (GtkPageSetup *page_setup,
                         gpointer data);

Тип функции, передаваемой в gtk_print_run_page_setup_dialog_async().

Эта функция вызывается при закрытии диалога настройки страницы и также служит уведомлением о уничтожении data.

Параметры

page_setup

объект GtkPageSetup, который был

data

пользовательские данные, переданные в gtk_print_run_page_setup_dialog_async().

[closure]

gtk_print_run_page_setup_dialog_async ()

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 диалога.

Параметры

parent

родительский элемент, или NULL.

[allow-none]

page_setup

существующий объект GtkPageSetup, или NULL.

[allow-none]

settings

объект GtkPrintSettings

done_cb

функция, вызываемая, когда пользователь сохраняет изменённые параметры страницы.

[scope async]

data

пользовательские данные, передаваемые в done_cb

С: 2.10

gtk_print_operation_preview_end_preview ()

void
gtk_print_operation_preview_end_preview
                               (GtkPrintOperationPreview *preview);

Завершает предварительный просмотр.

Этот метод должен быть вызван для завершения пользовательского предварительного просмотра печати.

Параметры

preview

a GtkPrintOperationPreview

С: 2.10

gtk_print_operation_preview_is_selected ()

gboolean
gtk_print_operation_preview_is_selected
                               (GtkPrintOperationPreview *preview,
                                gint page_nr);

Возвращает, включена ли данная страница в набор страниц, выбранных для печати.

Параметры

preview

a GtkPrintOperationPreview

page_nr

номер страницы

Возвращает

TRUE , если страница выбрана для печати

С: 2.10

gtk_print_operation_preview_render_page ()

void
gtk_print_operation_preview_render_page
                               (GtkPrintOperationPreview *preview,
                                gint page_nr);

Отображает страницу в предварительном просмотре, используя контекст печати, переданный обработчику “preview” вместе с preview .

Пользовательский предварительный просмотр печати должен использовать эту функцию в обработчике ::expose для отображения текущей выбранной страницы.

Обратите внимание, что для этой функции требуется соответствующий контекст cairo, связанный с контекстом печати.

Параметры

preview

a GtkPrintOperationPreview

page_nr

страница для отображения

С: 2.10

Типы и значения

struct GtkPrintOperation

struct GtkPrintOperation;

struct GtkPrintOperationClass

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,
                                  gint               page_nr,
                                  GtkPageSetup      *setup);
  void     (*draw_page)          (GtkPrintOperation *operation,
                                  GtkPrintContext   *context,
                                  gint               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);
};

Члены

done ()

Сигнал, который генерируется, когда выполнение операции печати завершило все необходимые действия для печати.

begin_print ()

Сигнал, генерируемый после того, как пользователь закончил изменение параметров печати в диалоговом окне, перед началом фактического рендеринга.

paginate ()

Сигнал, генерируемый после сигнала «begin-print», но перед началом фактического рендеринга.

request_page_setup ()

Генерируется один раз для каждой печатаемой страницы, чтобы дать приложению возможность изменить параметры страницы.

draw_page ()

Сигнал, генерируемый для каждой печатаемой страницы.

end_print ()

Сигнал, генерируемый после рендеринга всех страниц.

status_changed ()

Генерируется между различными фазами операции печати.

create_custom_widget ()

Сигнал, генерируемый при отображении диалогового окна печати.

custom_widget_apply ()

Сигнал, генерируемый непосредственно перед «begin-print», если вы добавили пользовательский виджет в обработчик «create-custom-widget».

preview ()

Сигнал, генерируемый при запросе предварительного просмотра от системного диалогового окна.

update_custom_widget ()

Генерируется после изменения выбранного принтера.

перечисление GtkPrintStatus

Статус дает общее представление о завершении текущей операции печати.

Члены

GTK_PRINT_STATUS_INITIAL

Печать еще не началась; этот статус устанавливается изначально и пока показано диалоговое окно печати.

GTK_PRINT_STATUS_PREPARING

Этот статус устанавливается во время генерации сигнала begin-print и во время разбиения на страницы.

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

Печать прервана.

перечисление GtkPrintOperationAction

Параметр action для gtk_print_operation_run() определяет действие, которое должна выполнить операция печати.

Члены

GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG

Показать диалоговое окно печати.

GTK_PRINT_OPERATION_ACTION_PRINT

Начать печать без отображения диалогового окна печати, на основе текущих параметров печати.

GTK_PRINT_OPERATION_ACTION_PREVIEW

Показать предварительный просмотр.

GTK_PRINT_OPERATION_ACTION_EXPORT

Экспорт в файл. Для этого необходимо установить свойство export-filename.

перечисление GtkPrintOperationResult

Значение этого типа возвращается функцией gtk_print_operation_run().

Члены

GTK_PRINT_OPERATION_RESULT_ERROR

Произошла ошибка.

GTK_PRINT_OPERATION_RESULT_APPLY

Параметры печати должны быть сохранены.

GTK_PRINT_OPERATION_RESULT_CANCEL

Операция печати отменена, параметры печати не должны сохраняться.

GTK_PRINT_OPERATION_RESULT_IN_PROGRESS

Операция печати еще не завершена. Это значение будет возвращено только при асинхронном выполнении.

перечисление GtkPrintError

Коды ошибок, которые идентифицируют различные ошибки, которые могут возникнуть при использовании поддержки печати GTK+.

Члены

GTK_PRINT_ERROR_GENERAL

Произошла неопределенная ошибка.

GTK_PRINT_ERROR_INTERNAL_ERROR

Произошла внутренняя ошибка.

GTK_PRINT_ERROR_NOMEM

Не удалось выделить память.

GTK_PRINT_ERROR_INVALID_FILE

При загрузке файла параметров страницы или размера бумаги произошла ошибка.

GTK_PRINT_ERROR

#define GTK_PRINT_ERROR gtk_print_error_quark ()

Область ошибок для GtkPrintError ошибок.

GtkPrintOperationPreview

typedef struct _GtkPrintOperationPreview GtkPrintOperationPreview;

Подробные сведения о свойствах

Свойство “allow-async”

  “allow-async”              gboolean

Определяет, может ли операция печати выполняться асинхронно.

Некоторые системы не поддерживают асинхронную печать, но те, что поддерживают, вернут GTK_PRINT_OPERATION_RESULT_IN_PROGRESS в качестве статуса и отправят сигнал “done”, когда операция будет завершена.

Подсистема Windows вообще не поддерживает асинхронную работу (вероятность изменения маловероятна). На других платформах все действия, кроме GTK_PRINT_OPERATION_ACTION_EXPORT, поддерживают асинхронную работу.

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 2.10

Свойство “current-page”

  “current-page”             int

Текущая страница в документе.

Если это свойство установлено до вызова gtk_print_operation_run(), пользователь сможет выбрать для печати только текущую страницу.

Обратите внимание, что это имеет смысл только для предварительно разбитныx на страницы документов.

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

Допустимые значения: >= -1

Значение по умолчанию: -1

С версии: 2.10

Свойство “custom-tab-label”

  “custom-tab-label”         char *

Используется в качестве метки вкладки, содержащей пользовательские виджеты. Обратите внимание, что это свойство может быть проигнорировано на некоторых платформах.

Если это свойство NULL, GTK+ использует метку по умолчанию.

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

Значение по умолчанию: NULL

С версии: 2.10

Свойство “default-page-setup”

  “default-page-setup”       GtkPageSetup *

Используемая по умолчанию настройка страницы GtkPageSetup.

Эта настройка страницы будет использоваться функцией gtk_print_operation_run(), но её можно переопределить на страницу за страницей, подключившись к сигналу “request-page-setup”.

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

С версии: 2.10

Свойство “embed-page-setup”

  “embed-page-setup”         gboolean

Если TRUE, поля выбора размера страницы и ориентации встроены в страницу настроек страницы.

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 2.18

Свойство “export-filename”

  “export-filename”          char *

Имя файла для создания вместо отображения диалога печати. В настоящее время поддерживается только формат PDF.

Это свойство предназначено для реализации действий «Экспорт в PDF».

Поддержка «Печать в PDF» независима от этого и осуществляется путем выбора пункта «Печать в PDF» из списка принтеров в диалоге печати.

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

Значение по умолчанию: NULL

С версии: 2.10

Свойство “has-selection”

  “has-selection”            gboolean

Определяет, есть ли выделение в вашем приложении. Это может позволить вашему приложению печатать выделение. Обычно используется для активации кнопки «Выделение».

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 2.18

Свойство “job-name”

  “job-name”                 char *

Строка, используемая для идентификации задания (например, в приложениях мониторинга, таких как eggcups).

Если вы не зададите имя задания, GTK+ выберет имя по умолчанию, нумеруя последовательные задания печати.

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

Значение по умолчанию: ""

С версии: 2.10

Свойство “n-pages”

  “n-pages”                  int

Количество страниц в документе.

Это свойство должно быть установлено в положительное число до начала рендеринга. Его можно установить в обработчике сигнала “begin-print”.

Обратите внимание, что номера страниц, передаваемые сигналам “request-page-setup” и “draw-page”, нумеруются с 0, т. е. если пользователь выбрал печать всех страниц, последний сигнал ::draw-page будет для страницы n_pages - 1.

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

Допустимые значения: >= -1

Значение по умолчанию: -1

С версии: 2.10

Свойство “n-pages-to-print”

  “n-pages-to-print”         int

Количество страниц, которые будут напечатаны.

Обратите внимание, что это значение устанавливается на стадии подготовки печати (GTK_PRINT_STATUS_PREPARING), поэтому это значение никогда не должно быть получено до стадии генерации данных (GTK_PRINT_STATUS_GENERATING_DATA). Вы можете подключиться к сигналу “status-changed” и вызвать gtk_print_operation_get_n_pages_to_print(), когда состояние печати равно GTK_PRINT_STATUS_GENERATING_DATA. Это обычно используется для отслеживания прогресса операции печати.

Владелец: GtkPrintOperation

Флаги: Чтение

Допустимые значения: >= -1

Значение по умолчанию: -1

С версии: 2.18

Свойство “print-settings”

  “print-settings”           GtkPrintSettings *

Используемые для инициализации диалога GtkPrintSettings.

Установка этого свойства обычно используется для восстановления настроек печати из предыдущей операции печати, см. gtk_print_operation_run().

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

С версии: 2.10

Свойство “show-progress”

  “show-progress”            gboolean

Определяет, отображать ли диалог прогресса во время операции печати.

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 2.10

Свойство “status”

  “status”                   GtkPrintStatus

Состояние операции печати.

Владелец: GtkPrintOperation

Флаги: Чтение

Значение по умолчанию: GTK_PRINT_STATUS_INITIAL

С версии: 2.10

Свойство “status-string”

  “status-string”            char *

Строковое представление состояния операции печати. Строка переведена и подходит для отображения состояния печати, например, в GtkStatusbar.

Для программного использования подходит значение свойства “status”.

Владелец: GtkPrintOperation

Флаги: Чтение

Значение по умолчанию: ""

С версии: 2.10

Свойство “support-selection”

  “support-selection”        gboolean

Если TRUE, операция печати будет поддерживать печать выделения. Это позволит диалогу печати отобразить кнопку «Выделение».

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 2.18

Свойство “track-print-status”

  “track-print-status”       gboolean

Если TRUE, операция печати будет пытаться продолжить отслеживать состояние задания печати в очередях принтера и принтере. Это позволит вашему приложению отображать такие проблемы, как «бумага закончилась», и когда задание печати фактически достигнет принтера. Однако это часто реализуется с помощью опроса и не должно включаться, если это не требуется.

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 2.10

Свойство “unit”

  “unit”                     GtkUnit

Преобразование для контекста cairo, полученного из GtkPrintContext, настроено таким образом, что расстояния измеряются в единицах unit.

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

Значение по умолчанию: GTK_UNIT_NONE

С версии: 2.10

Свойство “use-full-page”

  “use-full-page”            gboolean

Если TRUE, преобразование для контекста cairo, полученного из GtkPrintContext, устанавливает начало в верхнем левом углу страницы (что может не совпадать с верхним левым углом листа в зависимости от ориентации страницы и количества страниц на листе). В противном случае начало находится в верхнем левом углу области изображения (т. е. внутри полей).

Владелец: GtkPrintOperation

Флаги: Чтение / Запись

Значение по умолчанию: FALSE

С версии: 2.10

Подробное описание сигналов

Сигнал “begin-print”

void
user_function (GtkPrintOperation *operation,
               GtkPrintContext   *context,
               gpointer           user_data)

Издаётся после того, как пользователь закончил изменение настроек печати в диалоге, но до начала фактического рендеринга.

Типичное применение сигнала ::begin-print — использование параметров из GtkPrintContext для соответствующей постраничной обработки документа и последующего задания количества страниц с помощью gtk_print_operation_set_n_pages().

Параметры

operation

объект GtkPrintOperation, на котором был издан сигнал

context

объект GtkPrintContext для текущей операции

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run Last

С: 2.10

Сигнал “create-custom-widget”

GObject*
user_function (GtkPrintOperation *operation,
               gpointer           user_data)

Издаётся при отображении диалога печати. Если в обработчике этого сигнала вы вернёте виджет, он будет добавлен в пользовательскую вкладку диалога печати. Обычно возвращается контейнерный виджет с несколькими виджетами внутри.

Диалог печати владеет возвращённым виджетом, и его жизненный цикл не контролируется приложением. Однако гарантируется, что виджет останется до тех пор, пока не будет издан сигнал “custom-widget-apply” для данной операции. Тогда вы можете извлечь необходимую информацию из виджетов.

Параметры

operation

объект GtkPrintOperation, на котором был издан сигнал

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Возвращаемое значение

Пользовательский виджет, который встраивается в диалог печати, или NULL.

[transfer none]

Флаги: Run Last

С: 2.10

Сигнал “custom-widget-apply”

void
user_function (GtkPrintOperation *operation,
               GtkWidget         *widget,
               gpointer           user_data)

Издаётся непосредственно перед “begin-print”, если вы добавили пользовательский виджет в обработчике “create-custom-widget”. Когда вы получаете этот сигнал, вы должны прочитать информацию из пользовательских виджетов, так как виджеты не гарантированно будут доступны позже.

Параметры

operation

объект GtkPrintOperation, на котором был издан сигнал

widget

пользовательский виджет, добавленный в обработчике create-custom-widget

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run Last

С: 2.10

Сигнал “done”

void
user_function (GtkPrintOperation      *operation,
               GtkPrintOperationResult result,
               gpointer                user_data)

Издаётся, когда операция печати завершила все необходимые действия.

result предоставляет информацию о произошедших событиях во время выполнения. Если result имеет значение GTK_PRINT_OPERATION_RESULT_ERROR, можно вызвать gtk_print_operation_get_error() для получения дополнительной информации.

Если отслеживание состояния печати включено, gtk_print_operation_is_finished() может всё ещё возвращать FALSE после того, как был издан сигнал “done”.

Параметры

operation

объект GtkPrintOperation, на котором был издан сигнал

result

результат операции печати

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run Last

С: 2.10

Сигнал “draw-page”

void
user_function (GtkPrintOperation *operation,
               GtkPrintContext   *context,
               int                page_nr,
               gpointer           user_data)

Издаётся для каждой печатаемой страницы. Обработчик сигнала должен отобразить страницу page_nr на контекст Cairo, полученный из context с помощью gtk_print_context_get_cairo_context().

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);
}

Используйте gtk_print_operation_set_use_full_page() и gtk_print_operation_set_unit() перед началом операции печати, чтобы настроить преобразование контекста Cairo в соответствии с вашими потребностями.

Параметры

operation

объект GtkPrintOperation, на котором был издан сигнал

context

объект GtkPrintContext для текущей операции

page_nr

номер текущей печатаемой страницы (нумерация с 0)

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run Last

С: 2.10

Сигнал “end-print”

void
user_function (GtkPrintOperation *operation,
               GtkPrintContext   *context,
               gpointer           user_data)

Издаётся после того, как все страницы были отрисованы. Обработчик этого сигнала может освободить ресурсы, выделенные в обработчике сигнала “begin-print”.

Параметры

operation

объект GtkPrintOperation, на котором был издан сигнал

context

объект GtkPrintContext для текущей операции

user_data

данные пользователя, заданные при подключении обработчика сигнала.

Флаги: Run Last

С: 2.10

Сигнал “paginate”

gboolean
user_function (GtkPrintOperation *operation,
               GtkPrintContext   *context,
               gpointer           user_data)

Выполняется после сигнала «begin-print», но до начала фактического рендеринга. Он продолжает выполняться до тех пор, пока обработчик подключенного сигнала не вернёт значение TRUE.

Сигнал ::paginate предназначен для разбиения документа на небольшие части для постраничной обработки, чтобы избежать блокировки пользовательского интерфейса на длительное время. Обработчик сигнала должен обновить количество страниц с помощью gtk_print_operation_set_n_pages() и вернуть значение TRUE, если документ полностью разбит на страницы.

Если вам не требуется постраничная обработка по частям, вы можете выполнить её целиком в обработчике ::begin-print и установить количество страниц оттуда.

Параметры

operation

объект GtkPrintOperation, на котором был выдан сигнал

context

контекст GtkPrintContext для текущей операции

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE если постраничная обработка завершена

Флаги: Run Last

С версии: 2.10

Сигнал “preview”

gboolean
user_function (GtkPrintOperation        *operation,
               GtkPrintOperationPreview *preview,
               GtkPrintContext          *context,
               GtkWindow                *parent,
               gpointer                  user_data)

Выполняется при запросе предварительного просмотра в системном диалоге.

Обработчик по умолчанию для этого сигнала использует внешнее приложение-просмотрщик для предварительного просмотра.

Для реализации пользовательского предварительного просмотра приложения необходимо вернуть 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() (обычно в ответ на нажатие пользователем кнопки закрытия).

Параметры

operation

объект GtkPrintOperation, на котором был выдан сигнал

preview

объект GtkPrintOperationPreview для текущей операции

context

объект GtkPrintContext, который будет использован

parent

окно GtkWindow, используемое в качестве родительского окна, или NULL.

[allow-none]

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Возвращаемое значение

TRUE если слушатель хочет взять под свой контроль предварительный просмотр

Флаги: Run Last

С версии: 2.10

Сигнал “request-page-setup”

void
user_function (GtkPrintOperation *operation,
               GtkPrintContext   *context,
               int                page_nr,
               GtkPageSetup      *setup,
               gpointer           user_data)

Выполняется один раз для каждой печатаемой страницы, чтобы дать приложению возможность изменить параметры страницы. Любые изменения, внесённые в setup, будут действовать только для печати этой страницы.

Параметры

operation

объект GtkPrintOperation, на котором был выдан сигнал

context

контекст GtkPrintContext для текущей операции

page_nr

номер текущей печатаемой страницы (нумерация с 0)

setup

объект GtkPageSetup

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Флаги: Run Last

С версии: 2.10

Сигнал “status-changed”

void
user_function (GtkPrintOperation *operation,
               gpointer           user_data)

Выполняется между различными фазами операции печати. См. GtkPrintStatus для фаз, которые различаются. Используйте gtk_print_operation_get_status() для определения текущего состояния.

Параметры

operation

объект GtkPrintOperation, на котором был выдан сигнал

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Флаги: Run Last

С версии: 2.10

Сигнал “update-custom-widget”

void
user_function (GtkPrintOperation *operation,
               GtkWidget         *widget,
               GtkPageSetup      *setup,
               GtkPrintSettings  *settings,
               gpointer           user_data)

Выполняется после изменения выбранного принтера. Фактические параметры страницы и настройки печати передаются пользовательскому виджету, который может обновить себя в соответствии с этим изменением.

Параметры

operation

объект GtkPrintOperation, на котором был выдан сигнал

widget

пользовательский виджет, добавленный в create-custom-widget

setup

фактические параметры страницы

settings

фактические настройки печати

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Флаги: Run Last

С версии: 2.18

Сигнал “got-page-size”

void
user_function (GtkPrintOperationPreview *preview,
               GtkPrintContext          *context,
               GtkPageSetup             *page_setup,
               gpointer                  user_data)

Сигнал ::got-page-size выполняется один раз для каждой страницы, которая рендерится в предварительном просмотре.

Обработчик этого сигнала должен обновить context в соответствии с page_setup и настроить подходящий cairo-контекст с помощью gtk_print_context_set_cairo_context().

Параметры

preview

объект, на котором генерируется сигнал

context

текущий GtkPrintContext

page_setup

объект GtkPageSetup для текущей страницы

user_data

пользовательские данные, установленные при подключении обработчика сигнала.

Флаги: Run Last

Сигнал “ready”

void
user_function (GtkPrintOperationPreview *preview,
               GtkPrintContext          *context,
               gpointer                  user_data)

Сигнал ::ready генерируется один раз на операцию предварительного просмотра перед отрисовкой первой страницы.

Обработчик этого сигнала может быть использован для задач настройки.

Параметры

preview

объект, на котором генерируется сигнал

context

текущий GtkPrintContext

user_data

данные пользователя, установленные при подключении обработчика сигнала.

Флаги: Run Last

См. также

GtkPrintContext, GtkPrintUnixDialog

© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.24/gtk3-High-level-Printing-API.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API