Optimize automation-event process splitting
[ardour.git] / gtk2_ardour / port_matrix.h
index d7776ca0cd3ee9157ade5eb4b50dbe90215d2d10..09c334b5efe7222f3e5bb570f08e0e6e26e0b378 100644 (file)
@@ -85,7 +85,7 @@ public:
                LEFT_TO_BOTTOM ///< row labels to the left, column labels on the bottom
        };
 
-       
+
        /** @return Arrangement in use */
        Arrangement arrangement () const {
                return _arrangement;
@@ -116,7 +116,7 @@ public:
        }
 
        boost::shared_ptr<const PortGroup> visible_ports (int d) const;
-       
+
        void init ();
        void setup ();
        virtual void setup_ports (int) = 0;
@@ -126,9 +126,13 @@ public:
 
        bool should_show (ARDOUR::DataType) const;
        uint32_t count_of_our_type (ARDOUR::ChanCount) const;
+       uint32_t count_of_our_type_min_1 (ARDOUR::ChanCount) const;
 
        PortMatrixNode::State get_association (PortMatrixNode) const;
 
+       void flip ();
+       bool key_press (GdkEventKey *);
+
        /** @param c Channels; where c[0] is from _ports[0] and c[1] is from _ports[1].
         *  @param s New state.
         */
@@ -140,7 +144,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<ARDOUR::Bundle>) const;
+       virtual bool can_add_channels (boost::shared_ptr<ARDOUR::Bundle>) const;
        virtual void add_channel (boost::shared_ptr<ARDOUR::Bundle>, ARDOUR::DataType);
        virtual bool can_remove_channels (boost::shared_ptr<ARDOUR::Bundle>) const;
        virtual void remove_channel (ARDOUR::BundleChannel);
@@ -159,6 +163,8 @@ public:
 
        sigc::signal<void, Result> Finished;
 
+       static bool bundle_with_channels (boost::shared_ptr<ARDOUR::Bundle>);
+
 protected:
 
        /** We have two port group lists.  One will be presented on the rows of the matrix,
@@ -182,7 +188,7 @@ private:
        void disassociate_all_on_channel (boost::weak_ptr<ARDOUR::Bundle>, uint32_t, int);
        void disassociate_all_on_bundle (boost::weak_ptr<ARDOUR::Bundle>, int);
        void setup_global_ports ();
-       void setup_global_ports_proxy ();
+        void setup_global_ports_proxy ();
        void toggle_show_only_bundles ();
        bool on_scroll_event (GdkEventScroll *);
        boost::shared_ptr<ARDOUR::IO> io_from_bundle (boost::shared_ptr<ARDOUR::Bundle>) const;
@@ -195,10 +201,13 @@ private:
        void add_remove_option (Gtk::Menu_Helpers::MenuList &, boost::weak_ptr<ARDOUR::Bundle>, int);
        void add_disassociate_option (Gtk::Menu_Helpers::MenuList &, boost::weak_ptr<ARDOUR::Bundle>, int, int);
        void port_connected_or_disconnected ();
+       void update_tab_highlighting ();
+       std::pair<int, int> check_flip () const;
+       bool can_flip () const;
 
        Gtk::Window* _parent;
 
-       /// port type that we are working with, or NIL if we are working with all of them
+       /** port type that we are working with, or NIL if we are working with all of them */
        ARDOUR::DataType _type;
        PBD::ScopedConnectionList _route_connections;
        PBD::ScopedConnectionList _changed_connections;