diff options
-rw-r--r-- | gtk2_ardour/mixer_ui.cc | 33 | ||||
-rw-r--r-- | gtk2_ardour/mixer_ui.h | 2 | ||||
-rw-r--r-- | gtk2_ardour/vca_master_strip.cc | 16 |
3 files changed, 31 insertions, 20 deletions
diff --git a/gtk2_ardour/mixer_ui.cc b/gtk2_ardour/mixer_ui.cc index 55eaee74b3..e6ba52eb52 100644 --- a/gtk2_ardour/mixer_ui.cc +++ b/gtk2_ardour/mixer_ui.cc @@ -585,6 +585,7 @@ Mixer_UI::add_stripables (StripableList& slist) strip->set_width_enum (_strip_width, this); } + show_strip (strip); TreeModel::Row row = *(track_model->insert (insert_iter)); @@ -598,12 +599,13 @@ Mixer_UI::add_stripables (StripableList& slist) _selection.add (strip); } - route->PropertyChanged.connect (*this, invalidator (*this), boost::bind (&Mixer_UI::strip_property_changed, this, _1, strip), gui_context()); - strip->WidthChanged.connect (sigc::mem_fun(*this, &Mixer_UI::strip_width_changed)); strip->signal_button_release_event().connect (sigc::bind (sigc::mem_fun(*this, &Mixer_UI::strip_button_release_event), strip)); } - } + + (*s)->presentation_info().PropertyChanged.connect (*this, invalidator(*this), boost::bind (&Mixer_UI::stripable_property_changed, this, _1, boost::weak_ptr<Stripable>(*s)), gui_context()); + (*s)->PropertyChanged.connect (*this, invalidator(*this), boost::bind (&Mixer_UI::stripable_property_changed, this, _1, boost::weak_ptr<Stripable>(*s)), gui_context()); + } } catch (const std::exception& e) { error << string_compose (_("Error adding GUI elements for new tracks/busses %1"), e.what()) << endmsg; @@ -1485,20 +1487,35 @@ Mixer_UI::build_track_menu () } void -Mixer_UI::strip_property_changed (const PropertyChange& what_changed, MixerStrip* mx) +Mixer_UI::stripable_property_changed (const PropertyChange& what_changed, boost::weak_ptr<Stripable> ws) { - if (!what_changed.contains (ARDOUR::Properties::name)) { + if (!what_changed.contains (ARDOUR::Properties::hidden) && !what_changed.contains (ARDOUR::Properties::name)) { return; } - ENSURE_GUI_THREAD (*this, &Mixer_UI::strip_name_changed, what_changed, mx) + boost::shared_ptr<Stripable> s = ws.lock (); + + if (!s) { + return; + } TreeModel::Children rows = track_model->children(); TreeModel::Children::iterator i; for (i = rows.begin(); i != rows.end(); ++i) { - if ((*i)[stripable_columns.strip] == mx) { - (*i)[stripable_columns.text] = mx->route()->name(); + boost::shared_ptr<Stripable> ss = (*i)[stripable_columns.stripable]; + + if (s == ss) { + + if (what_changed.contains (ARDOUR::Properties::name)) { + (*i)[stripable_columns.text] = s->name(); + } + + if (what_changed.contains (ARDOUR::Properties::hidden)) { + (*i)[stripable_columns.visible] = !s->presentation_info().hidden(); + redisplay_track_list (); + } + return; } } diff --git a/gtk2_ardour/mixer_ui.h b/gtk2_ardour/mixer_ui.h index e467ce4093..6dc8cd2c84 100644 --- a/gtk2_ardour/mixer_ui.h +++ b/gtk2_ardour/mixer_ui.h @@ -266,7 +266,7 @@ class Mixer_UI : public Gtkmm2ext::Tabbable, public PBD::ScopedConnectionList, p MonitorSection* _monitor_section; PluginSelector *_plugin_selector; - void strip_property_changed (const PBD::PropertyChange&, MixerStrip *); + void stripable_property_changed (const PBD::PropertyChange& what_changed, boost::weak_ptr<ARDOUR::Stripable> ws); void route_group_property_changed (ARDOUR::RouteGroup *, const PBD::PropertyChange &); /* various treeviews */ diff --git a/gtk2_ardour/vca_master_strip.cc b/gtk2_ardour/vca_master_strip.cc index aa8b93a3e9..c0ade152af 100644 --- a/gtk2_ardour/vca_master_strip.cc +++ b/gtk2_ardour/vca_master_strip.cc @@ -57,9 +57,6 @@ VCAMasterStrip::VCAMasterStrip (Session* s, boost::shared_ptr<VCA> v) , delete_dialog (0) , control_slave_ui (s) { - - PresentationInfo::color_t c = _vca->presentation_info().color (); - /* set color for the VCA, if not already done. */ if (!_vca->presentation_info().color_set()) { @@ -231,14 +228,7 @@ VCAMasterStrip::name() const void VCAMasterStrip::hide_clicked () { - if (!delete_dialog) { - delete_dialog = new MessageDialog (_("Removing a Master will deassign all slaves. Remove it anyway?"), - true, MESSAGE_WARNING, BUTTONS_YES_NO, true); - delete_dialog->signal_response().connect (sigc::mem_fun (*this, &VCAMasterStrip::hide_confirmation)); - } - - delete_dialog->set_position (Gtk::WIN_POS_MOUSE); - delete_dialog->present (); + _vca->presentation_info().set_hidden (true); } void @@ -389,6 +379,10 @@ VCAMasterStrip::vca_property_changed (PropertyChange const & what_changed) if (what_changed.contains (ARDOUR::Properties::color)) { vertical_button.set_active_color (_vca->presentation_info().color ()); } + + if (what_changed.contains (ARDOUR::Properties::hidden)) { + + } } void |