diff options
author | Christian Dywan <christian@twotoasts.de> | 2018-09-11 23:42:43 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-11 23:42:43 +0200 |
commit | 2443a320082a7c257bd4c864ec4e184c89227f8c (patch) | |
tree | d8b7f1a541261f8cce8f56a5710fa2228f699fe1 | |
parent | 498ec5054aa4300f56f9b95869a4100fd2e9d517 (diff) | |
download | midori-git-2443a320082a7c257bd4c864ec4e184c89227f8c.tar.gz |
Add View Source item to page menu (#54)
Fixes: #34
-rw-r--r-- | core/browser.vala | 26 | ||||
-rw-r--r-- | ui/menus.ui | 5 |
2 files changed, 31 insertions, 0 deletions
diff --git a/core/browser.vala b/core/browser.vala index 07acf920..a1008755 100644 --- a/core/browser.vala +++ b/core/browser.vala @@ -38,6 +38,7 @@ namespace Midori { { "fullscreen", fullscreen_activated }, { "show-downloads", show_downloads_activated }, { "find", find_activated }, + { "view-source", view_source_activated }, { "print", print_activated }, { "show-inspector", show_inspector_activated }, { "clear-private-data", clear_private_data_activated }, @@ -105,6 +106,7 @@ namespace Midori { application.set_accels_for_action ("win.fullscreen", { "F11" }); application.set_accels_for_action ("win.show-downloads", { "<Primary><Shift>j" }); application.set_accels_for_action ("win.find", { "<Primary>f", "slash" }); + application.set_accels_for_action ("win.view-source", { "<Primary>u", "<Primary><Alt>u" }); application.set_accels_for_action ("win.print", { "<Primary>p" }); application.set_accels_for_action ("win.show-inspector", { "<Primary><Shift>i" }); application.set_accels_for_action ("win.goto", { "<Primary>l", "F7" }); @@ -405,6 +407,30 @@ namespace Midori { tab.get_find_controller ().search (search_entry.text, options, int.MAX); } + void view_source_activated () { + view_source.begin (tab); + } + + async void view_source (Tab tab) { + string uri = tab.display_uri; + try { + var file = File.new_for_uri (uri); + if (!uri.has_prefix ("file:///")) { + FileIOStream stream; + file = File.new_tmp ("sourceXXXXXX", out stream); + var data = yield tab.get_main_resource ().get_data (null); + yield stream.output_stream.write_async (data); + yield stream.close_async (); + } + var files = new List<File> (); + files.append (file); + var info = AppInfo.get_default_for_type ("text/plain", false); + info.launch (files, get_display ().get_app_launch_context ()); + } catch (Error error) { + critical ("Failed to open %s in editor: %s", uri, error.message); + } + } + void print_activated () { tab.print (new WebKit.PrintOperation (tab)); } diff --git a/ui/menus.ui b/ui/menus.ui index f96b0431..ae9c7e0b 100644 --- a/ui/menus.ui +++ b/ui/menus.ui @@ -47,6 +47,11 @@ <attribute name="accel"><Primary>f</attribute> </item> <item> + <attribute name="action">win.view-source</attribute> + <attribute name="label" translatable="yes">View So_urce</attribute> + <attribute name="accel"><Primary><Alt>u</attribute> + </item> + <item> <attribute name="action">win.print</attribute> <attribute name="label" translatable="yes">_Print…</attribute> <attribute name="accel"><Primary>p</attribute> |