X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Ftrack_selection.h;h=d94ec3c8c1773bf39aa1edf6c09014a0704b35a9;hb=0b55529ec42c7130421ba37f0762cec83e1e4df3;hp=363492eafd3cc8d285283b7b83c4de898febfef7;hpb=4297071b3f7360b17d81ef9cf36b8d75d46d2818;p=ardour.git diff --git a/gtk2_ardour/track_selection.h b/gtk2_ardour/track_selection.h index 363492eafd..d94ec3c8c1 100644 --- a/gtk2_ardour/track_selection.h +++ b/gtk2_ardour/track_selection.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2000-2007 Paul Davis + Copyright (C) 2000-2009 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,19 +20,72 @@ #ifndef __ardour_gtk_track_selection_h__ #define __ardour_gtk_track_selection_h__ -#include -#include "shared_ptrs.h" +#include "track_view_list.h" +#include "route_ui.h" +#include "audio_time_axis.h" +#include "midi_time_axis.h" -class TimeAxisView; +class PublicEditor; -class TrackSelection : public std::list +class TrackSelection : public TrackViewList { public: - TrackSelection () {} - - TrackSelection (std::list const &); - std::list add (std::list const &); - bool contains (TimeAxisViewConstPtr) const; + TrackSelection (PublicEditor const * e) : _editor (e) {} + TrackSelection (PublicEditor const *, TrackViewList const &); + + virtual ~TrackSelection (); + + TrackViewList add (TrackViewList const &); + + template + void foreach_time_axis (Function f) { + for (iterator i = begin(); i != end(); ++i) { + f (*i); + } + } + + template + void foreach_route_ui (Function f) { + for (iterator i = begin(); i != end(); ++i) { + RouteUI* t = dynamic_cast (*i); + if (t) { + f (t); + } + } + } + + template + void foreach_route_time_axis (Function f) { + for (iterator i = begin(); i != end(); ++i) { + RouteTimeAxisView* t = dynamic_cast (*i); + if (t) { + f (t); + } + } + } + + template + void foreach_audio_time_axis (Function f) { + for (iterator i = begin(); i != end(); ++i) { + AudioTimeAxisView* t = dynamic_cast (*i); + if (t) { + f (t); + } + } + } + + template + void foreach_midi_time_axis (Function f) { + for (iterator i = begin(); i != end(); ++i) { + MidiTimeAxisView* t = dynamic_cast (*i); + if (t) { + f (t); + } + } + } + +private: + PublicEditor const * _editor; }; #endif /* __ardour_gtk_track_selection_h__ */