X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fselection.h;h=3c14eb9a093000ccdf64954beb9e783e9af4c63e;hb=5f9e81b105e84988a92c1f448fa46d9054893b55;hp=81bb54b9df156b3f83e811b08c08abaf5851f568;hpb=579fcb70e2b3b0a1ef2af9fc88edebff6d7e6dd3;p=ardour.git diff --git a/gtk2_ardour/selection.h b/gtk2_ardour/selection.h index 81bb54b9df..3c14eb9a09 100644 --- a/gtk2_ardour/selection.h +++ b/gtk2_ardour/selection.h @@ -86,6 +86,8 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList PointSelection points; MarkerSelection markers; MidiRegionSelection midi_regions; + + /** only used when this class is used as a cut buffer */ MidiNoteSelection midi_notes; Selection (PublicEditor const * e); @@ -102,6 +104,8 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList sigc::signal MidiNotesChanged; sigc::signal MidiRegionsChanged; + void block_tracks_changed (bool); + void clear (); bool empty (bool internal_selection = false); @@ -110,6 +114,7 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList bool selected (TimeAxisView*); bool selected (RegionView*); bool selected (Marker*); + bool selected (ControlPoint*); void set (std::list const &); void add (std::list const &); @@ -121,7 +126,8 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList void set (RegionView*, bool also_clear_tracks = true); void set (MidiRegionView*); void set (std::vector&); - long set (nframes_t, nframes_t); + long set (framepos_t, framepos_t); + void set_preserving_all_ranges (framepos_t, framepos_t); void set (boost::shared_ptr); void set (boost::shared_ptr); void set (const std::list >&); @@ -136,7 +142,7 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList void toggle (MidiRegionView*); void toggle (MidiCutBuffer*); void toggle (std::vector&); - long toggle (nframes_t, nframes_t); + long toggle (framepos_t, framepos_t); void toggle (ARDOUR::AutomationList*); void toggle (boost::shared_ptr); void toggle (const std::list >&); @@ -151,7 +157,7 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList void add (MidiRegionView*); void add (MidiCutBuffer*); void add (std::vector&); - long add (nframes_t, nframes_t); + long add (framepos_t, framepos_t); void add (boost::shared_ptr); void add (boost::shared_ptr); void add (const std::list >&); @@ -160,6 +166,7 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList void add (Marker*); void add (const std::list&); void add (const RegionSelection&); + void add (const PointSelection&); void remove (TimeAxisView*); void remove (const TrackViewList&); void remove (const MidiNoteSelection&); @@ -167,18 +174,36 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList void remove (MidiRegionView*); void remove (MidiCutBuffer*); void remove (uint32_t selection_id); - void remove (nframes_t, nframes_t); + void remove (framepos_t, framepos_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 remove (ControlPoint *); + + void remove_regions (TimeAxisView *); - void replace (uint32_t time_index, nframes_t start, nframes_t end); + void move_time (framecnt_t); + void replace (uint32_t time_index, framepos_t start, framepos_t end); + +/* + * A note about items in an editing Selection: + * At a high level, selections can include Tracks, Objects, or Time Ranges + * Range and Object selections are mutually exclusive. + * Selecting a Range will deselect all Objects, and vice versa. + * This is done to avoid confusion over what will happen in an operation such as Delete + * Tracks are somewhat orthogonal b/c editing operations don't apply to tracks. + * The Track selection isn't affected when ranges or objects are added. + */ + + void clear_time(); //clears any time selection ( i.e. Range ) + void clear_tracks (); //clears the track header selections + void clear_objects(); //clears the items listed below + + // these items get cleared wholesale in clear_objects void clear_regions(); - void clear_tracks (); - void clear_time(); void clear_lines (); void clear_playlists (); void clear_points (); @@ -195,10 +220,9 @@ class Selection : public sigc::trackable, public PBD::ScopedConnectionList int set_state (XMLNode const &, int); private: - void set_point_selection_from_line (AutomationLine const &); - PublicEditor const * editor; uint32_t next_time_id; + bool _no_tracks_changed; }; bool operator==(const Selection& a, const Selection& b);