Gtk.PrintOperation

g GObject.GInterface GObject.GInterface Gtk.PrintOperationPreview Gtk.PrintOperationPreview GObject.GInterface->Gtk.PrintOperationPreview GObject.Object GObject.Object Gtk.PrintOperation Gtk.PrintOperation GObject.Object->Gtk.PrintOperation Gtk.PrintOperationPreview->Gtk.PrintOperation

Subclasses:

None

Methods

Inherited:

GObject.Object (37), Gtk.PrintOperationPreview (3)

Structs:

GObject.ObjectClass (5)

class

new ()

cancel ()

draw_page_finish ()

get_default_page_setup ()

get_embed_page_setup ()

get_error ()

get_has_selection ()

get_n_pages_to_print ()

get_print_settings ()

get_status ()

get_status_string ()

get_support_selection ()

is_finished ()

run (action, parent)

set_allow_async (allow_async)

set_current_page (current_page)

set_custom_tab_label (label)

set_default_page_setup (default_page_setup)

set_defer_drawing ()

set_embed_page_setup (embed)

set_export_filename (filename)

set_has_selection (has_selection)

set_job_name (job_name)

set_n_pages (n_pages)

set_print_settings (print_settings)

set_show_progress (show_progress)

set_support_selection (support_selection)

set_track_print_status (track_status)

set_unit (unit)

set_use_full_page (full_page)

Virtual Methods

Inherited:

GObject.Object (7), Gtk.PrintOperationPreview (5)

do_begin_print (context)

do_custom_widget_apply (widget)

do_done (result)

do_draw_page (context, page_nr)

do_end_print (context)

do_paginate (context)

do_preview (preview, context, parent)

do_request_page_setup (context, page_nr, setup)

do_status_changed ()

do_update_custom_widget (widget, setup, settings)

Properties

Name

Type

Flags

Short Description

allow-async

bool

r/w/en

current-page

int

r/w/en

custom-tab-label

str

r/w

default-page-setup

Gtk.PageSetup

r/w

embed-page-setup

bool

r/w/en

export-filename

str

r/w

has-selection

bool

r/w/en

job-name

str

r/w

n-pages

int

r/w/en

n-pages-to-print

int

r/en

print-settings

Gtk.PrintSettings

r/w

show-progress

bool

r/w/en

status

Gtk.PrintStatus

r/en

status-string

str

r

support-selection

bool

r/w/en

track-print-status

bool

r/w/en

unit

Gtk.Unit

r/w/en

use-full-page

bool

r/w/en

Signals

Inherited:

GObject.Object (1), Gtk.PrintOperationPreview (2)

Name

Short Description

begin-print

Emitted after the user has finished changing print settings in the dialog, before the actual rendering starts.

create-custom-widget

Emitted when displaying the print dialog.

custom-widget-apply

Emitted right before ::begin-print if you added a custom widget in the ::create-custom-widget handler.

done

Emitted when the print operation run has finished doing everything required for printing.

draw-page

Emitted for every page that is printed.

end-print

Emitted after all pages have been rendered.

paginate

Emitted after the ::begin-print signal, but before the actual rendering starts.

preview

Gets emitted when a preview is requested from the native dialog.

request-page-setup

Emitted once for every page that is printed.

status-changed

Emitted at between the various phases of the print operation.

update-custom-widget

Emitted after change of selected printer.

Fields

Inherited:

GObject.Object (1), Gtk.PrintOperationPreview (2)

Name

Type

Access

Description

parent_instance

GObject.Object

r

Class Details

class Gtk.PrintOperation(**kwargs)
Bases:

GObject.Object, Gtk.PrintOperationPreview

Abstract:

No

Structure:

Gtk.PrintOperationClass

GtkPrintOperation is the high-level, portable printing API.

It looks a bit different than other GTK dialogs such as the GtkFileChooser, since some platforms don’t expose enough infrastructure to implement a good print dialog. On such platforms, GtkPrintOperation uses the native print dialog. On platforms which do not provide a native print dialog, GTK uses its own, see [class`Gtk`.PrintUnixDialog].

