Allow strips to add or remove personal sends
[ardour.git] / gtk2_ardour / port_group.h
index 17d1963e1908632a9d576dee907ad8ae57794267..3d9e87f710879294f59e7ca2b2a85e229ad0bc6e 100644 (file)
@@ -40,7 +40,6 @@ namespace ARDOUR {
 }
 
 class PortMatrix;
-class RouteBundle;
 class PublicEditor;
 
 /** A list of bundles grouped by some aspect of their type e.g. busses, tracks, system.
@@ -58,7 +57,7 @@ public:
        void remove_bundle (boost::shared_ptr<ARDOUR::Bundle>);
        boost::shared_ptr<ARDOUR::Bundle> only_bundle ();
        void clear ();
-       uint32_t total_channels () const;
+       ARDOUR::ChanCount total_channels () const;
        boost::shared_ptr<ARDOUR::IO> io_from_bundle (boost::shared_ptr<ARDOUR::Bundle>) const;
        void remove_duplicates ();
 
@@ -76,7 +75,7 @@ public:
            boost::shared_ptr<ARDOUR::Bundle> bundle;
            /** IO whose ports are in the bundle, or 0.  This is so that we can do things like adding
                ports to the IO from matrix editor menus. */
-           boost::shared_ptr<ARDOUR::IO> io; 
+           boost::weak_ptr<ARDOUR::IO> io;
            Gdk::Color colour;
            bool has_colour;
            PBD::ScopedConnection changed_connection;
@@ -100,7 +99,7 @@ private:
 /// A list of PortGroups
 class PortGroupList : public sigc::trackable
 {
-  public:
+public:
        PortGroupList ();
        ~PortGroupList();
 
@@ -108,12 +107,11 @@ class PortGroupList : public sigc::trackable
 
        void add_group (boost::shared_ptr<PortGroup>);
        void add_group_if_not_empty (boost::shared_ptr<PortGroup>);
-       void set_type (ARDOUR::DataType);
-       void gather (ARDOUR::Session *, bool, bool);
+       void gather (ARDOUR::Session *, ARDOUR::DataType, bool, bool, bool);
        PortGroup::BundleList const & bundles () const;
        void clear ();
        void remove_bundle (boost::shared_ptr<ARDOUR::Bundle>);
-       uint32_t total_channels () const;
+       ARDOUR::ChanCount total_channels () const;
        uint32_t size () const {
                return _groups.size();
        }
@@ -138,18 +136,15 @@ class PortGroupList : public sigc::trackable
        /** A bundle in one of our groups has changed */
        PBD::Signal1<void,ARDOUR::Bundle::Change> BundleChanged;
 
-  private:
+private:
        bool port_has_prefix (std::string const &, std::string const &) const;
        std::string common_prefix (std::vector<std::string> const &) const;
        std::string common_prefix_before (std::vector<std::string> const &, std::string const &) const;
        void emit_changed ();
        void emit_bundle_changed (ARDOUR::Bundle::Change);
-       boost::shared_ptr<ARDOUR::Bundle> make_bundle_from_ports (std::vector<std::string> const &, bool) const;
-       void maybe_add_processor_to_list (
-               boost::weak_ptr<ARDOUR::Processor>, std::list<boost::shared_ptr<ARDOUR::Bundle> > *, bool, std::set<boost::shared_ptr<ARDOUR::IO> > &
-               );
+       boost::shared_ptr<ARDOUR::Bundle> make_bundle_from_ports (std::vector<std::string> const &, ARDOUR::DataType, bool, std::string const& bundle_name = std::string()) const;
+       void maybe_add_processor_to_list (boost::weak_ptr<ARDOUR::Processor>, std::list<boost::shared_ptr<ARDOUR::IO> > *, bool, std::set<boost::shared_ptr<ARDOUR::IO> > &);
 
-       ARDOUR::DataType _type;
        mutable PortGroup::BundleList _bundles;
        List _groups;
        PBD::ScopedConnectionList _bundle_changed_connections;