Unconditionally save instant.xml on session-close
[ardour.git] / gtk2_ardour / mixer_strip.cc
index dc86a27222b0f6d5c154f4d588b21836e6fd6d42..79848f7466847f8349951dce6d01a51ced894f63 100644 (file)
@@ -1,20 +1,33 @@
 /*
-    Copyright (C) 2000-2006 Paul Davis
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-*/
+ * Copyright (C) 2005-2006 Nick Mainsbridge <mainsbridge@gmail.com>
+ * Copyright (C) 2005-2006 Taybin Rutkin <taybin@taybin.com>
+ * Copyright (C) 2005-2007 Doug McLain <doug@nostar.net>
+ * Copyright (C) 2005-2017 Paul Davis <paul@linuxaudiosystems.com>
+ * Copyright (C) 2006-2014 David Robillard <d@drobilla.net>
+ * Copyright (C) 2007-2012 Carl Hetherington <carl@carlh.net>
+ * Copyright (C) 2008 Hans Baier <hansfbaier@googlemail.com>
+ * Copyright (C) 2009-2010 Sakari Bergen <sakari.bergen@beatwaves.net>
+ * Copyright (C) 2012-2019 Robin Gareus <robin@gareus.org>
+ * Copyright (C) 2013-2016 John Emmas <john@creativepost.co.uk>
+ * Copyright (C) 2014-2018 Ben Loftis <ben@harrisonconsoles.com>
+ * Copyright (C) 2015-2016 Tim Mayberry <mojofunk@gmail.com>
+ * Copyright (C) 2016-2017 Julien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>
+ * Copyright (C) 2018 Len Ovens <len@ovenwerks.net>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
 
 #include <cmath>
 #include <list>
@@ -169,7 +182,7 @@ MixerStrip::init ()
        hide_button.set_tweaks (ArdourButton::Square);
        set_tooltip (width_button, t);
 
-       hide_button.set_icon (ArdourIcon::CloseCross);
+       hide_button.set_icon (ArdourIcon::HideEye);
        hide_button.set_tweaks (ArdourButton::Square);
        set_tooltip (&hide_button, _("Hide this mixer strip"));
 
@@ -207,10 +220,8 @@ MixerStrip::init ()
 
        solo_iso_table.set_homogeneous (true);
        solo_iso_table.set_spacings (2);
-       if (!ARDOUR::Profile->get_trx()) {
-               solo_iso_table.attach (*solo_isolated_led, 0, 1, 0, 1);
-               solo_iso_table.attach (*solo_safe_led, 1, 2, 0, 1);
-       }
+       solo_iso_table.attach (*solo_isolated_led, 0, 1, 0, 1);
+       solo_iso_table.attach (*solo_safe_led, 1, 2, 0, 1);
        solo_iso_table.show ();
 
        rec_mon_table.set_homogeneous (true);
@@ -220,9 +231,6 @@ MixerStrip::init ()
                rec_mon_table.resize (1, 3);
                rec_mon_table.attach (*monitor_input_button, 1, 2, 0, 1);
                rec_mon_table.attach (*monitor_disk_button, 2, 3, 0, 1);
-       } else if (!ARDOUR::Profile->get_trx()) {
-               rec_mon_table.attach (*monitor_input_button, 1, 2, 0, 1);
-               rec_mon_table.attach (*monitor_disk_button, 1, 2, 1, 2);
        }
        rec_mon_table.show ();
 
@@ -300,13 +308,11 @@ MixerStrip::init ()
        number_label.set_tweaks (ArdourButton::OccasionalText);
 
        global_vpacker.set_spacing (2);
-       if (!ARDOUR::Profile->get_trx()) {
-               global_vpacker.pack_start (width_hide_box, Gtk::PACK_SHRINK);
-               global_vpacker.pack_start (name_button, Gtk::PACK_SHRINK);
-               global_vpacker.pack_start (input_button_box, Gtk::PACK_SHRINK);
-               global_vpacker.pack_start (_invert_button_box, Gtk::PACK_SHRINK);
-               global_vpacker.pack_start (processor_box, true, true);
-       }
+       global_vpacker.pack_start (width_hide_box, Gtk::PACK_SHRINK);
+       global_vpacker.pack_start (name_button, Gtk::PACK_SHRINK);
+       global_vpacker.pack_start (input_button_box, Gtk::PACK_SHRINK);
+       global_vpacker.pack_start (_invert_button_box, Gtk::PACK_SHRINK);
+       global_vpacker.pack_start (processor_box, true, true);
        global_vpacker.pack_start (panners, Gtk::PACK_SHRINK);
        global_vpacker.pack_start (rec_mon_table, Gtk::PACK_SHRINK);
        global_vpacker.pack_start (solo_iso_table, Gtk::PACK_SHRINK);
@@ -314,12 +320,8 @@ MixerStrip::init ()
        global_vpacker.pack_start (gpm, Gtk::PACK_SHRINK);
        global_vpacker.pack_start (control_slave_ui, Gtk::PACK_SHRINK);
        global_vpacker.pack_start (bottom_button_table, Gtk::PACK_SHRINK);
