From 57bd915d66decfc297ca987327c7fb1a2649ddaf Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 20 May 2012 21:56:33 +0000 Subject: [PATCH] Rename can_add_channel slightly and add mysteriously-missing calls to it so that you don't get offered the chance to add ports where none can be added. git-svn-id: svn://localhost/ardour2/branches/3.0@12349 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/bundle_manager.cc | 4 ++-- gtk2_ardour/bundle_manager.h | 2 +- gtk2_ardour/port_matrix.cc | 28 +++++++++++++++------------- gtk2_ardour/port_matrix.h | 2 +- 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/gtk2_ardour/bundle_manager.cc b/gtk2_ardour/bundle_manager.cc index 5940a62450..1c89f7b3cd 100644 --- a/gtk2_ardour/bundle_manager.cc +++ b/gtk2_ardour/bundle_manager.cc @@ -101,13 +101,13 @@ BundleEditorMatrix::get_state (BundleChannel c[2]) const } bool -BundleEditorMatrix::can_add_channel (boost::shared_ptr b) const +BundleEditorMatrix::can_add_channels (boost::shared_ptr b) const { if (b == _bundle) { return true; } - return PortMatrix::can_add_channel (b); + return PortMatrix::can_add_channels (b); } void diff --git a/gtk2_ardour/bundle_manager.h b/gtk2_ardour/bundle_manager.h index ff42ad7fb8..71b99684d7 100644 --- a/gtk2_ardour/bundle_manager.h +++ b/gtk2_ardour/bundle_manager.h @@ -42,7 +42,7 @@ class BundleEditorMatrix : public PortMatrix void set_state (ARDOUR::BundleChannel c[2], bool s); PortMatrixNode::State get_state (ARDOUR::BundleChannel c[2]) const; - bool can_add_channel (boost::shared_ptr) const; + bool can_add_channels (boost::shared_ptr) const; void add_channel (boost::shared_ptr, ARDOUR::DataType); bool can_remove_channels (boost::shared_ptr) const; diff --git a/gtk2_ardour/port_matrix.cc b/gtk2_ardour/port_matrix.cc index fb7bca7946..286111c6d4 100644 --- a/gtk2_ardour/port_matrix.cc +++ b/gtk2_ardour/port_matrix.cc @@ -411,19 +411,21 @@ PortMatrix::popup_menu (BundleChannel column, BundleChannel row, uint32_t t) boost::weak_ptr w (bc[dim].bundle); - /* Start off with options for the `natural' port type */ - for (DataType::iterator i = DataType::begin(); i != DataType::end(); ++i) { - if (should_show (*i)) { - snprintf (buf, sizeof (buf), _("Add %s %s"), (*i).to_i18n_string(), channel_noun().c_str()); - sub.push_back (MenuElem (buf, sigc::bind (sigc::mem_fun (*this, &PortMatrix::add_channel_proxy), w, *i))); + if (can_add_channels (bc[dim].bundle)) { + /* Start off with options for the `natural' port type */ + for (DataType::iterator i = DataType::begin(); i != DataType::end(); ++i) { + if (should_show (*i)) { + snprintf (buf, sizeof (buf), _("Add %s %s"), (*i).to_i18n_string(), channel_noun().c_str()); + sub.push_back (MenuElem (buf, sigc::bind (sigc::mem_fun (*this, &PortMatrix::add_channel_proxy), w, *i))); + } } - } - - /* Now add other ones */ - for (DataType::iterator i = DataType::begin(); i != DataType::end(); ++i) { - if (!should_show (*i)) { - snprintf (buf, sizeof (buf), _("Add %s %s"), (*i).to_i18n_string(), channel_noun().c_str()); - sub.push_back (MenuElem (buf, sigc::bind (sigc::mem_fun (*this, &PortMatrix::add_channel_proxy), w, *i))); + + /* Now add other ones */ + for (DataType::iterator i = DataType::begin(); i != DataType::end(); ++i) { + if (!should_show (*i)) { + snprintf (buf, sizeof (buf), _("Add %s %s"), (*i).to_i18n_string(), channel_noun().c_str()); + sub.push_back (MenuElem (buf, sigc::bind (sigc::mem_fun (*this, &PortMatrix::add_channel_proxy), w, *i))); + } } } @@ -677,7 +679,7 @@ PortMatrix::io_from_bundle (boost::shared_ptr b) const } bool -PortMatrix::can_add_channel (boost::shared_ptr b) const +PortMatrix::can_add_channels (boost::shared_ptr b) const { return io_from_bundle (b); } diff --git a/gtk2_ardour/port_matrix.h b/gtk2_ardour/port_matrix.h index 75b2abf279..be276c0484 100644 --- a/gtk2_ardour/port_matrix.h +++ b/gtk2_ardour/port_matrix.h @@ -141,7 +141,7 @@ public: virtual PortMatrixNode::State get_state (ARDOUR::BundleChannel c[2]) const = 0; virtual bool list_is_global (int) const = 0; - virtual bool can_add_channel (boost::shared_ptr) const; + virtual bool can_add_channels (boost::shared_ptr) const; virtual void add_channel (boost::shared_ptr, ARDOUR::DataType); virtual bool can_remove_channels (boost::shared_ptr) const; virtual void remove_channel (ARDOUR::BundleChannel);