GtkPrintOperation
GtkPrintOperation — API для высокоуровневой печати
Функции
| 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 | Выполнить последним |
Типы и значения
| структура | GtkPrintOperation |
| структура | GtkPrintOperationClass |
| перечисление | GtkPrintStatus |
| перечисление | GtkPrintOperationAction |
| перечисление | GtkPrintOperationResult |
| перечисление | GtkPrintError |
| #определить | 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 | ||
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, поддерживают асинхронную работу.
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.10
Свойство “current-page”
“current-page” int
Текущая страница в документе.
Если это свойство установлено до вызова gtk_print_operation_run(), пользователь сможет выбрать для печати только текущую страницу.
Обратите внимание, что это имеет смысл только для предварительно разбитныx на страницы документов.
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
С версии: 2.10
Свойство “custom-tab-label”
“custom-tab-label” char *
Используется в качестве метки вкладки, содержащей пользовательские виджеты. Обратите внимание, что это свойство может быть проигнорировано на некоторых платформах.
Если это свойство NULL, GTK+ использует метку по умолчанию.
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
Значение по умолчанию: NULL
С версии: 2.10
Свойство “default-page-setup”
“default-page-setup” GtkPageSetup *
Используемая по умолчанию настройка страницы GtkPageSetup.
Эта настройка страницы будет использоваться функцией gtk_print_operation_run(), но её можно переопределить на страницу за страницей, подключившись к сигналу “request-page-setup”.
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
С версии: 2.10
Свойство “embed-page-setup”
“embed-page-setup” gboolean
Если TRUE, поля выбора размера страницы и ориентации встроены в страницу настроек страницы.
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.18
Свойство “export-filename”
“export-filename” char *
Имя файла для создания вместо отображения диалога печати. В настоящее время поддерживается только формат PDF.
Это свойство предназначено для реализации действий «Экспорт в PDF».
Поддержка «Печать в PDF» независима от этого и осуществляется путем выбора пункта «Печать в PDF» из списка принтеров в диалоге печати.
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
Значение по умолчанию: NULL
С версии: 2.10
Свойство “has-selection”
“has-selection” gboolean
Определяет, есть ли выделение в вашем приложении. Это может позволить вашему приложению печатать выделение. Обычно используется для активации кнопки «Выделение».
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.18
Свойство “job-name”
“job-name” char *
Строка, используемая для идентификации задания (например, в приложениях мониторинга, таких как eggcups).
Если вы не зададите имя задания, GTK+ выберет имя по умолчанию, нумеруя последовательные задания печати.
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
Значение по умолчанию: ""
С версии: 2.10
Свойство “n-pages”
“n-pages” int
Количество страниц в документе.
Это свойство должно быть установлено в положительное число до начала рендеринга. Его можно установить в обработчике сигнала “begin-print”.
Обратите внимание, что номера страниц, передаваемые сигналам “request-page-setup” и “draw-page”, нумеруются с 0, т. е. если пользователь выбрал печать всех страниц, последний сигнал ::draw-page будет для страницы n_pages - 1.
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
Допустимые значения: >= -1
Значение по умолчанию: -1
С версии: 2.10
Свойство “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
С версии: 2.18
Свойство “print-settings”
“print-settings” GtkPrintSettings *
Используемые для инициализации диалога GtkPrintSettings.
Установка этого свойства обычно используется для восстановления настроек печати из предыдущей операции печати, см. gtk_print_operation_run().
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
С версии: 2.10
Свойство “show-progress”
“show-progress” gboolean
Определяет, отображать ли диалог прогресса во время операции печати.
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.10
Свойство “status”
“status” GtkPrintStatus
Состояние операции печати.
Владелец: GtkPrintOperation
Флаги: Чтение
Значение по умолчанию: GTK_PRINT_STATUS_INITIAL
С версии: 2.10
Свойство “status-string”
“status-string” char *
Строковое представление состояния операции печати. Строка переведена и подходит для отображения состояния печати, например, в GtkStatusbar.
Для программного использования подходит значение свойства “status”.
Владелец: GtkPrintOperation
Флаги: Чтение
Значение по умолчанию: ""
С версии: 2.10
Свойство “support-selection”
“support-selection” gboolean
Если TRUE, операция печати будет поддерживать печать выделения. Это позволит диалогу печати отобразить кнопку «Выделение».
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.18
Свойство “track-print-status”
“track-print-status” gboolean
Если TRUE, операция печати будет пытаться продолжить отслеживать состояние задания печати в очередях принтера и принтере. Это позволит вашему приложению отображать такие проблемы, как «бумага закончилась», и когда задание печати фактически достигнет принтера. Однако это часто реализуется с помощью опроса и не должно включаться, если это не требуется.
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
С версии: 2.10
Свойство “unit”
“unit” GtkUnit
Преобразование для контекста cairo, полученного из GtkPrintContext, настроено таким образом, что расстояния измеряются в единицах unit.
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
Значение по умолчанию: GTK_UNIT_NONE
С версии: 2.10
Свойство “use-full-page”
“use-full-page” gboolean
Если TRUE, преобразование для контекста cairo, полученного из GtkPrintContext, устанавливает начало в верхнем левом углу страницы (что может не совпадать с верхним левым углом листа в зависимости от ориентации страницы и количества страниц на листе). В противном случае начало находится в верхнем левом углу области изображения (т. е. внутри полей).
Владелец: GtkPrintOperation
Флаги: Чтение / Запись
Значение по умолчанию: 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, 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 | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Run Last
С: 2.10
Сигнал “end-print”
void user_function (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data)
Издаётся после того, как все страницы были отрисованы. Обработчик этого сигнала может освободить ресурсы, выделенные в обработчике сигнала “begin-print”.
Параметры
operation | объект GtkPrintOperation, на котором был издан сигнал | |
context | объект GtkPrintContext для текущей операции | |
user_data | данные пользователя, заданные при подключении обработчика сигнала. |
Флаги: Run Last
С: 2.10
Сигнал “paginate”
gboolean user_function (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data)
Выполняется после сигнала «begin-print», но до начала фактического рендеринга. Он продолжает выполняться до тех пор, пока обработчик подключенного сигнала не вернёт значение TRUE.
Сигнал ::paginate предназначен для разбиения документа на небольшие части для постраничной обработки, чтобы избежать блокировки пользовательского интерфейса на длительное время. Обработчик сигнала должен обновить количество страниц с помощью gtk_print_operation_set_n_pages() и вернуть значение TRUE, если документ полностью разбит на страницы.
Если вам не требуется постраничная обработка по частям, вы можете выполнить её целиком в обработчике ::begin-print и установить количество страниц оттуда.
Параметры
operation | объект GtkPrintOperation, на котором был выдан сигнал | |
context | контекст GtkPrintContext для текущей операции | |
user_data | пользовательские данные, установленные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE если постраничная обработка завершена
Флаги: Run Last
С версии: 2.10
Сигнал “preview”
gboolean user_function (GtkPrintOperation *operation, GtkPrintOperationPreview *preview, GtkPrintContext *context, GtkWindow *parent, gpointer user_data)
Выполняется при запросе предварительного просмотра в системном диалоге.
Обработчик по умолчанию для этого сигнала использует внешнее приложение-просмотрщик для предварительного просмотра.
Для реализации пользовательского предварительного просмотра приложения необходимо вернуть TRUE из своего обработчика для этого сигнала. Для использования предоставленного context для реализации предварительного просмотра, ему необходимо предоставить подходящий cairo-контекст с помощью gtk_print_context_set_cairo_context().
Реализация пользовательского предварительного просмотра может использовать gtk_print_operation_preview_is_selected() и gtk_print_operation_preview_render_page() для определения страниц, выбранных для печати, и их рендеринга. Предупреждение должно быть завершено вызовом gtk_print_operation_preview_end_preview() (обычно в ответ на нажатие пользователем кнопки закрытия).
Параметры
operation | объект GtkPrintOperation, на котором был выдан сигнал | |
preview | объект GtkPrintOperationPreview для текущей операции | |
context | объект GtkPrintContext, который будет использован | |
parent | окно GtkWindow, используемое в качестве родительского окна, или | [allow-none] |
user_data | пользовательские данные, установленные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE если слушатель хочет взять под свой контроль предварительный просмотр
Флаги: Run Last
С версии: 2.10
Сигнал “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
С версии: 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.24/gtk3-High-level-Printing-API.html