more fixes on the long road to compiling
authorPaul Davis <paul@linuxaudiosystems.com>
Thu, 17 Nov 2005 21:31:37 +0000 (21:31 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Thu, 17 Nov 2005 21:31:37 +0000 (21:31 +0000)
git-svn-id: svn://localhost/trunk/ardour2@103 d708f5d6-7413-0410-9779-e7cbd77b26cf

15 files changed:
gtk2_ardour/actions.cc
gtk2_ardour/actions.h
gtk2_ardour/ardour_ui.h
gtk2_ardour/ardour_ui_ed.cc
gtk2_ardour/default_keys.cc
gtk2_ardour/editor.h
gtk2_ardour/editor_actions.cc
gtk2_ardour/editor_keys.cc
gtk2_ardour/mixer_ui.cc
gtk2_ardour/mixer_ui.h
gtk2_ardour/mtest.cc
gtk2_ardour/mtest.menus
gtk2_ardour/mtest_other.menus
gtk2_ardour/public_editor.cc
gtk2_ardour/public_editor.h

index c455b30ed03e93ba0a30c268c138e5c425ef6d54..86ca2284f3a1118a39f40f21fb442794d0f8f954 100644 (file)
@@ -29,21 +29,21 @@ using namespace std;
 using namespace Gtk;
 using namespace Glib;
 using namespace sigc;
+using namespace ActionManager;
 
-vector<Glib::RefPtr<Gtk::Action> > ActionManager::session_sensitive_actions;
-vector<Glib::RefPtr<Gtk::Action> > ActionManager::region_list_selection_sensitive_actions;
-vector<Glib::RefPtr<Gtk::Action> > ActionManager::region_selection_sensitive_actions;
-vector<Glib::RefPtr<Gtk::Action> > ActionManager::track_selection_sensitive_actions;
-vector<Glib::RefPtr<Gtk::Action> > ActionManager::plugin_selection_sensitive_actions;
-vector<Glib::RefPtr<Gtk::Action> > ActionManager::range_sensitive_actions;
-vector<Glib::RefPtr<Gtk::Action> > ActionManager::jack_sensitive_actions;
+vector<RefPtr<Gtk::Action> > ActionManager::session_sensitive_actions;
+vector<RefPtr<Gtk::Action> > ActionManager::region_list_selection_sensitive_actions;
+vector<RefPtr<Gtk::Action> > ActionManager::region_selection_sensitive_actions;
+vector<RefPtr<Gtk::Action> > ActionManager::track_selection_sensitive_actions;
+vector<RefPtr<Gtk::Action> > ActionManager::plugin_selection_sensitive_actions;
+vector<RefPtr<Gtk::Action> > ActionManager::range_sensitive_actions;
+vector<RefPtr<Gtk::Action> > ActionManager::jack_sensitive_actions;
+string ActionManager::unbound_string = "--";
 
-namespace ActionManager {
-
-static vector<Glib::RefPtr<UIManager> > ui_managers;
+static vector<RefPtr<UIManager> > ui_managers;
 
 void
-register_ui_manager (Glib::RefPtr<UIManager> uim)
+register_ui_manager (RefPtr<UIManager> uim)
 {
        ui_managers.push_back (uim);
 }
@@ -119,7 +119,7 @@ register_toggle_action (RefPtr<ActionGroup> group, string name, string label, sl
        return act;
 }
 
-bool lookup_entry (const Glib::ustring accel_path, Gtk::AccelKey& key)
+bool lookup_entry (const ustring accel_path, Gtk::AccelKey& key)
 {
        GtkAccelKey gkey;
        bool known = gtk_accel_map_lookup_entry (accel_path.c_str(), &gkey);
@@ -133,10 +133,21 @@ bool lookup_entry (const Glib::ustring accel_path, Gtk::AccelKey& key)
        return known;
 }
 
+void
+merge_actions (RefPtr<ActionGroup> dst, const RefPtr<ActionGroup> src)
+{
+       ListHandle<RefPtr<Action> > group_actions = src->get_actions();
+
+       for (ListHandle<RefPtr<Action> >::iterator a = group_actions.begin(); a != group_actions.end(); ++a) {
+               RefPtr<Action> act = Action::create ((*a)->get_name(), (*a)->property_label());
+               dst->add (act);
+       }
+}
+
 void
 get_all_actions (vector<string>& names, vector<string>& paths, vector<string>& keys, vector<AccelKey>& bindings)
 {
-       for (vector<Glib::RefPtr<UIManager> >::iterator u = ui_managers.begin(); u != ui_managers.end(); ++u) {
+       for (vector<RefPtr<UIManager> >::iterator u = ui_managers.begin(); u != ui_managers.end(); ++u) {
 
                ListHandle<RefPtr<ActionGroup> > uim_groups = (*u)->get_action_groups ();
 
@@ -159,7 +170,7 @@ get_all_actions (vector<string>& names, vector<string>& paths, vector<string>& k
                                if (known) {
                                        keys.push_back ((*u)->get_accel_group()->name (key.get_key(), Gdk::ModifierType (key.get_mod())));
                                } else {
-                                       keys.push_back ("--");
+                                       keys.push_back (unbound_string);
                                }
 
                                bindings.push_back (AccelKey (key.get_key(), Gdk::ModifierType (key.get_mod())));
@@ -167,5 +178,3 @@ get_all_actions (vector<string>& names, vector<string>& paths, vector<string>& k
                }
        }
 }
-
-}
index d36b8b07f482289a4ddb5a437b692f57d98de846..e0d7fa020f3736d3dc9032535d4086e85645c0d7 100644 (file)
@@ -21,6 +21,8 @@ namespace ActionManager
        extern std::vector<Glib::RefPtr<Gtk::Action> > range_sensitive_actions;
        extern std::vector<Glib::RefPtr<Gtk::Action> > jack_sensitive_actions;
 
+       extern std::string unbound_string;  /* the key string returned if an action is not bound */
+
        void register_ui_manager (Glib::RefPtr<Gtk::UIManager>);
 
        Glib::RefPtr<Gtk::Action> register_action (Glib::RefPtr<Gtk::ActionGroup> group, 
@@ -42,6 +44,9 @@ namespace ActionManager
                                                          guint key, Gdk::ModifierType mods);
        Glib::RefPtr<Gtk::Action> register_toggle_action (Glib::RefPtr<Gtk::ActionGroup> group, 
                                                          std::string name, std::string label, sigc::slot<void> sl);
+
+       void merge_actions (Glib::RefPtr<Gtk::ActionGroup> dst, const Glib::RefPtr<Gtk::ActionGroup> src);
+
 };
 
 #endif /* __ardour_gtk_actions_h__ */
index b5ed3b4e3aa265cb51469ea085d00f18667df215..49b1272d24a4daa920b9942b5f313bafd864124c 100644 (file)
@@ -677,6 +677,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI
        /* Keymap handling */
 
        void install_keybindings ();
+       Glib::RefPtr<Gtk::ActionGroup> get_common_actions();
        void install_actions ();
        void test_binding_action (const char *);
        void start_keyboard_prefix();
@@ -732,6 +733,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI
        bool filter_ardour_session_dirs (const Gtk::FileFilter::Info&);
 
        Glib::RefPtr<Gtk::UIManager> ui_manager;
+       Glib::RefPtr<Gtk::ActionGroup> common_actions;
 };
 
 #endif /* __ardour_gui_h__ */
index 42bfadea93c1bf8ec95f3c692f97f3e26faedac5..d653df9942f2d61f55a81f0ec7d342b3f2c073dc 100644 (file)
@@ -139,7 +139,9 @@ ARDOUR_UI::install_actions ()
        act =   register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency8192"), X_("8192"), bind (mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (jack_nframes_t) 8192));
        jack_sensitive_actions.push_back (act);
        
-       Glib::RefPtr<ActionGroup> common_actions = ActionGroup::create (X_("Common"));
+       /* these actions are intended to be shared across all windows */
+       
+       common_actions = ActionGroup::create (X_("Common"));
 
        register_action (common_actions, X_("Start-Prefix"), _("start prefix"), mem_fun(*this, &ARDOUR_UI::start_keyboard_prefix));
        register_action (common_actions, X_("Quit"), _("quit"), (mem_fun(*this, &ARDOUR_UI::finish)));
index 95bc1f0642929414fed8e9a1f64f96fd838b1a9a..a15e12cfae25338f5dd24db6a4185ce802e8d3b5 100644 (file)
@@ -32,74 +32,73 @@ using namespace sigc;
 void
 ARDOUR_UI::install_keybindings ()
 {
-       KeyboardTarget::add_action ("start-prefix", mem_fun(*this, &ARDOUR_UI::start_keyboard_prefix));
+       register_action (shared_actions, "start-prefix", _("start-prefix"), mem_fun(*this, &ARDOUR_UI::start_keyboard_prefix));
 
-       KeyboardTarget::add_action ("toggle-editor-window", mem_fun(*this, &ARDOUR_UI::goto_editor_window));
-       KeyboardTarget::add_action ("toggle-mixer-window", mem_fun(*this, &ARDOUR_UI::goto_mixer_window));
-       KeyboardTarget::add_action ("toggle-locations-window", mem_fun(*this, &ARDOUR_UI::toggle_location_window));
-       KeyboardTarget::add_action ("toggle-big-clock-window", mem_fun(*this, &ARDOUR_UI::toggle_big_clock_window));
-       KeyboardTarget::add_action ("toggle-options-window", mem_fun(*this, &ARDOUR_UI::toggle_options_window));
-       KeyboardTarget::add_action ("toggle-auto-loop", mem_fun(*this, &ARDOUR_UI::toggle_session_auto_loop));
-       KeyboardTarget::add_action ("toggle-punch-in", mem_fun(*this, &ARDOUR_UI::toggle_session_punch_in));
+       register_action (shared_actions, "toggle-editor-window", _("toggle-editor-window"), mem_fun(*this, &ARDOUR_UI::goto_editor_window));
+       register_action (shared_actions, "toggle-mixer-window", _("toggle-mixer-window"), mem_fun(*this, &ARDOUR_UI::goto_mixer_window));
+       register_action (shared_actions, "toggle-locations-window", _("toggle-locations-window"), mem_fun(*this, &ARDOUR_UI::toggle_location_window));
+       register_action (shared_actions, "toggle-big-clock-window", _("toggle-big-clock-window"), mem_fun(*this, &ARDOUR_UI::toggle_big_clock_window));
+       register_action (shared_actions, "toggle-options-window", _("toggle-options-window"), mem_fun(*this, &ARDOUR_UI::toggle_options_window));
+       register_action (shared_actions, "toggle-auto-loop", _("toggle-auto-loop"), mem_fun(*this, &ARDOUR_UI::toggle_session_auto_loop));
+       register_action (shared_actions, "toggle-punch-in", _("toggle-punch-in"), mem_fun(*this, &ARDOUR_UI::toggle_session_punch_in));
 
-       KeyboardTarget::add_action ("new-session", bind (mem_fun(*this, &ARDOUR_UI::new_session), false, string()));
-       KeyboardTarget::add_action ("add-audio-track", bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_track), 1, 1));
-       KeyboardTarget::add_action ("add-audio-bus", bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_bus), 1, 1));
+       register_action (shared_actions, "new-session", _("new-session"), bind (mem_fun(*this, &ARDOUR_UI::new_session), false, string()));
+       register_action (shared_actions, "add-audio-track", _("add-audio-track"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_track), 1, 1));
+       register_action (shared_actions, "add-audio-bus", _("add-audio-bus"), bind (mem_fun(*this, &ARDOUR_UI::session_add_audio_bus), 1, 1));
 
