X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fselection.h;h=4e5f684af9a305673c33343fb62e27c5a3dbfd0c;hb=ccf58b8de23619db9983a45f696fd97e13a15cce;hp=2b2db77360ad77b03c947bd8dbef46894e585692;hpb=badc087263990ecf360792c10e4d9f2d60828d43;p=ardour.git diff --git a/gtk2_ardour/selection.h b/gtk2_ardour/selection.h index 2b2db77360..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 @@ -33,11 +33,13 @@ #include "processor_selection.h" #include "point_selection.h" #include "marker_selection.h" +#include "midi_selection.h" class TimeAxisView; class RegionView; class Selectable; class PublicEditor; +class MidiRegionView; namespace ARDOUR { class Region; @@ -47,11 +49,15 @@ namespace ARDOUR { class AutomationList; } +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 +class Selection : public sigc::trackable { public: enum SelectionType { @@ -73,6 +79,8 @@ class Selection : public sigc::trackable PlaylistSelection playlists; PointSelection points; MarkerSelection markers; + MidiRegionSelection midi_regions; + MidiNoteSelection midi_notes; Selection (PublicEditor const * e) : editor (e), next_time_id (0) { clear(); @@ -87,33 +95,42 @@ class Selection : public sigc::trackable sigc::signal PlaylistsChanged; 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 (RegionView*); + bool selected (Marker*); void set (std::list&); void add (std::list&); void toggle (std::list&); - + void set (TimeAxisView*); void set (const std::list&); - void set (RegionView*); + 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 (ARDOUR::AutomationList*); + 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 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*); @@ -124,27 +141,34 @@ class Selection : public sigc::trackable void add (TimeAxisView*); 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 (ARDOUR::AutomationList*); + 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 std::list&); + void remove (const MidiNoteSelection&); void remove (RegionView*); + void remove (MidiRegionView*); + void remove (MidiCutBuffer*); void remove (uint32_t selection_id); void remove (nframes_t, nframes_t); - void remove (ARDOUR::AutomationList*); + void remove (boost::shared_ptr); void remove (boost::shared_ptr); void remove (const std::list >&); - void remove (const 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(); @@ -152,13 +176,14 @@ class Selection : public sigc::trackable void clear_playlists (); void clear_points (); void clear_markers (); + void clear_midi_notes (); + void clear_midi_regions (); 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); - void select_edit_group_regions (); - private: PublicEditor const * editor; uint32_t next_time_id;