X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fstreamview.h;h=0bf770837fd7f8f3a6b22abb2bbb20e8893fa1c7;hb=890afb2128f930b2384ca3c310de5fd311f5f9dd;hp=bfd3cb7b008a9751ad9b5c2ef900911264fd5448;hpb=bb9cc45cd22af67ac275a5e73accbe14fee664d8;p=ardour.git diff --git a/gtk2_ardour/streamview.h b/gtk2_ardour/streamview.h index bfd3cb7b00..0bf770837f 100644 --- a/gtk2_ardour/streamview.h +++ b/gtk2_ardour/streamview.h @@ -22,6 +22,8 @@ #include #include +#include "pbd/signals.h" + #include "ardour/location.h" #include "enums.h" #include "simplerect.h" @@ -33,11 +35,11 @@ namespace Gdk { namespace ARDOUR { class Route; - class Diskstream; class Crossfade; class PeakData; class Region; class Source; + class Track; } struct RecBoxInfo { @@ -53,7 +55,7 @@ class RegionSelection; class CrossfadeView; class Selection; -class StreamView : public sigc::trackable +class StreamView : public sigc::trackable, public PBD::ScopedConnectionList { public: virtual ~StreamView (); @@ -75,7 +77,7 @@ public: LayerDisplay layer_display () const { return _layer_display; } ArdourCanvas::Group* background_group() { return _background_group; } - ArdourCanvas::Group* canvas_item() { return canvas_group; } + ArdourCanvas::Group* canvas_item() { return _canvas_group; } enum ColorTarget { RegionColor, @@ -85,8 +87,11 @@ public: Gdk::Color get_region_color () const { return region_color; } void apply_color (Gdk::Color&, ColorTarget t); + uint32_t num_selected_regionviews () const; + RegionView* find_view (boost::shared_ptr); void foreach_regionview (sigc::slot slot); + void foreach_selected_regionview (sigc::slot slot); void set_selected_regionviews (RegionSelection&); void get_selectables (nframes_t, nframes_t, double, double, std::list&); @@ -94,13 +99,12 @@ public: virtual void update_contents_metrics(boost::shared_ptr) {} - void add_region_view_weak (boost::weak_ptr r); - void add_region_view (boost::shared_ptr); + void add_region_view (boost::weak_ptr); void region_layered (RegionView*); virtual void update_contents_height (); - virtual void redisplay_diskstream () = 0; + virtual void redisplay_track () = 0; double child_height () const; ARDOUR::layer_t layers () const { return _layers; } @@ -112,7 +116,7 @@ public: sigc::signal HeightChanged; protected: - StreamView (RouteTimeAxisView&, ArdourCanvas::Group* group = NULL); + StreamView (RouteTimeAxisView&, ArdourCanvas::Group* background_group = 0, ArdourCanvas::Group* canvas_group = 0); void transport_changed(); void transport_looped(); @@ -125,22 +129,21 @@ protected: bool wait_for_waves, bool recording = false) = 0; virtual void remove_region_view (boost::weak_ptr ); - void display_diskstream (boost::shared_ptr); - virtual void undisplay_diskstream (); + void display_track (boost::shared_ptr); + virtual void undisplay_track (); void diskstream_changed (); void layer_regions (); - virtual void playlist_changed_weak (boost::weak_ptr); - virtual void playlist_changed (boost::shared_ptr); - virtual void playlist_modified_weak (boost::weak_ptr); - virtual void playlist_modified (boost::shared_ptr); + virtual void playlist_switched (boost::weak_ptr); + virtual void playlist_layered (boost::weak_ptr); virtual void color_handler () = 0; RouteTimeAxisView& _trackview; + bool owns_background_group; bool owns_canvas_group; ArdourCanvas::Group* _background_group; - ArdourCanvas::Group* canvas_group; + ArdourCanvas::Group* _canvas_group; ArdourCanvas::SimpleRect* canvas_rect; /* frame around the whole thing */ typedef std::list RegionViewList; @@ -153,21 +156,20 @@ protected: std::list< std::pair,RegionView* > > rec_regions; bool rec_updating; bool rec_active; - bool use_rec_regions; Gdk::Color region_color; ///< Contained region color uint32_t stream_base_color; ///< Background color - std::vector playlist_connections; - sigc::connection playlist_change_connection; + PBD::ScopedConnectionList playlist_connections; + PBD::ScopedConnection playlist_switched_connection; ARDOUR::layer_t _layers; LayerDisplay _layer_display; double height; - std::list rec_data_ready_connections; - jack_nframes_t last_rec_data_frame; + PBD::ScopedConnectionList rec_data_ready_connections; + nframes_t last_rec_data_frame; private: void update_coverage_frames ();