Spec-Zone.ru › GTK 4.0

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 ()
int 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 char * gtk_print_operation_get_status_string ()
gboolean gtk_print_operation_is_finished ()
void gtk_print_operation_set_support_selection ()
gboolean gtk_print_operation_get_support_selection ()
void gtk_print_operation_set_has_selection ()
gboolean gtk_print_operation_get_has_selection ()
void gtk_print_operation_set_embed_page_setup ()
gboolean gtk_print_operation_get_embed_page_setup ()
GtkPageSetup * gtk_print_run_page_setup_dialog ()
void (*GtkPageSetupDoneFunc) ()
void gtk_print_run_page_setup_dialog_async ()
void gtk_print_operation_preview_end_preview ()
gboolean gtk_print_operation_preview_is_selected ()
void gtk_print_operation_preview_render_page ()

Свойства

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

Сигналы

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

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

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

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 разрешить асинхронную работу

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

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

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]

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]

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]

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]

gtk_print_operation_set_job_name ()

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

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

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

Параметры

op

a GtkPrintOperation

job_name

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

gtk_print_operation_set_n_pages ()

void
gtk_print_operation_set_n_pages (GtkPrintOperation *op,
                                 int n_pages);

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

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

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

Параметры

op

a GtkPrintOperation

n_pages

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

gtk_print_operation_get_n_pages_to_print ()

int
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

a GtkPrintOperation

Возвращает

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

gtk_print_operation_set_current_page ()

void
gtk_print_operation_set_current_page (GtkPrintOperation *op,
                                      int current_page);

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

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

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

Параметры

op

объект GtkPrintOperation

current_page

номер текущей страницы, нумерация с 0

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 для всей страницы

gtk_print_operation_set_unit ()

void
gtk_print_operation_set_unit (GtkPrintOperation *op,
                              GtkUnit unit);

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

Параметры

op

объект GtkPrintOperation

unit

единица измерения

gtk_print_operation_set_export_filename ()

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

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

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

Параметры

op

объект GtkPrintOperation

filename

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

[type filename]

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 для отображения диалога прогресса

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 для отслеживания состояния после печати

gtk_print_operation_set_custom_tab_label ()

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

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

Параметры

op

объект GtkPrintOperation

label

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

[allow-none]

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”, когда завершится.

gtk_print_operation_cancel ()

void
gtk_print_operation_cancel (GtkPrintOperation *op);

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

Параметры

op

a GtkPrintOperation

gtk_print_operation_draw_page_finish ()

void
gtk_print_operation_draw_page_finish (GtkPrintOperation *op);

Сигнализирует о завершении отрисовки страницы.

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

Параметры

op

a GtkPrintOperation

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

gtk_print_operation_get_status ()

GtkPrintStatus
gtk_print_operation_get_status (GtkPrintOperation *op);

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

Параметры

op

a GtkPrintOperation

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

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

gtk_print_operation_get_status_string ()

const char *
gtk_print_operation_get_status_string (GtkPrintOperation *op);

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

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

Параметры

op

a GtkPrintOperation

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

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

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, если операция печати завершена.

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 для поддержки выбора

gtk_print_operation_get_support_selection ()

gboolean
gtk_print_operation_get_support_selection
                               (GtkPrintOperation *op);

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

Параметры

op

a GtkPrintOperation

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

поддерживает ли приложение печать выбора

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

a GtkPrintOperation

has_selection

TRUE указывает, что выбор существует

gtk_print_operation_get_has_selection ()

gboolean
gtk_print_operation_get_has_selection (GtkPrintOperation *op);

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

Параметры

op

a GtkPrintOperation

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

существует ли выбор

gtk_print_operation_set_embed_page_setup ()

void
gtk_print_operation_set_embed_page_setup
                               (GtkPrintOperation *op,
                                gboolean embed);

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

Параметры

op

a GtkPrintOperation

embed

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

gtk_print_operation_get_embed_page_setup ()

gboolean
gtk_print_operation_get_embed_page_setup
                               (GtkPrintOperation *op);

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

Параметры

op

a GtkPrintOperation

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

встроены ли комбинации выбора параметров страницы

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

a GtkPrintSettings

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

новый GtkPageSetup.

[transfer full]

GtkPageSetupDoneFunc ()

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

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

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

Параметры

page_setup

GtkPageSetup, переданный в gtk_print_run_page_setup_dialog_async()

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

a GtkPrintSettings

done_cb

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

[scope async]

data

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

gtk_print_operation_preview_end_preview ()

void
gtk_print_operation_preview_end_preview
                               (GtkPrintOperationPreview *preview);

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

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

Параметры

preview

a GtkPrintOperationPreview

gtk_print_operation_preview_is-selected ()

gboolean
gtk_print_operation_preview_is_selected
                               (GtkPrintOperationPreview *preview,
                                int page_nr);

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

