X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Ftrack_selection.h;h=8c7aac45c4776b1c01bf5ba1167dacab8e082f55;hb=53df8350dd601c6b50e1294b3ab9d26266b5ec78;hp=4fb11873692e6e4ec2748f37302f3bb4adc57b4a;hpb=5ce3409e5debaf9d42749cb69c544a09c550f43a;p=ardour.git diff --git a/gtk2_ardour/track_selection.h b/gtk2_ardour/track_selection.h index 4fb1187369..8c7aac45c4 100644 --- a/gtk2_ardour/track_selection.h +++ b/gtk2_ardour/track_selection.h @@ -21,6 +21,9 @@ #define __ardour_gtk_track_selection_h__ #include "track_view_list.h" +#include "route_ui.h" +#include "audio_time_axis.h" +#include "midi_time_axis.h" class PublicEditor; @@ -31,8 +34,66 @@ public: 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(); ) { + iterator tmp = i; + ++tmp; + + RouteUI* t = dynamic_cast (*i); + if (t) { + f (t); + } + i = tmp; + } + } + + template + void foreach_route_time_axis (Function f) { + for (iterator i = begin(); i != end(); ) { + iterator tmp = i; + ++tmp; + RouteTimeAxisView* t = dynamic_cast (*i); + if (t) { + f (t); + } + i = tmp; + } + } + + template + void foreach_audio_time_axis (Function f) { + for (iterator i = begin(); i != end(); ) { + iterator tmp = i; + ++tmp; + AudioTimeAxisView* t = dynamic_cast (*i); + if (t) { + f (t); + } + i = tmp; + } + } + + template + void foreach_midi_time_axis (Function f) { + for (iterator i = begin(); i != end(); ) { + iterator tmp = i; + ++tmp; + MidiTimeAxisView* t = dynamic_cast (*i); + if (t) { + f (t); + } + i = tmp; + } + } private: PublicEditor const * _editor;