The typical way to use the high-level printing API is to create a GtkPrintOperation object with [ctor`Gtk`.PrintOperation.new] when the user selects to print. Then you set some properties on it, e.g. the page size, any [class`Gtk`.PrintSettings] from previous print operations, the number of pages, the current page, etc.

Then you start the print operation by calling [method`Gtk`.PrintOperation.run]. It will then show a dialog, let the user select a printer and options. When the user finished the dialog, various signals will be emitted on the GtkPrintOperation, the main one being [signal`Gtk`.PrintOperation::draw-page], which you are supposed to handle and render the page on the provided [class`Gtk`.PrintContext] using Cairo.

The high-level printing API

```c static Gtk.PrintSettings *settings = None;

static void do_print (void) { Gtk.PrintOperation *print; Gtk.PrintOperationResult res;

print = Gtk.PrintOperation.new ();

if (settings != None) Gtk.PrintOperation.set_print_settings (print, settings);

g_signal_connect (print, “begin_print”, G_CALLBACK (begin_print), None); g_signal_connect (print, “draw_page”, G_CALLBACK (draw_page), None);

res = Gtk.PrintOperation.run (print, Gtk.PrintOperationAction.PRINT_DIALOG, GTK_WINDOW (main_window), None);

if (res == Gtk.PrintOperationResult.APPLY) { if (settings != None) GObject.Object.unref (settings); settings = GObject.Object.ref (Gtk.PrintOperation.get_print_settings (print)); }

GObject.Object.unref (print); } ```

By default GtkPrintOperation uses an external application to do print preview. To implement a custom print preview, an application must connect to the preview signal. The functions [method`Gtk`.PrintOperationPreview.render_page], [method`Gtk`.PrintOperationPreview.end_preview] and [method`Gtk`.PrintOperationPreview.is_selected] are useful when implementing a print preview.

classmethod new()[source]
Returns:

a new GtkPrintOperation

Return type:

Gtk.PrintOperation

Creates a new GtkPrintOperation.

cancel()[source]

Cancels a running print operation.

This function may be called from a [signal`Gtk`.PrintOperation::begin-print], [signal`Gtk`.PrintOperation::paginate] or [signal`Gtk`.PrintOperation::draw-page] signal handler to stop the currently running print operation.

draw_page_finish()[source]

Signal that drawing of particular page is complete.

It is called after completion of page drawing (e.g. drawing in another thread). If [method`Gtk`.PrintOperation.set_defer_drawing] was called before, then this function has to be called by application. Otherwise it is called by GTK itself.

get_default_page_setup()[source]
Returns:

the default page setup

Return type:

Gtk.PageSetup

Returns the default page setup.

get_embed_page_setup()[source]
Returns:

whether page setup selection combos are embedded

Return type:

bool

Gets whether page setup selection combos are embedded

get_error()[source]
Raises:

GLib.Error

Call this when the result of a print operation is Gtk.PrintOperationResult.ERROR.

It can be called either after [method`Gtk`.PrintOperation.run] returns, or in the [signal`Gtk`.PrintOperation::done] signal handler.

The returned GError will contain more details on what went wrong.

get_has_selection()[source]
Returns:

whether there is a selection

Return type:

bool

Gets whether there is a selection.

get_n_pages_to_print()[source]
Returns:

the number of pages that will be printed

Return type:

int

Returns the number of pages that will be printed.

Note that this value is set during print preparation phase (Gtk.PrintStatus.PREPARING), so this function should never be called before the data generation phase (Gtk.PrintStatus.GENERATING_DATA). You can connect to the [signal`Gtk`.PrintOperation::status-changed] signal and call Gtk.PrintOperation.get_n_pages_to_print() when print status is Gtk.PrintStatus.GENERATING_DATA.

This is typically used to track the progress of print operation.

