add input/output channel counts and reorganize table somewhat
[ardour.git] / gtk2_ardour / ardour_ui_ed.cc
index 9d1e8c3d8afce2d595a8270e1dc3e003a20a2c4d..002b7dd3ed2a3d783739a47f42dfdf50d3cdf3d9 100644 (file)
@@ -137,7 +137,7 @@ ARDOUR_UI::install_actions ()
        ActionManager::session_sensitive_actions.push_back (act);
        act = ActionManager::register_action (main_actions, X_("CloseVideo"), _("Remove Video"),
                                              sigc::mem_fun (*this, &ARDOUR_UI::remove_video));
-       ActionManager::session_sensitive_actions.push_back (act);
+       act->set_sensitive (false);
        act = ActionManager::register_action (main_actions, X_("ExportVideo"), _("Export To Video File"),
                                              sigc::mem_fun (*editor, &PublicEditor::export_video));
        ActionManager::session_sensitive_actions.push_back (act);
@@ -183,38 +183,38 @@ ARDOUR_UI::install_actions ()
        ActionManager::write_sensitive_actions.push_back (act);
        ActionManager::session_sensitive_actions.push_back (act);
 
-       /* JACK actions for controlling ... JACK */
+       /* AudioEngine actions */
 
-       Glib::RefPtr<ActionGroup> jack_actions = ActionGroup::create (X_("JACK"));
-       ActionManager::register_action (jack_actions, X_("JACK"), _("JACK"));
-       ActionManager::register_action (jack_actions, X_("Latency"), _("Latency"));
+       Glib::RefPtr<ActionGroup> engine_actions = ActionGroup::create (X_("Audio"));
+       ActionManager::register_action (engine_actions, X_("JACK"), _("JACK"));
+       ActionManager::register_action (engine_actions, X_("Latency"), _("Latency"));
 
-       act = ActionManager::register_action (jack_actions, X_("JACKReconnect"), _("Reconnect"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::reconnect_to_jack));
-       ActionManager::jack_opposite_sensitive_actions.push_back (act);
+       act = ActionManager::register_action (engine_actions, X_("JACKReconnect"), _("Reconnect"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::reconnect_to_jack));
+       ActionManager::engine_opposite_sensitive_actions.push_back (act);
 
-       act = ActionManager::register_action (jack_actions, X_("JACKDisconnect"), _("Disconnect"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::disconnect_from_jack));
-       ActionManager::jack_sensitive_actions.push_back (act);
+       act = ActionManager::register_action (engine_actions, X_("JACKDisconnect"), _("Disconnect"), sigc::mem_fun (*(ARDOUR_UI::instance()), &ARDOUR_UI::disconnect_from_jack));
+       ActionManager::engine_sensitive_actions.push_back (act);
 
-       RadioAction::Group jack_latency_group;
+       RadioAction::Group latency_group;
 
-       act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency32"), X_("32"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 32));
-       ActionManager::jack_sensitive_actions.push_back (act);
-       act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency64"), X_("64"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 64));
-       ActionManager::jack_sensitive_actions.push_back (act);
-       act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency128"), X_("128"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 128));
-       ActionManager::jack_sensitive_actions.push_back (act);
-       act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency256"), X_("256"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 256));
-       ActionManager::jack_sensitive_actions.push_back (act);
-       act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency512"), X_("512"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 512));
-       ActionManager::jack_sensitive_actions.push_back (act);
-       act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency1024"), X_("1024"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 1024));
-       ActionManager::jack_sensitive_actions.push_back (act);
-       act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency2048"), X_("2048"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 2048));
-       ActionManager::jack_sensitive_actions.push_back (act);
-       act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency4096"), X_("4096"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 4096));
-       ActionManager::jack_sensitive_actions.push_back (act);
-       act = ActionManager::register_radio_action (jack_actions, jack_latency_group, X_("JACKLatency8192"), X_("8192"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 8192));
-       ActionManager::jack_sensitive_actions.push_back (act);
+       act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency32"), X_("32"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 32));
+       ActionManager::engine_sensitive_actions.push_back (act);
+       act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency64"), X_("64"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 64));
+       ActionManager::engine_sensitive_actions.push_back (act);
+       act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency128"), X_("128"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 128));
+       ActionManager::engine_sensitive_actions.push_back (act);
+       act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency256"), X_("256"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 256));
+       ActionManager::engine_sensitive_actions.push_back (act);
+       act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency512"), X_("512"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 512));
+       ActionManager::engine_sensitive_actions.push_back (act);
+       act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency1024"), X_("1024"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 1024));
+       ActionManager::engine_sensitive_actions.push_back (act);
+       act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency2048"), X_("2048"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 2048));
+       ActionManager::engine_sensitive_actions.push_back (act);
+       act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency4096"), X_("4096"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 4096));
+       ActionManager::engine_sensitive_actions.push_back (act);
+       act = ActionManager::register_radio_action (engine_actions, latency_group, X_("JACKLatency8192"), X_("8192"), sigc::bind (sigc::mem_fun(*this, &ARDOUR_UI::set_jack_buffer_size), (pframes_t) 8192));
+       ActionManager::engine_sensitive_actions.push_back (act);
 
        /* these actions are intended to be shared across all windows */
 
