BrowserWindow.bjs
[app.webkitpdf] / BrowserWindow.vala
1 static BrowserWindow  _BrowserWindow;
2
3 public class BrowserWindow : Object
4 {
5     public Gtk.Window el;
6     private BrowserWindow  _this;
7
8     public static BrowserWindow singleton()
9     {
10         if (_BrowserWindow == null) {
11             _BrowserWindow= new BrowserWindow();
12         }
13         return _BrowserWindow;
14     }
15     public Xcls_view view;
16
17         // my vars (def)
18
19     // ctor
20     public BrowserWindow()
21     {
22         _this = this;
23         this.el = new Gtk.Window( Gtk.WindowType.TOPLEVEL );
24
25         // my vars (dec)
26
27         // set gobject values
28         var child_0 = new Xcls_ScrolledWindow2( _this );
29         child_0.ref();
30         this.el.add (  child_0.el  );
31
32         //listeners
33         this.el.destroy.connect( () => {
34             Gtk.main_quit();
35         });
36         this.el.show.connect( () => {
37                 this.el.resize(1200,500);
38                 this.view.el.load_uri(webkitpdf.opt_url);
39         
40         });
41     }
42
43     // user defined functions
44     public class Xcls_ScrolledWindow2 : Object
45     {
46         public Gtk.ScrolledWindow el;
47         private BrowserWindow  _this;
48
49
50             // my vars (def)
51
52         // ctor
53         public Xcls_ScrolledWindow2(BrowserWindow _owner )
54         {
55             _this = _owner;
56             this.el = new Gtk.ScrolledWindow( null, null );
57
58             // my vars (dec)
59
60             // set gobject values
61             var child_0 = new Xcls_view( _this );
62             child_0.ref();
63             this.el.add (  child_0.el  );
64
65             // init method
66
67             {
68                 this.el.set_policy(Gtk.PolicyType.AUTOMATIC, Gtk.PolicyType.AUTOMATIC);
69             }
70         }
71
72         // user defined functions
73     }
74     public class Xcls_view : Object
75     {
76         public WebKit.WebView el;
77         private BrowserWindow  _this;
78
79
80             // my vars (def)
81
82         // ctor
83         public Xcls_view(BrowserWindow _owner )
84         {
85             _this = _owner;
86             _this.view = this;
87             this.el = new WebKit.WebView();
88
89             // my vars (dec)
90
91             // set gobject values
92
93             //listeners
94             this.el.load_finished.connect( (le) => {
95                          
96                     print("load_changed %d ?= %d\n", le, WebKit.LoadEvent.FINISHED);
97             
98                     if (le != WebKit.LoadEvent.FINISHED) {
99                         return;
100                     }
101                     /*
102                     GLib.Timeout.add_seconds(webkitpdf.opt_delay, () => { 
103                         print("making screenshot\n");
104                         _this.view.el.get_snapshot.begin(
105                                         WebKit.SnapshotRegion.FULL_DOCUMENT, 
106                                         WebKit.SnapshotOptions.NONE, null, (obj, res) => {
107                             var sf = _this.view.el.get_snapshot.end(res);
108             
109                             sf.write_to_png(webkitpdf.opt_target_png);
110                         });
111                         Gtk.main_quit();
112                         return false;
113                     }, GLib.Priority.DEFAULT);
114              */       
115              
116                         print("calling print in %d seconds\n", (int)webkitpdf.opt_delay);
117                     GLib.Timeout.add_seconds(webkitpdf.opt_delay, () => { 
118                                  
119                                 var  pe = new  Gtk.PrintOperation();
120                                 print("got callback for print");
121                                 pe.ref();
122                                 /*pe.failed.connect(() => {
123                                         print("print failed\n");
124                                          Gtk.main_quit();
125                                 
126                                 })
127                                 */;
128                                  pe.done.connect(() => {
129                                         print("print completed\n");
130                                          Gtk.main_quit();
131                                 
132                                 });
133                                 
134                                 //pe.run_dialog(_this.el);
135                                 return false;
136                                 
137                             var list = Gtk.PaperSize.get_paper_sizes(false);
138                             var psetup = new Gtk.PageSetup();
139                             for(var i = 0; i < list.length(); i++ ) {
140                                 var entry = list.nth_data(i).copy();
141                                 if (entry.get_name() == "iso_a2") {
142                                     psetup.set_paper_size(entry);
143                                 }
144                             }
145                                 
146             
147             
148                             var ps = new Gtk.PrintSettings();
149                             ps.set_printer("Print to File");
150                             ps.set("output-file-format", "pdf");
151                             //ps.set("output-uri", "file://" + webkitpdf.opt_target_pdf);
152                             ps.set("output-uri",  webkitpdf.opt_target_pdf);
153             
154                             pe.set_print_settings(ps);
155                             pe.set_page_setup(psetup);
156                             print("Calling Print?\n");
157                             //pe.run_dialog(_this.el);
158                             this.el.get_main_frame().print();
159                             
160                             return false;
161             
162                                 return false;
163                     }, GLib.Priority.DEFAULT);
164              
165             });
166         }
167
168         // user defined functions
169     }
170
171
172 }