GtkPrintOperation
GtkPrintOperation — Высокоуровневый API печати
Функции
Свойства
| gboolean | allow-async | Чтение / Запись |
| gint | current-page | Чтение / Запись |
| gchar * | custom-tab-label | Чтение / Запись |
| GtkPageSetup * | default-page-setup | Чтение / Запись |
| gboolean | embed-page-setup | Чтение / Запись |
| gchar * | export-filename | Чтение / Запись |
| gboolean | has-selection | Чтение / Запись |
| gchar * | job-name | Чтение / Запись |
| gint | n-pages | Чтение / Запись |
| gint | n-страниц-для-печати | Чтение |
| GtkPrintSettings * | настройки-печати | Чтение / Запись |
| gboolean | отображение-прогресса | Чтение / Запись |
| GtkPrintStatus | состояние | Чтение |
| gchar * | строка-состояния | Чтение |
| gboolean | поддержка-выбора | Чтение / Запись |
| gboolean | отслеживание-состояния-печати | Чтение / Запись |
| GtkUnit | единица | Чтение / Запись |
| gboolean | использовать-полную-страницу | Чтение / Запись |
Сигналы
Типы и значения
| 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 | ||
allow_async |
|
С: 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 | ||
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 | ||
default_page_setup | a GtkPageSetup, или | [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 |
Возвращаемое значение
настройки страницы по умолчанию.
[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 | ||
print_settings | [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 |
Возвращаемое значение
текущие настройки печати для 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 | ||
job_name | строка, идентифицирующая задание печати |
С: 2.10
gtk_print_operation_set_n_pages ()
void gtk_print_operation_set_n_pages (GtkPrintOperation *op,gint n_pages);
Устанавливает количество страниц в документе.
Это значение должно быть установлено как положительное число до начала рендеринга. Оно может быть установлено в обработчике сигнала “begin-print”.
Обратите внимание, что номера страниц, передаваемые сигналам “request-page-setup” и “draw-page”, нумеруются с нуля, т. е. если пользователь выбрал печать всех страниц, последний сигнал ::draw-page будет для страницы n_pages - 1.
Параметры
op | ||
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 |
|
С: 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 |
|
С: 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 |
|
С: 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 | используемая метка или | [allow-none] |
С: 2.10
gtk_print_operation_run ()
GtkPrintOperationResult gtk_print_operation_run (GtkPrintOperation *op,GtkPrintOperationAction action,GtkWindow *parent,GError **error);
Запускает операцию печати, сначала позволяя пользователю изменить настройки печати в диалоговом окне печати, а затем напечатать документ.
Обычно эта функция не возвращает результат, пока не завершится отрисовка всех страниц. Вы можете подключиться к сигналу “status-changed” на op, чтобы получить некоторую информацию о ходе операции печати. Кроме того, она может использовать рекурсивный цикл обработки событий для отображения диалогового окна печати.
Если вы вызываете gtk_print_operation_set_allow_async() или устанавливаете свойство “allow-async”, операция будет выполняться асинхронно, если это поддерживается платформой. Сигнал “done” будет выпущен с результатом операции, когда она завершится (т. е. когда диалоговое окно отменено или печать выполнена успешно или неудачно).
Обратите внимание, что gtk_print_operation_run() может быть вызван только один раз для заданного объекта GtkPrintOperation.
Параметры
op | объект GtkPrintOperation | |
action | действия, которые нужно выполнить | |
parent | родительское диалоговое окно | [allow-none] |
error | место для возврата ошибок или | [allow-none] |
Возвращает
результат операции печати. Значение GTK_PRINT_OPERATION_RESULT_APPLY указывает на успешное завершение печати. В этом случае рекомендуется получить используемые настройки печати с помощью gtk_print_operation_get_print_settings() и сохранить их для повторного использования в следующей операции печати. Значение GTK_PRINT_OPERATION_RESULT_IN_PROGRESS означает, что операция выполняется асинхронно и вызовет сигнал “done”, когда завершится.
С: 2.10
gtk_print_operation_cancel ()
void
gtk_print_operation_cancel (GtkPrintOperation *op); Отменяет выполняемую операцию печати. Эту функцию можно вызвать из обработчика сигнала “begin-print”, “paginate” или “draw-page”, чтобы остановить текущую операцию печати.
Параметры
op | объект GtkPrintOperation |
С: 2.10
gtk_print_operation_draw_page_finish ()
void
gtk_print_operation_draw_page_finish (GtkPrintOperation *op); Сигнализирует о завершении отрисовки конкретной страницы.
Вызывается после завершения отрисовки страницы (например, отрисовка в другом потоке). Если была вызвана функция gtk_print_operation_set_defer_drawing(), то эта функция должна быть вызвана приложением. В противном случае она вызывается самой библиотекой.
Параметры
op | объект GtkPrintOperation |
С: 2.16
gtk_print_operation_set_defer_drawing ()
void
gtk_print_operation_set_defer_drawing (GtkPrintOperation *op); Устанавливает GtkPrintOperation для ожидания вызова gtk_print_operation_draw_page_finish() из приложения. Может использоваться для отрисовки страницы в другом потоке.
Эта функция должна быть вызвана в обработчике сигнала «draw-page».
Параметры
op | объект GtkPrintOperation |
С: 2.16
gtk_print_operation_get_status ()
GtkPrintStatus
gtk_print_operation_get_status (GtkPrintOperation *op); Возвращает состояние операции печати. Также см. gtk_print_operation_get_status_string().
Параметры
op | объект GtkPrintOperation |
Возвращает
состояние операции печати
С: 2.10
gtk_print_operation_get_status_string ()
const gchar *
gtk_print_operation_get_status_string (GtkPrintOperation *op); Возвращает строковое представление состояния операции печати. Строка переведена и подходит для отображения статуса печати, например, в GtkStatusbar.
Используйте gtk_print_operation_get_status() для получения значения статуса, подходящего для программирования.
Параметры
op | объект GtkPrintOperation |
Возвращает
строковое представление состояния операции печати
С: 2.10
gtk_print_operation_is_finished ()
gboolean
gtk_print_operation_is_finished (GtkPrintOperation *op); Удобная функция для определения завершения операции печати, как успешно (GTK_PRINT_STATUS_FINISHED), так и безуспешно (GTK_PRINT_STATUS_FINISHED_ABORTED).
Примечание: при включении отслеживания статуса печати операция печати может находиться в состоянии, отличном от завершенного, даже после вызова done, поскольку состояние операции тогда отслеживает состояние задания печати на принтере.
Параметры
op | объект GtkPrintOperation |
Возвращает
TRUE, если операция печати завершена.
С: 2.10
gtk_print_operation_set_support_selection ()
void gtk_print_operation_set_support_selection (GtkPrintOperation *op,gboolean support_selection);
Устанавливает, поддерживает ли GtkPrintOperation выбор.
Параметры
op | объект GtkPrintOperation | |
support_selection |
|
С: 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 |
|
С: 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 |
|
С: 2.18
gtk_print_operation_get-embed-page-setup ()
gboolean
gtk_print_operation_get_embed_page_setup
(GtkPrintOperation *op); Получает значение свойства «embed-page-setup».
Параметры
op | объект GtkPrintOperation |
Возвращает
встроены ли комбинации выбора параметров страницы
С: 2.18
gtk_print_run-page-setup-dialog ()
GtkPageSetup * gtk_print_run_page_setup_dialog (GtkWindow *parent,GtkPageSetup *page_setup,GtkPrintSettings *settings);
Запускает диалог настроек страницы, позволяющий пользователю изменить значения из page_setup . Если пользователь отменяет диалог, возвращаемый GtkPageSetup идентичен переданному page_setup, в противном случае он содержит внесённые изменения в диалоге.
Обратите внимание, что эта функция может использовать рекурсивный цикл главного потока для отображения диалога настроек страницы. Смотрите gtk_print_run_page_setup_dialog_async(), если это проблема.
Параметры
parent | родительский (transient) элемент. | [allow-none] |
page_setup | существующий GtkPageSetup. | [allow-none] |
settings | объект GtkPrintSettings |
С: 2.10
GtkPageSetupDoneFunc ()
void (*GtkPageSetupDoneFunc) (GtkPageSetup *page_setup,gpointer data);
Тип функции, передаваемой в gtk_print_run_page_setup_dialog_async().
Эта функция вызывается при закрытии диалога настроек страницы, а также служит уведомлением об уничтожении для data .
Параметры
page_setup | объект GtkPageSetup, который был | |
data | переданные пользовательские данные в | [closure] |
gtk_print_run-page-setup-dialog_async ()
void gtk_print_run_page_setup_dialog_async (GtkWindow *parent,GtkPageSetup *page_setup,GtkPrintSettings *settings,GtkPageSetupDoneFunc done_cb,gpointer data);
Запускает диалог настроек страницы, позволяющий пользователю изменить значения из page_setup .
В отличие от gtk_print_run_page_setup_dialog(), эта функция возвращается после отображения диалога настроек страницы на платформах, которые это поддерживают, и вызывает done_cb из обработчика сигнала ::response диалога.
Параметры
parent | родительский (transient) элемент, или | [allow-none] |
page_setup | существующий GtkPageSetup, или | [allow-none] |
settings | объект GtkPrintSettings | |
done_cb | функция для вызова при сохранении изменённых параметров страницы. | [scope async] |
data | пользовательские данные для передачи в |
С: 2.10
gtk_print_operation_preview_end_preview ()
void
gtk_print_operation_preview_end_preview
(GtkPrintOperationPreview *preview); Завершает предварительный просмотр.
Эта функция должна быть вызвана для завершения пользовательского предварительного просмотра печати.
Параметры
preview |
Since: 2.10
gtk_print_operation_preview_is_selected ()
gboolean gtk_print_operation_preview_is_selected (GtkPrintOperationPreview *preview,gint page_nr);
Возвращает, включена ли данная страница в набор страниц, выбранных для печати.
Параметры
preview | ||
page_nr | номер страницы |
Возвращает
TRUE, если страница выбрана для печати
Since: 2.10
gtk_print_operation_preview_render_page ()
void gtk_print_operation_preview_render_page (GtkPrintOperationPreview *preview,gint page_nr);
Отображает страницу в предварительном просмотре, используя контекст печати, переданный обработчику “preview” вместе с preview.
Пользовательский предварительный просмотр печати должен использовать эту функцию в своем обработчике ::expose для отображения текущей выбранной страницы.
Обратите внимание, что для этой функции требуется соответствующий контекст cairo, связанный с контекстом печати.
Параметры
preview | ||
page_nr | страница для отображения |
Since: 2.10
Типы и значения
Структура GtkPrintOperation
struct GtkPrintOperation;
Структура GtkPrintOperationClass
struct GtkPrintOperationClass {
GObjectClass parent_class;
void (*done) (GtkPrintOperation *operation,
GtkPrintOperationResult result);
void (*begin_print) (GtkPrintOperation *operation,
GtkPrintContext *context);
gboolean (*paginate) (GtkPrintOperation *operation,
GtkPrintContext *context);
void (*request_page_setup) (GtkPrintOperation *operation,
GtkPrintContext *context,
gint page_nr,
GtkPageSetup *setup);
void (*draw_page) (GtkPrintOperation *operation,
GtkPrintContext *context,
gint page_nr);
void (*end_print) (GtkPrintOperation *operation,
GtkPrintContext *context);
void (*status_changed) (GtkPrintOperation *operation);
GtkWidget *(*create_custom_widget) (GtkPrintOperation *operation);
void (*custom_widget_apply) (GtkPrintOperation *operation,
GtkWidget *widget);
gboolean (*preview) (GtkPrintOperation *operation,
GtkPrintOperationPreview *preview,
GtkPrintContext *context,
GtkWindow *parent);
void (*update_custom_widget) (GtkPrintOperation *operation,
GtkWidget *widget,
GtkPageSetup *setup,
GtkPrintSettings *settings);
};
Члены
| Сигнал, генерируемый, когда операция печати завершила все необходимые действия для печати. | |
| Сигнал, генерируемый после того, как пользователь закончил изменение настроек печати в диалоговом окне, перед началом фактического рендеринга. | |
| Сигнал, генерируемый после сигнала «begin-print», но перед началом фактического рендеринга. | |
| Генерируется один раз для каждой печатаемой страницы, чтобы дать приложению возможность изменить параметры страницы. | |
| Сигнал, генерируемый для каждой печатаемой страницы. | |
| Сигнал, генерируемый после рендеринга всех страниц. | |
| Генерируется между различными фазами операции печати. | |
| Сигнал, генерируемый при отображении диалогового окна печати. | |
| Сигнал, генерируемый непосредственно перед «begin-print», если вы добавили пользовательский виджет в обработчик «create-custom-widget». | |
| Сигнал, генерируемый при запросе предварительного просмотра от родного диалогового окна. | |
| Генерируется после изменения выбранного принтера. |
Перечисление GtkPrintStatus
Статус дает общее представление о завершении текущей операции печати.
Члены
GTK_PRINT_STATUS_INITIAL | Печать еще не началась; этот статус устанавливается изначально и пока отображается диалоговое окно печати. | |
GTK_PRINT_STATUS_PREPARING | Этот статус устанавливается во время генерации сигнала begin-print и во время постраничной обработки. | |
GTK_PRINT_STATUS_GENERATING_DATA | Этот статус устанавливается во время рендеринга страниц. | |
GTK_PRINT_STATUS_SENDING_DATA | Задача печати отправляется на принтер. | |
GTK_PRINT_STATUS_PENDING | Задача печати отправлена на принтер, но не распечатана по какой-либо причине, например, принтер может быть остановлен. | |
GTK_PRINT_STATUS_PENDING_ISSUE | Возникла проблема во время печати, например, замятие бумаги. | |
GTK_PRINT_STATUS_PRINTING | Принтер обрабатывает задачу печати. | |
GTK_PRINT_STATUS_FINISHED | Печать успешно завершена. | |
GTK_PRINT_STATUS_FINISHED_ABORTED | Печать прервана. |
Перечисление GtkPrintOperationAction
Параметр action для gtk_print_operation_run() определяет действие, которое должна выполнить операция печати.
Члены
GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG | Отобразить диалоговое окно печати. | |
GTK_PRINT_OPERATION_ACTION_PRINT | Начать печать без отображения диалогового окна печати, основываясь на текущих настройках печати. | |
GTK_PRINT_OPERATION_ACTION_PREVIEW | Отобразить предварительный просмотр. | |
GTK_PRINT_OPERATION_ACTION_EXPORT | Экспорт в файл. Для этого необходимо установить свойство export-filename. |
Перечисление GtkPrintOperationResult
Значение этого типа возвращается функцией gtk_print_operation_run().
Члены
GTK_PRINT_OPERATION_RESULT_ERROR | Произошла ошибка. | |
GTK_PRINT_OPERATION_RESULT_APPLY | Настройки печати должны быть сохранены. | |
GTK_PRINT_OPERATION_RESULT_CANCEL | Операция печати отменена, настройки печати не должны быть сохранены. | |
GTK_PRINT_OPERATION_RESULT_IN_PROGRESS | Операция печати еще не завершена. Это значение будет возвращено только при асинхронном выполнении. |
Перечисление GtkPrintError
Коды ошибок, которые идентифицируют различные ошибки, которые могут возникнуть при использовании поддержки печати GTK+.
Члены
GTK_PRINT_ERROR_GENERAL | Произошла неопределенная ошибка. | |
GTK_PRINT_ERROR_INTERNAL_ERROR | Произошла внутренняя ошибка. | |
GTK_PRINT_ERROR_NOMEM | Не удалось выделить память. | |
GTK_PRINT_ERROR_INVALID_FILE | Произошла ошибка при загрузке параметров страницы или размера бумаги из ключевого файла. |
GTK_PRINT_ERROR
#define GTK_PRINT_ERROR gtk_print_error_quark ()
Домен ошибок для ошибок GtkPrintError.
GtkPrintOperationPreview
typedef struct _GtkPrintOperationPreview GtkPrintOperationPreview;
Подробное описание свойств
Свойство “allow-async”
“allow-async” gboolean
Определяет, может ли операция печати выполняться асинхронно.
Некоторые системы не поддерживают асинхронную печать, но те, что поддерживают, вернут GTK_PRINT_OPERATION_RESULT_IN_PROGRESS в качестве статуса и отправят сигнал “done”, когда операция фактически завершится.
В порте Windows асинхронная работа вообще не поддерживается (вероятно, это не изменится). На других платформах все действия, кроме GTK_PRINT_OPERATION_ACTION_EXPORT, поддерживают асинхронную работу.
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.10
Свойство “current-page”
“current-page” gint
Текущая страница в документе.
Если это свойство установлено до вызова gtk_print_operation_run(), пользователь сможет выбрать печать только текущей страницы.
Обратите внимание, что это имеет смысл только для предварительно разметенных документов.
Флаги: Чтение / Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
С версии: 2.10
Свойство “custom-tab-label”
“custom-tab-label” gchar *
Используется в качестве метки вкладки, содержащей пользовательские виджеты. Обратите внимание, что это свойство может игнорироваться на некоторых платформах.
Если это свойство NULL, GTK+ использует метку по умолчанию.
Флаги: Чтение / Запись
Значение по умолчанию: NULL
С версии: 2.10
Свойство “default-page-setup”
“default-page-setup” GtkPageSetup *
Используемый по умолчанию GtkPageSetup.
Этот параметр страницы будет использован при вызове gtk_print_operation_run(), но может быть переопределен на странице с помощью подключения к сигналу “request-page-setup”.
Флаги: Чтение / Запись
С версии: 2.10
Свойство “embed-page-setup”
“embed-page-setup” gboolean
Если TRUE, поля для выбора размера страницы и ориентации встроены в страницу настроек.
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.18
Свойство “export-filename”
“export-filename” gchar *
Имя файла для генерации вместо показа диалога печати. В настоящее время поддерживается только формат PDF.
Предполагаемое использование этого свойства – реализация действия «Экспорт в PDF».
Поддержка «Печать в PDF» независима от этого и осуществляется выбором пункта «Печать в PDF» из списка принтеров в диалоге печати.
Флаги: Чтение / Запись
Значение по умолчанию: NULL
С версии: 2.10
Свойство “has-selection”
“has-selection” gboolean
Определяет, есть ли выделение в вашем приложении. Это может позволить вашему приложению печатать выделение. Обычно используется для активации кнопки «Выделение».
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.18
Свойство “job-name”
“job-name” gchar *
Строка, используемая для идентификации задания (например, в приложениях мониторинга, таких как eggcups).
Если вы не задаёте имя задания, GTK+ выбирает его по умолчанию, нумеруя последовательные задания печати.
Флаги: Чтение / Запись
Значение по умолчанию: ""
С версии: 2.10
Свойство “n-pages”
“n-pages” gint
Количество страниц в документе.
Это значение должно быть установлено как положительное число перед началом рендеринга. Оно может быть установлено в обработчике сигнала “begin-print”.
Обратите внимание, что номера страниц, передаваемые сигналам “request-page-setup” и “draw-page”, нумеруются с 0, т.е. если пользователь выбирает печать всех страниц, последний сигнал ::draw-page будет для страницы n_pages - 1.
Флаги: Чтение / Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
С версии: 2.10
Свойство “n-pages-to-print”
“n-pages-to-print” gint
Количество страниц, которые будут напечатаны.
Обратите внимание, что это значение устанавливается на фазе подготовки печати (GTK_PRINT_STATUS_PREPARING), поэтому это значение никогда не должно получаться до фазы генерации данных (GTK_PRINT_STATUS_GENERATING_DATA). Вы можете подключиться к сигналу “status-changed” и вызвать gtk_print_operation_get_n_pages_to_print(), когда статус печати GTK_PRINT_STATUS_GENERATING_DATA. Это обычно используется для отслеживания прогресса операции печати.
Флаги: Чтение
Допустимые значения: >= -1
Значение по умолчанию: -1
С версии: 2.18
Свойство “print-settings”
“print-settings” GtkPrintSettings *
Используемые GtkPrintSettings для инициализации диалога.
Установка этого свойства обычно используется для восстановления настроек печати из предыдущей операции печати, см. gtk_print_operation_run().
Флаги: Чтение / Запись
С версии: 2.10
Свойство “show-progress”
“show-progress” gboolean
Определяет, отображать ли диалог хода выполнения операции печати.
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.10
Свойство “status”
“status” GtkPrintStatus
Статус операции печати.
Флаги: Чтение
Значение по умолчанию: GTK_PRINT_STATUS_INITIAL
С версии: 2.10
Свойство “status-string”
“status-string” gchar *
Строковое представление статуса операции печати. Строка переведена и подходит для отображения статуса печати, например, в GtkStatusbar.
См. свойство “status” для значения статуса, подходящего для программирования.
Флаги: Чтение
Значение по умолчанию: ""
С версии: 2.10
Свойство “support-selection”
“support-selection” gboolean
Если TRUE, операция печати будет поддерживать печать выделения. Это позволяет диалогу печати отображать кнопку «Выделение».
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.18
Свойство “track-print-status”
“track-print-status” gboolean
Если TRUE, операция печати будет пытаться продолжать сообщать о статусе задания печати в очередях принтера и самом принтере. Это позволяет вашему приложению отображать такие проблемы, как «нет бумаги», и когда задание печати фактически доходит до принтера. Однако это часто реализуется с помощью опроса и не должно быть включено, если это не требуется.
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.10
Свойство “unit”
“unit” GtkUnit
Преобразование для контекста cairo, полученного из GtkPrintContext, настраивается таким образом, что расстояния измеряются в единицах unit.
Флаги: Чтение / Запись
Значение по умолчанию: GTK_UNIT_NONE
С версии: 2.10
Свойство “use-full-page”
“use-full-page” gboolean
Если TRUE, преобразование для контекста cairo, полученного из GtkPrintContext, устанавливает начало в верхнем левом углу страницы (что может не совпадать с верхним левым углом листа в зависимости от ориентации страницы и количества страниц на листе). В противном случае начало находится в верхнем левом углу области изображения (т.е. внутри полей).
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.10
Подробное описание сигналов
Сигнал “begin-print”
void user_function (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data)
Издаётся после того, как пользователь закончил изменение параметров печати в диалоге, перед началом фактического рендеринга.
Типичное применение сигнала ::begin-print — использование параметров из GtkPrintContext для соответствующей постраничной обработки документа, а затем установка количества страниц с помощью gtk_print_operation_set_n_pages().
Параметры
operation | обрабатываемая GtkPrintOperation | |
context | GtkPrintContext для текущей операции | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Run Last
С: 2.10
Сигнал “create-custom-widget”
GObject* user_function (GtkPrintOperation *operation, gpointer user_data)
Издаётся при отображении диалога печати. Если вы вернёте виджет в обработчике этого сигнала, он будет добавлен в пользовательскую вкладку диалога печати. Обычно вы возвращаете контейнерный виджет с несколькими виджетами внутри.
Диалог печати владеет возвращённым виджетом, и его жизненный цикл не контролируется приложением. Однако гарантируется, что виджет сохранится до тех пор, пока не будет издан сигнал «custom-widget-apply» для операции. Затем вы можете считать любую необходимую информацию из виджетов.
Параметры
operation | обрабатываемая GtkPrintOperation | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Возвращаемое значение
Пользовательский виджет, встраиваемый в диалог печати, или NULL.
[transfer none]
Флаги: Run Last
С: 2.10
Сигнал “custom-widget-apply”
void user_function (GtkPrintOperation *operation, GtkWidget *widget, gpointer user_data)
Издаётся непосредственно перед «begin-print», если вы добавили пользовательский виджет в обработчик «create-custom-widget». При получении этого сигнала вы должны прочитать информацию из пользовательских виджетов, так как виджеты не гарантируются к существованию впоследствии.
Параметры
operation | обрабатываемая GtkPrintOperation | |
widget | пользовательский виджет, добавленный в create-custom-widget | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Run Last
С: 2.10
Сигнал “done”
void user_function (GtkPrintOperation *operation, GtkPrintOperationResult result, gpointer user_data)
Издаётся, когда операция печати завершила все необходимые действия.
result предоставляет информацию о произошедшем во время выполнения. Если result равен GTK_PRINT_OPERATION_RESULT_ERROR, можно вызвать gtk_print_operation_get_error() для получения дополнительной информации.
Если отслеживание состояния печати было включено, gtk_print_operation_is_finished() может всё ещё возвращать FALSE после того, как был издан сигнал «done».
Параметры
operation | обрабатываемая GtkPrintOperation | |
result | результат операции печати | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Run Last
С: 2.10
Сигнал “draw-page”
void user_function (GtkPrintOperation *operation, GtkPrintContext *context, gint page_nr, gpointer user_data)
Издаётся для каждой печатаемой страницы. Обработчик сигнала должен отрисовать страницу page_nr на контексте Cairo, полученном от context с помощью gtk_print_context_get_cairo_context().
staticGtkPrintSettings*settings = NULL; staticvoid do_print(void) { GtkPrintOperation*print; GtkPrintOperationResult res; print =gtk_print_operation_new(); if(settings != NULL) gtk_print_operation_set_print_settings(print, settings); g_signal_connect(print,"begin_print",G_CALLBACK(begin_print), NULL); g_signal_connect(print,"draw_page",G_CALLBACK(draw_page), NULL); res =gtk_print_operation_run(print, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, GTK_WINDOW(main_window), NULL); if(res == GTK_PRINT_OPERATION_RESULT_APPLY) { if(settings != NULL) g_object_unref(settings); settings =g_object_ref(gtk_print_operation_get_print_settings(print)); } g_object_unref(print); }
Используйте gtk_print_operation_set_use_full_page() и gtk_print_operation_set_unit() перед началом операции печати для настройки преобразования контекста Cairo в соответствии с вашими потребностями.
Параметры
operation | обрабатываемая GtkPrintOperation | |
context | GtkPrintContext для текущей операции | |
page_nr | номер печатаемой страницы (нумерация с 0) | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Run Last
С: 2.10
Сигнал “end-print”
void user_function (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data)
Издаётся после отрисовки всех страниц. Обработчик этого сигнала может очистить любые ресурсы, выделенные в обработчике сигнала «begin-print».
Параметры
operation | обрабатываемая GtkPrintOperation | |
context | GtkPrintContext для текущей операции | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Run Last
С: 2.10
Сигнал “paginate”
gboolean user_function (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data)
Издаётся после сигнала “begin-print”, но до начала фактического рендеринга. Он продолжает издаваться до тех пор, пока обработчик подключенного сигнала не вернёт TRUE.
Сигнал ::paginate предназначен для разбиения документа на небольшие части при постраничном выводе, чтобы избежать длительного блокирования пользовательского интерфейса. Обработчик сигнала должен обновить количество страниц с помощью gtk_print_operation_set_n_pages() и вернуть TRUE, если документ был полностью разбит на страницы.
Если вам не нужно выполнять постраничный вывод по частям, вы можете сделать это полностью в обработчике ::begin-print и установить количество страниц оттуда.
Параметры
operation | обрабатываемый GtkPrintOperation | |
context | контекст GtkPrintContext для текущей операции | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE, если постраничный вывод завершён
Флаги: Run Last
С: 2.10
Сигнал “preview”
gboolean user_function (GtkPrintOperation *operation, GtkPrintOperationPreview *preview, GtkPrintContext *context, GtkWindow *parent, gpointer user_data)
Издаётся, когда от системного диалога запрашивается предварительный просмотр.
Обработчик по умолчанию для этого сигнала использует внешнее приложение-просмоторщик для предварительного просмотра.
Чтобы реализовать пользовательский предварительный просмотр, приложение должно вернуть TRUE из своего обработчика для этого сигнала. Для использования предоставленного context для реализации предварительного просмотра, ему необходимо предоставить подходящий контекст Cairo с помощью gtk_print_context_set_cairo_context().
Реализация пользовательского предварительного просмотра может использовать gtk_print_operation_preview_is_selected() и gtk_print_operation_preview_render_page() для поиска страниц, которые выбраны для печати, и их рендеринга. Предварительный просмотр должен быть завершён вызовом gtk_print_operation_preview_end_preview() (обычно в ответ на щелчок пользователем кнопки закрытия).
Параметры
operation | обрабатываемый GtkPrintOperation | |
preview | предварительный просмотр GtkPrintOperationPreview для текущей операции | |
context | контекст GtkPrintContext, который будет использоваться | |
parent | [allow-none] | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE, если слушатель хочет взять под контроль предварительный просмотр
Флаги: Run Last
С: 2.10
Сигнал “request-page-setup”
void user_function (GtkPrintOperation *operation, GtkPrintContext *context, gint page_nr, GtkPageSetup *setup, gpointer user_data)
Издаётся один раз для каждой печатаемой страницы, чтобы дать приложению возможность изменить параметры страницы. Любые изменения, внесённые в setup, будут действительны только для печати этой страницы.
Параметры
operation | обрабатываемый GtkPrintOperation | |
context | контекст GtkPrintContext для текущей операции | |
page_nr | номер текущей печатаемой страницы (нумерация с 0) | |
setup | параметры страницы GtkPageSetup | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Run Last
С: 2.10
Сигнал “status-changed”
void user_function (GtkPrintOperation *operation, gpointer user_data)
Издаётся между различными фазами операции печати. См. GtkPrintStatus для фаз, которые различаются. Используйте gtk_print_operation_get_status() для определения текущего статуса.
Параметры
operation | обрабатываемый GtkPrintOperation | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Run Last
С: 2.10
Сигнал “update-custom-widget”
void user_function (GtkPrintOperation *operation, GtkWidget *widget, GtkPageSetup *setup, GtkPrintSettings *settings, gpointer user_data)
Издаётся после изменения выбранного принтера. Фактические параметры страницы и настройки печати передаются пользовательскому виджету, который может обновить себя в соответствии с этим изменением.
Параметры
operation | обрабатываемый GtkPrintOperation | |
widget | пользовательский виджет, добавленный в create-custom-widget | |
setup | актуальные параметры страницы | |
settings | актуальные настройки печати | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Run Last
С: 2.18
Сигнал “got-page-size”
void user_function (GtkPrintOperationPreview *preview, GtkPrintContext *context, GtkPageSetup *page_setup, gpointer user_data)
Сигнал ::got-page-size генерируется один раз для каждой страницы, которая отображается в предварительном просмотре.
Обработчик этого сигнала должен обновить context в соответствии с page_setup и настроить подходящий контекст cairo, используя gtk_print_context_set_cairo_context().
Параметры
preview | объект, на котором генерируется сигнал | |
context | текущий GtkPrintContext | |
page_setup | GtkPageSetup для текущей страницы | |
user_data | пользовательские данные, заданные при подключении обработчика сигнала. |
Флаги: Run Last
Сигнал “ready”
void user_function (GtkPrintOperationPreview *preview, GtkPrintContext *context, gpointer user_data)
Сигнал ::ready генерируется один раз на операцию предварительного просмотра, перед отрисовкой первой страницы.
Обработчик этого сигнала может использоваться для задач настройки.
Параметры
preview | объект, на котором генерируется сигнал | |
context | текущий GtkPrintContext | |
user_data | пользовательские данные, заданные при подключении обработчика сигнала. |
Флаги: Run Last
См. также
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.20/gtk3-High-level-Printing-API.html