@@ -229,6 +229,7 @@ ARDOUR_UI::install_actions ()
 
        ActionManager::register_toggle_action (common_actions, X_("toggle-mixer"), S_("Window|Mixer"),  sigc::mem_fun(*this, &ARDOUR_UI::toggle_mixer_window));
        ActionManager::register_action (common_actions, X_("toggle-editor-mixer"), _("Toggle Editor+Mixer"),  sigc::mem_fun(*this, &ARDOUR_UI::toggle_editor_mixer));
+       ActionManager::register_toggle_action (common_actions, X_("toggle-meterbridge"), S_("Window|Meterbridge"),  sigc::mem_fun(*this, &ARDOUR_UI::toggle_meterbridge));
 
        act = ActionManager::register_action (common_actions, X_("NewMIDITracer"), _("MIDI Tracer"), sigc::mem_fun(*this, &ARDOUR_UI::new_midi_tracer_window));
        ActionManager::session_sensitive_actions.push_back (act);
@@ -420,7 +421,7 @@ ARDOUR_UI::install_actions ()
 
        ActionManager::add_action_group (shuttle_actions);
        ActionManager::add_action_group (option_actions);
-       ActionManager::add_action_group (jack_actions);
+       ActionManager::add_action_group (engine_actions);
        ActionManager::add_action_group (transport_actions);
        ActionManager::add_action_group (main_actions);
        ActionManager::add_action_group (main_menu_actions);
@@ -573,21 +574,28 @@ ARDOUR_UI::use_menubar_as_top_menubar ()
        Gtk::Widget* widget;
        Application* app = Application::instance ();
 
-       /* Quit will be taken of separately */
+        /* the addresses ("/ui/Main...") used below are based on the menu definitions in the menus file
+         */
+
+       /* Quit will be taken care of separately */
 
        if ((widget = ActionManager::get_widget ("/ui/Main/Session/Quit"))) {
                widget->hide ();
        }
 
+       /* Put items for About and Preferences into App menu (the
+        * ardour.menus.in file does not list them for OS X)
+        */
+
        GtkApplicationMenuGroup* group = app->add_app_menu_group ();
 
-       if ((widget = ActionManager::get_widget ("/ui/Main/Session/About"))) {
+       if ((widget = ActionManager::get_widget ("/ui/Main/Session/toggle-about"))) {
                app->add_app_menu_item (group, dynamic_cast<MenuItem*>(widget));
-       }
+        }
 
-       if ((widget = ActionManager::get_widget ("/ui/Main/Session/ToggleRCOptionsEditor"))) {
+       if ((widget = ActionManager::get_widget ("/ui/Main/Session/toggle-rc-options-editor"))) {
                app->add_app_menu_item (group, dynamic_cast<MenuItem*>(widget));
-       }
+        }
 
        app->set_menu_bar (*menu_bar);
 }
@@ -595,7 +603,7 @@ ARDOUR_UI::use_menubar_as_top_menubar ()
 void
 ARDOUR_UI::save_ardour_state ()
 {
-       if (!keyboard || !mixer || !editor) {
+       if (!keyboard || !mixer || !editor || !meterbridge) {
                return;
        }
 
@@ -612,7 +620,7 @@ ARDOUR_UI::save_ardour_state ()
 
        /* Windows */
 
-       WindowManager::instance().add_state (*window_node);
+       WM::Manager::instance().add_state (*window_node);
 
        /* tearoffs */
 
@@ -639,21 +647,22 @@ ARDOUR_UI::save_ardour_state ()
        window_node->add_child_nocopy (*tearoff_node);
 
        Config->add_extra_xml (*window_node);
+       Config->add_extra_xml (_audio_midi_setup->get_state());
 
-       if (_startup && _startup->engine_control() && _startup->engine_control()->was_used()) {
-               Config->add_extra_xml (_startup->engine_control()->get_state());
-       }
        Config->save_state();
+
        if (ui_config->dirty()) {
                ui_config->save_state ();
        }
 
        XMLNode& enode (static_cast<Stateful*>(editor)->get_state());
        XMLNode& mnode (mixer->get_state());
+       XMLNode& bnode (meterbridge->get_state());
 
        if (_session) {
                _session->add_instant_xml (enode);
                _session->add_instant_xml (mnode);
+               _session->add_instant_xml (bnode);
                if (location_ui) {
                        _session->add_instant_xml (location_ui->ui().get_state ());
                }