tweak A/V import logic
[ardour.git] / gtk2_ardour / route_ui.cc
index bceebc21fb3d6a37160dd6f30fb72b61a45747aa..d3e34ddf33b63d6e8053b1e462b3bf4b0cb7c22d 100644 (file)
@@ -61,11 +61,16 @@ using namespace ARDOUR;
 using namespace PBD;
 
 uint32_t RouteUI::_max_invert_buttons = 3;
-sigc::signal<void, boost::shared_ptr<Route> > RouteUI::BusSendDisplayChanged;
+PBD::Signal1<void, boost::shared_ptr<Route> > RouteUI::BusSendDisplayChanged;
 boost::weak_ptr<Route> RouteUI::_showing_sends_to;
 
 RouteUI::RouteUI (ARDOUR::Session* sess)
        : AxisView(sess)
+       , mute_menu(0)
+       , solo_menu(0)
+       , sends_menu(0)
+       , record_menu(0)
+       , _invert_menu(0)
 {
        if (sess) init ();
 }
@@ -166,7 +171,7 @@ RouteUI::init ()
        monitor_disk_button->signal_button_press_event().connect (sigc::mem_fun(*this, &RouteUI::monitor_disk_press));
        monitor_disk_button->signal_button_release_event().connect (sigc::mem_fun(*this, &RouteUI::monitor_disk_release));
 
-       BusSendDisplayChanged.connect (sigc::mem_fun (*this, &RouteUI::bus_send_display_changed));
+       BusSendDisplayChanged.connect_same_thread (*this, boost::bind(&RouteUI::bus_send_display_changed, this, _1));
 }
 
 void
@@ -254,7 +259,7 @@ RouteUI::set_route (boost::shared_ptr<Route> rp)
 
        mute_button->show();
 
