/usr/share/ada/adainclude/gtkada/gtkada-printing.ads is in libgtkada2.24.1-dev 2.24.1-14.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 | -----------------------------------------------------------------------
-- GtkAda - Ada95 binding for Gtk+/Gnome --
-- --
-- Copyright (C) 2010, AdaCore --
-- --
-- This library is free software; you can redistribute it and/or --
-- modify it under the terms of the GNU General Public --
-- License as published by the Free Software Foundation; either --
-- version 2 of the License, or (at your option) any later version. --
-- --
-- This library is distributed in the hope that it will be useful, --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --
-- General Public License for more details. --
-- --
-- You should have received a copy of the GNU General Public --
-- License along with this library; if not, write to the --
-- Free Software Foundation, Inc., 59 Temple Place - Suite 330, --
-- Boston, MA 02111-1307, USA. --
-- --
-----------------------------------------------------------------------
-- <description>
-- This package provides a ready-to-use high level printing object.
-- Use functionality from Gtk.Print_Operation to manipulate the
-- printing object, and the functionality in this package to provide
-- the handlers for the printing operation.
--
-- Typically, to use this high-level printing API:
-- - derive from the Gtkada_Print_Operation_Record object
-- - override the Draw_Page operation
-- - (optional) override any other operation useful to you
-- - start the print operation by
-- - first setting the number of pages through Set_N_Pages
-- - then calling Connect_And_Run.
-- A dialog will be displayed, letting the user select a printer and options.
-- When the user finishes the dialog, various signals will be emitted on the
-- Gtkada_Print_Operation, which will call the operations on your object.
--
-- Note: on UNIX/Linux, Gtk+ is loading at run-time the libraries for printing
-- support. You will need to point the environment variable GTK_EXE_PREFIX
-- to the root directory of your Gtk+ install before calling Connect_And_Run.
-- </description>
-- <example>
--
-- -- Create a derived type
--
-- type Print_Op_Record is new Gtkada_Print_Operation_Record
-- with record
-- My_Data : My_Type;
-- end record;
-- type Print_Op_Access is access all Print_Op_Record'Class;
--
-- -- Override Draw_Page
--
-- procedure Draw_Page
-- (Print_Operation : access Print_Op_Record;
-- Context : Gtk_Print_Context;
-- Page_Num : Gint)
-- is
-- Cr : Cairo_Context;
-- begin
-- Cr := Get_Cairo_Context (Context);
--
-- -- Do drawing here
--
-- end Draw_Page;
--
--
-- -- Do the printing
-- declare
-- Print_Op : Print_Op_Access;
-- Result : Gtk_Print_Operation_Result;
-- begin
-- -- Initialize
-- Print_Op := new Print_Op_Record;
-- Print_Op.My_Data := Some_Data;
--
-- -- Set the number of pages to print
-- Set_N_Pages (Print_Op, 2);
--
-- -- Launch the printing
-- Result := Connect_And_Run
-- (Print_Op, Action_Print_Dialog, Gtk_Window (Get_Toplevel (Frame)));
-- end;
--
-- </example>
-- <group>Miscellaneous</group>
with Glib; use Glib;
with Glib.Error;
with Gtk.Page_Setup; use Gtk.Page_Setup;
with Gtk.Print_Context; use Gtk.Print_Context;
with Gtk.Print_Operation; use Gtk.Print_Operation;
with Gtk.Print_Operation_Preview; use Gtk.Print_Operation_Preview;
with Gtk.Window; use Gtk.Window;
package Gtkada.Printing is
type Gtkada_Print_Operation_Record is new
Gtk_Print_Operation_Record with private;
type Gtkada_Print_Operation is access all Gtkada_Print_Operation_Record;
procedure Gtk_New (Op : out Gtkada_Print_Operation);
procedure Initialize (Widget : access Gtkada_Print_Operation_Record'Class);
-- Initialize the print operation
function Connect_And_Run
(Op : access Gtkada_Print_Operation_Record'Class;
Action : Gtk_Print_Operation_Action;
Parent : access Gtk_Window_Record'Class;
Error : Glib.Error.GError := null)
return Gtk_Print_Operation_Result;
-- Runs the print operation, using the handlers installed in Op.
-- See Gtk.Print_Operations.Run.
-------------------------
-- Printing operations --
-------------------------
-- The following primitive operations are called by the printing procedure.
-- By default, these operations do nothing.
-- It is mandatory to override Draw_Page, the other callbacks are optional.
procedure Draw_Page
(Op : access Gtkada_Print_Operation_Record;
Context : Gtk_Print_Context;
Page_Number : Gint);
-- Called for every page that is printed. This handler must render the
-- page Page_Number onto the cairo context obtained from Context using
-- Gtk.Print_Context.Get_Cairo_Context.
--
-- Use Gtk.Print_Operation.Set_Use_Full_Page and
-- Gtk.Print_Operation.Set_Unit before starting the print operation to set
-- up the transformation of the cairo context according to your needs.
--
-- This is the main printing handler. This has to be overriden for the
-- printing operation to work.
procedure Begin_Print
(Op : access Gtkada_Print_Operation_Record;
Context : Gtk_Print_Context);
-- Called after the user has finished changing print settings in the
-- dialog, before the actual rendering starts.
--
-- A typical use is to use the parameters from the
-- Gtk_Print_Context and paginate the document accordingly, and then
-- set the number of pages with Gtk.Print_Operation.Set_N_Pages.
procedure Done
(Op : access Gtkada_Print_Operation_Record;
Result : Gtk_Print_Operation_Result);
-- Called 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 Result_Error then you can call Get_Error for more
-- information.
--
-- If you enabled print status tracking then
-- Gtk.Print_Operation.Is_Finished may still return False after
-- done was emitted.
procedure End_Print
(Op : access Gtkada_Print_Operation_Record;
Context : Gtk_Print_Context);
-- Called after all pages have been rendered.
--
-- This handler can clean up any resources that have been allocated
-- in Begin_Print.
function Paginate
(Op : access Gtkada_Print_Operation_Record;
Context : Gtk_Print_Context) return Boolean;
-- Called after the "begin-print" signal, but before the actual rendering
-- starts. It keeps getting called until it 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. This function should update the number of pages using
-- Gtk.Print_Operation.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.
function Preview
(Op : access Gtkada_Print_Operation_Record;
Preview : Gtk_Print_Operation_Preview;
Context : Gtk_Print_Context;
Parent : Gtk_Window)
return Boolean;
-- Called when a preview is requested from the native dialog.
-- This should return True if the in order to take over control of the
-- preview.
--
-- The default handler for this signal uses an external viewer
-- application to preview.
--
-- To implement a custom print preview, the overridden implementation
-- should return True
-- In order to use the provided Context for the preview implementation, it
-- must be given a suitable cairo context with Set_Cairo_Context.
--
-- The custom preview implementation can use
-- Gtk.Print_Operation_Preview.Is_Selected and
-- Gtk.Print_Operation_Preview.Render_Page to find pages which
-- are selected for print and render them. The preview must be
-- finished by calling Gtk.Print_Operation_Preview.End_Preview
-- (typically in response to the user clicking a close button).
procedure Request_Page_Setup
(Op : access Gtkada_Print_Operation_Record;
Context : Gtk_Print_Context;
Page_Number : Gint;
Setup : Gtk_Page_Setup);
-- Called once for every page that is printed, to give the application
-- a chance to modify the page setup. Any changes done to setup will be
-- in force only for printing this page.
procedure Status_Changed (Op : access Gtkada_Print_Operation_Record);
-- Called between the various phases of the print operation.
-- See Gtk_Print_Status for the phases that are being discriminated.
-- Use Gtk.Print_Operation.Get_Status to find out the current
-- status.
private
type Gtkada_Print_Operation_Record is new Gtk_Print_Operation_Record with
null record;
end Gtkada.Printing;
|