summaryrefslogtreecommitdiff
path: root/gtk2_ardour/editor.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour/editor.cc')
-rw-r--r--gtk2_ardour/editor.cc49
1 files changed, 41 insertions, 8 deletions
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index dadcc7a984..819309d8f4 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -49,13 +49,14 @@
#include <gdkmm/color.h>
#include <gdkmm/bitmap.h>
-#include <gtkmm2ext/grouped_buttons.h>
-#include <gtkmm2ext/gtk_ui.h>
-#include <gtkmm2ext/tearoff.h>
-#include <gtkmm2ext/utils.h>
-#include <gtkmm2ext/window_title.h>
-#include <gtkmm2ext/choice.h>
-#include <gtkmm2ext/cell_renderer_pixbuf_toggle.h>
+#include "gtkmm2ext/bindings.h"
+#include "gtkmm2ext/grouped_buttons.h"
+#include "gtkmm2ext/gtk_ui.h"
+#include "gtkmm2ext/tearoff.h"
+#include "gtkmm2ext/utils.h"
+#include "gtkmm2ext/window_title.h"
+#include "gtkmm2ext/choice.h"
+#include "gtkmm2ext/cell_renderer_pixbuf_toggle.h"
#include "ardour/audio_diskstream.h"
#include "ardour/audio_track.h"
@@ -719,6 +720,17 @@ Editor::Editor ()
_show_marker_lines = false;
_over_region_trim_target = false;
+ /* Button bindings */
+
+ button_bindings = new Bindings;
+
+ XMLNode* node = button_settings();
+ if (node) {
+ for (XMLNodeList::const_iterator i = node->children().begin(); i != node->children().end(); ++i) {
+ button_bindings->load (**i);
+ }
+ }
+
constructed = true;
instant_save ();
@@ -738,13 +750,28 @@ Editor::~Editor()
image_socket_listener = 0 ;
}
#endif
-
+
+ delete button_bindings;
delete _routes;
delete _route_groups;
delete track_canvas;
delete _drags;
}
+XMLNode*
+Editor::button_settings () const
+{
+ XMLNode* settings = ARDOUR_UI::instance()->editor_settings();
+ XMLNode* node = find_named_node (*settings, X_("Buttons"));
+
+ if (!node) {
+ cerr << "new empty Button node\n";
+ node = new XMLNode (X_("Buttons"));
+ }
+
+ return node;
+}
+
void
Editor::add_toplevel_controls (Container& cont)
{
@@ -2389,6 +2416,12 @@ Editor::get_state ()
snprintf (buf, sizeof (buf), "%d", _the_notebook.get_current_page ());
node->add_property (X_("editor-list-page"), buf);
+ if (button_bindings) {
+ XMLNode* bb = new XMLNode (X_("Buttons"));
+ button_bindings->save (*bb);
+ node->add_child_nocopy (*bb);
+ }
+
node->add_property (X_("show-marker-lines"), _show_marker_lines ? "yes" : "no");
node->add_child_nocopy (selection->get_state ());