get_print_settings()[source]
Returns:

the current print settings of self.

Return type:

Gtk.PrintSettings or None

Returns the current print settings.

Note that the return value is None until either [method`Gtk`.PrintOperation.set_print_settings] or [method`Gtk`.PrintOperation.run] have been called.

get_status()[source]
Returns:

the status of the print operation

Return type:

Gtk.PrintStatus

Returns the status of the print operation.

Also see [method`Gtk`.PrintOperation.get_status_string].

get_status_string()[source]
Returns:

a string representation of the status of the print operation

Return type:

str

Returns a string representation of the status of the print operation.

The string is translated and suitable for displaying the print status e.g. in a GtkStatusbar.

Use [method`Gtk`.PrintOperation.get_status] to obtain a status value that is suitable for programmatic use.

get_support_selection()[source]
Returns:

whether the application supports print of selection

Return type:

bool

Gets whether the application supports print of selection

is_finished()[source]
Returns:

True, if the print operation is finished.

Return type:

bool

A convenience function to find out if the print operation is finished.

a print operation is finished if its status is either Gtk.PrintStatus.FINISHED or Gtk.PrintStatus.FINISHED_ABORTED.

Note: when you enable print status tracking the print operation can be in a non-finished state even after done has been called, as the operation status then tracks the print job status on the printer.

run(action, parent)[source]
Parameters:
Raises:

GLib.Error

Returns:

the result of the print operation. A return value of Gtk.PrintOperationResult.APPLY indicates that the printing was completed successfully. In this case, it is a good idea to obtain the used print settings with [method`Gtk`.PrintOperation.get_print_settings] and store them for reuse with the next print operation. A value of Gtk.PrintOperationResult.IN_PROGRESS means the operation is running asynchronously, and will emit the [signal`Gtk`.PrintOperation::done] signal when done.

Return type:

Gtk.PrintOperationResult

Runs the print operation.

Normally that this function does not return until the rendering of all pages is complete. You can connect to the [signal`Gtk`.PrintOperation::status-changed] signal on self to obtain some information about the progress of the print operation.

Furthermore, it may use a recursive mainloop to show the print dialog.

If you set the [Gtk.PrintOperation:allow-async] property, the operation will run asynchronously if this is supported on the platform. The [signal`Gtk`.PrintOperation::done] signal will be emitted with the result of the operation when the it is done (i.e. when the dialog is canceled, or when the print succeeds or fails).

```c if (settings != None) Gtk.PrintOperation.set_print_settings (print, settings);

if (page_setup != None) Gtk.PrintOperation.set_default_page_setup (print, page_setup);

g_signal_connect (print, “begin-print”, G_CALLBACK (begin_print), &data); g_signal_connect (print, “draw-page”, G_CALLBACK (draw_page), &data);

res = Gtk.PrintOperation.run (print, Gtk.PrintOperationAction.PRINT_DIALOG, parent, &error);

if (res == Gtk.PrintOperationResult.ERROR) { error_dialog = gtk_message_dialog_new (GTK_WINDOW (parent), Gtk.DialogFlags.DESTROY_WITH_PARENT, Gtk.MessageType.ERROR, Gtk.ButtonsType.CLOSE, “Error printing file:\n%s”, error->message); g_signal_connect (error_dialog, “response”, G_CALLBACK (Gtk.Window.destroy), None); Gtk.Window.present (GTK_WINDOW (error_dialog)); GLib.Error.free (error); } else if (res == Gtk.PrintOperationResult.APPLY) { if (settings != None) GObject.Object.unref (settings); settings = GObject.Object.ref (Gtk.PrintOperation.get_print_settings (print)); } ```

Note that Gtk.PrintOperation.run() can only be called once on a given GtkPrintOperation.

set_allow_async(allow_async)[source]
Parameters:

allow_async (bool) – True to allow asynchronous operation

Sets whether Gtk.PrintOperation.run() may return before the print operation is completed.

Note that some platforms may not allow asynchronous operation.

