GtkPrintOperation
GtkPrintOperation — API для печати высокого уровня
Функции
Свойства
| gboolean | разрешить-асинхронный | Чтение / Запись |
| gint | текущая-страница | Чтение / Запись |
| gchar * | пользовательская-метка-вкладки | Чтение / Запись |
| GtkPageSetup * | по-умолчанию-настройка-страницы | Чтение / Запись |
| gboolean | встроить-настройку-страницы | Чтение / Запись |
| gchar * | экспорт-имя-файла | Чтение / Запись |
| gboolean | имеет-выделение | Чтение / Запись |
| gchar * | имя-задачи | Чтение / Запись |
| gint | кол-во-страниц | Чтение / Запись |
| gint | кол-во-страниц-на-печать | Чтение |
| 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”, начинаются с 0, т. е. если пользователь выбирает печать всех страниц, последний сигнал ::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 | ||
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 |
С: 2.10
gtk_print_operation_draw_page_finish ()
void
gtk_print_operation_draw_page_finish (GtkPrintOperation *op); Указывает, что отрисовка конкретной страницы завершена.
Вызывается после завершения отрисовки страницы (например, в другом потоке). Если gtk_print_operation_set_defer_drawing() был вызван ранее, то эта функция должна быть вызвана приложением. В противном случае она вызывается самой библиотекой.
Параметры
op |
С: 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 |
С: 2.16
gtk_print_operation_get_status ()
GtkPrintStatus
gtk_print_operation_get_status (GtkPrintOperation *op); Возвращает состояние операции печати. Также см. gtk_print_operation_get_status_string().
Параметры
op |
Возвращаемое значение
состояние операции печати
С: 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 |
Возвращаемое значение
строковое представление состояния операции печати
С: 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 |
Возвращаемое значение
TRUE, если операция печати завершена.
С: 2.10
gtk_print_operation_set_support-selection ()
void gtk_print_operation_set_support_selection (GtkPrintOperation *op,gboolean support_selection);
Устанавливает, поддерживает ли GtkPrintOperation выбор.
Параметры
op | ||
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 | родительский элемент. | [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 | родительский элемент или | [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 |
С: 2.10
gtk_print_operation_preview_is_selected ()
gboolean gtk_print_operation_preview_is_selected (GtkPrintOperationPreview *preview,gint page_nr);
Возвращает, включена ли данная страница в набор страниц, выбранных для печати.
Параметры
preview | ||
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 | ||
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);
};
Члены
| Сигнал, генерируемый, когда операция печати завершила все необходимые действия для печати. | |
| Сигнал, генерируемый после того, как пользователь завершил изменение настроек печати в диалоге, перед началом фактического рендеринга. | |
| Сигнал, генерируемый после сигнала «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().
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 для использования в качестве родительского окна или | [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
См. также
© 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