Параметры

preview

a GtkPrintOperationPreview

page_nr

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

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

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

gtk_print_operation_preview_render_page ()

void
gtk_print_operation_preview_render_page
                               (GtkPrintOperationPreview *preview,
                                int page_nr);

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

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

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

Параметры

preview

a GtkPrintOperationPreview

page_nr

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

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

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

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

enum 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

Печать была прервана.

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

enum 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

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

enum GtkPrintError

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

Члены

GTK_PRINT_ERROR_GENERAL

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

GTK_PRINT_ERROR_INTERNAL_ERROR

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

GTK_PRINT_ERROR_NOMEM

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

GTK_PRINT_ERROR_INVALID_FILE

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

GTK_PRINT_ERROR

#define GTK_PRINT_ERROR gtk_print_error_quark ()

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

GtkPrintOperationPreview

typedef struct _GtkPrintOperationPreview GtkPrintOperationPreview;

Подробное описание свойств

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

  “allow-async”              gboolean

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

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

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

Владелец: GtkPrintOperation

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

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

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

  “current-page”             int

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

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

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

Владелец: GtkPrintOperation

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

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

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

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

  “custom-tab-label”         char *

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

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

Владелец: GtkPrintOperation

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

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

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

  “default-page-setup”       GtkPageSetup *

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

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

Владелец: GtkPrintOperation

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

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

  “embed-page-setup”         gboolean

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

Владелец: GtkPrintOperation

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

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

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

  “export-filename”          char *

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

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

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

Владелец: GtkPrintOperation

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

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

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

  “has-selection”            gboolean

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

Владелец: GtkPrintOperation

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

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

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

  “job-name”                 char *

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

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

Владелец: GtkPrintOperation

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

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

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

  “n-pages”                  int

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

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

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

Владелец: GtkPrintOperation

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

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

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

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

  “n-pages-to-print”         int

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

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

Владелец: GtkPrintOperation

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

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

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

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

  “print-settings”           GtkPrintSettings *

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

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

Владелец: GtkPrintOperation

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

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

  “show-progress”            gboolean

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

Владелец: GtkPrintOperation

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

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

Свойство “status”

  “status”                   GtkPrintStatus

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

Владелец: GtkPrintOperation

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

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

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

  “status-string”            char *

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

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

Владелец: GtkPrintOperation

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

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

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

  “support-selection”        gboolean

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

Владелец: GtkPrintOperation

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

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

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

  “track-print-status”       gboolean

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

Владелец: GtkPrintOperation

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

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

Свойство “unit”

  “unit”                     GtkUnit

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

Владелец: GtkPrintOperation

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

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

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

  “use-full-page”            gboolean

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

Владелец: GtkPrintOperation

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

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

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

Сигнал “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

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

Флаги: Выполнять последним

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

GObject*
user_function (GtkPrintOperation *operation,
               gpointer           user_data)

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

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

Параметры

operation

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

user_data

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

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

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

[передача ничего]

Флаги: Выполнять последним

Сигнал “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

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

Флаги: Выполнять последним

Сигнал “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

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

Флаги: Выполнять последним

Сигнал “draw-page”

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

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

static GtkPrintSettings *settings = NULL;

static void
do_print (void)
{
  GtkPrintOperation *print;
  GtkPrintOperationResult res;

  print = gtk_print_operation_new ();

  if (settings != NULL)
    gtk_print_operation_set_print_settings (print, settings);

  g_signal_connect (print, "begin_print", G_CALLBACK (begin_print), NULL);
  g_signal_connect (print, "draw_page", G_CALLBACK (draw_page), NULL);

  res = gtk_print_operation_run (print, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,
                                 GTK_WINDOW (main_window), NULL);

  if (res == GTK_PRINT_OPERATION_RESULT_APPLY)
    {
      if (settings != NULL)
        g_object_unref (settings);
      settings = g_object_ref (gtk_print_operation_get_print_settings (print));
    }

  g_object_unref (print);
}

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

Параметры

operation

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

context

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

page_nr

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

user_data

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

Флаги: Выполнять последним

Сигнал “end-print”

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

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

Параметры

operation

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

context

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

user_data

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

Флаги: Выполнять последним

Сигнал “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 если постраничная обработка завершена

Флаги: Выполнять последним

Сигнал “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

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

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

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

Параметры

operation

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

context

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

page_nr

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

setup

объект GtkPageSetup

user_data

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

Флаги: Run Last

Сигнал “status-changed”

void
user_function (GtkPrintOperation *operation,
               gpointer           user_data)

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

Параметры

operation

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

user_data

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

Флаги: Run Last

Сигнал “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

Сигнал “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-old.gnome.org/gtk4/4.0/gtk4-High-level-Printing-API.html

Spec-Zone.ru

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