X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=webkitpdf.vala;h=e9ececc9b354aab9e93d7ee452e595dbdb5093b3;hb=e72cfcbc6463587183427fc6ac76a23416695833;hp=10cacc4c0b2acea5a841ae4df6feee03665b3ac5;hpb=e92fb3a93d03d4942b4e102461b85fd455bed73a;p=app.webkitpdf diff --git a/webkitpdf.vala b/webkitpdf.vala index 10cacc4..e9ececc 100644 --- a/webkitpdf.vala +++ b/webkitpdf.vala @@ -1,35 +1,59 @@ -// valac --thread webkitpdf.vala BrowserWindow.vala --pkg glib-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 -o /usr/bin/webkitpdf --target-glib=2.32 - +/* + sudo valac --vapidir=. --thread webkitpdf.vala BrowserWindow.vala --vapidir=./vapi \ + --pkg glib-2.0 --pkg webkit-1.0 --pkg gtk+-2.0 -o /usr/bin/webkitpdf --target-glib=2.32 + + sudo valac -D GTK3 --vapidir=. --thread webkitpdf.vala BrowserWindow.vala --vapidir=./vapi \ + --pkg glib-2.0 --pkg webkit2gtk-4.0 --pkg gtk+-3.0 --pkg gio-2.0 -o /usr/bin/webkitpdf2 --target-glib=2.32 + + + +*/ public class webkitpdf { public static string? opt_url = null; public static uint opt_delay = 0; - public static string opt_target_png = null; - public static string opt_target_jpg = null; - public static string[]? opt_inject_js = null; + public static int opt_width = 0; + public static int opt_height = 0; + public static string? opt_target_png = null; + public static string? opt_target_pdf = null; + [CCode (array_length = false, array_null_terminated = true)] + public static string[] opt_inject_js; + public static string? opt_cookies = null; + const OptionEntry[] options = { - + { "width", 0, 0, OptionArg.INT, ref opt_width, "Width (default 1200)", null }, + { "height", 0, 0, OptionArg.INT, ref opt_height, "Height (PNG only) (default to expand to fit)", null }, { "url", 0, 0, OptionArg.STRING, ref opt_url, "Url to grab", null }, { "delay", 0, 0, OptionArg.INT, ref opt_delay, "Delay before snapshot in seconds", null }, - { "jpg", 0, 0, OptionArg.STRING, ref opt_target_png, "File to write (JPG)", null }, + { "png", 0, 0, OptionArg.STRING, ref opt_target_png, "File to write (PNG)", null }, { "inject", 0, 0, OptionArg.STRING_ARRAY, ref opt_inject_js, "Inject Javascript file(s)", null }, { "pdf", 0, 0, OptionArg.STRING, ref opt_target_pdf, "File to write (PDF)", null }, + { "cookies", 0, 0, OptionArg.STRING, ref opt_cookies, "Inject Cookie string", null }, { null } - }; + }; public static int main(string[] args) { Gtk.init(ref args); + +#if GTK3 + // this is a horrific hack from https://bugs.webkit.org/show_bug.cgi?id=128674 + Environment.unset_variable("GNOME_DESKTOP_SESSION_ID"); + Environment.unset_variable("DESKTOP_SESSION"); + // it should now fallb ack to http prox!? + + +#else unowned string proxy = Environment.get_variable ("http_proxy"); if (proxy != null && proxy.length > 0) { var sess = WebKit.get_default_session(); sess.proxy_uri = new Soup.URI(proxy); } - +#endif var opt_context = new OptionContext ("webkitpdf"); - + try { opt_context.set_help_enabled (true); @@ -39,23 +63,54 @@ public class webkitpdf { if (webkitpdf.opt_url == null) { throw new OptionError.BAD_VALUE("missing url"); } - if (webkitpdf.opt_target_jpg == null && webkitpdf.opt_target_pdf == null) { - throw new OptionError.BAD_VALUE("missing pdf or jpg filename"); - } - if (webkitpdf.opt_target_pdf == null) { - throw new OptionError.BAD_VALUE("missing pdf file path"); + if (webkitpdf.opt_target_png == null && webkitpdf.opt_target_pdf == null) { + throw new OptionError.BAD_VALUE("missing pdf or png filename"); } + + stdout.printf ( """Width: %d + Height: %d + URL: %s + Delay: %d + png: %s + inject: %s + PDF: %s + Cookie: %s + """, + opt_width, + opt_height, + opt_url, + (int) opt_delay, + opt_target_png == null ? "--empty--" : opt_target_png, + opt_inject_js.length < 1? "--empty--" : string.joinv(", ", opt_inject_js), + opt_target_pdf == null ? "--empty--" : opt_target_pdf, + opt_cookies == null ? "--empty--" : opt_cookies + + + ); + + } catch (OptionError e) { stdout.printf ("error: %s\n", e.message); stdout.printf ("Run '%s --help' to see a full list of available command line options.\n %s", args[0], opt_context.get_help(true,null)); return 0; } - - + var browser = new BrowserWindow(); browser.el.show_all(); + /* + var ses = WebKit.get_default_session(); + ses.request_queued.connect((msg) => { + print("queued request %s\n", msg.uri.to_string(false)); + msg.got_headers.connect(() => { + print("got conent type %s\n", msg.response_headers.get_content_type (null)); + if (msg.response_headers.get_content_type (null) == "image/jpeg") { + ses.cancel_message(msg,Soup.KnownStatusCode.CANCELLED); + } + }); + }); + */ Gtk.main(); @@ -64,4 +119,5 @@ public class webkitpdf { } + \ No newline at end of file