-       if (!ARDOUR::Profile->get_trx()) {
-               global_vpacker.pack_start (output_button, Gtk::PACK_SHRINK);
-               global_vpacker.pack_start (_comment_button, Gtk::PACK_SHRINK);
-       } else {
-               global_vpacker.pack_start (name_button, Gtk::PACK_SHRINK);
-       }
+       global_vpacker.pack_start (output_button, Gtk::PACK_SHRINK);
+       global_vpacker.pack_start (_comment_button, Gtk::PACK_SHRINK);
 
 #ifndef MIXBUS
        //add a spacer underneath the master bus;
@@ -353,9 +355,6 @@ MixerStrip::init ()
        _packed = false;
        _embedded = false;
 
-       _session->engine().Stopped.connect (*this, invalidator (*this), boost::bind (&MixerStrip::engine_stopped, this), gui_context());
-       _session->engine().Running.connect (*this, invalidator (*this), boost::bind (&MixerStrip::engine_running, this), gui_context());
-
        input_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::input_press), false);
        input_button.signal_button_release_event().connect (sigc::mem_fun(*this, &MixerStrip::input_release), false);
        input_button.signal_size_allocate().connect (sigc::mem_fun (*this, &MixerStrip::input_button_resized));
@@ -657,8 +656,6 @@ MixerStrip::set_route (boost::shared_ptr<Route> rt)
                if (ARDOUR::Profile->get_mixbus()) {
                        rec_mon_table.attach (*monitor_input_button, 1, 2, 0, 1);
                        rec_mon_table.attach (*monitor_disk_button, 2, 3, 0, 1);
-               } else if (ARDOUR::Profile->get_trx()) {
-                       rec_mon_table.attach (*monitor_input_button, 1, 2, 0, 2);
                } else {
                        rec_mon_table.attach (*monitor_input_button, 1, 2, 0, 1);
                        rec_mon_table.attach (*monitor_disk_button, 1, 2, 1, 2);
@@ -785,6 +782,12 @@ MixerStrip::set_width_enum (Width w, void* owner)
 
        const float scale = std::max(1.f, UIConfiguration::instance().get_ui_scale());
 
+       gpm.gain_automation_state_button.set_text (GainMeterBase::short_astate_string (gain_automation->automation_state()));
+
+       if (_route->panner()) {
+               ((Gtk::Label*)panners.pan_automation_state_button.get_child())->set_text (GainMeterBase::short_astate_string (_route->panner()->automation_state()));
+       }
+
        switch (w) {
        case Wide:
 
@@ -792,14 +795,6 @@ MixerStrip::set_width_enum (Width w, void* owner)
                        show_sends_button->set_text (_("Aux"));
                }
 
-               gpm.gain_automation_state_button.set_text (
-                               gpm.astate_string(gain_automation->automation_state()));
-
-               if (_route->panner()) {
-                       ((Gtk::Label*)panners.pan_automation_state_button.get_child())->set_text (
-                                       panners.astate_string(_route->panner()->automation_state()));
-               }
-
                {
                        // panners expect an even number of horiz. pixels
                        int width = rintf (max (110.f * scale, gpm.get_gm_width() + 10.f * scale)) + 1;
@@ -814,15 +809,8 @@ MixerStrip::set_width_enum (Width w, void* owner)
                        show_sends_button->set_text (_("Snd"));
                }
 
-               gpm.gain_automation_state_button.set_text (
-                               gpm.short_astate_string(gain_automation->automation_state()));
                gain_meter().setup_meters (); // recalc meter width
 
-               if (_route->panner()) {
-                       ((Gtk::Label*)panners.pan_automation_state_button.get_child())->set_text (
-                       panners.short_astate_string(_route->panner()->automation_state()));
-               }
-
                {
                        // panners expect an even number of horiz. pixels
                        int width = rintf (max (60.f * scale, gpm.get_gm_width() + 10.f * scale)) + 1;
@@ -1766,9 +1754,6 @@ MixerStrip::build_route_ops_menu ()
                items.push_back (MenuElem (_("Fan out to Tracks"), sigc::bind (sigc::mem_fun (*this, &RouteUI::fan_out), false, true)));
        }
 
-       items.push_back (SeparatorElem());
-       items.push_back (MenuElem (_("Adjust Latency..."), sigc::mem_fun (*this, &RouteUI::adjust_latency)));
-
        items.push_back (SeparatorElem());
        items.push_back (CheckMenuElem (_("Protect Against Denormals"), sigc::mem_fun (*this, &RouteUI::toggle_denormal_protection)));
        denormal_menu_item = dynamic_cast<Gtk::CheckMenuItem *> (&items.back());
@@ -2050,16 +2035,6 @@ MixerStrip::reset_strip_style ()
 }
 
 
-void
-MixerStrip::engine_stopped ()
-{
-}
-
-void
-MixerStrip::engine_running ()
-{
-}
-
 string
 MixerStrip::meter_point_string (MeterPoint mp)
 {