diff options
author | Christian Dywan <christian@twotoasts.de> | 2018-09-11 16:53:53 +0200 |
---|---|---|
committer | Christian Dywan <christian@twotoasts.de> | 2018-09-11 16:54:46 +0200 |
commit | 3e769aaa4cff0d6145d01c68a5fe59c51df57516 (patch) | |
tree | 49b8ddd93cd61ef350ecd29512106a70a146feda | |
parent | cc50b965145eb068328469a68b16fa9e039e9a53 (diff) | |
download | midori-git-view_source.tar.gz |
Add View Source item to page menuview_source
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 6d04c4a2..7ce28443 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 }, @@ -104,6 +105,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" }); @@ -396,6 +398,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> |