X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui_dialogs.cc;h=140ee649ea59f07b678609672b01e9e67b13858a;hb=ca49f7cba731bd443c4a62184c8dec892b4ce5e7;hp=fcd8d515991effdc3e2238b6a15d64c4f502aa9f;hpb=e92c949f3ceb80b9892e70c7d30540a2b45fbf7d;p=ardour.git diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index fcd8d51599..140ee649ea 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -34,10 +34,12 @@ #include "public_editor.h" #include "route_params_ui.h" #include "sfdb_ui.h" +#include "color_manager.h" #include "i18n.h" using namespace ARDOUR; +using namespace PBD; using namespace Glib; using namespace Gtk; using namespace Gtkmm2ext; @@ -48,18 +50,33 @@ ARDOUR_UI::connect_to_session (Session *s) session = s; session->HaltOnXrun.connect (mem_fun(*this, &ARDOUR_UI::halt_on_xrun_message)); + session->RecordStateChanged.connect (mem_fun (*this, &ARDOUR_UI::record_state_changed)); /* sensitize menu bar options that are now valid */ ActionManager::set_sensitive (ActionManager::session_sensitive_actions, true); + + if (session->locations()->num_range_markers()) { + ActionManager::set_sensitive (ActionManager::range_sensitive_actions, true); + } else { + ActionManager::set_sensitive (ActionManager::range_sensitive_actions, false); + } + + /* there are never any selections on startup */ + + ActionManager::set_sensitive (ActionManager::region_selection_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::time_selection_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::track_selection_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::line_selection_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::point_selection_sensitive_actions, false); + ActionManager::set_sensitive (ActionManager::playlist_selection_sensitive_actions, false); + + session->locations()->added.connect (mem_fun (*this, &ARDOUR_UI::handle_locations_change)); + session->locations()->removed.connect (mem_fun (*this, &ARDOUR_UI::handle_locations_change)); rec_button.set_sensitive (true); shuttle_box.set_sensitive (true); - if (session->n_diskstreams() == 0) { - session->DiskStreamAdded.connect (mem_fun(*this, &ARDOUR_UI::diskstream_added)); - } - if (connection_editor) { connection_editor->set_session (s); } @@ -76,11 +93,7 @@ ARDOUR_UI::connect_to_session (Session *s) option_editor->set_session (s); } - if (sfdb) { - sfdb->set_session (s); - } - - setup_options (); + setup_session_options (); Blink.connect (mem_fun(*this, &ARDOUR_UI::transport_rec_enable_blink)); Blink.connect (mem_fun(*this, &ARDOUR_UI::solo_blink)); @@ -112,13 +125,16 @@ ARDOUR_UI::connect_to_session (Session *s) connect_dependents_to_session (s); + /* listen to clock mode changes. don't do this earlier because otherwise as the clocks + restore their modes or are explicitly set, we will cause the "new" mode to be saved + back to the session XML ("extra") state. + */ + + AudioClock::ModeChanged.connect (mem_fun (*this, &ARDOUR_UI::store_clock_modes)); + start_clocking (); start_blinking (); - if (editor) { - editor->present(); - } - transport_stopped (); second_connection = Glib::signal_timeout().connect (mem_fun(*this, &ARDOUR_UI::every_second), 1000); @@ -130,7 +146,7 @@ int ARDOUR_UI::unload_session () { if (session && session->dirty()) { - switch (ask_about_saving_session (_("close session"))) { + switch (ask_about_saving_session (_("close"))) { case -1: return 1; @@ -139,7 +155,7 @@ ARDOUR_UI::unload_session () break; } } - + editor->hide (); second_connection.disconnect (); point_one_second_connection.disconnect (); point_zero_one_second_connection.disconnect(); @@ -174,7 +190,6 @@ ARDOUR_UI::unload_session () session = 0; update_buffer_load (); - // update_disk_rate (); return 0; } @@ -287,6 +302,22 @@ ARDOUR_UI::toggle_location_window () } } +void +ARDOUR_UI::toggle_color_manager () +{ + RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleColorManager")); + if (act) { + RefPtr tact = RefPtr::cast_dynamic(act); + + if (tact->get_active()) { + color_manager->show_all (); + color_manager->present (); + } else { + color_manager->hide (); + } + } +} + int ARDOUR_UI::create_route_params () { @@ -318,34 +349,14 @@ ARDOUR_UI::toggle_route_params_window () } } -int -ARDOUR_UI::create_sound_file_browser () -{ - if (sfdb == 0) { - sfdb = new SoundFileBrowser (_("Sound File Browser")); - sfdb->set_session (session); - sfdb->signal_unmap().connect (sigc::bind(sigc::ptr_fun(&ActionManager::uncheck_toggleaction), X_("/Common/ToggleSoundFileBrowser"))); - } - return 0; -} - void -ARDOUR_UI::toggle_sound_file_browser () +ARDOUR_UI::handle_locations_change (Location* ignored) { - if (create_sound_file_browser()) { - return; - } - - RefPtr act = ActionManager::get_action (X_("Common"), X_("ToggleSoundFileBrowser")); - if (act) { - RefPtr tact = RefPtr::cast_dynamic(act); - - if (tact->get_active()) { - sfdb->show_all(); - sfdb->present(); + if (session) { + if (session->locations()->num_range_markers()) { + ActionManager::set_sensitive (ActionManager::range_sensitive_actions, true); } else { - sfdb->hide (); + ActionManager::set_sensitive (ActionManager::range_sensitive_actions, false); } } } -