98 std::shared_ptr<Temporal::TempoMap const>
old_map;
150 bool use_context_click =
false,
151 bool from_outside_canvas =
false) {
305 bool ensure_snap =
false)
const;
311 bool ensure_snap =
false)
const;
578 bool ensure_snap =
false)
const = 0;
734 virtual std::pair<Temporal::timepos_t,Temporal::timepos_t>
max_zoom_extent()
const = 0;
737 bool use_context_click,
738 bool from_outside_canvas) = 0;
753 static Glib::RefPtr<Gtk::Action>
reg_sens (Glib::RefPtr<Gtk::ActionGroup> group,
char const*
name,
char const* label, sigc::slot<void> slot);
754 static void toggle_reg_sens (Glib::RefPtr<Gtk::ActionGroup> group,
char const*
name,
char const* label, sigc::slot<void> slot);
virtual samplecnt_t current_page_samples() const =0
void set_draw_channel_to(int)
virtual void abort_reversible_command()=0
VisualChange pending_visual_change
virtual Gdk::Cursor * which_canvas_cursor(ItemType type) const =0
PBD::Signal< void()> MouseModeChanged
virtual std::list< SelectableOwner * > selectable_owners()=0
ArdourWidgets::ArdourDropdown grid_type_selector
void reset_point_selection()
void reset_zoom(samplecnt_t)
void calc_extra_zoom_edges(samplepos_t &start, samplepos_t &end)
double sample_to_pixel(samplepos_t sample) const
PBD::ScopedConnection escape_connection
void bind_mouse_mode_buttons()
virtual bool canvas_cue_end_event(GdkEvent *event, ArdourCanvas::Item *)
Glib::RefPtr< Gtk::Action > get_mouse_mode_action(Editing::MouseMode m) const
void quantize_regions(const RegionSelection &rs)
void toggle_follow_playhead()
static Glib::RefPtr< Gtk::RadioAction > draw_channel_action(int)
Gtkmm2ext::Bindings * bindings
virtual Temporal::timepos_t snap_to_grid(Temporal::timepos_t const &start, Temporal::RoundMode direction, ARDOUR::SnapPref gpref) const =0
static Glib::RefPtr< Gtk::Action > undo_action
virtual void begin_reversible_command(std::string cmd_name)=0
virtual Temporal::timepos_t _get_preferred_edit_position(Editing::EditIgnoreOption, bool use_context_click, bool from_outside_canvas)=0
virtual void set_visible_channel(int)
bool visual_change_queued
bool follow_playhead() const
virtual bool canvas_control_point_event(GdkEvent *event, ArdourCanvas::Item *, ControlPoint *)=0
void temporal_zoom_step_mouse_focus_scale(bool zoom_out, double scale)
static MouseCursors const * cursors()
virtual void undo_selection_op()=0
virtual bool enter_handler(ArdourCanvas::Item *, GdkEvent *, ItemType)=0
static void register_common_actions(Gtkmm2ext::Bindings *)
void snap_mode_selection_done(Editing::SnapMode)
QuantizeDialog * quantize_dialog
virtual bool canvas_velocity_event(GdkEvent *event, ArdourCanvas::Item *)=0
void temporal_zoom_step_mouse_focus(bool zoom_out)
Gtk::Adjustment vertical_adjustment
static Glib::RefPtr< Gtk::Action > reg_sens(Glib::RefPtr< Gtk::ActionGroup > group, char const *name, char const *label, sigc::slot< void > slot)
virtual std::pair< Temporal::timepos_t, Temporal::timepos_t > max_zoom_extent() const =0
Gtk::Adjustment horizontal_adjustment
samplepos_t pixel_to_sample_from_event(double pixel) const
samplepos_t pixel_to_sample(double pixel) const
static void draw_velocity_chosen(int)
bool autoscroll_horizontal_allowed
virtual RegionSelection region_selection()=0
Editing::ZoomFocus zoom_focus() const
virtual Selection & get_selection() const
virtual bool autoscroll_active() const =0
virtual void get_regionviews_by_id(PBD::ID const id, RegionSelection ®ions) const =0
void set_grid_to(Editing::GridType)
virtual bool key_press_handler(ArdourCanvas::Item *, GdkEvent *, ItemType)=0
virtual ArdourCanvas::ScrollGroup * get_cursor_scroll_group() const =0
ArdourWidgets::ArdourButton follow_playhead_button
virtual bool button_press_dispatch(GdkEventButton *)=0
void transform_regions(const RegionSelection &rs)
samplecnt_t get_current_zoom() const
virtual TrackViewList axis_views_from_routes(std::shared_ptr< ARDOUR::RouteList >) const =0
virtual ArdourCanvas::GtkCanvas * get_canvas() const =0
virtual void begin_reversible_selection_op(std::string cmd_name)=0
bool mouse_sample(samplepos_t &, bool &in_track_canvas) const
@ bbt_show_onetwentyeighths
void register_mouse_mode_actions()
bool _mouse_changed_selection
ArdourWidgets::ArdourButton note_mode_button
virtual void register_actions()=0
Glib::RefPtr< Gtk::RadioAction > grid_type_action(Editing::GridType)
samplecnt_t samples_per_pixel
Editing::GridType pre_internal_grid_type
virtual bool leave_handler(ArdourCanvas::Item *, GdkEvent *, ItemType)=0
virtual bool canvas_cue_start_event(GdkEvent *event, ArdourCanvas::Item *)
virtual void do_redo(uint32_t n)=0
static std::vector< std::string > grid_type_strings
static Glib::RefPtr< Gtk::ActionGroup > _midi_actions
static sigc::signal< void > DropDownKeys
virtual ARDOUR::Location * find_location_from_marker(ArdourMarker *, bool &) const =0
double _track_canvas_width
void set_common_editing_state(XMLNode const &node)
virtual void mouse_mode_toggled(Editing::MouseMode)=0
static void draw_length_chosen(Editing::GridType)
void select_automation_line(GdkEventButton *, ArdourCanvas::Item *, ARDOUR::SelectionOperation)
virtual void set_selected_midi_region_view(MidiRegionView &)
virtual void snap_to_internal(Temporal::timepos_t &first, Temporal::RoundMode direction=Temporal::RoundNearest, ARDOUR::SnapPref gpref=ARDOUR::SnapToAny_Visual, bool ensure_snap=false) const =0
virtual ArdourCanvas::Container * get_noscroll_group() const =0
virtual void play_note_selection_clicked()
static EditingContext * current_editing_context()
void draw_velocity_changed()
static int _draw_velocity
Gtk::Label visible_channel_label
static void draw_velocity_action_method(int)
virtual double get_y_origin() const =0
SelectionMemento * _selection_memento
virtual PBD::HistoryOwner & history()=0
Temporal::timecnt_t snap_relative_time_to_relative_time(Temporal::timepos_t const &origin, Temporal::timecnt_t const &x, bool ensure_snap) const
void temporal_zoom_step_scale(bool zoom_out, double scale)
virtual bool canvas_playhead_cursor_event(GdkEvent *event, ArdourCanvas::Item *)
samplecnt_t pixel_duration_to_samples(double pixels) const
ArdourMarker * entered_marker
ArdourWidgets::ArdourButton mouse_cut_button
virtual bool button_release_dispatch(GdkEventButton *)=0
Editing::GridType internal_grid_type
EditorCursor * _playhead_cursor
static void update_undo_redo_actions(PBD::UndoHistory const &)
virtual void full_zoom_clicked()
virtual Gdk::Cursor * which_trim_cursor(bool left_side) const =0
static Glib::RefPtr< Gtk::RadioAction > draw_length_action(Editing::GridType)
EditorCursor * _snapped_cursor
static EditingContext * _current_editing_context
void apply_midi_note_edit_op(ARDOUR::MidiOperator &op, const RegionSelection &rs)
ARDOUR::Quantize * get_quantize_op()
ArdourWidgets::ArdourButton mouse_select_button
virtual void step_mouse_mode(bool next)=0
void edit_notes(MidiView *)
virtual Gdk::Cursor * which_mode_cursor() const =0
double horizontal_position() const
double duration_to_pixels_unrounded(Temporal::timecnt_t const &pos) const
int32_t get_grid_music_divisions(Editing::GridType gt, uint32_t event_state) const
ArdourCanvas::Rectangle * rubberband_rect
std::list< XMLNode * > before
virtual void ui_parameter_changed(std::string)
double time_to_pixel(Temporal::timepos_t const &pos) const
sigc::signal< void > ZoomFocusChanged
virtual void redisplay_grid(bool immediate_redraw)=0
Editing::GridType _grid_type
bool snap_mode_button_clicked(GdkEventButton *)
sigc::connection autoscroll_connection
EditingContext(std::string const &)
Temporal::timepos_t canvas_event_time(GdkEvent const *, double *px=0, double *py=0) const
virtual bool button_press_handler(ArdourCanvas::Item *, GdkEvent *, ItemType)=0
virtual Gdk::Cursor * get_canvas_cursor() const
virtual ArdourCanvas::Duple upper_left() const
virtual void mark_region_boundary_cache_dirty()
void temporal_zoom(samplecnt_t samples_per_pixel)
double time_to_pixel_unrounded(Temporal::timepos_t const &pos) const
virtual void set_entered_track(TimeAxisView *)
void legatize_region(bool shrink_only)
static sigc::signal< void > DrawLengthChanged
VerboseCursor * _verbose_cursor
virtual void begin_reversible_command(GQuark)=0
static Glib::RefPtr< Gtk::RadioAction > draw_velocity_action(int)
samplepos_t _leftmost_sample
virtual void select_all_within(Temporal::timepos_t const &, Temporal::timepos_t const &, double, double, std::list< SelectableOwner * > const &, ARDOUR::SelectionOperation, bool)=0
virtual Selection & get_cut_buffer() const
virtual void abort_reversible_selection_op()=0
void set_draw_length_to(Editing::GridType)
ArdourWidgets::ArdourButton mouse_draw_button
ArdourWidgets::ArdourButton play_note_selection_button
PBD::ScopedConnectionList parameter_connections
ArdourWidgets::ArdourButton mouse_move_button
Temporal::timepos_t get_preferred_edit_position(Editing::EditIgnoreOption eio=Editing::EDIT_IGNORE_NONE, bool use_context_click=false, bool from_outside_canvas=false)
void choose_canvas_cursor_on_entry(ItemType)
ArdourWidgets::ArdourButton mouse_grid_button
virtual bool canvas_note_event(GdkEvent *event, ArdourCanvas::Item *)=0
virtual bool key_release_handler(ArdourCanvas::Item *, GdkEvent *, ItemType)=0
samplepos_t window_event_sample(GdkEvent const *, double *px=0, double *py=0) const
bool grid_type_is_musical(Editing::GridType) const
virtual void set_mouse_mode(Editing::MouseMode, bool force=false)
void register_grid_actions()
virtual void add_mouse_mode_actions(Glib::RefPtr< Gtk::ActionGroup >)
sigc::signal< void > ZoomChanged
bool autoscroll_vertical_allowed
virtual void begin_selection_op_history()=0
virtual StripableTimeAxisView * get_stripable_time_axis_by_id(const PBD::ID &id) const =0
virtual bool button_release_handler(ArdourCanvas::Item *, GdkEvent *, ItemType)=0
void reset_x_origin(samplepos_t)
virtual void set_zoom_focus(Editing::ZoomFocus)=0
Editing::SnapMode pre_internal_snap_mode
virtual void cycle_zoom_focus()
void temporal_zoom_step(bool zoom_out)
virtual bool canvas_velocity_base_event(GdkEvent *event, ArdourCanvas::Item *)=0
static void draw_channel_chosen(int)
virtual void snap_to(Temporal::timepos_t &first, Temporal::RoundMode direction=Temporal::RoundNearest, ARDOUR::SnapPref pref=ARDOUR::SnapToAny_Visual, bool ensure_snap=false) const
uint32_t count_bars(Temporal::Beats const &start, Temporal::Beats const &end) const
virtual ArdourCanvas::Container * get_trackview_group() const =0
std::vector< MidiView * > filter_to_unique_midi_region_views(RegionSelection const &ms) const
virtual void add_command(PBD::Command *)=0
EditorCursor * snapped_cursor() const
int idle_visual_changer()
virtual Gdk::Cursor * which_track_cursor() const =0
double _visible_canvas_width
Editing::SnapMode _snap_mode
void legatize_regions(const RegionSelection &rs, bool shrink_only)
void check_best_snap(Temporal::timepos_t const &presnap, Temporal::timepos_t &test, Temporal::timepos_t &dist, Temporal::timepos_t &best) const
void draw_channel_changed()
PBD::Signal< void()> SnapChanged
virtual void instant_save()=0
virtual bool get_smart_mode() const
void grid_type_selection_done(Editing::GridType)
virtual void reposition_and_zoom(samplepos_t, double)=0
virtual void commit_reversible_command()=0
virtual Temporal::timepos_t snap_to_bbt(Temporal::timepos_t const &start, Temporal::RoundMode direction, ARDOUR::SnapPref gpref) const
virtual Temporal::timecnt_t get_nudge_distance(Temporal::timepos_t const &pos, Temporal::timecnt_t &next) const =0
static void draw_channel_action_method(int)
virtual std::shared_ptr< Temporal::TempoMap const > start_local_tempo_map(std::shared_ptr< Temporal::TempoMap >)
ArdourWidgets::ArdourDropdown draw_length_selector
ArdourWidgets::ArdourButton mouse_content_button
virtual void update_tempo_based_rulers()
static int _idle_visual_changer(void *arg)
virtual void maybe_autoscroll(bool, bool, bool from_headers)=0
virtual void commit_reversible_selection_op()=0
void set_horizontal_position(double)
void set_draw_velocity_to(int)
Editing::MouseMode current_mouse_mode() const
Editing::GridType grid_type() const
static void radio_reg_sens(Glib::RefPtr< Gtk::ActionGroup > action_group, Gtk::RadioAction::Group &radio_group, char const *name, char const *label, sigc::slot< void > slot)
static void switch_editing_context(EditingContext *)
virtual void set_samples_per_pixel(samplecnt_t)=0
double timeline_to_canvas(double p) const
ArdourWidgets::ArdourVSpacer _grid_box_spacer
static Gtkmm2ext::Bindings * button_bindings
void build_draw_midi_menus()
virtual void midi_action(void(MidiView::*method)())
virtual ArdourCanvas::ScrollGroup * get_hscroll_group() const =0
static Editing::GridType _draw_length
void note_edit_done(int, EditNoteDialog *)
virtual bool internal_editing() const =0
static void draw_length_action_method(Editing::GridType)
virtual void redo_selection_op()=0
void draw_length_changed()
virtual Editing::ZoomFocus effective_zoom_focus() const
bool preview_video_drag_active() const
virtual ArdourCanvas::GtkCanvasViewport * get_canvas_viewport() const =0
void grid_type_chosen(Editing::GridType)
void snap_mode_chosen(Editing::SnapMode)
ArdourWidgets::ArdourDropdown draw_velocity_selector
void transpose_regions(const RegionSelection &rs)
virtual VerboseCursor * verbose_cursor() const
virtual void follow_playhead_clicked()
bool typed_event(ArdourCanvas::Item *, GdkEvent *, ItemType)
bool grid_musical() const
void compute_bbt_ruler_scale(samplepos_t lower, samplepos_t upper)
void temporal_zoom_by_sample(samplepos_t start, samplepos_t end)
virtual Editing::MouseMode effective_mouse_mode() const
ArdourWidgets::ArdourVSpacer _draw_box_spacer
Temporal::timecnt_t relative_distance(Temporal::timepos_t const &origin, Temporal::timecnt_t const &duration, Temporal::TimeDomain domain)
ArdourWidgets::ArdourButton snap_mode_button
PBD::Command * apply_midi_note_edit_op_to_region(ARDOUR::MidiOperator &op, MidiView &mrv)
Gtk::Menu _note_context_menu
virtual void set_snapped_cursor_position(Temporal::timepos_t const &pos)=0
samplepos_t canvas_event_sample(GdkEvent const *event, double *pcx=nullptr, double *pcy=nullptr) const
DragManager * drags() const
double _visible_canvas_height
height of the visible area of the track canvas
Editing::SnapMode snap_mode() const
int32_t get_grid_beat_divisions(Editing::GridType gt) const
double duration_to_pixels(Temporal::timecnt_t const &pos) const
static Glib::RefPtr< Gtk::ActionGroup > _common_actions
Editing::ZoomFocus _zoom_focus
double time_delta_to_pixel(Temporal::timepos_t const &start, Temporal::timepos_t const &end) const
ArdourWidgets::ArdourDropdown draw_channel_selector
Temporal::Beats get_grid_type_as_beats(bool &success, Temporal::timepos_t const &position) const
virtual void parameter_changed(std::string)
XMLNode * button_settings() const
virtual void on_samples_per_pixel_changed()
double sample_to_pixel_unrounded(samplepos_t sample) const
virtual void get_per_region_note_selection(std::list< std::pair< PBD::ID, std::set< std::shared_ptr< Evoral::Note< Temporal::Beats > > > > > &) const =0
void popup_note_context_menu(ArdourCanvas::Item *, GdkEvent *)
virtual void note_mode_clicked()
virtual ArdourMarker * find_marker_from_location_id(PBD::ID const &, bool) const =0
std::string editor_name() const
Temporal::Beats get_draw_length_as_beats(bool &success, Temporal::timepos_t const &position) const
virtual bool button_press_handler_2(ArdourCanvas::Item *, GdkEvent *, ItemType)=0
virtual double visible_canvas_width() const =0
Glib::RefPtr< Gtk::ActionGroup > editor_actions
BBTRulerScale bbt_ruler_scale
virtual void do_undo(uint32_t n)=0
ArdourWidgets::ArdourButton mouse_timefx_button
RegionView * entered_regionview
virtual void reset_x_origin_to_follow_playhead()=0
virtual void snap_to_with_modifier(Temporal::timepos_t &first, GdkEvent const *ev, Temporal::RoundMode direction=Temporal::RoundNearest, ARDOUR::SnapPref gpref=ARDOUR::SnapToAny_Visual, bool ensure_snap=false) const
static sigc::signal< void > DrawChannelChanged
virtual void set_canvas_cursor(Gdk::Cursor *)
bool on_velocity_scroll_event(GdkEventScroll *)
ArdourWidgets::ArdourButton full_zoom_button
Glib::RefPtr< Gtk::RadioAction > snap_mode_action(Editing::SnapMode)
void set_session(ARDOUR::Session *)
void ensure_visual_change_idle_handler()
ArdourCanvas::Rect autoscroll_boundary
EditorCursor * playhead_cursor() const
ArdourWidgets::ArdourDropdown visible_channel_selector
TimeAxisView * entered_track
double timeline_origin() const
Temporal::timepos_t _snap_to_bbt(Temporal::timepos_t const &start, Temporal::RoundMode direction, ARDOUR::SnapPref gpref, Editing::GridType grid_type) const
void reset_y_origin(double)
virtual MeterMarker * find_marker_for_meter(Temporal::MeterPoint const &)=0
void get_common_editing_state(XMLNode &node) const
virtual void end_local_tempo_map(std::shared_ptr< Temporal::TempoMap const >)
Editing::GridType draw_length() const
Temporal::TimeDomain time_domain() const
Editing::SnapMode internal_snap_mode
uint32_t bbt_bar_helper_on
Editing::MouseMode mouse_mode
static void toggle_reg_sens(Glib::RefPtr< Gtk::ActionGroup > group, char const *name, char const *label, sigc::slot< void > slot)
static Glib::RefPtr< Gtk::Action > redo_action
virtual void visual_changer(const VisualChange &)=0
virtual void history_changed()=0
static Glib::RefPtr< Gtk::Action > alternate_redo_action
void set_snap_mode(Editing::SnapMode)
static MouseCursors * _cursors
void set_follow_playhead(bool yn, bool catch_up=true)
virtual void show_rulers_for_grid()
void build_grid_type_menu()
double canvas_to_timeline(double p) const
virtual bool button_press_handler_1(ArdourCanvas::Item *, GdkEvent *, ItemType)=0
int draw_velocity() const
void temporal_zoom_to_sample(bool coarser, samplepos_t sample)
virtual bool motion_handler(ArdourCanvas::Item *, GdkEvent *, bool from_autoscroll=false)=0
static sigc::signal< void > DrawVelocityChanged
static void register_midi_actions(Gtkmm2ext::Bindings *)
virtual void stop_canvas_autoscroll()=0
static Glib::RefPtr< Gtk::Action > alternate_alternate_redo_action
virtual TempoMarker * find_marker_for_tempo(Temporal::TempoPoint const &)=0
Lists of selected things.
GtkImageIconNameData name
PBD::PropertyDescriptor< bool > regions
PBD::PropertyDescriptor< timepos_t > start
Temporal::samplecnt_t samplecnt_t
Temporal::samplepos_t samplepos_t
@ RoundNearest
Round to nearest.
CursorRAII(EditingContext &e, Gdk::Cursor *new_cursor)
std::shared_ptr< Temporal::TempoMap const > old_map
TempoMapScope(EditingContext &context, std::shared_ptr< Temporal::TempoMap > map)
samplecnt_t samples_per_pixel