ardour
Public Member Functions | Protected Types | Protected Member Functions | Private Member Functions | Private Attributes | List of all members
RegionMoveDrag Class Reference

#include <editor_drag.h>

Inheritance diagram for RegionMoveDrag:
RegionMotionDrag RegionDrag Drag RegionRippleDrag RegionSpliceDrag

Public Member Functions

 RegionMoveDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list< RegionView * > const &, bool, bool)
 
virtual ~RegionMoveDrag ()
 
void motion (GdkEvent *, bool)
 
void finished (GdkEvent *, bool)
 
void aborted (bool)
 
bool regions_came_from_canvas () const
 
std::pair< ARDOUR::framecnt_t,
int > 
move_threshold () const
 
void setup_pointer_frame_offset ()
 
- Public Member Functions inherited from RegionMotionDrag
 RegionMotionDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list< RegionView * > const &, bool)
 
virtual ~RegionMotionDrag ()
 
virtual void start_grab (GdkEvent *, Gdk::Cursor *)
 
- Public Member Functions inherited from RegionDrag
 RegionDrag (Editor *, ArdourCanvas::Item *, RegionView *, std::list< RegionView * > const &)
 
virtual ~RegionDrag ()
 
- Public Member Functions inherited from Drag
 Drag (Editor *, ArdourCanvas::Item *, bool trackview_only=true)
 
virtual ~Drag ()
 
void set_manager (DragManager *m)
 
ArdourCanvas::Item * item () const
 
void swap_grab (ArdourCanvas::Item *, Gdk::Cursor *, uint32_t)
 
bool motion_handler (GdkEvent *, bool)
 
void abort ()
 
ARDOUR::framepos_t adjusted_frame (ARDOUR::framepos_t, GdkEvent const *, bool snap=true) const
 
ARDOUR::framepos_t adjusted_current_frame (GdkEvent const *, bool snap=true) const
 
bool was_double_click () const
 
void set_double_click (bool yn)
 
virtual bool end_grab (GdkEvent *)
 
virtual bool active (Editing::MouseMode m)
 
virtual bool allow_vertical_autoscroll () const
 
virtual bool x_movement_matters () const
 
virtual bool y_movement_matters () const
 
bool initially_vertical () const
 

Protected Types

typedef std::set
< boost::shared_ptr
< ARDOUR::Playlist > > 
PlaylistSet
 

Protected Member Functions

void add_stateful_diff_commands_for_playlists (PlaylistSet const &)
 
- Protected Member Functions inherited from RegionMotionDrag
double compute_x_delta (GdkEvent const *, ARDOUR::framepos_t *)
 
virtual bool y_movement_allowed (int, double, int skip_invisible=0) const
 
- Protected Member Functions inherited from RegionDrag
int find_time_axis_view (TimeAxisView *) const
 
int apply_track_delta (const int start, const int delta, const int skip, const bool distance_only=false) const
 
- Protected Member Functions inherited from Drag
double grab_x () const
 
double grab_y () const
 
ARDOUR::framepos_t raw_grab_frame () const
 
ARDOUR::framepos_t grab_frame () const
 
double last_pointer_x () const
 
double last_pointer_y () const
 
double last_pointer_frame () const
 
double current_pointer_x () const
 
double current_pointer_y () const
 
boost::shared_ptr< ARDOUR::Regionadd_midi_region (MidiTimeAxisView *)
 
void show_verbose_cursor_time (framepos_t)
 
void show_verbose_cursor_duration (framepos_t, framepos_t, double xoffset=0)
 
void show_verbose_cursor_text (std::string const &)
 

Private Member Functions

void finished_no_copy (bool const, bool const, ARDOUR::framecnt_t const )
 
void finished_copy (bool const, bool const, ARDOUR::framecnt_t const )
 
RegionViewinsert_region_into_playlist (boost::shared_ptr< ARDOUR::Region >, RouteTimeAxisView *, ARDOUR::layer_t, ARDOUR::framecnt_t, PlaylistSet &)
 
void remove_region_from_playlist (boost::shared_ptr< ARDOUR::Region >, boost::shared_ptr< ARDOUR::Playlist >, PlaylistSet &modified_playlists)
 
void collect_new_region_view (RegionView *)
 
RouteTimeAxisViewcreate_destination_time_axis (boost::shared_ptr< ARDOUR::Region >, TimeAxisView *original)
 

Private Attributes

bool _copy
 
RegionView_new_region_view
 

Additional Inherited Members

- Protected Attributes inherited from RegionMotionDrag
bool _brushing
 
ARDOUR::framepos_t _last_frame_position
 last position of the thing being dragged More...
 
double _total_x_delta
 
int _last_pointer_time_axis_view
 
double _last_pointer_layer
 
bool _single_axis
 
- Protected Attributes inherited from RegionDrag
RegionView_primary
 the view that was clicked on (or whatever) to start the drag More...
 
std::list< DraggingView_views
 information about all views that are being dragged More...
 
std::vector< TimeAxisView * > _time_axis_views
 
int _visible_y_low
 
int _visible_y_high
 
uint32_t _ntracks
 
- Protected Attributes inherited from Drag
Editor_editor
 our editor More...
 
DragManager_drags
 
ArdourCanvas::Item * _item
 our item More...
 
ARDOUR::framecnt_t _pointer_frame_offset
 
bool _x_constrained
 true if x motion is constrained, otherwise false More...
 
