X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Ftrack_selection.h;h=2e9927ab420ad89a82e535c7a3eaa0eeab4e2266;hb=815ffcd567a65c259b31b41e03c56cf2fc8ad1b6;hp=0c92ea40c298c448bce4e46c7f841c25b5fbe3e8;hpb=209d967b1bb80a9735d690d8f4f0455ecb9970ca;p=ardour.git diff --git a/gtk2_ardour/track_selection.h b/gtk2_ardour/track_selection.h index 0c92ea40c2..2e9927ab42 100644 --- a/gtk2_ardour/track_selection.h +++ b/gtk2_ardour/track_selection.h @@ -1,10 +1,104 @@ +/* + 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 + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + #ifndef __ardour_gtk_track_selection_h__ #define __ardour_gtk_track_selection_h__ -#include +#include "track_view_list.h" +#include "route_ui.h" +#include "audio_time_axis.h" +#include "midi_time_axis.h" + +class PublicEditor; + +class TrackSelection : public TrackViewList +{ +public: + 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(); ) { + 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; + } + } -class TimeAxisView; + 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; + } + } -struct TrackSelection : public list {}; +private: + PublicEditor const * _editor; +}; #endif /* __ardour_gtk_track_selection_h__ */