X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui_dialogs.cc;h=8c1c81167415fa5149d65ac51ba04524bb6b92e7;hb=10cb0a7646ae7da18e5e6f49b940a5e921a73b57;hp=98677bb9b42ab8d1faee28d920ffbea75a06879f;hpb=91d3ab7cec9f4699b5f0080dd5cb39c2df598ee9;p=ardour.git diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index 98677bb9b4..8c1c811674 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -27,21 +27,25 @@ #include "ardour/audioengine.h" #include "actions.h" +#include "add_route_dialog.h" #include "ardour_ui.h" +#include "bundle_manager.h" +#include "global_port_matrix.h" +#include "gui_object.h" +#include "gui_thread.h" +#include "keyeditor.h" #include "location_ui.h" +#include "midi_tracer.h" #include "mixer_ui.h" -#include "rc_option_editor.h" -#include "session_option_editor.h" #include "public_editor.h" +#include "rc_option_editor.h" #include "route_params_ui.h" +#include "shuttle_control.h" +#include "session_option_editor.h" +#include "speaker_dialog.h" #include "sfdb_ui.h" #include "theme_manager.h" -#include "bundle_manager.h" -#include "keyeditor.h" -#include "gui_thread.h" -#include "midi_tracer.h" -#include "add_route_dialog.h" -#include "global_port_matrix.h" +#include "time_info_box.h" #include "i18n.h" @@ -60,10 +64,22 @@ ARDOUR_UI::set_session (Session *s) return; } + const XMLNodeList& children = _session->extra_xml (X_("UI"))->children(); + for (XMLNodeList::const_iterator i = children.begin(); i != children.end(); ++i) { + if ((*i)->name() == GUIObjectState::xml_node_name) { + gui_object_state->load (**i); + break; + } + } + if (location_ui->get()) { location_ui->get()->set_session(s); } + if (speaker_config_window->get()) { + speaker_config_window->get()->set_speakers (s->get_speakers()); + } + if (route_params) { route_params->set_session (s); } @@ -76,19 +92,23 @@ ARDOUR_UI::set_session (Session *s) session_option_editor->set_session (s); } + if (shuttle_box) { + shuttle_box->set_session (s); + } + for (ARDOUR::DataType::iterator i = ARDOUR::DataType::begin(); i != ARDOUR::DataType::end(); ++i) { if (_global_port_matrix[*i]->get()) { _global_port_matrix[*i]->get()->set_session (_session); } } - primary_clock.set_session (s); - secondary_clock.set_session (s); - big_clock.set_session (s); - preroll_clock.set_session (s); - postroll_clock.set_session (s); - _menu_bar_clock.set_session (s); - + primary_clock->set_session (s); + secondary_clock->set_session (s); + big_clock->set_session (s); + preroll_clock->set_session (s); + postroll_clock->set_session (s); + time_info_box->set_session (s); + /* sensitize menu bar options that are now valid */ ActionManager::set_sensitive (ActionManager::session_sensitive_actions, true); @@ -123,7 +143,7 @@ ARDOUR_UI::set_session (Session *s) ActionManager::set_sensitive (ActionManager::playlist_selection_sensitive_actions, false); rec_button.set_sensitive (true); - shuttle_box.set_sensitive (true); + solo_alert_button.set_active (_session->soloing()); setup_session_options (); @@ -143,6 +163,7 @@ ARDOUR_UI::set_session (Session *s) _session->AuditionActive.connect (_session_connections, MISSING_INVALIDATOR, ui_bind (&ARDOUR_UI::auditioning_changed, this, _1), gui_context()); _session->locations()->added.connect (_session_connections, MISSING_INVALIDATOR, ui_bind (&ARDOUR_UI::handle_locations_change, this, _1), gui_context()); _session->locations()->removed.connect (_session_connections, MISSING_INVALIDATOR, ui_bind (&ARDOUR_UI::handle_locations_change, this, _1), gui_context()); + _session->config.ParameterChanged.connect (_session_connections, MISSING_INVALIDATOR, ui_bind (&ARDOUR_UI::session_parameter_changed, this, _1), gui_context ()); #ifdef HAVE_JACK_SESSION engine->JackSessionEvent.connect (*_session, MISSING_INVALIDATOR, ui_bind (&Session::jack_session_event, _session, _1), gui_context()); @@ -170,13 +191,19 @@ ARDOUR_UI::set_session (Session *s) second_connection = Glib::signal_timeout().connect (sigc::mem_fun(*this, &ARDOUR_UI::every_second), 1000); point_one_second_connection = Glib::signal_timeout().connect (sigc::mem_fun(*this, &ARDOUR_UI::every_point_one_seconds), 100); point_zero_one_second_connection = Glib::signal_timeout().connect (sigc::mem_fun(*this, &ARDOUR_UI::every_point_zero_one_seconds), 40); + + update_format (); } int ARDOUR_UI::unload_session (bool hide_stuff) { if (_session && _session->dirty()) { - switch (ask_about_saving_session (_("close"))) { + std::vector actions; + actions.push_back (_("Don't close")); + actions.push_back (_("Just close")); + actions.push_back (_("Save and close")); + switch (ask_about_saving_session (actions)) { case -1: // cancel return 1; @@ -201,7 +228,6 @@ ARDOUR_UI::unload_session (bool hide_stuff) ActionManager::set_sensitive (ActionManager::session_sensitive_actions, false); rec_button.set_sensitive (false); - shuttle_box.set_sensitive (false); stop_blinking (); stop_clocking (); @@ -233,6 +259,22 @@ ARDOUR_UI::toggle_big_clock_window () } } +void +ARDOUR_UI::toggle_speaker_config_window () +{ + RefPtr act = ActionManager::get_action (X_("Common"), X_("toggle-speaker-config")); + if (act) { + RefPtr tact = RefPtr::cast_dynamic(act); + + if (tact->get_active()) { + speaker_config_window->get()->show_all (); + speaker_config_window->get()->present (); + } else { + speaker_config_window->get()->hide (); + } + } +} + void ARDOUR_UI::new_midi_tracer_window () {