-       KeyboardTarget::add_action ("save-state", bind (mem_fun(*this, &ARDOUR_UI::save_state), string ("")));
-       KeyboardTarget::add_action ("quit", (mem_fun(*this, &ARDOUR_UI::finish)));
+       register_action (shared_actions, "save-state", _("save-state"), bind (mem_fun(*this, &ARDOUR_UI::save_state), string ("")));
+       register_action (shared_actions, "quit", _("quit"), (mem_fun(*this, &ARDOUR_UI::finish)));
+       register_action (shared_actions, "remove-last-capture", _("remove-last-capture"), mem_fun(*this, &ARDOUR_UI::remove_last_capture));
 
-       KeyboardTarget::add_action ("remove-last-capture", mem_fun(*this, &ARDOUR_UI::remove_last_capture));
+       register_action (shared_actions, "transport-stop", _("transport-stop"), mem_fun(*this, &ARDOUR_UI::transport_stop));
+       register_action (shared_actions, "transport-stop-and-forget-capture", _("transport-stop-and-forget-capture"), mem_fun(*this, &ARDOUR_UI::transport_stop_and_forget_capture));
+       register_action (shared_actions, "transport-roll", _("transport-roll"), mem_fun(*this, &ARDOUR_UI::transport_roll));
+       register_action (shared_actions, "transport-loop", _("transport-loop"), mem_fun(*this, &ARDOUR_UI::transport_loop));
+       register_action (shared_actions, "transport-record", _("transport-record"), mem_fun(*this, &ARDOUR_UI::transport_record));
+       register_action (shared_actions, "transport-rewind", _("transport-rewind"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 0));
+       register_action (shared_actions, "transport-rewind-slow", _("transport-rewind-slow"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), -1));
+       register_action (shared_actions, "transport-rewind-fast", _("transport-rewind-fast"), bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 1));
+       register_action (shared_actions, "transport-forward", _("transport-forward"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), 0));
+       register_action (shared_actions, "transport-forward-slow", _("transport-forward-slow"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), -1));
+       register_action (shared_actions, "transport-forward-fast", _("transport-forward-fast"), bind (mem_fun(*this, &ARDOUR_UI::transport_forward), 1));
 