set_current_page(current_page)[source]
Parameters:

current_page (int) – the current page, 0-based

Sets the current page.

If this is called before [method`Gtk`.PrintOperation.run], the user will be able to select to print only the current page.

Note that this only makes sense for pre-paginated documents.

set_custom_tab_label(label)[source]
Parameters:

label (str or None) – the label to use, or None to use the default label

Sets the label for the tab holding custom widgets.

set_default_page_setup(default_page_setup)[source]
Parameters:

default_page_setup (Gtk.PageSetup or None) – a GtkPageSetup

Makes default_page_setup the default page setup for self.

This page setup will be used by [method`Gtk`.PrintOperation.run], but it can be overridden on a per-page basis by connecting to the [signal`Gtk`.PrintOperation::request-page-setup] signal.

set_defer_drawing()[source]

Sets up the GtkPrintOperation to wait for calling of [method`Gtk`.PrintOperation.draw_page_finish from application.

This can be used for drawing page in another thread.

This function must be called in the callback of the [signal`Gtk`.PrintOperation::draw-page] signal.

set_embed_page_setup(embed)[source]
Parameters:

embed (bool) – True to embed page setup selection in the GtkPrintUnixDialog

Embed page size combo box and orientation combo box into page setup page.

Selected page setup is stored as default page setup in GtkPrintOperation.

set_export_filename(filename)[source]
Parameters:

filename (str) – the filename for the exported file

Sets up the GtkPrintOperation to generate a file instead of showing the print dialog.

The intended use of this function is for implementing “Export to PDF” actions. Currently, PDF is the only supported format.

“Print to PDF” support is independent of this and is done by letting the user pick the “Print to PDF” item from the list of printers in the print dialog.

set_has_selection(has_selection)[source]
Parameters:

has_selection (bool) – True indicates that a selection exists

Sets whether there is a selection to print.

Application has to set number of pages to which the selection will draw by [method`Gtk`.PrintOperation.set_n_pages] in a handler for the [signal`Gtk`.PrintOperation::begin-print] signal.

set_job_name(job_name)[source]
Parameters:

job_name (str) – a string that identifies the print job

Sets the name of the print job.

The name is used to identify the job (e.g. in monitoring applications like eggcups).

If you don’t set a job name, GTK picks a default one by numbering successive print jobs.

set_n_pages(n_pages)[source]
Parameters:

n_pages (int) – the number of pages

Sets the number of pages in the document.

This must be set to a positive number before the rendering starts. It may be set in a [signal`Gtk`.PrintOperation::begin-print] signal handler.

Note that the page numbers passed to the [signal`Gtk`.PrintOperation::request-page-setup] and [signal`Gtk`.PrintOperation::draw-page] signals are 0-based, i.e. if the user chooses to print all pages, the last ::draw-page signal will be for page n_pages - 1.

set_print_settings(print_settings)[source]
Parameters:

print_settings (Gtk.PrintSettings or None) – GtkPrintSettings

Sets the print settings for self.

This is typically used to re-establish print settings from a previous print operation, see [method`Gtk`.PrintOperation.run].

set_show_progress(show_progress)[source]
Parameters:

show_progress (bool) – True to show a progress dialog

If show_progress is True, the print operation will show a progress dialog during the print operation.

set_support_selection(support_selection)[source]
Parameters:

support_selection (bool) – True to support selection

Sets whether selection is supported by GtkPrintOperation.

set_track_print_status(track_status)[source]
Parameters:

track_status (bool) – True to track status after printing

If track_status is True, the print operation will try to continue report on the status of the print job in the printer queues and printer.

This can allow your application to show things like “out of paper” issues, and when the print job actually reaches the printer.

This function is often implemented using some form of polling, so it should not be enabled unless needed.

set_unit(unit)[source]
Parameters:

unit (Gtk.Unit) – the unit to use

Sets up the transformation for the cairo context obtained from GtkPrintContext in such a way that distances are measured in units of unit.

set_use_full_page(full_page)[source]
Parameters:

full_page (bool) – True to set up the GtkPrintContext for the full page

If full_page is True, the transformation for the cairo context obtained from GtkPrintContext puts the origin at the top left corner of the page.

This may not be the top left corner of the sheet, depending on page orientation and the number of pages per sheet). Otherwise, the origin is at the top left corner of the imageable area (i.e. inside the margins).

