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( ( ) => {
95                          
96                     print("load_finsihed\n");
97              
98                         // inject any javascript if needed..
99                         if (webkitpdf.opt_inject_js != null) {
100                                 for(var i =0; i < webkitpdf.opt_inject_js.length;i++) {
101                                         String str;
102                                         FileUtils.get_contents( webkitpdf.opt_inject_js[i], out str);
103                                         this.el.execute_string(str);
104                                 }
105                         }
106              
107                         print("calling print in %d seconds\n", (int)webkitpdf.opt_delay);
108                     GLib.Timeout.add_seconds(webkitpdf.opt_delay, () => { 
109                                  
110                                 var  pe = new  Gtk.PrintOperation();
111                                 pe.export_filename = webkitpdf.opt_target_pdf;
112                                 print("got callback for print");
113                                 pe.ref();
114                                 /*pe.failed.connect(() => {
115                                         print("print failed\n");
116                                          Gtk.main_quit();
117                                 
118                                 })
119                                 */;
120                                  pe.done.connect(() => {
121                                         print("print completed\n");
122                                          Gtk.main_quit();
123                                 
124                                 });
125                                 
126                                 //pe.run_dialog(_this.el);
127                          
128                                 
129                             var list = Gtk.PaperSize.get_paper_sizes(false);
130                             var psetup = new Gtk.PageSetup();
131                             for(var i = 0; i < list.length(); i++ ) {
132                                 var entry = list.nth_data(i).copy();
133                                 if (entry.get_name() == "iso_a2") {
134                                     psetup.set_paper_size(entry);
135                                 }
136                             }
137                                 
138             
139              
140                             pe.set_default_page_setup(psetup);
141                             print("Calling Print?\n");
142                             //pe.run_dialog(_this.el);
143                             this.el.get_main_frame().print_full(pe,Gtk.PrintOperationAction.EXPORT);
144                             
145                             
146                              
147                                 return false;
148                     }, GLib.Priority.DEFAULT);
149              
150             });
151         }
152
153         // user defined functions
154     }
155
156
157 }