X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fselection.h;h=4e5f684af9a305673c33343fb62e27c5a3dbfd0c;hb=71f1b360a0c0ddeb9b7eb47f01dfbd87423b314a;hp=102e6e941078691178adb321f14037f24d8ae066;hpb=cc2767caf32486365a33814149e75c6e588e8603;p=ardour.git diff --git a/gtk2_ardour/selection.h b/gtk2_ardour/selection.h index 102e6e9410..4e5f684af9 100644 --- a/gtk2_ardour/selection.h +++ b/gtk2_ardour/selection.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2000-2003 Paul Davis + 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 @@ -15,7 +15,6 @@ 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__ @@ -31,22 +30,34 @@ #include "track_selection.h" #include "automation_selection.h" #include "playlist_selection.h" -#include "redirect_selection.h" +#include "processor_selection.h" #include "point_selection.h" +#include "marker_selection.h" +#include "midi_selection.h" class TimeAxisView; -class AudioRegionView; +class RegionView; class Selectable; +class PublicEditor; +class MidiRegionView; namespace ARDOUR { class Region; class AudioRegion; class Playlist; - class Redirect; + class Processor; class AutomationList; } -class Selection : public sigc::trackable +namespace Evoral { + class ControlList; +} + +/// Lists of selected things + +/** The Selection class holds lists of selected items (tracks, regions, etc. etc.). */ + +class Selection : public sigc::trackable { public: enum SelectionType { @@ -56,20 +67,22 @@ class Selection : public sigc::trackable enum Operation { Set, + Add, Toggle, Extend }; TrackSelection tracks; - AudioRegionSelection audio_regions; + RegionSelection regions; TimeSelection time; AutomationSelection lines; PlaylistSelection playlists; - RedirectSelection redirects; PointSelection points; + MarkerSelection markers; + MidiRegionSelection midi_regions; + MidiNoteSelection midi_notes; - Selection() { - next_time_id = 0; + Selection (PublicEditor const * e) : editor (e), next_time_id (0) { clear(); } @@ -80,77 +93,99 @@ class Selection : public sigc::trackable sigc::signal TimeChanged; sigc::signal LinesChanged; sigc::signal PlaylistsChanged; - sigc::signal RedirectsChanged; sigc::signal PointsChanged; + sigc::signal MarkersChanged; + sigc::signal MidiNotesChanged; + sigc::signal MidiRegionsChanged; void clear (); - bool empty(); + bool empty (bool internal_selection = false); void dump_region_layers(); bool selected (TimeAxisView*); - bool selected (AudioRegionView*); + bool selected (RegionView*); + bool selected (Marker*); + + void set (std::list&); + void add (std::list&); + void toggle (std::list&); - void set (list&); - void add (list&); - void set (TimeAxisView*); - void set (const list&); - void set (AudioRegionView*); - void set (std::vector&); - long set (TimeAxisView*, jack_nframes_t, jack_nframes_t); - void set (ARDOUR::AutomationList*); - void set (ARDOUR::Playlist*); - void set (const list&); - void set (boost::shared_ptr); + void set (const std::list&); + void set (const MidiNoteSelection&); + void set (RegionView*, bool also_clear_tracks = true); + void set (MidiRegionView*); + void set (std::vector&); + long set (TimeAxisView*, nframes_t, nframes_t); + void set (boost::shared_ptr); + void set (boost::shared_ptr); + void set (const std::list >&); void set (AutomationSelectable*); + void set (Marker*); + void set (const RegionSelection&); void toggle (TimeAxisView*); - void toggle (const list&); - void toggle (AudioRegionView*); - void toggle (std::vector&); - long toggle (jack_nframes_t, jack_nframes_t); + void toggle (const std::list&); + void toggle (const MidiNoteSelection&); + void toggle (RegionView*); + void toggle (MidiRegionView*); + void toggle (MidiCutBuffer*); + void toggle (std::vector&); + long toggle (nframes_t, nframes_t); void toggle (ARDOUR::AutomationList*); - void toggle (ARDOUR::Playlist*); - void toggle (const list&); - void toggle (boost::shared_ptr); + void toggle (boost::shared_ptr); + void toggle (const std::list >&); + void toggle (const std::vector&); + void toggle (Marker*); void add (TimeAxisView*); - void add (const list&); - void add (AudioRegionView*); - void add (std::vector&); - long add (jack_nframes_t, jack_nframes_t); - void add (ARDOUR::AutomationList*); - void add (ARDOUR::Playlist*); - void add (const list&); - void add (boost::shared_ptr); - + void add (const std::list&); + void add (const MidiNoteSelection&); + void add (RegionView*); + void add (MidiRegionView*); + void add (MidiCutBuffer*); + void add (std::vector&); + long add (nframes_t, nframes_t); + void add (boost::shared_ptr); + void add (boost::shared_ptr); + void add (const std::list >&); + void add (Marker*); + void add (const std::list&); + void add (const RegionSelection&); void remove (TimeAxisView*); - void remove (const list&); - void remove (AudioRegionView*); + void remove (const std::list&); + void remove (const MidiNoteSelection&); + void remove (RegionView*); + void remove (MidiRegionView*); + void remove (MidiCutBuffer*); 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&); - void remove (boost::shared_ptr); - - void replace (uint32_t time_index, jack_nframes_t start, jack_nframes_t end); - - void clear_audio_regions(); + void remove (nframes_t, nframes_t); + void remove (boost::shared_ptr); + void remove (boost::shared_ptr); + void remove (const std::list >&); + void remove (const std::list&); + void remove (Marker*); + + void replace (uint32_t time_index, nframes_t start, nframes_t end); + + void clear_regions(); void clear_tracks (); void clear_time(); void clear_lines (); void clear_playlists (); - void clear_redirects (); void clear_points (); + void clear_markers (); + void clear_midi_notes (); + void clear_midi_regions (); - void foreach_audio_region (void (ARDOUR::AudioRegion::*method)(void)); - void foreach_audio_region (void (ARDOUR::Region::*method)(void)); - template void foreach_audio_region (void (ARDOUR::AudioRegion::*method)(A), A arg); - template void foreach_audio_region (void (ARDOUR::Region::*method)(A), A arg); + void foreach_region (void (ARDOUR::Region::*method)(void)); + void foreach_regionview (void (RegionView::*method)(void)); + void foreach_midi_regionview (void (MidiRegionView::*method)(void)); + template void foreach_region (void (ARDOUR::Region::*method)(A), A arg); private: + PublicEditor const * editor; uint32_t next_time_id; void add (std::vector&);