do_begin_print(context) virtual
Parameters:

context (Gtk.PrintContext) –

Signal emitted after the user has finished changing print settings in the dialog, before the actual rendering starts.

do_custom_widget_apply(widget) virtual
Parameters:

widget (Gtk.Widget) –

Signal emitted right before “begin-print” if you added a custom widget in the “create-custom-widget” handler.

do_done(result) virtual
Parameters:

result (Gtk.PrintOperationResult) –

Signal emitted when the print operation run has finished doing everything required for printing.

do_draw_page(context, page_nr) virtual
Parameters:

Signal emitted for every page that is printed.

do_end_print(context) virtual
Parameters:

context (Gtk.PrintContext) –

Signal emitted after all pages have been rendered.

do_paginate(context) virtual
Parameters:

context (Gtk.PrintContext) –

Return type:

bool

Signal emitted after the “begin-print” signal, but before the actual rendering starts.

do_preview(preview, context, parent) virtual
Parameters:
Return type:

bool

Signal emitted when a preview is requested from the native dialog.

do_request_page_setup(context, page_nr, setup) virtual
Parameters:

Emitted once for every page that is printed, to give the application a chance to modify the page setup.

do_status_changed() virtual

Emitted at between the various phases of the print operation.

do_update_custom_widget(widget, setup, settings) virtual
Parameters:

Emitted after change of selected printer.

Signal Details

Gtk.PrintOperation.signals.begin_print(print_operation, context)
Signal Name:

begin-print

Flags:

RUN_LAST

Parameters:

Emitted after the user has finished changing print settings in the dialog, before the actual rendering starts.

A typical use for ::begin-print is to use the parameters from the [class`Gtk`.PrintContext] and paginate the document accordingly, and then set the number of pages with [method`Gtk`.PrintOperation.set_n_pages].

Gtk.PrintOperation.signals.create_custom_widget(print_operation)
Signal Name:

create-custom-widget

Flags:

RUN_LAST

Parameters:

print_operation (Gtk.PrintOperation) – The object which received the signal

Returns:

A custom widget that gets embedded in the print dialog

Return type:

GObject.Object or None

Emitted when displaying the print dialog.

If you return a widget in a handler for this signal it will be added to a custom tab in the print dialog. You typically return a container widget with multiple widgets in it.

The print dialog owns the returned widget, and its lifetime is not controlled by the application. However, the widget is guaranteed to stay around until the [signal`Gtk`.PrintOperation::custom-widget-apply] signal is emitted on the operation. Then you can read out any information you need from the widgets.

Gtk.PrintOperation.signals.custom_widget_apply(print_operation, widget)
Signal Name:

custom-widget-apply

Flags:

RUN_LAST

Parameters:

Emitted right before ::begin-print if you added a custom widget in the ::create-custom-widget handler.

When you get this signal you should read the information from the custom widgets, as the widgets are not guaranteed to be around at a later time.

Gtk.PrintOperation.signals.done(print_operation, result)
Signal Name:

done

Flags:

RUN_LAST

Parameters:

Emitted when the print operation run has finished doing everything required for printing.

result gives you information about what happened during the run. If result is Gtk.PrintOperationResult.ERROR then you can call [method`Gtk`.PrintOperation.get_error] for more information.

If you enabled print status tracking then [method`Gtk`.PrintOperation.is_finished] may still return False after the ::done signal was emitted.

Gtk.PrintOperation.signals.draw_page(print_operation, context, page_nr)
Signal Name:

draw-page

Flags:

RUN_LAST

