Unify the canvases by moving groups around rather than using set_scrolling_region...
[ardour.git] / gtk2_ardour / selection.h
index 5422888536fdb0efe1ee92ea9f9bebed57339851..4698544d9aa813ebb7ba105f77f80e1ba97f29c0 100644 (file)
@@ -15,7 +15,6 @@
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 
-    $Id$
 */
 
 #ifndef __ardour_gtk_selection_h__
@@ -33,6 +32,7 @@
 #include "playlist_selection.h"
 #include "redirect_selection.h"
 #include "point_selection.h"
+#include "marker_selection.h"
 
 class TimeAxisView;
 class RegionView;
@@ -68,6 +68,7 @@ class Selection : public sigc::trackable
        PlaylistSelection    playlists;
        RedirectSelection    redirects;
        PointSelection       points;
+       MarkerSelection      markers;
 
        Selection() {
                next_time_id = 0;
@@ -83,6 +84,7 @@ class Selection : public sigc::trackable
        sigc::signal<void> PlaylistsChanged;
        sigc::signal<void> RedirectsChanged;
        sigc::signal<void> PointsChanged;
+       sigc::signal<void> MarkersChanged;
 
        void clear ();
        bool empty();
@@ -98,7 +100,7 @@ class Selection : public sigc::trackable
        
        void set (TimeAxisView*);
        void set (const std::list<TimeAxisView*>&);
-       void set (RegionView*);
+       void set (RegionView*, bool also_clear_tracks = true);
        void set (std::vector<RegionView*>&);
        long set (TimeAxisView*, nframes_t, nframes_t);
        void set (ARDOUR::AutomationList*);
@@ -106,6 +108,8 @@ class Selection : public sigc::trackable
        void set (const std::list<boost::shared_ptr<ARDOUR::Playlist> >&);
        void set (boost::shared_ptr<ARDOUR::Redirect>);
        void set (AutomationSelectable*);
+       void set (Marker*);
+       void set (const RegionSelection&);
 
        void toggle (TimeAxisView*);
        void toggle (const std::list<TimeAxisView*>&);
@@ -117,6 +121,7 @@ class Selection : public sigc::trackable
        void toggle (const std::list<boost::shared_ptr<ARDOUR::Playlist> >&);
        void toggle (boost::shared_ptr<ARDOUR::Redirect>);
        void toggle (const std::vector<AutomationSelectable*>&);
+       void toggle (Marker*);
 
        void add (TimeAxisView*);
        void add (const std::list<TimeAxisView*>&);
@@ -127,7 +132,9 @@ class Selection : public sigc::trackable
        void add (boost::shared_ptr<ARDOUR::Playlist>);
        void add (const std::list<boost::shared_ptr<ARDOUR::Playlist> >&);
        void add (boost::shared_ptr<ARDOUR::Redirect>);
-       
+       void add (Marker*);
+       void add (const RegionSelection&);
+
        void remove (TimeAxisView*);
        void remove (const std::list<TimeAxisView*>&);
        void remove (RegionView*);
@@ -138,6 +145,7 @@ class Selection : public sigc::trackable
        void remove (const std::list<boost::shared_ptr<ARDOUR::Playlist> >&);
        void remove (boost::shared_ptr<ARDOUR::Redirect>);
        void remove (const list<Selectable*>&);
+       void remove (Marker*);
 
        void replace (uint32_t time_index, nframes_t start, nframes_t end);
        
@@ -148,6 +156,7 @@ class Selection : public sigc::trackable
        void clear_playlists ();
        void clear_redirects ();
        void clear_points ();
+       void clear_markers ();
 
        void foreach_region (void (ARDOUR::Region::*method)(void));
        template<class A> void foreach_region (void (ARDOUR::Region::*method)(A), A arg);