-       if (_route->is_monitor()) {
+       if (_route->is_monitor() || _route->is_master()) {
                solo_button->hide ();
        } else {
                solo_button->show();
@@ -779,7 +784,7 @@ RouteUI::build_record_menu ()
                 MenuList& items = record_menu->items();
 
                 items.push_back (CheckMenuElem (_("Step Entry"), sigc::mem_fun (*this, &RouteUI::toggle_step_edit)));
-                step_edit_item = dynamic_cast<CheckMenuItem*> (&items.back());
+                step_edit_item = dynamic_cast<Gtk::CheckMenuItem*> (&items.back());
 
                 if (_route->record_enabled()) {
                         step_edit_item->set_sensitive (false);
@@ -1201,20 +1206,20 @@ RouteUI::build_solo_menu (void)
        solo_menu = new Menu;
        solo_menu->set_name ("ArdourContextMenu");
        MenuList& items = solo_menu->items();
-       CheckMenuItem* check;
+       Gtk::CheckMenuItem* check;
 
-       check = new CheckMenuItem(_("Solo Isolate"));
+       check = new Gtk::CheckMenuItem(_("Solo Isolate"));
        check->set_active (_route->solo_isolated());
        check->signal_toggled().connect (sigc::bind (sigc::mem_fun (*this, &RouteUI::toggle_solo_isolated), check));
        items.push_back (CheckMenuElem(*check));
-        solo_isolated_check = dynamic_cast<CheckMenuItem*>(&items.back());
+        solo_isolated_check = dynamic_cast<Gtk::CheckMenuItem*>(&items.back());
        check->show_all();
 
-       check = new CheckMenuItem(_("Solo Safe"));
+       check = new Gtk::CheckMenuItem(_("Solo Safe"));
        check->set_active (_route->solo_safe());
        check->signal_toggled().connect (sigc::bind (sigc::mem_fun (*this, &RouteUI::toggle_solo_safe), check));
        items.push_back (CheckMenuElem(*check));
-        solo_safe_check = dynamic_cast<CheckMenuItem*>(&items.back());
+        solo_safe_check = dynamic_cast<Gtk::CheckMenuItem*>(&items.back());
        check->show_all();
 
        //items.push_back (SeparatorElem());
@@ -1232,25 +1237,25 @@ RouteUI::build_mute_menu(void)
 
        MenuList& items = mute_menu->items();
 
-       pre_fader_mute_check = manage (new CheckMenuItem(_("Pre Fader")));
+       pre_fader_mute_check = manage (new Gtk::CheckMenuItem(_("Pre Fader Sends")));
        init_mute_menu(MuteMaster::PreFader, pre_fader_mute_check);
        pre_fader_mute_check->signal_toggled().connect(sigc::bind (sigc::mem_fun (*this, &RouteUI::toggle_mute_menu), MuteMaster::PreFader, pre_fader_mute_check));
        items.push_back (CheckMenuElem(*pre_fader_mute_check));
        pre_fader_mute_check->show_all();
 
-       post_fader_mute_check = manage (new CheckMenuItem(_("Post Fader")));
+       post_fader_mute_check = manage (new Gtk::CheckMenuItem(_("Post Fader Sends")));
        init_mute_menu(MuteMaster::PostFader, post_fader_mute_check);
        post_fader_mute_check->signal_toggled().connect(sigc::bind (sigc::mem_fun (*this, &RouteUI::toggle_mute_menu), MuteMaster::PostFader, post_fader_mute_check));
        items.push_back (CheckMenuElem(*post_fader_mute_check));
        post_fader_mute_check->show_all();
 
-       listen_mute_check = manage (new CheckMenuItem(_("Control Outs")));
+       listen_mute_check = manage (new Gtk::CheckMenuItem(_("Control Outs")));
        init_mute_menu(MuteMaster::Listen, listen_mute_check);
        listen_mute_check->signal_toggled().connect(sigc::bind (sigc::mem_fun (*this, &RouteUI::toggle_mute_menu), MuteMaster::Listen, listen_mute_check));
        items.push_back (CheckMenuElem(*listen_mute_check));
        listen_mute_check->show_all();
 
-       main_mute_check = manage (new CheckMenuItem(_("Main Outs")));
+       main_mute_check = manage (new Gtk::CheckMenuItem(_("Main Outs")));
        init_mute_menu(MuteMaster::Main, main_mute_check);
        main_mute_check->signal_toggled().connect(sigc::bind (sigc::mem_fun (*this, &RouteUI::toggle_mute_menu), MuteMaster::Main, main_mute_check));
        items.push_back (CheckMenuElem(*main_mute_check));
@@ -1263,7 +1268,7 @@ RouteUI::build_mute_menu(void)
 }
 
 void
-RouteUI::init_mute_menu(MuteMaster::MutePoint mp, CheckMenuItem* check)
+RouteUI::init_mute_menu(MuteMaster::MutePoint mp, Gtk::CheckMenuItem* check)
 {
        check->set_active (_route->mute_points() & mp);
 }
@@ -1687,7 +1692,7 @@ RouteUI::map_frozen ()
 void
 RouteUI::adjust_latency ()
 {
-       LatencyDialog dialog (_route->name() + _(" latency"), *(_route->output()), _session->frame_rate(), _session->engine().frames_per_cycle());
+       LatencyDialog dialog (_route->name() + _(" latency"), *(_route->output()), _session->frame_rate(), AudioEngine::instance()->samples_per_cycle());
 }
 
 void
@@ -1810,15 +1815,15 @@ RouteUI::open_remote_control_id_dialog ()
                                                       _route->remote_control_id(),
                                                       (_route->is_master() ? _("the master bus") : _("the monitor bus"))));
                } else {
-                       l->set_markup (string_compose (_("The remote control ID of %6 is: %3\n\n\n"
-                                                        "Remote Control IDs are currently determined by track/bus ordering in %1\n\n"
-                                                        "%4Use the User Interaction tab of the Preferences window if you want to change this%5"),
-                                                      (Config->get_remote_model() == MixerOrdered ? _("the mixer") : _("the editor")),
+                       l->set_markup (string_compose (_("The remote control ID of %5 is: %2\n\n\n"
+                                                        "Remote Control IDs are currently determined by track/bus ordering in %6.\n\n"
+                                                        "%3Use the User Interaction tab of the Preferences window if you want to change this%4"),
                                                       (is_track() ? _("track") : _("bus")),
                                                       _route->remote_control_id(),
                                                       "<span size=\"small\" style=\"italic\">",
                                                       "</span>",
-                                                      Glib::Markup::escape_text (_route->name())));
+                                                      Glib::Markup::escape_text (_route->name()),
+                                                      PROGRAM_NAME));
                }
                dialog.get_vbox()->pack_start (*l);
                dialog.add_button (Stock::OK, RESPONSE_CANCEL);
@@ -1953,7 +1958,7 @@ RouteUI::invert_press (GdkEventButton* ev)
 
        for (uint32_t i = 0; i < N; ++i) {
                items.push_back (CheckMenuElem (string_compose (X_("Ø%1"), i + 1), sigc::bind (sigc::mem_fun (*this, &RouteUI::invert_menu_toggled), i)));
-               CheckMenuItem* e = dynamic_cast<CheckMenuItem*> (&items.back ());
+               Gtk::CheckMenuItem* e = dynamic_cast<Gtk::CheckMenuItem*> (&items.back ());
                ++_i_am_the_modifier;
                e->set_active (_route->phase_invert (i));
                --_i_am_the_modifier;