--# Print Operation demo include GtkEngine.e include std/os.e -- for sleep() constant docs = `Print Operation 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. Note! This does not PRINT anything, just demos the setup dialog! ` constant win = create(GtkWindow,"size=300x200,border=10,position=1,$destroy=Quit") constant panel = create(GtkBox,"orientation=VERTICAL") add(win,panel) constant lbl = create(GtkLabel) set(lbl,"markup",docs) add(panel,lbl) constant btn1 = create(GtkButton,"gtk-quit","Quit") constant btn2 = create(GtkButton,"gtk-print","PageSetup") constant box = create(GtkButtonBox) pack(panel,-box) add(box,{btn1,btn2}) show_all(win) main() ----------------------------------------- global function StartPrinting(atom op) ----------------------------------------- display("Status: []",{get(op,"status string")}) return 1 end function ----------------------------------------------------------------- global function RenderPage(atom op, atom context, integer pg) ----------------------------------------------------------------- display("Status: []",{get(op,"status string")}) display("Printing page #[]",pg) -- note: this delay is here so you can follow the progress -- on an x-term. A more professional way would be to use -- a pop-up window, but to do this, you will need to set -- up a separate task to update the pop-up message. Otherwise, -- results are unpredictable. Might also try events_pending()? sleep(0.25) return 1 end function ----------------------------- global function PageSetup() ----------------------------- object printop = create(GtkPrintOperation) set(printop,"job name","My Print Job #1") set(printop,"n pages",5) set(printop,"show progress",TRUE) set(printop,"track print status",TRUE) connect(printop,"begin-print","StartPrinting") connect(printop,"draw-page","RenderPage") set(printop,"run",GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG,win) return 1 end function