bool _y_constrained
 true if y motion is constrained, otherwise false More...
 
bool _was_rolling
 true if the session was rolling before the drag started, otherwise false More...
 

Detailed Description

Drags to move (or copy) regions that are already shown in the GUI to somewhere different.

Definition at line 350 of file editor_drag.h.

Member Typedef Documentation

Definition at line 371 of file editor_drag.h.

Constructor & Destructor Documentation

RegionMoveDrag::RegionMoveDrag ( Editor e,
ArdourCanvas::Item *  i,
RegionView p,
std::list< RegionView * > const &  v,
bool  b,
bool  c 
)
Parameters
btrue to brush, otherwise false.
ctrue to make copies of the regions being moved, otherwise false.

Definition at line 1809 of file editor_drag.cc.

virtual RegionMoveDrag::~RegionMoveDrag ( )
inlinevirtual

Definition at line 354 of file editor_drag.h.

Member Function Documentation

void RegionMoveDrag::aborted ( bool  m)
virtual

Called to abort a drag and return things to how they were before it started.

Parameters
mtrue if some movement occurred, otherwise false.

Reimplemented from RegionMotionDrag.

Reimplemented in RegionRippleDrag, and RegionSpliceDrag.

Definition at line 1761 of file editor_drag.cc.

void RegionMoveDrag::add_stateful_diff_commands_for_playlists ( PlaylistSet const &  playlists)
protected

Definition at line 1747 of file editor_drag.cc.

void RegionMoveDrag::collect_new_region_view ( RegionView rv)
private

Definition at line 1741 of file editor_drag.cc.

RouteTimeAxisView * RegionMoveDrag::create_destination_time_axis ( boost::shared_ptr< ARDOUR::Region region,
TimeAxisView original 
)
private

Definition at line 1351 of file editor_drag.cc.

void RegionMoveDrag::finished ( GdkEvent *  e,
bool  m 
)
virtual

Called when a drag has finished.

Parameters
eEvent describing the finish.
mtrue if some movement occurred, otherwise false.

Reimplemented from RegionMotionDrag.

Reimplemented in RegionRippleDrag, and RegionSpliceDrag.

Definition at line 1290 of file editor_drag.cc.

void RegionMoveDrag::finished_copy ( bool const  changed_position,
bool const  ,
ARDOUR::framecnt_t const  drag_delta 
)
private

Definition at line 1387 of file editor_drag.cc.

void RegionMoveDrag::finished_no_copy ( bool const  changed_position,
bool const  changed_tracks,
ARDOUR::framecnt_t const  drag_delta 
)
private

Definition at line 1475 of file editor_drag.cc.

RegionView * RegionMoveDrag::insert_region_into_playlist ( boost::shared_ptr< ARDOUR::Region region,
RouteTimeAxisView dest_rtv,
ARDOUR::layer_t  dest_layer,
ARDOUR::framecnt_t  where,
PlaylistSet modified_playlists 
)
private

Insert a region into a playlist, handling the recovery of the resulting new RegionView, and clearing the playlist's diff history first if necessary.

Parameters
regionRegion to insert.
dest_rtvDestination RouteTimeAxisView.
dest_layerDestination layer.
whereDestination position.
modified_playlistsThe playlist will be added to this if it is not there already; used to ensure that clear_changes () is only called once per playlist.
Returns
New RegionView, or 0 if no insert was performed.

Definition at line 1704 of file editor_drag.cc.

void RegionMoveDrag::motion ( GdkEvent *  e,
bool  f 
)
virtual

Called when a drag motion has occurred.

Parameters
eEvent describing the motion.
ftrue if this is the first movement, otherwise false.

Reimplemented from RegionMotionDrag.

Reimplemented in RegionRippleDrag, and RegionSpliceDrag.

Definition at line 1197 of file editor_drag.cc.

std::pair<ARDOUR::framecnt_t, int> RegionMoveDrag::move_threshold ( ) const
inlinevirtual
Returns
minimum number of frames (in x) and pixels (in y) that should be considered a movement

Reimplemented from Drag.

Definition at line 364 of file editor_drag.h.

bool RegionMoveDrag::regions_came_from_canvas ( ) const
inlinevirtual
Returns
true if the regions being `moved' came from somewhere on the canvas; false if they came from outside (e.g. from the region list).

Implements RegionMotionDrag.

Definition at line 360 of file editor_drag.h.

void RegionMoveDrag::remove_region_from_playlist ( boost::shared_ptr< ARDOUR::Region region,
boost::shared_ptr< ARDOUR::Playlist playlist,
PlaylistSet modified_playlists 
)
private

Remove a region from a playlist, clearing the diff history of the playlist first if necessary.

Parameters
regionRegion to remove.
playlistplaylist To remove from.
modified_playlistsThe playlist will be added to this if it is not there already; used to ensure that clear_changes () is only called once per playlist.

Definition at line 1677 of file editor_drag.cc.

void RegionMoveDrag::setup_pointer_frame_offset ( )
virtual

Set up the _pointer_frame_offset

Reimplemented from Drag.

Definition at line 1825 of file editor_drag.cc.

Member Data Documentation

bool RegionMoveDrag::_copy
private

Definition at line 405 of file editor_drag.h.

RegionView* RegionMoveDrag::_new_region_view
private

Definition at line 406 of file editor_drag.h.


The documentation for this class was generated from the following files: