X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fbundle_manager.cc;h=559bc7ed6c926188e711d9563230d91a5298c557;hb=e33d4553b2b333c30835b00741fc5c1fd0e2b36d;hp=c5981f055214ef26f3ffcc567480fa208ed6aa1c;hpb=660fd702af13ace2d0399e47d5e9a644a6e3a8d7;p=ardour.git diff --git a/gtk2_ardour/bundle_manager.cc b/gtk2_ardour/bundle_manager.cc index c5981f0552..559bc7ed6c 100644 --- a/gtk2_ardour/bundle_manager.cc +++ b/gtk2_ardour/bundle_manager.cc @@ -24,24 +24,27 @@ #include #include #include + #include "ardour/session.h" #include "ardour/user_bundle.h" #include "ardour/audioengine.h" #include "bundle_manager.h" +#include "gui_thread.h" #include "i18n.h" #include "utils.h" using namespace std; using namespace ARDOUR; -BundleEditorMatrix::BundleEditorMatrix ( - Gtk::Window* parent, Session& session, boost::shared_ptr bundle - ) - : PortMatrix (parent, session, bundle->type()), - _bundle (bundle) +BundleEditorMatrix::BundleEditorMatrix (Gtk::Window* parent, Session* session, boost::shared_ptr bundle) + : PortMatrix (parent, session, bundle->type()) + , _bundle (bundle) { _port_group = boost::shared_ptr (new PortGroup ("")); _port_group->add_bundle (_bundle); + + setup_all_ports (); + init (); } void @@ -52,7 +55,12 @@ BundleEditorMatrix::setup_ports (int dim) _ports[OURS].add_group (_port_group); } else { _ports[OTHER].suspend_signals (); - _ports[OTHER].gather (_session, _bundle->ports_are_inputs()); + + /* when we gather, allow the matrix to contain bundles with duplicate port sets, + otherwise in some cases the basic system IO ports may be hidden, making + the bundle editor useless */ + + _ports[OTHER].gather (_session, _bundle->ports_are_inputs(), true); _ports[OTHER].remove_bundle (_bundle); _ports[OTHER].resume_signals (); } @@ -166,7 +174,7 @@ BundleEditorMatrix::list_is_global (int dim) const return (dim == OTHER); } -BundleEditor::BundleEditor (Session& session, boost::shared_ptr bundle) +BundleEditor::BundleEditor (Session* session, boost::shared_ptr bundle) : ArdourDialog (_("Edit Bundle")), _matrix (this, session, bundle), _bundle (bundle) { Gtk::Table* t = new Gtk::Table (3, 2); @@ -276,15 +284,19 @@ BundleEditor::on_map () } -BundleManager::BundleManager (Session& session) - : ArdourDialog (_("Bundle Manager")), _session (session), edit_button (_("Edit")), delete_button (_("Delete")) +BundleManager::BundleManager (Session* session) + : ArdourDialog (_("Bundle Manager")) + , edit_button (_("Edit")) + , delete_button (_("Delete")) { + set_session (session); + _list_model = Gtk::ListStore::create (_list_model_columns); _tree_view.set_model (_list_model); _tree_view.append_column (_("Name"), _list_model_columns.name); _tree_view.set_headers_visible (false); - boost::shared_ptr bundles = _session.bundles (); + boost::shared_ptr bundles = _session->bundles (); for (BundleList::iterator i = bundles->begin(); i != bundles->end(); ++i) { add_bundle (*i); } @@ -344,7 +356,7 @@ BundleManager::new_clicked () /* Start off with a single channel */ b->add_channel ("1"); - _session.add_bundle (b); + _session->add_bundle (b); add_bundle (b); BundleEditor e (_session, b); @@ -368,7 +380,7 @@ BundleManager::delete_clicked () Gtk::TreeModel::iterator i = _tree_view.get_selection()->get_selected(); if (i) { boost::shared_ptr b = (*i)[_list_model_columns.bundle]; - _session.remove_bundle (b); + _session->remove_bundle (b); _list_model->erase (i); } } @@ -385,7 +397,7 @@ BundleManager::add_bundle (boost::shared_ptr b) (*i)[_list_model_columns.name] = u->name (); (*i)[_list_model_columns.bundle] = u; - u->Changed.connect (sigc::bind (sigc::mem_fun (*this, &BundleManager::bundle_changed), u)); + u->Changed.connect (bundle_connections, invalidator (*this), ui_bind (&BundleManager::bundle_changed, this, _1, u), gui_context()); } void @@ -410,7 +422,7 @@ BundleManager::bundle_changed (Bundle::Change c, boost::shared_ptr b } void -BundleManager::row_activated (Gtk::TreeModel::Path const & p, Gtk::TreeViewColumn* c) +BundleManager::row_activated (Gtk::TreeModel::Path const & p, Gtk::TreeViewColumn*) { Gtk::TreeModel::iterator i = _list_model->get_iter (p); if (!i) { @@ -423,14 +435,14 @@ BundleManager::row_activated (Gtk::TreeModel::Path const & p, Gtk::TreeViewColum } NameChannelDialog::NameChannelDialog () - : ArdourDialog (_("Add channel")), + : ArdourDialog (_("Add Channel")), _adding (true) { setup (); } NameChannelDialog::NameChannelDialog (boost::shared_ptr b, uint32_t c) - : ArdourDialog (_("Rename channel")), + : ArdourDialog (_("Rename Channel")), _bundle (b), _channel (c), _adding (false)