BrowserWindow.bjs
authorAlan Knowles <alan@roojs.com>
Tue, 19 Apr 2016 03:15:41 +0000 (11:15 +0800)
committerAlan Knowles <alan@roojs.com>
Tue, 19 Apr 2016 03:15:41 +0000 (11:15 +0800)
BrowserWindow.vala

BrowserWindow.bjs
BrowserWindow.vala

index 2447d72..b265b63 100644 (file)
@@ -30,8 +30,8 @@
        "| void printit" : "() {\n   print(\"load_finsihed\\n\");\n \n\t// inject any javascript if needed..\n\tif (webkitpdf.opt_inject_js != null) {\n\t\tfor(var i =0; i < webkitpdf.opt_inject_js.length;i++) {\n\t\t\tstring str;\n\t\t\ttry {\n\t\t\t\tFileUtils.get_contents( webkitpdf.opt_inject_js[i], out str);\n\t\t\t} catch(FileError e) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tthis.el.execute_script(str);\n\t\t}\n\t}\n\n\tprint(\"calling print in %d seconds\\n\", (int)webkitpdf.opt_delay);\n    GLib.Timeout.add_seconds(webkitpdf.opt_delay, () => { \n\t\n    }, GLib.Priority.DEFAULT);\n}\n",
        "* pack" : "add",
        "xtype" : "WebView",
-       "$ xns" : "WebKit",
-       "| return_type printpdf" : "() {\n\n}\n"
+       "| bool printpdf" : "() {\n\t \n\t\tvar  pe = new  Gtk.PrintOperation();\n\t\tpe.export_filename = webkitpdf.opt_target_pdf;\n\t\tprint(\"got callback for print\");\n\t\tpe.ref();\n\t\t/*pe.failed.connect(() => {\n\t\t\tprint(\"print failed\\n\");\n\t\t\t Gtk.main_quit();\n    \t\t\n\t\t})\n\t\t*/;\n\t\t pe.done.connect(() => {\n\t\t\tprint(\"print completed\\n\");\n\t\t\t Gtk.main_quit();\n    \t\t\n\t\t});\n\t\t\n\t\t//pe.run_dialog(_this.el);\n\t \n\t\t\n\t    var list = Gtk.PaperSize.get_paper_sizes(false);\n\t    var psetup = new Gtk.PageSetup();\n\t    for(var i = 0; i < list.length(); i++ ) {\n\t        var entry = list.nth_data(i).copy();\n\t        if (entry.get_name() == \"iso_a2\") {\n\t            psetup.set_paper_size(entry);\n\t        }\n\t    }\n\t        \n\n\n\t    pe.set_default_page_setup(psetup);\n\t    print(\"Calling Print?\\n\");\n\t    //pe.run_dialog(_this.el);\n\t    try {\n\t\t    this.el.get_main_frame().print_full(pe,Gtk.PrintOperationAction.EXPORT);\n\t    } catch (Error e) {\n\t\t\t// print failed...\n\t\t}\n\t    \n\t    \n\t     \n\t\treturn false;\n}\n",
+       "$ xns" : "WebKit"
       }
      ]
     }
index be97fa0..2401df7 100644 (file)
@@ -128,8 +128,50 @@ public class BrowserWindow : Object
                
             }, GLib.Priority.DEFAULT);
         }
-        public return_type printpdf () {
+        public bool printpdf () {
+                
+                       var  pe = new  Gtk.PrintOperation();
+                       pe.export_filename = webkitpdf.opt_target_pdf;
+                       print("got callback for print");
+                       pe.ref();
+                       /*pe.failed.connect(() => {
+                               print("print failed\n");
+                                Gtk.main_quit();
+                       
+                       })
+                       */;
+                        pe.done.connect(() => {
+                               print("print completed\n");
+                                Gtk.main_quit();
+                       
+                       });
+                       
+                       //pe.run_dialog(_this.el);
+                
+                       
+                   var list = Gtk.PaperSize.get_paper_sizes(false);
+                   var psetup = new Gtk.PageSetup();
+                   for(var i = 0; i < list.length(); i++ ) {
+                       var entry = list.nth_data(i).copy();
+                       if (entry.get_name() == "iso_a2") {
+                           psetup.set_paper_size(entry);
+                       }
+                   }
+                       
         
+        
+                   pe.set_default_page_setup(psetup);
+                   print("Calling Print?\n");
+                   //pe.run_dialog(_this.el);
+                   try {
+                           this.el.get_main_frame().print_full(pe,Gtk.PrintOperationAction.EXPORT);
+                   } catch (Error e) {
+                               // print failed...
+                       }
+                   
+                   
+                    
+                       return false;
         }
     }