1 static BrowserWindow _BrowserWindow;
3 public class BrowserWindow : Object
6 private BrowserWindow _this;
8 public static BrowserWindow singleton()
10 if (_BrowserWindow == null) {
11 _BrowserWindow= new BrowserWindow();
13 return _BrowserWindow;
15 public Xcls_view view;
20 public BrowserWindow()
23 this.el = new Gtk.Window( Gtk.WindowType.TOPLEVEL );
28 var child_0 = new Xcls_ScrolledWindow2( _this );
30 this.el.add ( child_0.el );
33 this.el.destroy.connect( () => {
36 this.el.show.connect( () => {
37 this.el.resize(1200,500);
38 this.view.el.load_uri(webkitpdf.opt_url);
43 // user defined functions
44 public class Xcls_ScrolledWindow2 : Object
46 public Gtk.ScrolledWindow el;
47 private BrowserWindow _this;
53 public Xcls_ScrolledWindow2(BrowserWindow _owner )
56 this.el = new Gtk.ScrolledWindow( null, null );
61 var child_0 = new Xcls_view( _this );
63 this.el.add ( child_0.el );
68 this.el.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
72 // user defined functions
74 public class Xcls_view : Object
76 public WebKit.WebView el;
77 private BrowserWindow _this;
83 public Xcls_view(BrowserWindow _owner )
87 this.el = new WebKit.WebView();
94 this.el.print.connect( (pe) => {
96 print("got callback for print");
98 pe.failed.connect(() => {
99 print("print failed\n");
103 pe.finished.connect(() => {
104 print("print completed\n");
109 //pe.run_dialog(_this.el);
112 var list = Gtk.PaperSize.get_paper_sizes(false);
113 var psetup = new Gtk.PageSetup();
114 for(var i = 0; i < list.length(); i++ ) {
115 var entry = list.nth_data(i).copy();
116 if (entry.get_name() == "iso_a2") {
117 psetup.set_paper_size(entry);
123 var ps = new Gtk.PrintSettings();
124 ps.set_printer("Print to File");
125 ps.set("output-file-format", "pdf");
126 //ps.set("output-uri", "file://" + webkitpdf.opt_target_pdf);
127 ps.set("output-uri", webkitpdf.opt_target_pdf);
129 pe.set_print_settings(ps);
130 pe.set_page_setup(psetup);
131 print("Calling Print?\n");
132 pe.run_dialog(_this.el);
137 this.el.load_changed.connect( (le) => {
139 print("load_changed %d ?= %d\n", le, WebKit.LoadEvent.FINISHED);
141 if (le != WebKit.LoadEvent.FINISHED) {
145 GLib.Timeout.add_seconds(webkitpdf.opt_delay, () => {
146 print("making screenshot\n");
147 _this.view.el.get_snapshot.begin(
148 WebKit.SnapshotRegion.FULL_DOCUMENT,
149 WebKit.SnapshotOptions.NONE, null, (obj, res) => {
150 var sf = _this.view.el.get_snapshot.end(res);
152 sf.write_to_png(webkitpdf.opt_target_png);
156 }, GLib.Priority.DEFAULT);
159 print("calling print in %d seconds\n", (int)webkitpdf.opt_delay);
160 GLib.Timeout.add_seconds(webkitpdf.opt_delay, () => {
161 print("calling print in js\n");
163 var loop = new MainLoop();
164 this.el.run_javascript.begin("print();", null, (obj,res) => {
165 print("calling print in js ended\n");
166 this.el.run_javascript.end(res);
172 }, GLib.Priority.DEFAULT);
177 // user defined functions