From: Paul Davis Date: Wed, 15 Jun 2016 23:45:59 +0000 (-0400) Subject: initial working version of "printing" keybindings (via a browser) X-Git-Tag: 5.0-pre1~487 X-Git-Url: https://main.carlh.net/gitweb/?p=ardour.git;a=commitdiff_plain;h=321615e8eabc9c0085979af8af842d16433b1d1c initial working version of "printing" keybindings (via a browser) --- diff --git a/gtk2_ardour/keyeditor.cc b/gtk2_ardour/keyeditor.cc index 3352a25376..73f17f114d 100644 --- a/gtk2_ardour/keyeditor.cc +++ b/gtk2_ardour/keyeditor.cc @@ -23,9 +23,13 @@ #include #include +#include #include +#include +#include + #include #include #include @@ -35,6 +39,8 @@ #include "gtkmm2ext/bindings.h" #include "gtkmm2ext/utils.h" +#include "pbd/error.h" +#include "pbd/openuri.h" #include "pbd/strsplit.h" #include "ardour/filesystem_paths.h" @@ -520,6 +526,39 @@ KeyEditor::search_string_updated (const std::string& filter) void KeyEditor::print () const { - // use Glib::file_open_tmp() if needed - Bindings::save_all_bindings_as_html (cerr); + stringstream sstr; + Bindings::save_all_bindings_as_html (sstr); + + if (sstr.str().empty()) { + return; + } + + + gchar* file_name; + GError *err = NULL; + gint fd; + + if ((fd = g_file_open_tmp ("akprintXXXXXX.html", &file_name, &err)) < 0) { + if (err) { + error << string_compose (_("Could not open temporary file to print bindings (%1)"), err->message) << endmsg; + g_error_free (err); + } + return; + } + + err = NULL; + + if (!g_file_set_contents (file_name, sstr.str().c_str(), sstr.str().size(), &err)) { + ::close (fd); + g_unlink (file_name); + if (err) { + error << string_compose (_("Could not save bindings to file (%1)"), err->message) << endmsg; + g_error_free (err); + } + return; + } + + ::close (fd); + + PBD::open_uri (string_compose ("file:///%1", file_name)); }