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