change the way the key editor gets populated; drop binding sets with no actions
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 15 Mar 2016 23:46:28 +0000 (19:46 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 15 Mar 2016 23:46:28 +0000 (19:46 -0400)
gtk2_ardour/ardour_ui.h
gtk2_ardour/ardour_ui_dialogs.cc
gtk2_ardour/keyeditor.cc
gtk2_ardour/keyeditor.h
gtk2_ardour/monitor_section.cc

index 2f1820ebfc1f9c5eeb3eead1dac7972ffe5da5f9..bc58341ec70101cb2491182d72656f353cc794b3 100644 (file)
@@ -231,9 +231,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
        XMLNode* keyboard_settings () const;
        XMLNode* tearoff_settings (const char*) const;
 
-       void add_keyboard_binding_tab (std::string const & name, Gtkmm2ext::Bindings&);
-       void remove_keyboard_binding_tab (std::string const & name);
-
        void save_ardour_state ();
        gboolean configure_handler (GdkEventConfigure* conf);
 
index 8da911dd7d13c4cebc685fc1500c14c27efdc83d..c284decb4a8d79c22b77e914ba623767430de70d 100644 (file)
@@ -54,6 +54,7 @@
 #include "main_clock.h"
 #include "meterbridge.h"
 #include "meter_patterns.h"
+#include "monitor_section.h"
 #include "midi_tracer.h"
 #include "mixer_ui.h"
 #include "public_editor.h"
@@ -803,41 +804,13 @@ ARDOUR_UI::create_key_editor ()
 {
        KeyEditor* kedit = new KeyEditor;
 
-       if (global_bindings) {
-               kedit->add_tab (_("Global"), *global_bindings);
-       }
-
-       if (editor->bindings) {
-               kedit->add_tab (_("Editing"), *editor->bindings);
-       }
-
-       if (mixer->bindings) {
-               kedit->add_tab (_("Mixing"), *mixer->bindings);
-       }
-
-       if (ProcessorBox::bindings) {
-               kedit->add_tab (_("Processor Box"), *ProcessorBox::bindings);
+       for (std::list<Bindings*>::iterator b = Bindings::bindings.begin(); b != Bindings::bindings.end(); ++b) {
+               kedit->add_tab ((*b)->name(), **b);
        }
 
        return kedit;
 }
 
-void
-ARDOUR_UI::add_keyboard_binding_tab (std::string const& name, Gtkmm2ext::Bindings& b)
-{
-       if (key_editor) {
-               key_editor->add_tab (name, b);
-       }
-}
-
-void
-ARDOUR_UI::remove_keyboard_binding_tab (std::string const& name)
-{
-       if (key_editor) {
-               key_editor->remove_tab (name);
-       }
-}
-
 BundleManager*
 ARDOUR_UI::create_bundle_manager ()
 {
index 794e2e258c79e5684157db59f3064d4dd5a57080..8c4aaa191115fa6301a111c3a871b07245eaef48 100644 (file)
@@ -114,7 +114,13 @@ void
 KeyEditor::add_tab (string const & name, Bindings& bindings)
 {
        Tab* t = new Tab (*this, name, &bindings);
-       t->populate ();
+
+       if (t->populate () == 0) {
+               /* no bindings */
+               delete t;
+               return;
+       }
+
        t->show_all ();
        notebook.append_page (*t, name);
 }
@@ -135,6 +141,7 @@ KeyEditor::remove_tab (string const &name)
                        }
                }
        }
+       cerr << "Removed " << name << endl;
 }
 
 void
@@ -305,7 +312,7 @@ KeyEditor::Tab::bind (GdkEventKey* release_event, guint pressed_key)
        }
 }
 
-void
+uint32_t
 KeyEditor::Tab::populate ()
 {
        vector<string> paths;
@@ -395,6 +402,8 @@ KeyEditor::Tab::populate ()
                }
                row[columns.action] = *a;
        }
+
+       return data_model->children().size();
 }
 
 void
index 2a612160fae72ea34d1d09c5dbfa8e92b84c8981..91834c4dea23664fbf89448dd9d28333d23d0f60 100644 (file)
@@ -49,7 +49,7 @@ class KeyEditor : public ArdourWindow
                public:
                Tab (KeyEditor&, std::string const &name, Gtkmm2ext::Bindings*);
 
-               void populate ();
+               uint32_t populate ();
                void unbind ();
                void bind (GdkEventKey* release_event, guint pressed_key);
                void action_selected ();
index 364e2fe8bdedb890774b24c9a36354f811cbae4c..63227ac58c152653149caaac91821a334a7ad64c 100644 (file)
@@ -97,7 +97,6 @@ MonitorSection::MonitorSection (Session* s)
                load_bindings ();
                if (bindings) {
                        set_data ("ardour-bindings", bindings);
-                       ARDOUR_UI::instance()->add_keyboard_binding_tab (_("Monitor Section"), *bindings);
                }
        }
 
@@ -492,8 +491,6 @@ MonitorSection::MonitorSection (Session* s)
 
 MonitorSection::~MonitorSection ()
 {
-       ARDOUR_UI::instance()->remove_keyboard_binding_tab (_("Monitor Section"));
-
        for (ChannelButtons::iterator i = _channel_buttons.begin(); i != _channel_buttons.end(); ++i) {
                delete *i;
        }