Spec-Zone.ru › GTK 3.20

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 Чтение / Запись
gint current-page Чтение / Запись
gchar * custom-tab-label Чтение / Запись
GtkPageSetup * default-page-setup Чтение / Запись
gboolean embed-page-setup Чтение / Запись
gchar * export-filename Чтение / Запись
gboolean has-selection Чтение / Запись
gchar * job-name Чтение / Запись
gint n-pages Чтение / Запись
gint n-страниц-для-печати Чтение
GtkPrintSettings * настройки-печати Чтение / Запись
gboolean отображение-прогресса Чтение / Запись
GtkPrintStatus состояние Чтение
gchar * строка-состояния Чтение
gboolean поддержка-выбора Чтение / Запись
gboolean отслеживание-состояния-печати Чтение / Запись
GtkUnit единица Чтение / Запись
gboolean использовать-полную-страницу Чтение / Запись

Сигналы

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 Выполнить последним

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

struct GtkPrintOperation
struct GtkPrintOperationClass
enum GtkPrintStatus
enum GtkPrintOperationAction
enum GtkPrintOperationResult
enum GtkPrintError
#define 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

объект 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

объект 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

объект 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

объект GtkPrintOperation

С: 2.16

gtk_print_operation_get_status ()

GtkPrintStatus
gtk_print_operation_get_status (GtkPrintOperation *op);

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

Параметры

op

объект 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

объект 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

объект GtkPrintOperation

Возвращает

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

С: 2.10

gtk_print_operation_set_support_selection ()

void
gtk_print_operation_set_support_selection
                               (GtkPrintOperation *op,
                                gboolean support_selection);

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

Параметры

op

объект 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

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

[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

родительский (transient) элемент, или 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

Since: 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, если страница выбрана для печати

Since: 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

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

Since: 2.10

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

Структура GtkPrintOperation

struct GtkPrintOperation;

Структура 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, поддерживают асинхронную работу.

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

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

С версии: 2.10

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

  “current-page”             gint

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

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

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

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

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

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

С версии: 2.10

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

  “custom-tab-label”         gchar *

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

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

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

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

С версии: 2.10

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

  “default-page-setup”       GtkPageSetup *

Используемый по умолчанию GtkPageSetup.

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

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

С версии: 2.10

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

  “embed-page-setup”         gboolean

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

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

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

С версии: 2.18

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

  “export-filename”          gchar *

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

Предполагаемое использование этого свойства – реализация действия «Экспорт в PDF».

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

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

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

С версии: 2.10

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

  “has-selection”            gboolean

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

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

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

С версии: 2.18

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

  “job-name”                 gchar *

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

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

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

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

С версии: 2.10

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

  “n-pages”                  gint

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

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

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

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

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

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

С версии: 2.10

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

  “n-pages-to-print”         gint

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

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

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

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

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

С версии: 2.18

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

  “print-settings”           GtkPrintSettings *

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

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

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

С версии: 2.10

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

  “show-progress”            gboolean

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

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

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

С версии: 2.10

Свойство “status”

  “status”                   GtkPrintStatus

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

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

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

С версии: 2.10

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

  “status-string”            gchar *

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

См. свойство “status” для значения статуса, подходящего для программирования.

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

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

С версии: 2.10

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

  “support-selection”        gboolean

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

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

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

С версии: 2.18

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

  “track-print-status”       gboolean

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

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

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

С версии: 2.10

Свойство “unit”

  “unit”                     GtkUnit

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

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

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

С версии: 2.10

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

  “use-full-page”            gboolean

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

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

Значение по умолчанию: 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,
               gint               page_nr,
               gpointer           user_data)

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

staticGtkPrintSettings*settings = NULL;

staticvoid
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,
               gint               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.20/gtk3-High-level-Printing-API.html

Spec-Zone.ru

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