Parameters:
  • print_operation (Gtk.PrintOperation) – The object which received the signal

  • context (Gtk.PrintContext) – the GtkPrintContext for the current operation

  • page_nr (int) – the number of the currently printed page (0-based)

Emitted for every page that is printed.

The signal handler must render the page_nr's page onto the cairo context obtained from context using [method`Gtk`.PrintContext.get_cairo_context].

```c static void draw_page (Gtk.PrintOperation *operation, Gtk.PrintContext *context, int page_nr, object user_data) { cairo.Context *cr; Pango.Layout *layout; double width, text_height; int layout_height; Pango.FontDescription *desc;

cr = Gtk.PrintContext.get_cairo_context (context); width = Gtk.PrintContext.get_width (context);

cairo.Context.rectangle (cr, 0, 0, width, HEADER_HEIGHT);

cairo.Context.set_source_rgb (cr, 0.8, 0.8, 0.8); cairo.Context.fill (cr);

layout = Gtk.PrintContext.create_pango_layout (context);

desc = Pango.FontDescription.from_string (“sans 14”); Pango.Layout.set_font_description (layout, desc); Pango.FontDescription.free (desc);

Pango.Layout.set_text (layout, “some text”, -1); Pango.Layout.set_width (layout, width * Pango.SCALE); Pango.Layout.set_alignment (layout, Pango.Alignment.CENTER);

Pango.Layout.get_size (layout, None, &layout_height); text_height = (double)layout_height / Pango.SCALE;

cairo.Context.move_to (cr, width / 2, (HEADER_HEIGHT - text_height) / 2); PangoCairo.show_layout (cr, layout);

GObject.Object.unref (layout); } ```

Use [method`Gtk`.PrintOperation.set_use_full_page] and [method`Gtk`.PrintOperation.set_unit] before starting the print operation to set up the transformation of the cairo context according to your needs.

Gtk.PrintOperation.signals.end_print(print_operation, context)
Signal Name:

end-print

Flags:

RUN_LAST

Parameters:

Emitted after all pages have been rendered.

A handler for this signal can clean up any resources that have been allocated in the [signal`Gtk`.PrintOperation::begin-print] handler.

Gtk.PrintOperation.signals.paginate(print_operation, context)
Signal Name:

paginate

Flags:

RUN_LAST

Parameters:
Returns:

True if pagination is complete

Return type:

bool

Emitted after the ::begin-print signal, but before the actual rendering starts.

It keeps getting emitted until a connected signal handler returns True.

The ::paginate signal is intended to be used for paginating a document in small chunks, to avoid blocking the user interface for a long time. The signal handler should update the number of pages using [method`Gtk`.PrintOperation.set_n_pages], and return True if the document has been completely paginated.

If you don’t need to do pagination in chunks, you can simply do it all in the ::begin-print handler, and set the number of pages from there.

Gtk.PrintOperation.signals.preview(print_operation, preview, context, parent)
Signal Name:

preview

Flags:

RUN_LAST

Parameters:
Returns:

True if the listener wants to take over control of the preview

Return type:

bool

Gets emitted when a preview is requested from the native dialog.

The default handler for this signal uses an external viewer application to preview.

To implement a custom print preview, an application must return True from its handler for this signal. In order to use the provided context for the preview implementation, it must be given a suitable cairo context with [method`Gtk`.PrintContext.set_cairo_context].

The custom preview implementation can use [method`Gtk`.PrintOperationPreview.is_selected] and [method`Gtk`.PrintOperationPreview.render_page] to find pages which are selected for print and render them. The preview must be finished by calling [method`Gtk`.PrintOperationPreview.end_preview] (typically in response to the user clicking a close button).

Gtk.PrintOperation.signals.request_page_setup(print_operation, context, page_nr, setup)
Signal Name:

request-page-setup

Flags:

RUN_LAST

