------------------------------------------------------------------------
--# Print Unix dialog (don't use)
-- This demo is meant to show some of the low-level and insanely
-- convoluted calls you could make if you were a glutton for punishment.
--
-- Forget you ever saw this, and use the GtkPrinter.e routines instead!
------------------------------------------------------------------------
include GtkEngine.e
constant docs = `Print Unix Dialog
Click button to pop up a dialog box.
Note: be sure you have a printer set up
because each printer has different options,
therefore different tabs will appear on the dialog.
e.g. for a laserjet, you will see tabs for:
General, Page Setup, Job scheduling, etc...
If no printer is set up, the dialog will be mostly
empty and useless...
This doesn't actually print, just demos the setup.
`
constant fmt = `
Printer: []
Name: []
Supports selection: []
Paper size: []
Display name: []
PPD name: []
Width: []
Height: []
Default: []
Custom size? []
Top margin: []
Left margin: []
`
constant win = create(GtkWindow,{
{"default size",300,200},
{"border width",10},
{"position",GTK_WIN_POS_CENTER},
{"connect","destroy","Quit"}})
constant panel = create(GtkBox,VERTICAL)
add(win,panel)
constant lbl = create(GtkLabel)
set(lbl,"markup",docs)
add(panel,lbl)
constant btn1 = create(GtkButton,"gtk-quit","Quit"),
btn2 = create(GtkButton,"gtk-print","PageSetup"),
box = create(GtkButtonBox)
pack(panel,-box)
add(box,{btn1,btn2})
show_all(win)
main()
-----------------------------
global function PageSetup()
-----------------------------
-- Many of the settings below are not necessary for normal use,
-- they're shown just to illustrate some of the things you can
-- modify or use if you wish. See GTK docs GtkPrintSettings for
-- full list of options;
object setup = create(GtkPageSetup,{
{"orientation",GTK_PAGE_ORIENTATION_REVERSE_LANDSCAPE},
{"left margin",0.25,GTK_UNIT_INCH},
{"right margin",0.50,GTK_UNIT_INCH},
{"top margin",1.0,GTK_UNIT_INCH},
{"bottom margin",0.5,GTK_UNIT_INCH},
{"paper size",create(GtkPaperSize,"na_legal")}})
object settings = create(GtkPrintSettings,{
{"n copies",3},
{"number up",4},
{"printer lpi",300},
{"scale",0.50},
{"print pages",GTK_PRINT_PAGES_RANGES},
{"collate",TRUE},
{"reverse",TRUE}})
object dlg = create(GtkPrintUnixDialog,{
{"embed page setup",TRUE},
{"support selection",TRUE},
{"has selection",TRUE},
{"page setup",setup},
{"print settings",settings}})
if get(dlg,"run") = MB_OK then
object printer = get(dlg,"selected printer")
object printer_name = get(printer,"name")
object printer_location = get(printer,"location")
object printer_job_count = get(printer,"job count")
object paper = get(setup,"paper size")
object paper_name = get(paper,"display name")
atom paper_width = round(get(paper,"width",GTK_UNIT_INCH),10)
atom paper_height = round(get(paper,"height",GTK_UNIT_INCH),10)
atom margin_top = get(paper,"default top margin",GTK_UNIT_INCH)
atom margin_left = get(paper,"default left margin",GTK_UNIT_INCH)
Info(win,"Printer Info",printer_name,
text:format("Location: []\nPaper: []\nSize: [] x []\nMargins: top: [] left: []\nJobs: []",
{printer_location,paper_name,paper_width,paper_height,margin_top,margin_left,printer_job_count}))
end if
set(dlg,"hide")
return 1
end function