diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-15 19:45:59 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-06-15 19:46:12 -0400 |
commit | 321615e8eabc9c0085979af8af842d16433b1d1c (patch) | |
tree | 4b8918c2ee74b1e17b5c83b20c6403ee3dbb7414 /gtk2_ardour/keyeditor.cc | |
parent | 8b0c5b8426497cc8e96d0d695efcd5ededdd419b (diff) |
initial working version of "printing" keybindings (via a browser)
Diffstat (limited to 'gtk2_ardour/keyeditor.cc')
-rw-r--r-- | gtk2_ardour/keyeditor.cc | 43 |
1 files changed, 41 insertions, 2 deletions
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 <map> #include <fstream> +#include <sstream> #include <boost/algorithm/string.hpp> +#include <glib.h> +#include <glib/gstdio.h> + #include <gtkmm/stock.h> #include <gtkmm/label.h> #include <gtkmm/accelkey.h> @@ -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)); } |