Parameters:
  • print_operation (Gtk.PrintOperation) – The object which received the signal

  • context (Gtk.PrintContext) – the GtkPrintContext for the current operation

  • page_nr (int) – the number of the currently printed page (0-based)

  • setup (Gtk.PageSetup) – the GtkPageSetup

Emitted once for every page that is printed.

This gives the application a chance to modify the page setup. Any changes done to setup will be in force only for printing this page.

Gtk.PrintOperation.signals.status_changed(print_operation)
Signal Name:

status-changed

Flags:

RUN_LAST

Parameters:

print_operation (Gtk.PrintOperation) – The object which received the signal

Emitted at between the various phases of the print operation.

See [enum`Gtk`.PrintStatus] for the phases that are being discriminated. Use [method`Gtk`.PrintOperation.get_status] to find out the current status.

Gtk.PrintOperation.signals.update_custom_widget(print_operation, widget, setup, settings)
Signal Name:

update-custom-widget

Flags:

RUN_LAST

Parameters:

Emitted after change of selected printer.

The actual page setup and print settings are passed to the custom widget, which can actualize itself according to this change.

Property Details

Gtk.PrintOperation.props.allow_async
Name:

allow-async

Type:

bool

Default Value:

False

Flags:

READABLE, WRITABLE, EXPLICIT_NOTIFY

Determines whether the print operation may run asynchronously or not.

Some systems don’t support asynchronous printing, but those that do will return Gtk.PrintOperationResult.IN_PROGRESS as the status, and emit the [signal`Gtk`.PrintOperation::done] signal when the operation is actually done.

The Windows port does not support asynchronous operation at all (this is unlikely to change). On other platforms, all actions except for Gtk.PrintOperationAction.EXPORT support asynchronous operation.

Gtk.PrintOperation.props.current_page
Name:

current-page

Type:

int

Default Value:

-1

Flags:

READABLE, WRITABLE, EXPLICIT_NOTIFY

The current page in the document.

If this is set before [method`Gtk`.PrintOperation.run], the user will be able to select to print only the current page.

Note that this only makes sense for pre-paginated documents.

Gtk.PrintOperation.props.custom_tab_label
Name:

custom-tab-label

Type:

str

Default Value:

None

Flags:

READABLE, WRITABLE

Used as the label of the tab containing custom widgets.

Note that this property may be ignored on some platforms.

If this is None, GTK uses a default label.

Gtk.PrintOperation.props.default_page_setup
Name:

default-page-setup

Type:

Gtk.PageSetup

Default Value:

None

Flags:

READABLE, WRITABLE

The GtkPageSetup used by default.

This page setup will be used by [method`Gtk`.PrintOperation.run], but it can be overridden on a per-page basis by connecting to the [signal`Gtk`.PrintOperation::request-page-setup] signal.

Gtk.PrintOperation.props.embed_page_setup
Name:

embed-page-setup

Type:

bool

Default Value:

False

Flags:

READABLE, WRITABLE, EXPLICIT_NOTIFY

If True, page size combo box and orientation combo box are embedded into page setup page.

Gtk.PrintOperation.props.export_filename
Name:

export-filename

Type:

str

Default Value:

None

Flags:

READABLE, WRITABLE

The name of a file to generate instead of showing the print dialog.

Currently, PDF is the only supported format.

The intended use of this property is for implementing “Export to PDF” actions.

“Print to PDF” support is independent of this and is done by letting the user pick the “Print to PDF” item from the list of printers in the print dialog.

Gtk.PrintOperation.props.has_selection
Name:

has-selection

Type:

bool

Default Value:

False

Flags:

READABLE, WRITABLE, EXPLICIT_NOTIFY

Determines whether there is a selection in your application.

This can allow your application to print the selection. This is typically used to make a “Selection” button sensitive.

Gtk.PrintOperation.props.job_name
Name:

job-name

Type:

str

Default Value:

''

Flags:

READABLE, WRITABLE

A string used to identify the job (e.g. in monitoring applications like eggcups).

If you don’t set a job name, GTK picks a default one by numbering successive print jobs.

