summaryrefslogtreecommitdiff
path: root/gtk2_ardour/keyeditor.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-06-15 19:45:59 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2016-06-15 19:46:12 -0400
commit321615e8eabc9c0085979af8af842d16433b1d1c (patch)
tree4b8918c2ee74b1e17b5c83b20c6403ee3dbb7414 /gtk2_ardour/keyeditor.cc
parent8b0c5b8426497cc8e96d0d695efcd5ededdd419b (diff)
initial working version of "printing" keybindings (via a browser)
Diffstat (limited to 'gtk2_ardour/keyeditor.cc')
-rw-r--r--gtk2_ardour/keyeditor.cc43
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));
}