-       KeyboardTarget::add_action ("transport-stop", mem_fun(*this, &ARDOUR_UI::transport_stop));
-       KeyboardTarget::add_action ("transport-stop-and-forget-capture", mem_fun(*this, &ARDOUR_UI::transport_stop_and_forget_capture));
-       KeyboardTarget::add_action ("transport-roll", mem_fun(*this, &ARDOUR_UI::transport_roll));
-       KeyboardTarget::add_action ("transport-loop", mem_fun(*this, &ARDOUR_UI::transport_loop));
-       KeyboardTarget::add_action ("transport-record", mem_fun(*this, &ARDOUR_UI::transport_record));
-       KeyboardTarget::add_action ("transport-rewind", bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 0));
-       KeyboardTarget::add_action ("transport-rewind-slow", bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), -1));
-       KeyboardTarget::add_action ("transport-rewind-fast", bind (mem_fun(*this, &ARDOUR_UI::transport_rewind), 1));
-       KeyboardTarget::add_action ("transport-forward", bind (mem_fun(*this, &ARDOUR_UI::transport_forward), 0));
-       KeyboardTarget::add_action ("transport-forward-slow", bind (mem_fun(*this, &ARDOUR_UI::transport_forward), -1));
-       KeyboardTarget::add_action ("transport-forward-fast", bind (mem_fun(*this, &ARDOUR_UI::transport_forward), 1));
+       register_action (shared_actions, "transport-goto-start", _("transport-goto-start"), mem_fun(*this, &ARDOUR_UI::transport_goto_start));
+       register_action (shared_actions, "transport-goto-end", _("transport-goto-end"), mem_fun(*this, &ARDOUR_UI::transport_goto_end));
 
-       KeyboardTarget::add_action ("transport-goto-start", mem_fun(*this, &ARDOUR_UI::transport_goto_start));
-       KeyboardTarget::add_action ("transport-goto-end", mem_fun(*this, &ARDOUR_UI::transport_goto_end));
-
-       KeyboardTarget::add_action ("send-all-midi-feedback", mem_fun(*this, &ARDOUR_UI::send_all_midi_feedback));
+       register_action (shared_actions, "send-all-midi-feedback", _("send-all-midi-feedback"), mem_fun(*this, &ARDOUR_UI::send_all_midi_feedback));
        