Gtk.PrintOperation.props.n_pages
Name:

n-pages

Type:

int

Default Value:

-1

Flags:

READABLE, WRITABLE, EXPLICIT_NOTIFY

The number of pages in the document.

This must be set to a positive number before the rendering starts. It may be set in a [signal`Gtk`.PrintOperation::begin-print] signal handler.

Note that the page numbers passed to the [signal`Gtk`.PrintOperation::request-page-setup] and [signal`Gtk`.PrintOperation::draw-page] signals are 0-based, i.e. if the user chooses to print all pages, the last ::draw-page signal will be for page n_pages - 1.

Gtk.PrintOperation.props.n_pages_to_print
Name:

n-pages-to-print

Type:

int

Default Value:

-1

Flags:

READABLE, EXPLICIT_NOTIFY

The number of pages that will be printed.

Note that this value is set during print preparation phase (Gtk.PrintStatus.PREPARING), so this value should never be get before the data generation phase (Gtk.PrintStatus.GENERATING_DATA). You can connect to the [signal`Gtk`.PrintOperation::status-changed] signal and call [method`Gtk`.PrintOperation.get_n_pages_to_print] when print status is Gtk.PrintStatus.GENERATING_DATA.

This is typically used to track the progress of print operation.

Gtk.PrintOperation.props.print_settings
Name:

print-settings

Type:

Gtk.PrintSettings

Default Value:

None

Flags:

READABLE, WRITABLE

The GtkPrintSettings used for initializing the dialog.

Setting this property is typically used to re-establish print settings from a previous print operation, see [method`Gtk`.PrintOperation.run].

Gtk.PrintOperation.props.show_progress
Name:

show-progress

Type:

bool

Default Value:

False

Flags:

READABLE, WRITABLE, EXPLICIT_NOTIFY

Determines whether to show a progress dialog during the print operation.

Gtk.PrintOperation.props.status
Name:

status

Type:

Gtk.PrintStatus

Default Value:

Gtk.PrintStatus.INITIAL

Flags:

READABLE, EXPLICIT_NOTIFY

The status of the print operation.

Gtk.PrintOperation.props.status_string
Name:

status-string

Type:

str

Default Value:

''

Flags:

READABLE

A string representation of the status of the print operation.

The string is translated and suitable for displaying the print status e.g. in a GtkStatusbar.

See the [property`Gtk`.PrintOperation:status] property for a status value that is suitable for programmatic use.

Gtk.PrintOperation.props.support_selection
Name:

support-selection

Type:

bool

Default Value:

False

Flags:

READABLE, WRITABLE, EXPLICIT_NOTIFY

If True, the print operation will support print of selection.

This allows the print dialog to show a “Selection” button.

Gtk.PrintOperation.props.track_print_status
Name:

track-print-status

Type:

bool

Default Value:

False

Flags:

READABLE, WRITABLE, EXPLICIT_NOTIFY

If True, the print operation will try to continue report on the status of the print job in the printer queues and printer.

This can allow your application to show things like “out of paper” issues, and when the print job actually reaches the printer. However, this is often implemented using polling, and should not be enabled unless needed.

Gtk.PrintOperation.props.unit
Name:

unit

Type:

Gtk.Unit

Default Value:

Gtk.Unit.NONE

Flags:

READABLE, WRITABLE, EXPLICIT_NOTIFY

The transformation for the cairo context obtained from GtkPrintContext is set up in such a way that distances are measured in units of unit.

Gtk.PrintOperation.props.use_full_page
Name:

use-full-page

Type:

bool

Default Value:

False

Flags:

READABLE, WRITABLE, EXPLICIT_NOTIFY

If True, the transformation for the cairo context obtained from GtkPrintContext puts the origin at the top left corner of the page.

This may not be the top left corner of the sheet, depending on page orientation and the number of pages per sheet. Otherwise, the origin is at the top left corner of the imageable area (i.e. inside the margins).