Hoogle Search
Within LTS Haskell 24.20 (ghc-9.10.3)
Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.
type
PrintOperationPreviewGotPageSizeCallback = PrintContext -> PageSetup -> IO ()gi-gtk3 GI.Gtk.Interfaces.PrintOperationPreview The gotPageSize signal is emitted once for each page that gets rendered to the preview. A handler for this signal should update the context according to pageSetup and set up a suitable cairo context, using printContextSetCairoContext.
type
PrintOperationPreviewReadyCallback = PrintContext -> IO ()gi-gtk3 GI.Gtk.Interfaces.PrintOperationPreview The ready signal gets emitted once per preview operation, before the first page is rendered. A handler for this signal can be used for setup tasks.
module GI.Gtk.Objects.
PrintContext A GtkPrintContext encapsulates context information that is required when drawing pages for printing, such as the cairo context and important parameters like page size and resolution. It also lets you easily create Layout and Context objects that match the font metrics of the cairo surface. GtkPrintContext objects gets passed to the PrintOperation::beginPrint, PrintOperation::endPrint, PrintOperation::requestPageSetup and PrintOperation::drawPage signals on the PrintOperation. ## Using GtkPrintContext in a PrintOperation::drawPage callback
C code
static void draw_page (GtkPrintOperation *operation, GtkPrintContext *context, int page_nr) { cairo_t *cr; PangoLayout *layout; PangoFontDescription *desc; cr = gtk_print_context_get_cairo_context (context); // Draw a red rectangle, as wide as the paper (inside the margins) cairo_set_source_rgb (cr, 1.0, 0, 0); cairo_rectangle (cr, 0, 0, gtk_print_context_get_width (context), 50); cairo_fill (cr); // Draw some lines cairo_move_to (cr, 20, 10); cairo_line_to (cr, 40, 20); cairo_arc (cr, 60, 60, 20, 0, M_PI); cairo_line_to (cr, 80, 20); cairo_set_source_rgb (cr, 0, 0, 0); cairo_set_line_width (cr, 5); cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); cairo_stroke (cr); // Draw some text layout = gtk_print_context_create_pango_layout (context); pango_layout_set_text (layout, "Hello World! Printing is easy", -1); desc = pango_font_description_from_string ("sans 28"); pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); cairo_move_to (cr, 30, 20); pango_cairo_layout_path (cr, layout); // Font Outline cairo_set_source_rgb (cr, 0.93, 1.0, 0.47); cairo_set_line_width (cr, 0.5); cairo_stroke_preserve (cr); // Font Fill cairo_set_source_rgb (cr, 0, 0.0, 1.0); cairo_fill (cr); g_object_unref (layout); }Printing support was added in GTK+ 2.10.-
gi-gtk3 GI.Gtk.Objects.PrintContext Memory-managed wrapper type.
PrintContext :: ManagedPtr PrintContext -> PrintContextgi-gtk3 GI.Gtk.Objects.PrintContext No documentation available.
module GI.Gtk.Objects.
PrintOperation GtkPrintOperation is the high-level, portable printing API. It looks a bit different than other GTK+ dialogs such as the FileChooser, 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 GtkPrintUnixDialog. The typical way to use the high-level printing API is to create a GtkPrintOperation object with printOperationNew when the user selects to print. Then you set some properties on it, e.g. the page size, any PrintSettings from previous print operations, the number of pages, the current page, etc. Then you start the print operation by calling printOperationRun. 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 PrintOperation, the main one being PrintOperation::drawPage, which you are supposed to catch and render the page on the provided PrintContext using Cairo.
The high-level printing API
C code
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); }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 printOperationPreviewRenderPage, printOperationPreviewEndPreview and printOperationPreviewIsSelected are useful when implementing a print preview.-
gi-gtk3 GI.Gtk.Objects.PrintOperation Memory-managed wrapper type.
PrintOperation :: ManagedPtr PrintOperation -> PrintOperationgi-gtk3 GI.Gtk.Objects.PrintOperation No documentation available.
type
PrintOperationBeginPrintCallback = PrintContext -> IO ()gi-gtk3 GI.Gtk.Objects.PrintOperation Emitted after the user has finished changing print settings in the dialog, before the actual rendering starts. A typical use for beginPrint is to use the parameters from the PrintContext and paginate the document accordingly, and then set the number of pages with printOperationSetNPages. Since: 2.10
type
PrintOperationCreateCustomWidgetCallback = IO Objectgi-gtk3 GI.Gtk.Objects.PrintOperation 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 PrintOperation::customWidgetApply signal is emitted on the operation. Then you can read out any information you need from the widgets. Since: 2.10