session property - include busses in meterbridge
authorRobin Gareus <robin@gareus.org>
Fri, 28 Jun 2013 20:48:43 +0000 (22:48 +0200)
committerRobin Gareus <robin@gareus.org>
Wed, 10 Jul 2013 13:27:02 +0000 (15:27 +0200)
gtk2_ardour/meterbridge.cc
gtk2_ardour/meterbridge.h
gtk2_ardour/session_option_editor.cc
libs/ardour/ardour/session_configuration_vars.h

index 70f0c80dba6a1818961358ef51c2b854ca96a88c..dc06dc2415c48f99066b108084cded7fd9607e36 100644 (file)
@@ -117,6 +117,7 @@ Meterbridge::Meterbridge ()
        : Window (Gtk::WINDOW_TOPLEVEL)
        , VisibilityTracker (*((Gtk::Window*) this))
        , _visible (false)
+       , _show_busses (false)
 {
        set_name ("Meter Bridge");
 
@@ -251,6 +252,7 @@ Meterbridge::set_session (Session* s)
        }
 
        update_title ();
+       _show_busses = _session->config.get_show_busses_in_meterbridge();
 
        SignalOrderRouteSorter sorter;
        boost::shared_ptr<RouteList> routes = _session->get_routes();
@@ -262,6 +264,7 @@ Meterbridge::set_session (Session* s)
        _session->RouteAdded.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::add_strips, this, _1), gui_context());
        _session->DirtyChanged.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::update_title, this), gui_context());
        _session->StateSaved.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::update_title, this), gui_context());
+       _session->config.ParameterChanged.connect (*this, invalidator (*this), ui_bind (&Meterbridge::parameter_changed, this, _1), gui_context());
 
        if (_visible) {
                show_window();
@@ -408,17 +411,6 @@ Meterbridge::add_strips (RouteList& routes)
                        continue;
                }
 
-               if (route->is_master()) {
-                       /* always show master */
-               }
-               else
-               if (boost::dynamic_pointer_cast<AudioTrack>(route) == 0
-                               && boost::dynamic_pointer_cast<MidiTrack>(route) == 0
-                               ) {
-                       // non-master bus
-                       if (0) continue; // TODO allow to skip busses
-               }
-
                strip = new MeterStrip (*this, _session, route);
                strips.push_back (strip);
 
@@ -451,7 +443,8 @@ Meterbridge::sync_order_keys (RouteSortOrderKey src)
 
        int pos = 0;
        for (list<MeterStrip *>::iterator i = copy.begin(); i != copy.end(); ++i) {
-#if 0 // TODO subscribe to route active,inactive changes
+
+#if 0 // TODO subscribe to route active,inactive changes, merge w/ bus
                if (! (*i)->route()->active()) {
                        (*i)->hide();
                } else {
@@ -459,6 +452,27 @@ Meterbridge::sync_order_keys (RouteSortOrderKey src)
                }
 #endif
 
+               // TODO simplyfy, abstract ->is_bus()
+               if ((*i)->route()->is_master()) {
+                       /* always show master */
+                       (*i)->show();
+               }
+               else if (boost::dynamic_pointer_cast<AudioTrack>((*i)->route()) == 0
+                               && boost::dynamic_pointer_cast<MidiTrack>((*i)->route()) == 0
+                               ) {
+                       /* non-master bus */
+                       if (_show_busses) {
+                               (*i)->show();
+                       } else {
+                               (*i)->hide();
+                       }
+               }
+               else {
+                       (*i)->show();
+               }
+
+
+
                if (pos%8 == 0) {
                        (*i)->display_metrics(true);
                } else {
@@ -467,3 +481,12 @@ Meterbridge::sync_order_keys (RouteSortOrderKey src)
                global_hpacker.reorder_child(*(*i), pos++);
        }
 }
+
+void
+Meterbridge::parameter_changed (std::string const & p)
+{
+       if (p == "show-busses-in-meterbridge") {
+               _show_busses = _session->config.get_show_busses_in_meterbridge();
+               sync_order_keys(MixerSort);
+       }
+}
index 3b50d6f8aedf25993858430806a896e57bd2cf01..9239ebc78813dc4baf370108b2baacd8c860ed93 100644 (file)
@@ -59,6 +59,7 @@ class Meterbridge :
        static Meterbridge* _instance;
 
        bool _visible;
+       bool _show_busses;
 
        Gtk::ScrolledWindow scroller;
        Gtk::HBox global_hpacker;
@@ -91,6 +92,8 @@ class Meterbridge :
 
        bool on_key_press_event (GdkEventKey*);
        bool on_key_release_event (GdkEventKey*);
+
+       void parameter_changed (std::string const & p);
 };
 
 #endif
index 17f909a08ada2303aa7de405478daa91b3c1ec46..c419a3ad2b03dfbe3d88e4dd6aa3df25b441fdb5 100644 (file)
@@ -271,6 +271,15 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
                            sigc::mem_fun (*_session_config, &SessionConfiguration::get_glue_new_regions_to_bars_and_beats),
                            sigc::mem_fun (*_session_config, &SessionConfiguration::set_glue_new_regions_to_bars_and_beats)
                            ));
+
+       add_option (_("Misc"), new OptionEditorHeading (_("Meterbridge Options")));
+       add_option (_("Misc"), new BoolOption (
+                           "show-busses-in-meterbridge",
+                           _("Include Busses on Meterbridge"),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::get_show_busses_in_meterbridge),
+                           sigc::mem_fun (*_session_config, &SessionConfiguration::set_show_busses_in_meterbridge)
+                           ));
+
 }
 
 void
index 9def8f3aadeced660711d3ba314e60ff405d3aad..7069379b72f0eaaaaecc2fa52ce8e0ae0d42ce95 100644 (file)
@@ -57,3 +57,4 @@ CONFIG_VARIABLE (bool, midi_copy_is_fork, "midi-copy-is-fork", false)
 CONFIG_VARIABLE (bool, glue_new_regions_to_bars_and_beats, "glue-new-regions-to-bars-and-beats", false)
 CONFIG_VARIABLE (bool, use_video_file_fps, "use-video-file-fps", false)
 CONFIG_VARIABLE (bool, videotimeline_pullup, "videotimeline-pullup", true)
+CONFIG_VARIABLE (bool, show_busses_in_meterbridge, "show-busses-in-meterbridge", false)