PrintCompositor#
Superclasses: Object
Compose a Buffer for printing.
The GtkSourcePrintCompositor object is used to compose a Buffer
for printing. You can set various configuration options to customize the
printed output. GtkSourcePrintCompositor is designed to be used with the
high-level printing API of gtk+, i.e. PrintOperation.
The margins specified in this object are the layout margins: they define the
blank space bordering the printed area of the pages. They must not be
confused with the “print margins”, i.e. the parts of the page that the
printer cannot print on, defined in the PageSetup objects. If the
specified layout margins are smaller than the “print margins”, the latter
ones are used as a fallback by the GtkSourcePrintCompositor object, so that
the printed area is not clipped.
Constructors#
- class PrintCompositor
- classmethod new(buffer: Buffer) PrintCompositor#
Creates a new print compositor that can be used to print
buffer.- Parameters:
buffer – the
Bufferto print.
- classmethod new_from_view(view: View) PrintCompositor#
Creates a new print compositor that can be used to print the buffer associated with
view.This constructor sets some configuration properties to make the printed output match
viewas much as possible. The properties set aretab_width,highlight_syntax,wrap_mode,body_font_nameandprint_line_numbers.- Parameters:
view – a
Viewto get configuration from.
Methods#
- class PrintCompositor
- draw_page(context: PrintContext, page_nr: int) None#
Draw page
page_nrfor printing on the the Cairo context encapsuled incontext.This method has been designed to be called in the handler of the
draw_pagesignal as shown in the following example:// Signal handler for the GtkPrintOperation::draw_page signal static void draw_page (GtkPrintOperation *operation, GtkPrintContext *context, gint page_nr, gpointer user_data) { GtkSourcePrintCompositor *compositor; compositor = GTK_SOURCE_PRINT_COMPOSITOR (user_data); gtk_source_print_compositor_draw_page (compositor, context, page_nr); }
- Parameters:
context – the
PrintContextencapsulating the context information that is required when drawing the page for printing.page_nr – the number of the page to print.
- get_body_font_name() str#
Returns the name of the font used to print the text body.
The returned string must be freed with
free().
- get_bottom_margin(unit: Unit) float#
Gets the bottom margin in units of
unit.- Parameters:
unit – the unit for the return value.
- get_buffer() Buffer#
Gets the
Bufferassociated with the compositor.The returned object reference is owned by the compositor object and should not be unreferenced.
Returns the name of the font used to print the page footer.
The returned string must be freed with
free().
- get_header_font_name() str#
Returns the name of the font used to print the page header.
The returned string must be freed with
free().
- get_highlight_syntax() bool#
Determines whether the printed text will be highlighted according to the buffer rules.
Note that highlighting will happen only if the buffer to print has highlighting activated.
- get_left_margin(unit: Unit) float#
Gets the left margin in units of
unit.- Parameters:
unit – the unit for the return value.
- get_line_numbers_font_name() str#
Returns the name of the font used to print line numbers on the left margin.
The returned string must be freed with
free().
- get_n_pages() int#
Returns the number of pages in the document or <code>-1</code> if the document has not been completely paginated.
- get_pagination_progress() float#
Returns the current fraction of the document pagination that has been completed.
Determines if a footer is set to be printed for each page.
A footer will be printed if this function returns
Trueand some format strings have been specified withset_footer_format.
- get_print_header() bool#
Determines if a header is set to be printed for each page.
A header will be printed if this function returns
Trueand some format strings have been specified withset_header_format.
- get_print_line_numbers() int#
Returns the interval used for line number printing.
If the value is 0, no line numbers will be printed. The default value is 1 (i.e. numbers printed in all lines).
- get_right_margin(unit: Unit) float#
Gets the right margin in units of
unit.- Parameters:
unit – the unit for the return value.
- get_top_margin(unit: Unit) float#
Gets the top margin in units of
unit.- Parameters:
unit – the unit for the return value.
- ignore_tag(tag: TextTag) None#
Specifies a tag whose style should be ignored when compositing the document to the printable page.
Added in version 5.2.
- Parameters:
tag – a
TextTag
- paginate(context: PrintContext) bool#
Paginate the document associated with the
compositor.In order to support non-blocking pagination, document is paginated in small chunks. Each time
paginateis invoked, a chunk of the document is paginated. To paginate the entire document,paginatemust be invoked multiple times. It returnsTrueif the document has been completely paginated, otherwise it returnsFalse.This method has been designed to be invoked in the handler of the
paginatesignal, as shown in the following example:// Signal handler for the GtkPrintOperation::paginate signal static gboolean paginate (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data) { GtkSourcePrintCompositor *compositor; compositor = GTK_SOURCE_PRINT_COMPOSITOR (user_data); if (gtk_source_print_compositor_paginate (compositor, context)) { gint n_pages; n_pages = gtk_source_print_compositor_get_n_pages (compositor); gtk_print_operation_set_n_pages (operation, n_pages); return TRUE; } return FALSE; }
If you don’t need to do pagination in chunks, you can simply do it all in the
begin_printhandler, and set the number of pages from there, like in the following example:// Signal handler for the GtkPrintOperation::begin-print signal static void begin_print (GtkPrintOperation *operation, GtkPrintContext *context, gpointer user_data) { GtkSourcePrintCompositor *compositor; gint n_pages; compositor = GTK_SOURCE_PRINT_COMPOSITOR (user_data); while (!gtk_source_print_compositor_paginate (compositor, context)); n_pages = gtk_source_print_compositor_get_n_pages (compositor); gtk_print_operation_set_n_pages (operation, n_pages); }
- Parameters:
context – the
PrintContextwhose parameters (e.g. paper size, print margins, etc.) are used by the thecompositorto paginate the document.
- set_body_font_name(font_name: str) None#
Sets the default font for the printed text.
font_nameshould be a string representation of a font description Pango can understand. (e.g. wzxhzdk:0Monospace 10wzxhzdk:1). Seefrom_stringfor a description of the format of the string representation.This function cannot be called anymore after the first call to the
paginatefunction.- Parameters:
font_name – the name of the default font for the body text.
- set_bottom_margin(margin: float, unit: Unit) None#
Sets the bottom margin used by
compositor.- Parameters:
margin – the new bottom margin in units of
unit.unit – the units for
margin.
Sets the font for printing the page footer.
If
Noneis supplied, the default font (i.e. the one being used for the text) will be used instead.font_nameshould be a string representation of a font description Pango can understand. (e.g. wzxhzdk:0Monospace 10wzxhzdk:1). Seefrom_stringfor a description of the format of the string representation.This function cannot be called anymore after the first call to the
paginatefunction.- Parameters:
font_name – the name of the font for the footer text, or
None.
See
set_header_formatfor more information about the parameters.- Parameters:
separator –
Trueif you want a separator line to be printed.left – a format string to print on the left of the footer.
center – a format string to print on the center of the footer.
right – a format string to print on the right of the footer.
- set_header_font_name(font_name: str | None = None) None#
Sets the font for printing the page header.
If
Noneis supplied, the default font (i.e. the one being used for the text) will be used instead.font_nameshould be a string representation of a font description Pango can understand. (e.g. wzxhzdk:0Monospace 10wzxhzdk:1). Seefrom_stringfor a description of the format of the string representation.This function cannot be called anymore after the first call to the
paginatefunction.- Parameters:
font_name – the name of the font for header text, or
None.
- set_header_format(separator: bool, left: str | None = None, center: str | None = None, right: str | None = None) None#
Sets strftime like header format strings, to be printed on the left, center and right of the top of each page.
The strings may include strftime(3) codes which will be expanded at print time. A subset of strftime() codes are accepted, see
formatfor more details on the accepted format specifiers. Additionally the following format specifiers are accepted:N: the page numberQ: the page count.
separatorspecifies if a solid line should be drawn to separate the header from the document text.If
Noneis given for any of the three arguments, that particular string will not be printed.For the header to be printed, in addition to specifying format strings, you need to enable header printing with
set_print_header.This function cannot be called anymore after the first call to the
paginatefunction.- Parameters:
separator –
Trueif you want a separator line to be printed.left – a format string to print on the left of the header.
center – a format string to print on the center of the header.
right – a format string to print on the right of the header.
- set_highlight_syntax(highlight: bool) None#
Sets whether the printed text will be highlighted according to the buffer rules. Both color and font style are applied.
This function cannot be called anymore after the first call to the
paginatefunction.- Parameters:
highlight – whether syntax should be highlighted.
- set_left_margin(margin: float, unit: Unit) None#
Sets the left margin used by
compositor.- Parameters:
margin – the new left margin in units of
unit.unit – the units for
margin.
- set_line_numbers_font_name(font_name: str | None = None) None#
Sets the font for printing line numbers on the left margin.
If
Noneis supplied, the default font (i.e. the one being used for the text) will be used instead.font_nameshould be a string representation of a font description Pango can understand. (e.g. wzxhzdk:0Monospace 10wzxhzdk:1). Seefrom_stringfor a description of the format of the string representation.This function cannot be called anymore after the first call to the
paginatefunction.- Parameters:
font_name – the name of the font for line numbers, or
None.
Sets whether you want to print a footer in each page.
The footer consists of three pieces of text and an optional line separator, configurable with
set_footer_format.Note that by default the footer format is unspecified, and if it’s empty it will not be printed, regardless of this setting.
This function cannot be called anymore after the first call to the
paginatefunction.- Parameters:
print
- set_print_header(print_: bool) None#
Sets whether you want to print a header in each page.
The header consists of three pieces of text and an optional line separator, configurable with
set_header_format.Note that by default the header format is unspecified, and if it’s empty it will not be printed, regardless of this setting.
This function cannot be called anymore after the first call to the
paginatefunction.- Parameters:
print
- set_print_line_numbers(interval: int) None#
Sets the interval for printed line numbers.
If
intervalis 0 no numbers will be printed. If greater than 0, a number will be printed everyintervallines (i.e. 1 will print all line numbers).Maximum accepted value for
intervalis 100.This function cannot be called anymore after the first call to the
paginatefunction.- Parameters:
interval – interval for printed line numbers.
- set_right_margin(margin: float, unit: Unit) None#
Sets the right margin used by
compositor.- Parameters:
margin – the new right margin in units of
unit.unit – the units for
margin.
- set_tab_width(width: int) None#
Sets the width of tabulation in characters for printed text.
This function cannot be called anymore after the first call to the
paginatefunction.- Parameters:
width – width of tab in characters.
Properties#
- class PrintCompositor
-
The type of the None singleton.
The type of the None singleton.
Fields#
- class PrintCompositor
- parent_instance#