-       KeyboardTarget::add_action ("toggle-record-enable-track1", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  0U));
-       KeyboardTarget::add_action ("toggle-record-enable-track2", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  1U));
-       KeyboardTarget::add_action ("toggle-record-enable-track3", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  2U));
-       KeyboardTarget::add_action ("toggle-record-enable-track4", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  3U));
-       KeyboardTarget::add_action ("toggle-record-enable-track5", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  4U));
-       KeyboardTarget::add_action ("toggle-record-enable-track6", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  5U));
-       KeyboardTarget::add_action ("toggle-record-enable-track7", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  6U));
-       KeyboardTarget::add_action ("toggle-record-enable-track8", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  7U));
-       KeyboardTarget::add_action ("toggle-record-enable-track9", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  8U));
-       KeyboardTarget::add_action ("toggle-record-enable-track10", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 9U));
-       KeyboardTarget::add_action ("toggle-record-enable-track11", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 10U));
-       KeyboardTarget::add_action ("toggle-record-enable-track12", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 11U));
-       KeyboardTarget::add_action ("toggle-record-enable-track13", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 12U));
-       KeyboardTarget::add_action ("toggle-record-enable-track14", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 13U));
-       KeyboardTarget::add_action ("toggle-record-enable-track15", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 14U));
-       KeyboardTarget::add_action ("toggle-record-enable-track16", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 15U));
-       KeyboardTarget::add_action ("toggle-record-enable-track17", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 16U));
-       KeyboardTarget::add_action ("toggle-record-enable-track18", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 17U));
-       KeyboardTarget::add_action ("toggle-record-enable-track19", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 18U));
-       KeyboardTarget::add_action ("toggle-record-enable-track20", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 19U));
-       KeyboardTarget::add_action ("toggle-record-enable-track21", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 20U));
-       KeyboardTarget::add_action ("toggle-record-enable-track22", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 21U));
-       KeyboardTarget::add_action ("toggle-record-enable-track23", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 22U));
-       KeyboardTarget::add_action ("toggle-record-enable-track24", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 23U));
-       KeyboardTarget::add_action ("toggle-record-enable-track25", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 24U));
-       KeyboardTarget::add_action ("toggle-record-enable-track26", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 25U));
-       KeyboardTarget::add_action ("toggle-record-enable-track27", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 26U));
-       KeyboardTarget::add_action ("toggle-record-enable-track28", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 27U));
-       KeyboardTarget::add_action ("toggle-record-enable-track29", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 28U));
-       KeyboardTarget::add_action ("toggle-record-enable-track30", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 29U));
-       KeyboardTarget::add_action ("toggle-record-enable-track31", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 30U));
-       KeyboardTarget::add_action ("toggle-record-enable-track32", bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 31U));
+       register_action (shared_actions, "toggle-record-enable-track1", _("toggle-record-enable-track1"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  0U));
+       register_action (shared_actions, "toggle-record-enable-track2", _("toggle-record-enable-track2"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  1U));
+       register_action (shared_actions, "toggle-record-enable-track3", _("toggle-record-enable-track3"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  2U));
+       register_action (shared_actions, "toggle-record-enable-track4", _("toggle-record-enable-track4"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  3U));
+       register_action (shared_actions, "toggle-record-enable-track5", _("toggle-record-enable-track5"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  4U));
+       register_action (shared_actions, "toggle-record-enable-track6", _("toggle-record-enable-track6"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  5U));
+       register_action (shared_actions, "toggle-record-enable-track7", _("toggle-record-enable-track7"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  6U));
+       register_action (shared_actions, "toggle-record-enable-track8", _("toggle-record-enable-track8"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  7U));
+       register_action (shared_actions, "toggle-record-enable-track9", _("toggle-record-enable-track9"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable),  8U));
+       register_action (shared_actions, "toggle-record-enable-track10", _("toggle-record-enable-track10"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 9U));
+       register_action (shared_actions, "toggle-record-enable-track11", _("toggle-record-enable-track11"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 10U));
+       register_action (shared_actions, "toggle-record-enable-track12", _("toggle-record-enable-track12"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 11U));
+       register_action (shared_actions, "toggle-record-enable-track13", _("toggle-record-enable-track13"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 12U));
+       register_action (shared_actions, "toggle-record-enable-track14", _("toggle-record-enable-track14"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 13U));
+       register_action (shared_actions, "toggle-record-enable-track15", _("toggle-record-enable-track15"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 14U));
+       register_action (shared_actions, "toggle-record-enable-track16", _("toggle-record-enable-track16"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 15U));
+       register_action (shared_actions, "toggle-record-enable-track17", _("toggle-record-enable-track17"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 16U));
+       register_action (shared_actions, "toggle-record-enable-track18", _("toggle-record-enable-track18"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 17U));
+       register_action (shared_actions, "toggle-record-enable-track19", _("toggle-record-enable-track19"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 18U));
+       register_action (shared_actions, "toggle-record-enable-track20", _("toggle-record-enable-track20"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 19U));
+       register_action (shared_actions, "toggle-record-enable-track21", _("toggle-record-enable-track21"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 20U));
+       register_action (shared_actions, "toggle-record-enable-track22", _("toggle-record-enable-track22"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 21U));
+       register_action (shared_actions, "toggle-record-enable-track23", _("toggle-record-enable-track23"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 22U));
+       register_action (shared_actions, "toggle-record-enable-track24", _("toggle-record-enable-track24"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 23U));
+       register_action (shared_actions, "toggle-record-enable-track25", _("toggle-record-enable-track25"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 24U));
+       register_action (shared_actions, "toggle-record-enable-track26", _("toggle-record-enable-track26"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 25U));
+       register_action (shared_actions, "toggle-record-enable-track27", _("toggle-record-enable-track27"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 26U));
+       register_action (shared_actions, "toggle-record-enable-track28", _("toggle-record-enable-track28"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 27U));
+       register_action (shared_actions, "toggle-record-enable-track29", _("toggle-record-enable-track29"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 28U));
+       register_action (shared_actions, "toggle-record-enable-track30", _("toggle-record-enable-track30"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 29U));
+       register_action (shared_actions, "toggle-record-enable-track31", _("toggle-record-enable-track31"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 30U));
+       register_action (shared_actions, "toggle-record-enable-track32", _("toggle-record-enable-track32"), bind (mem_fun(*this, &ARDOUR_UI::toggle_record_enable), 31U));
        
 #if 0
        ADD ME TO ARDOUR RC SOMEDAY
index 0e568b43aa20f078a2dad58d5bcec5a35ac5d122..52be03c4649f689869caeea8306d3b008d7b847b 100644 (file)
@@ -47,7 +47,6 @@
 #include <ardour/location.h>
 #include <ardour/region.h>
 
-#include "keyboard_target.h"
 #include "audio_clock.h"
 #include "gtk-custom-ruler.h"
 #include "ardour_dialog.h"
@@ -834,7 +833,6 @@ class Editor : public PublicEditor
        /* KEYMAP HANDLING */
 
        void register_actions ();
-       void install_keybindings ();
 
        int ensure_cursor (jack_nframes_t* pos);
 
