X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui_dialogs.cc;h=6fef5b94e49d6dead1bbcc54141db8c1cf6f8d87;hb=c22e96522d9275db4b1b4ba8edddbda5e7f798b9;hp=fecc79d46b1f67cf39e6c097b9064a002e77b7db;hpb=08371ae2cf6231bbb8522645d14add41ffa9c1c0;p=ardour.git diff --git a/gtk2_ardour/ardour_ui_dialogs.cc b/gtk2_ardour/ardour_ui_dialogs.cc index fecc79d46b..6fef5b94e4 100644 --- a/gtk2_ardour/ardour_ui_dialogs.cc +++ b/gtk2_ardour/ardour_ui_dialogs.cc @@ -23,13 +23,10 @@ This is to cut down on the compile times. It also helps with my sanity. */ -#include "ardour/session.h" #include "ardour/audioengine.h" #include "ardour/automation_watch.h" - -#ifdef interface -#undef interface -#endif +#include "ardour/profile.h" +#include "ardour/session.h" #include "actions.h" #include "add_route_dialog.h" @@ -72,7 +69,6 @@ ARDOUR_UI::set_session (Session *s) { SessionHandlePtr::set_session (s); - if (!_session) { WM::Manager::instance().set_session (s); /* Session option editor cannot exist across change-of-session */ @@ -190,6 +186,11 @@ ARDOUR_UI::set_session (Session *s) update_format (); + if (meter_box.get_parent()) { + transport_tearoff_hbox.remove (meter_box); + transport_tearoff_hbox.remove (editor_meter_peak_display); + } + if (editor_meter) { meter_box.remove(*editor_meter); delete editor_meter; @@ -197,14 +198,24 @@ ARDOUR_UI::set_session (Session *s) editor_meter_peak_display.hide(); } - if (_session && _session->master_out()) { - editor_meter = new LevelMeterHBox(_session); - editor_meter->set_meter (_session->master_out()->shared_peak_meter().get()); - editor_meter->clear_meters(); - editor_meter->set_type (_session->master_out()->meter_type()); - editor_meter->setup_meters (30, 12, 6); - editor_meter->show(); - meter_box.pack_start(*editor_meter); + if (meter_box.get_parent()) { + transport_tearoff_hbox.remove (meter_box); + transport_tearoff_hbox.remove (editor_meter_peak_display); + } + + if (_session && + _session->master_out() && + _session->master_out()->n_outputs().n(DataType::AUDIO) > 0) { + + if (!ARDOUR::Profile->get_trx()) { + editor_meter = new LevelMeterHBox(_session); + editor_meter->set_meter (_session->master_out()->shared_peak_meter().get()); + editor_meter->clear_meters(); + editor_meter->set_type (_session->master_out()->meter_type()); + editor_meter->setup_meters (30, 12, 6); + editor_meter->show(); + meter_box.pack_start(*editor_meter); + } ArdourMeter::ResetAllPeakDisplays.connect (sigc::mem_fun(*this, &ARDOUR_UI::reset_peak_display)); ArdourMeter::ResetRoutePeakDisplays.connect (sigc::mem_fun(*this, &ARDOUR_UI::reset_route_peak_display)); @@ -219,15 +230,13 @@ ARDOUR_UI::set_session (Session *s) editor_meter_max_peak = -INFINITY; editor_meter_peak_display.signal_button_release_event().connect (sigc::mem_fun(*this, &ARDOUR_UI::editor_meter_peak_button_release), false); - if (Config->get_show_editor_meter()) { + if (Config->get_show_editor_meter() && !ARDOUR::Profile->get_trx()) { + transport_tearoff_hbox.pack_start (meter_box, false, false); + transport_tearoff_hbox.pack_start (editor_meter_peak_display, false, false); meter_box.show(); editor_meter_peak_display.show(); - } else { - meter_box.hide(); - editor_meter_peak_display.hide(); } } - } int @@ -564,3 +573,18 @@ ARDOUR_UI::editor_meter_peak_button_release (GdkEventButton* ev) } return true; } + +void +ARDOUR_UI::toggle_mixer_space() +{ + Glib::RefPtr act = ActionManager::get_action ("Common", "ToggleMaximalMixer"); + + if (act) { + Glib::RefPtr tact = Glib::RefPtr::cast_dynamic(act); + if (tact->get_active()) { + mixer->maximise_mixer_space (); + } else { + mixer->restore_mixer_space (); + } + } +}