diff options
author | Taybin Rutkin <taybin@taybin.com> | 2005-09-25 18:42:24 +0000 |
---|---|---|
committer | Taybin Rutkin <taybin@taybin.com> | 2005-09-25 18:42:24 +0000 |
commit | 209d967b1bb80a9735d690d8f4f0455ecb9970ca (patch) | |
tree | 9d76ddcd7c1ac9d91bb2b1a33d31b66ce4ded5de /gtk2_ardour/selection.h | |
parent | e4b9aed743fc765219ac775905a221c017c88fba (diff) |
Initial import of gtk2_ardour.
git-svn-id: svn://localhost/trunk/ardour2@24 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/selection.h')
-rw-r--r-- | gtk2_ardour/selection.h | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/gtk2_ardour/selection.h b/gtk2_ardour/selection.h new file mode 100644 index 0000000000..30f6983efa --- /dev/null +++ b/gtk2_ardour/selection.h @@ -0,0 +1,134 @@ +/* + Copyright (C) 2000-2003 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. + + $Id$ +*/ + +#ifndef __ardour_gtk_selection_h__ +#define __ardour_gtk_selection_h__ + +#include <sigc++/signal_system.h> + +#include "time_selection.h" +#include "region_selection.h" +#include "track_selection.h" +#include "automation_selection.h" +#include "playlist_selection.h" +#include "redirect_selection.h" +#include "point_selection.h" + +class TimeAxisView; +class AudioRegionView; +class Selectable; + +class Selection : public SigC::Object +{ + public: + enum SelectionType { + Object = 0x1, + Range = 0x2 + }; + + TrackSelection tracks; + AudioRegionSelection audio_regions; + TimeSelection time; + AutomationSelection lines; + PlaylistSelection playlists; + RedirectSelection redirects; + PointSelection points; + + Selection() { + next_time_id = 0; + clear(); + } + + Selection& operator= (const Selection& other); + + SigC::Signal0<void> RegionsChanged; + SigC::Signal0<void> TracksChanged; + SigC::Signal0<void> TimeChanged; + SigC::Signal0<void> LinesChanged; + SigC::Signal0<void> PlaylistsChanged; + SigC::Signal0<void> RedirectsChanged; + SigC::Signal0<void> PointsChanged; + + void clear (); + bool empty(); + + void dump_region_layers(); + + bool selected (TimeAxisView*); + bool selected (AudioRegionView*); + + void set (list<Selectable*>&); + void add (list<Selectable*>&); + + void set (TimeAxisView*); + void set (const list<TimeAxisView*>&); + void set (AudioRegionView*); + void set (std::vector<AudioRegionView*>&); + long set (TimeAxisView*, jack_nframes_t, jack_nframes_t); + void set (ARDOUR::AutomationList*); + void set (ARDOUR::Playlist*); + void set (const list<ARDOUR::Playlist*>&); + void set (ARDOUR::Redirect*); + void set (AutomationSelectable*); + + void add (TimeAxisView*); + void add (const list<TimeAxisView*>&); + void add (AudioRegionView*); + void add (std::vector<AudioRegionView*>&); + long add (jack_nframes_t, jack_nframes_t); + void add (ARDOUR::AutomationList*); + void add (ARDOUR::Playlist*); + void add (const list<ARDOUR::Playlist*>&); + void add (ARDOUR::Redirect*); + + void remove (TimeAxisView*); + void remove (const list<TimeAxisView*>&); + void remove (AudioRegionView*); + void remove (uint32_t selection_id); + void remove (jack_nframes_t, jack_nframes_t); + void remove (ARDOUR::AutomationList*); + void remove (ARDOUR::Playlist*); + void remove (const list<ARDOUR::Playlist*>&); + void remove (ARDOUR::Redirect*); + + void replace (uint32_t time_index, jack_nframes_t start, jack_nframes_t end); + + void clear_audio_regions(); + void clear_tracks (); + void clear_time(); + void clear_lines (); + void clear_playlists (); + void clear_redirects (); + void clear_points (); + + void foreach_audio_region (void (ARDOUR::AudioRegion::*method)(void)); + void foreach_audio_region (void (ARDOUR::Region::*method)(void)); + template<class A> void foreach_audio_region (void (ARDOUR::AudioRegion::*method)(A), A arg); + template<class A> void foreach_audio_region (void (ARDOUR::Region::*method)(A), A arg); + + private: + uint32_t next_time_id; + + void add (vector<AutomationSelectable*>&); +}; + +bool operator==(const Selection& a, const Selection& b); + +#endif /* __ardour_gtk_selection_h__ */ |