Spec-Zone.ru › GTK 3.22

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 разрешить-асинхронный Чтение / Запись
gint текущая-страница Чтение / Запись
gchar * пользовательская-метка-вкладки Чтение / Запись
GtkPageSetup * по-умолчанию-настройка-страницы Чтение / Запись
gboolean встроить-настройку-страницы Чтение / Запись
gchar * экспорт-имя-файла Чтение / Запись
gboolean имеет-выделение Чтение / Запись
gchar * имя-задачи Чтение / Запись
gint кол-во-страниц Чтение / Запись
gint кол-во-страниц-на-печать Чтение
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”, начинаются с 0, т. е. если пользователь выбирает печать всех страниц, последний сигнал ::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, поддерживают асинхронную работу.

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

Значение по умолчанию: 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().

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

the GtkPrintOperation на котором был выпущен сигнал

context

the 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

the GtkPrintOperation на котором был выпущен сигнал

preview

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

context

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

parent

the 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

the GtkPrintOperation на котором был выпущен сигнал

context

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

page_nr

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

setup

the GtkPageSetup

user_data

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

Флаги: Run Last

С: 2.10

Сигнал “status-changed”

void
user_function (GtkPrintOperation *operation,
               gpointer           user_data)

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

Параметры

operation

the 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

the 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.22/gtk3-High-level-Printing-API.html

Spec-Zone.ru

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