index 7ff4594743fca3dda4f794512c2f568ddef605ff..13b4769111ac40435b7c681c23adcdcbe53d05b0 100644 (file)
@@ -17,10 +17,15 @@ using namespace ActionManager;
 void
 Editor::register_actions ()
 {
-       /* add named actions for the editor */
 
        Glib::RefPtr<ActionGroup> editor_actions = ActionGroup::create (X_("Editor"));
 
+       /* start with actions shared between all top level (major) windows */
+
+       merge_actions (editor_actions, ARDOUR_UI::instance()::get_common_actions());
+
+       /* add named actions for the editor */
+
        register_action (editor_actions, "toggle-xfades-active", _("toggle xfades active"), mem_fun(*this, &Editor::toggle_xfades_active));
 
        register_action (editor_actions, "playhead-to-next-region-start", _("playhead to next region start"), bind (mem_fun(*this, &Editor::cursor_to_next_region_point), playhead_cursor, RegionPoint (Start)));
index dca998b43bc57ec175fe6c048c651b5840fe146f..226863b88b0074b2a92eba392d808e665a29de64 100644 (file)
 using namespace ARDOUR;
 using namespace sigc;
 
-void
-Editor::install_keybindings ()
-{
-       /* add named actions for the editor */
-
-       add_action ("toggle-xfades-active", mem_fun(*this, &Editor::toggle_xfades_active));
-
-       add_action ("playhead-to-next-region-start", bind (mem_fun(*this, &Editor::cursor_to_next_region_point), playhead_cursor, RegionPoint (Start)));
-       add_action ("playhead-to-next-region-end", bind (mem_fun(*this, &Editor::cursor_to_next_region_point), playhead_cursor, RegionPoint (End)));
-       add_action ("playhead-to-next-region-sync", bind (mem_fun(*this, &Editor::cursor_to_next_region_point), playhead_cursor, RegionPoint (SyncPoint)));
-
-       add_action ("playhead-to-previous-region-start", bind (mem_fun(*this, &Editor::cursor_to_previous_region_point), playhead_cursor, RegionPoint (Start)));
-       add_action ("playhead-to-previous-region-end", bind (mem_fun(*this, &Editor::cursor_to_previous_region_point), playhead_cursor, RegionPoint (End)));
-       add_action ("playhead-to-previous-region-sync", bind (mem_fun(*this, &Editor::cursor_to_previous_region_point), playhead_cursor, RegionPoint (SyncPoint)));
-
-       add_action ("edit-cursor-to-next-region-start", bind (mem_fun(*this, &Editor::cursor_to_next_region_point), edit_cursor, RegionPoint (Start)));
-       add_action ("edit-cursor-to-next-region-end", bind (mem_fun(*this, &Editor::cursor_to_next_region_point), edit_cursor, RegionPoint (End)));
-       add_action ("edit-cursor-to-next-region-sync", bind (mem_fun(*this, &Editor::cursor_to_next_region_point), edit_cursor, RegionPoint (SyncPoint)));
-
-       add_action ("edit-cursor-to-previous-region-start", bind (mem_fun(*this, &Editor::cursor_to_previous_region_point), edit_cursor, RegionPoint (Start)));
-       add_action ("edit-cursor-to-previous-region-end", bind (mem_fun(*this, &Editor::cursor_to_previous_region_point), edit_cursor, RegionPoint (End)));
-       add_action ("edit-cursor-to-previous-region-sync", bind (mem_fun(*this, &Editor::cursor_to_previous_region_point), edit_cursor, RegionPoint (SyncPoint)));
-
-       add_action ("playhead-to-range-start", bind (mem_fun(*this, &Editor::cursor_to_selection_start), playhead_cursor));
-       add_action ("playhead-to-range-end", bind (mem_fun(*this, &Editor::cursor_to_selection_end), playhead_cursor));
-
-       add_action ("edit-cursor-to-range-start", bind (mem_fun(*this, &Editor::cursor_to_selection_start), edit_cursor));
-       add_action ("edit-cursor-to-range-end", bind (mem_fun(*this, &Editor::cursor_to_selection_end), edit_cursor));
-
-       add_action ("jump-forward-to-mark", mem_fun(*this, &Editor::jump_forward_to_mark));
-       add_action ("jump-backward-to-mark", mem_fun(*this, &Editor::jump_backward_to_mark));
-       add_action ("add-location-from-playhead", mem_fun(*this, &Editor::add_location_from_playhead_cursor));
-
-       add_action ("nudge-forward", bind (mem_fun(*this, &Editor::nudge_forward), false));
-       add_action ("nudge-next-forward", bind (mem_fun(*this, &Editor::nudge_forward), true));
-       add_action ("nudge-backward", bind (mem_fun(*this, &Editor::nudge_backward), false));
-       add_action ("nudge-next-backward", bind (mem_fun(*this, &Editor::nudge_backward), true));
-
-       add_action ("toggle-playback", bind (mem_fun(*this, &Editor::toggle_playback), false));
-       add_action ("toggle-playback-forget-capture", bind (mem_fun(*this, &Editor::toggle_playback), true));
-
-       add_action ("toggle-loop-playback", mem_fun(*this, &Editor::toggle_loop_playback));
-       
-       add_action ("temporal-zoom-out", bind (mem_fun(*this, &Editor::temporal_zoom_step), true));
-       add_action ("temporal-zoom-in", bind (mem_fun(*this, &Editor::temporal_zoom_step), false));
-       add_action ("zoom-to-session", mem_fun(*this, &Editor::temporal_zoom_session));
-
-       add_action ("scroll-tracks-up", mem_fun(*this, &Editor::scroll_tracks_up));
-       add_action ("scroll-tracks-down", mem_fun(*this, &Editor::scroll_tracks_down));
-       add_action ("step-tracks-up", mem_fun(*this, &Editor::scroll_tracks_up_line));
-       add_action ("step-tracks-down", mem_fun(*this, &Editor::scroll_tracks_down_line));
-
-       add_action ("scroll-backward", bind (mem_fun(*this, &Editor::scroll_backward), 0.8f));
-       add_action ("scroll-forward", bind (mem_fun(*this, &Editor::scroll_forward), 0.8f));
-       add_action ("goto", mem_fun(*this, &Editor::goto_frame));
-       add_action ("center-playhead", mem_fun(*this, &Editor::center_playhead));
-       add_action ("center-edit_cursor", mem_fun(*this, &Editor::center_edit_cursor));
-       add_action ("playhead-forward", mem_fun(*this, &Editor::playhead_forward));
-       add_action ("playhead-backward", mem_fun(*this, &Editor::playhead_backward));
-       add_action ("playhead-to-edit", bind (mem_fun(*this, &Editor::cursor_align), true));
-       add_action ("edit-to-playhead", bind (mem_fun(*this, &Editor::cursor_align), false));
-
-       add_action ("align-regions-start", bind (mem_fun(*this, &Editor::align), ARDOUR::Start));
-       add_action ("align-regions-start-relative", bind (mem_fun(*this, &Editor::align_relative), ARDOUR::Start));
-       add_action ("align-regions-end", bind (mem_fun(*this, &Editor::align), ARDOUR::End));
-       add_action ("align-regions-end-relative", bind (mem_fun(*this, &Editor::align_relative), ARDOUR::End));
-       add_action ("align-regions-sync", bind (mem_fun(*this, &Editor::align), ARDOUR::SyncPoint));
-       add_action ("align-regions-sync-relative", bind (mem_fun(*this, &Editor::align_relative), ARDOUR::SyncPoint));
-       
-       add_action ("set-playhead", mem_fun(*this, &Editor::kbd_set_playhead_cursor));
-       add_action ("set-edit-cursor", mem_fun(*this, &Editor::kbd_set_edit_cursor));
-
-       add_action ("set-mouse-mode-object", bind (mem_fun(*this, &Editor::set_mouse_mode), Editing::MouseObject, false));
-       add_action ("set-mouse-mode-range", bind (mem_fun(*this, &Editor::set_mouse_mode), Editing::MouseRange, false));
-       add_action ("set-mouse-mode-gain", bind (mem_fun(*this, &Editor::set_mouse_mode), Editing::MouseGain, false));
-       add_action ("set-mouse-mode-zoom", bind (mem_fun(*this, &Editor::set_mouse_mode), Editing::MouseZoom, false));
-       add_action ("set-mouse-mode-timefx", bind (mem_fun(*this, &Editor::set_mouse_mode), Editing::MouseTimeFX, false));
-
-       add_action ("set-undo", bind (mem_fun(*this, &Editor::undo), 1U));
-       add_action ("set-redo", bind (mem_fun(*this, &Editor::redo), 1U));
-
-       add_action ("export-session", mem_fun(*this, &Editor::export_session));
-       add_action ("export-range", mem_fun(*this, &Editor::export_selection));
-
-       add_action ("editor-cut", mem_fun(*this, &Editor::cut));
-       add_action ("editor-copy", mem_fun(*this, &Editor::copy));
-       add_action ("editor-paste", mem_fun(*this, &Editor::keyboard_paste));
-       add_action ("duplicate-region", mem_fun(*this, &Editor::keyboard_duplicate_region));
-       add_action ("duplicate-range", mem_fun(*this, &Editor::keyboard_duplicate_selection));
-       add_action ("insert-region", mem_fun(*this, &Editor::keyboard_insert_region_list_selection));
-       add_action ("reverse-region", mem_fun(*this, &Editor::reverse_region));
-       add_action ("normalize-region", mem_fun(*this, &Editor::normalize_region));
-       add_action ("editor-crop", mem_fun(*this, &Editor::crop_region_to_selection));
-       add_action ("insert-chunk", bind (mem_fun(*this, &Editor::paste_named_selection), 1.0f));
-
-       add_action ("split-at-edit-cursor", mem_fun(*this, &Editor::split_region));
-       add_action ("split-at-mouse", mem_fun(*this, &Editor::kbd_split));
-
-       add_action ("brush-at-mouse", mem_fun(*this, &Editor::kbd_brush));
-       add_action ("audition-at-mouse", mem_fun(*this, &Editor::kbd_audition));
-
-       add_action ("start-range", mem_fun(*this, &Editor::keyboard_selection_begin));
-       add_action ("finish-range", bind (mem_fun(*this, &Editor::keyboard_selection_finish), false));
-       add_action ("finish-add-range", bind (mem_fun(*this, &Editor::keyboard_selection_finish), true));
-
-       add_action ("extend-range-to-end-of-region", bind (mem_fun(*this, &Editor::extend_selection_to_end_of_region), false));
-       add_action ("extend-range-to-start-of-region", bind (mem_fun(*this, &Editor::extend_selection_to_start_of_region), false));
-
-       add_action ("zoom-focus-left", bind (mem_fun(*this, &Editor::set_zoom_focus), Editing::ZoomFocusLeft));
-       add_action ("zoom-focus-right", bind (mem_fun(*this, &Editor::set_zoom_focus), Editing::ZoomFocusRight));
-       add_action ("zoom-focus-center", bind (mem_fun(*this, &Editor::set_zoom_focus), Editing::ZoomFocusCenter));
-       add_action ("zoom-focus-playhead", bind (mem_fun(*this, &Editor::set_zoom_focus), Editing::ZoomFocusPlayhead));
-       add_action ("zoom-focus-edit", bind (mem_fun(*this, &Editor::set_zoom_focus), Editing::ZoomFocusEdit));
-
-       add_action ("toggle-follow-playhead", (mem_fun(*this, &Editor::toggle_follow_playhead)));
-       add_action ("remove-last-capture", (mem_fun(*this, &Editor::remove_last_capture)));
-
-       add_action ("snap-to-frame", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToFrame)));
-       add_action ("snap-to-cd-frame", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToCDFrame)));
-       add_action ("snap-to-smpte-frame", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToSMPTEFrame)));
-       add_action ("snap-to-smpte-seconds", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToSMPTESeconds)));
-       add_action ("snap-to-smpte-minutes", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToSMPTEMinutes)));
-       add_action ("snap-to-seconds", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToSeconds)));
-       add_action ("snap-to-minutes", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToMinutes)));
-       add_action ("snap-to-thirtyseconds", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToAThirtysecondBeat)));
-       add_action ("snap-to-asixteenthbeat", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToASixteenthBeat)));
-       add_action ("snap-to-eighths", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToAEighthBeat)));
-       add_action ("snap-to-quarters", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToAQuarterBeat)));
-       add_action ("snap-to-thirds", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToAThirdBeat)));
-       add_action ("snap-to-beat", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToBeat)));
-       add_action ("snap-to-bar", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToBar)));
-       add_action ("snap-to-mark", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToMark)));
-       add_action ("snap-to-edit-cursor", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToEditCursor)));
-       add_action ("snap-to-region-start", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToRegionStart)));
-       add_action ("snap-to-region-end", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToRegionEnd)));
-       add_action ("snap-to-region-sync", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToRegionSync)));
-       add_action ("snap-to-region-boundary", (bind (mem_fun(*this, &Editor::set_snap_to), Editing::SnapToRegionBoundary)));
-}
-
 void
 Editor::keyboard_selection_finish (bool add)
 {
index 1c711a5e412ea003d6e9d258353b5d1588d59297..83aa261895bd2ed9873f63e837063706a6783ddd 100644 (file)
@@ -49,7 +49,6 @@ using namespace sigc;
 
 Mixer_UI::Mixer_UI (AudioEngine& eng)
        : Window (Gtk::WINDOW_TOPLEVEL),
-         KeyboardTarget (*this, "mixer"),
          engine (eng)
 {
        _strip_width = Wide;
index c520e6628246142f032450587702f305115d0eaa..f1f004351ae2435565e4d2abebd087fa839a9f01 100644 (file)
@@ -52,7 +52,7 @@ namespace ARDOUR {
 class MixerStrip;
 class PluginSelector;
 
-class Mixer_UI : public Gtk::Window, public KeyboardTarget
+class Mixer_UI : public Gtk::Window
 {
   public:
        Mixer_UI (ARDOUR::AudioEngine&);
index 49311e65d1be2e49833a4650259764273e163354..adc36c18f4a6734ff8f2f7097fceb3924a0f1e1f 100644 (file)
@@ -1,10 +1,31 @@
+#include <vector>
 #include <iostream>
 #include <gtkmm.h>
 #include <gtkmm/accelmap.h>
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtkaccelmap.h>
 
 using namespace Gtk;
 using namespace std;
 using namespace sigc;
+using namespace Glib;
+
+struct ActionBinding {
+    Glib::ustring             name;
+    Glib::ustring             label;
+    Gtk::Action::SlotActivate binding;
+    guint                     key;
+    Gdk::ModifierType         mods;
+
+    ActionBinding (Glib::ustring n, Glib::ustring l, Gtk::Action::SlotActivate b, 
+                  guint k = GDK_VoidSymbol, Gdk::ModifierType m = Gdk::ModifierType (0)) 
+           : name (n),
+             label (l),
+             binding (b),
+             key (k),
+             mods (m) {}
+};
+
 
 void
 printit (string txt)
@@ -12,6 +33,21 @@ printit (string txt)
        cout << "This is the " << txt << " item\n";
 }
 
+Glib::RefPtr<Action>
+make_action (vector<Glib::RefPtr<ActionGroup> >& groups, string name, string label, slot<void> sl, guint key, Gdk::ModifierType mods)
+{
+       Glib::RefPtr<Action> last;
+
+       for (vector<RefPtr<ActionGroup> >::iterator g = groups.begin(); g != groups.end(); ++g) {
+               Glib::RefPtr<Action> act = Action::create (name, label);
+               (*g)->add (act, sl);
+               AccelMap::add_entry (act->get_accel_path(), key, mods);
+               last = act;
+       }
+
+       return last;
+}
+
 Glib::RefPtr<Action>
 make_action (Glib::RefPtr<ActionGroup> group, Glib::RefPtr<AccelGroup> accel_group, string name, string label, slot<void> sl, guint key, Gdk::ModifierType mods)
 {
@@ -67,6 +103,46 @@ make_action (Glib::RefPtr<ActionGroup> group, string name, string label)
        return act;
 }
 
+bool 
+lookup_entry (const ustring accel_path, Gtk::AccelKey& key)
+{
+       GtkAccelKey gkey;
+       bool known = gtk_accel_map_lookup_entry (accel_path.c_str(), &gkey);
+       
+       if (known) {
+               key = AccelKey (gkey.accel_key, Gdk::ModifierType (gkey.accel_mods));
+       } else {
+               key = AccelKey (GDK_VoidSymbol, Gdk::ModifierType (0));
+       }
+
+       return known;
+}
+
+RefPtr<ActionGroup>
+make_shared_action_group (ustring name, vector<ActionBinding*>& actions)
+{
+       RefPtr<ActionGroup> grp = ActionGroup::create (name);
+
+       for (vector<ActionBinding*>::iterator i = actions.begin(); i != actions.end(); ++i) {
+               RefPtr<Action> act = Action::create ((*i)->name, (*i)->label);
+               grp->add (act);
+
+               if ((*i)->key != GDK_VoidSymbol) {
+                       Gtk::AccelKey key;
+
+                       /* since this is a shared action, only add it once */
+
+                       if (!lookup_entry (act->get_accel_path(), key)) {
+                               AccelMap::add_entry (act->get_accel_path(), (*i)->key, (*i)->mods);
+                               cerr << "added accel map entry for " << act->get_accel_path() << endl;
+                       }
+               }
+       }
+
+       return grp;
+}
+
+
 int
 main (int argc, char* argv[])
 {
@@ -78,13 +154,12 @@ main (int argc, char* argv[])
        VBox   vpacker;
        VBox   other_vpacker;
 
-       Glib::RefPtr<ActionGroup> shared_actions;
        Glib::RefPtr<ActionGroup> actions;
        Glib::RefPtr<ActionGroup> other_actions;
+       Glib::RefPtr<ActionGroup> shared_actions;
        Glib::RefPtr<UIManager> uimanager;
        Glib::RefPtr<UIManager> other_uimanager;
        Glib::RefPtr<UIManager> shared_uimanager;
-       Glib::RefPtr<AccelGroup> shared_accel_group;
 
        window.set_name ("Editor");
        window.set_title ("Editor");
@@ -94,44 +169,42 @@ main (int argc, char* argv[])
 
        uimanager = UIManager::create();
        other_uimanager = UIManager::create();
-       shared_uimanager = UIManager::create();
 
        actions = ActionGroup::create("MyActions");
        other_actions = ActionGroup::create("OtherActions");
-       shared_actions = ActionGroup::create();
 
        uimanager->add_ui_from_file ("mtest.menus");
        other_uimanager->add_ui_from_file ("mtest_other.menus");
        
-       AccelMap::load ("mtest.bindings");
+       // AccelMap::load ("mtest.bindings");
 
-       make_action (shared_actions, "SharedMenuBar", "shared");
-       make_action (shared_actions, "SharedMenu", "sharedm");
-       Glib::RefPtr<Action> act = make_action (shared_actions, "Baz", "baz", bind (sigc::ptr_fun (printit), "baz"), GDK_p, Gdk::MOD1_MASK);
+       vector<RefPtr<ActionGroup> > all_groups;
+       all_groups.push_back (actions);
+       all_groups.push_back (other_actions);
        
-       act->connect_proxy (button);
-       act->connect_proxy (other_button);
-
        make_action (actions, "TopMenu", "top");
        make_action (actions, "Foo", "foo", bind (sigc::ptr_fun (printit), "foo"), GDK_p, Gdk::ModifierType (0));
-       make_action (actions, "Bar", "bar", bind (sigc::ptr_fun (printit), "bar"), GDK_p, Gdk::CONTROL_MASK);
+
        make_action (other_actions, "OTopMenu", "otop");
        make_action (other_actions, "OFoo", "foo", bind (sigc::ptr_fun (printit), "o-foo"), GDK_p, Gdk::ModifierType (0));
-       make_action (other_actions, "OBar", "bar", bind (sigc::ptr_fun (printit), "o-bar"), GDK_p, Gdk::CONTROL_MASK);
+
+       vector<ActionBinding*> shared_actions;
+
+       shared_actions.push_back (new ActionBinding ("Bar", "bar", bind (sigc::ptr_fun (printit), "barshared"), GDK_p, Gdk::CONTROL_MASK));
+       shared_actions.push_back (new ActionBinding ("Baz", "baz", bind (sigc::ptr_fun (printit), "baz-shared"), GDK_p, Gdk::SHIFT_MASK));
+
+       RefPtr<Action> act = Action::create (shared_actions.back()->name, shared_actions.back()->label);
        
-       other_uimanager->insert_action_group (other_actions);
-       other_uimanager->insert_action_group (shared_actions);
+       act->connect_proxy (button);
+       act->connect_proxy (other_button);
 
        uimanager->insert_action_group (actions);
-       uimanager->insert_action_group (shared_actions);
-       
-       shared_uimanager->insert_action_group (shared_actions);
+       uimanager->insert_action_group (make_shared_action_group ("shared", shared_actions));
+       other_uimanager->insert_action_group (other_actions);
+       other_uimanager->insert_action_group (make_shared_action_group ("othershared", shared_actions));
 
        other_window.add_accel_group (other_uimanager->get_accel_group());
-       other_window.add_accel_group (shared_uimanager->get_accel_group());
-
        window.add_accel_group (uimanager->get_accel_group());
-       window.add_accel_group (shared_uimanager->get_accel_group());
 
        Gtk::MenuBar* m;
 
@@ -148,19 +221,12 @@ main (int argc, char* argv[])
        vpacker.pack_start (*m);
        vpacker.pack_start (button);
 
-       shared_uimanager->add_ui_from_file ("mtest_shared.menu");
-
-       MenuBar* item = dynamic_cast<MenuBar*> (shared_uimanager->get_widget ("/SharedMenuBar"));
-
        window.add (vpacker);
        window.show_all ();
 
        Settings::get_default()->property_gtk_can_change_accels() = true;
 
-       cerr << " shared = " << shared_uimanager->get_accel_group()
-            << " first = " << uimanager->get_accel_group()
-            << " second = " << other_uimanager->get_accel_group ()
-            << endl;
+       AccelMap::save ("mtest.bindings");
 
        app.run ();
 
index e24953651e4eb7510c577f9e75de55cc037388d3..c6bc2afe9a795d36575410e0fa25fc863808b9fa 100644 (file)
@@ -3,6 +3,7 @@
        <menu action='TopMenu'>
           <menuitem action='Foo'/>
           <menuitem action='Bar'/>
+          <menuitem action='Baz'/>
        </menu>
       </menubar>
 </ui>
index 96d1dcfee523ef98a90f0b4f73f712830451298e..ff3416ae7e00de12e7375059161654213f9ff1f8 100644 (file)
@@ -2,7 +2,8 @@
       <menubar name='OTop'>
        <menu action='OTopMenu'>
           <menuitem action='OFoo'/>
-          <menuitem action='OBar'/>
+          <menuitem action='Bar'/>
+          <menuitem action='Baz'/>
        </menu>
       </menubar>
 </ui>
index b8b154d8bdaec4fc3e24364707f9c01c7f736311..36d51d97a17f8df2ad917c3b79316ff6d0e8db08 100644 (file)
@@ -4,8 +4,7 @@
 PublicEditor* PublicEditor::_instance = 0;
 
 PublicEditor::PublicEditor ()
-       : Window (Gtk::WINDOW_TOPLEVEL),
-         KeyboardTarget (*this, "editor")
+       : Window (Gtk::WINDOW_TOPLEVEL)
 {
 }
 
index 7a7fa1925e3200d0adb9e671c739020578570033..6ffbe098facab97580f953a967307a12a4ebb09c 100644 (file)
@@ -44,8 +44,12 @@ class TempoMarker;
 class MeterMarker;
 class Marker;
 class AutomationTimeAxisView;
+class MarkerTimeAxis;
+class ImageFrameView;
+class ImageFrameTimeAxis;
+class MarkerView;
 
-class PublicEditor : public Gtk::Window, public Stateful, public KeyboardTarget {
+class PublicEditor : public Gtk::Window, public Stateful {
   public:
        PublicEditor();
        virtual ~PublicEditor();
@@ -152,14 +156,14 @@ class PublicEditor : public Gtk::Window, public Stateful, public KeyboardTarget
        virtual bool canvas_range_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
        virtual bool canvas_transport_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
 
-       virtual bool canvas_imageframe_item_view_event(GdkEvent* event, ArdourCanvas::Item*) = 0;
-       virtual bool canvas_imageframe_view_event(GdkEvent* event, ArdourCanvas::Item*) = 0;
-       virtual bool canvas_imageframe_start_handle_event(GdkEvent* event, ArdourCanvas::Item*) = 0;
-       virtual bool canvas_imageframe_end_handle_event(GdkEvent* event, ArdourCanvas::Item*) = 0;
-       virtual bool canvas_marker_time_axis_view_event(GdkEvent* event, ArdourCanvas::Item*) = 0;
-       virtual bool canvas_markerview_item_view_event(GdkEvent* event, ArdourCanvas::Item*) = 0;
-       virtual bool canvas_markerview_start_handle_event(GdkEvent* event, ArdourCanvas::Item*) = 0;
-       virtual bool canvas_markerview_end_handle_event(GdkEvent* event, ArdourCanvas::Item*) = 0;
+       virtual bool canvas_imageframe_item_view_event(GdkEvent* event, ArdourCanvas::Item*,ImageFrameView*) = 0;
+       virtual bool canvas_imageframe_view_event(GdkEvent* event, ArdourCanvas::Item*,ImageFrameTimeAxis*) = 0;
+       virtual bool canvas_imageframe_start_handle_event(GdkEvent* event, ArdourCanvas::Item*,ImageFrameView*) = 0;
+       virtual bool canvas_imageframe_end_handle_event(GdkEvent* event, ArdourCanvas::Item*,ImageFrameView*) = 0;
+       virtual bool canvas_marker_time_axis_view_event(GdkEvent* event, ArdourCanvas::Item*,MarkerTimeAxis*) = 0;
+       virtual bool canvas_markerview_item_view_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*) = 0;
+       virtual bool canvas_markerview_start_handle_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*) = 0;
+       virtual bool canvas_markerview_end_handle_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*) = 0;
 
        static PublicEditor* _instance;
 };