Ardour  9.0-pre0-1699-gfaebc7ab35
public_editor.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2005-2018 Paul Davis <paul@linuxaudiosystems.com>
3  * Copyright (C) 2005 Karsten Wiese <fzuuzf@googlemail.com>
4  * Copyright (C) 2005 Taybin Rutkin <taybin@taybin.com>
5  * Copyright (C) 2006-2015 David Robillard <d@drobilla.net>
6  * Copyright (C) 2007-2012 Carl Hetherington <carl@carlh.net>
7  * Copyright (C) 2007-2016 Tim Mayberry <mojofunk@gmail.com>
8  * Copyright (C) 2013-2019 Robin Gareus <robin@gareus.org>
9  * Copyright (C) 2014-2017 Nick Mainsbridge <mainsbridge@gmail.com>
10  * Copyright (C) 2014-2018 Ben Loftis <ben@harrisonconsoles.com>
11  * Copyright (C) 2015 Colin Fletcher <colin.m.fletcher@googlemail.com>
12  *
13  * This program is free software; you can redistribute it and/or modify
14  * it under the terms of the GNU General Public License as published by
15  * the Free Software Foundation; either version 2 of the License, or
16  * (at your option) any later version.
17  *
18  * This program is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21  * GNU General Public License for more details.
22  *
23  * You should have received a copy of the GNU General Public License along
24  * with this program; if not, write to the Free Software Foundation, Inc.,
25  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
26  */
27 
28 #pragma once
29 
30 #ifdef WAF_BUILD
31 #include "gtk2ardour-config.h"
32 #endif
33 
34 #include <atomic>
35 #include <map>
36 
37 #include <string>
38 #include <glib.h>
39 #include <ydk/gdktypes.h>
40 #include <ytkmm/box.h>
41 #include <ytkmm/window.h>
42 #include <ytkmm/actiongroup.h>
43 #include <ytkmm/notebook.h>
44 #include <sigc++/signal.h>
45 
47 
48 #include "temporal/beats.h"
49 
50 #include "evoral/Note.h"
51 
52 #include "ardour/session_handle.h"
53 
54 #include "canvas/fwd.h"
55 
56 #include "gtkmm2ext/actions.h"
57 #include "gtkmm2ext/bindings.h"
59 
60 #include "widgets/tabbable.h"
61 
62 #include "editing.h"
63 #include "editing_context.h"
64 #include "selection.h"
65 
66 namespace Temporal {
67  class TempoPoint;
68  class MeterPoint;
69 }
70 
71 namespace ARDOUR {
72  class Session;
73  class Region;
74  class Playlist;
75  class RouteGroup;
76  class Trimmable;
77  class Movable;
78  class Stripable;
79  class MidiOperator;
80 }
81 
82 namespace Gtk {
83  class Container;
84  class Menu;
85 }
86 
87 class AudioRegionView;
90 class ControlPoint;
91 class DragManager;
92 class EditorCursor;
93 class ArdourMarker;
94 class MeterMarker;
95 class MixerStrip;
96 class MouseCursors;
97 class RegionView;
98 class MidiView;
99 class RouteTimeAxisView;
100 class Selection;
101 class SimpleExport;
103 class TempoCurve;
104 class TempoMarker;
105 class TimeAxisView;
106 class VerboseCursor;
107 struct SelectionRect;
108 
109 class DisplaySuspender;
110 
111 namespace ARDOUR_UI_UTILS {
114 }
115 
116 using ARDOUR::samplepos_t;
117 using ARDOUR::samplecnt_t;
118 
120 
127 {
128 public:
130  virtual ~PublicEditor ();
131 
133  static PublicEditor& instance () { assert (_instance); return *_instance; }
134 
135  virtual bool have_idled() const = 0;
136  virtual void first_idle() = 0;
137 
138  virtual void setup_tooltips() = 0;
139 
143  virtual void set_session (ARDOUR::Session* s) = 0;
144 
145  virtual samplepos_t playhead_cursor_sample () const = 0;
146 
155  virtual void consider_auditioning (std::shared_ptr<ARDOUR::Region> r) = 0;
156 
157  /* import dialogs -> ardour-ui ?! */
158  virtual void external_audio_dialog () = 0;
159  virtual void session_import_dialog () = 0;
160 
161  virtual void new_region_from_selection () = 0;
162  virtual void separate_region_from_selection () = 0;
163 
164  virtual void reverse_region () = 0;
165  virtual void normalize_region () = 0;
166  virtual void pitch_shift_region () = 0;
167 
168  virtual void transition_to_rolling (bool fwd) = 0;
169 
171 
172  virtual void set_selection (std::list<Selectable*>, ARDOUR::SelectionOperation) = 0;
173 
174  virtual std::shared_ptr<ARDOUR::Route> current_mixer_stripable () const = 0;
175 
177  virtual void play_solo_selection(bool restart) = 0;
178  virtual void play_selection () = 0;
179  virtual void play_with_preroll () = 0;
180  virtual void rec_with_preroll () = 0;
181  virtual void rec_with_count_in () = 0;
182  virtual void maybe_locate_with_edit_preroll (samplepos_t location) = 0;
183  virtual void goto_nth_marker (int nth) = 0;
184  virtual void jump_to_loop_marker (bool start) = 0;
185  virtual void trigger_script (int nth) = 0;
188  virtual void add_section_from_playhead () = 0;
190  void add_location_mark (Temporal::timepos_t const & where, ARDOUR::Location::Flags flags = ARDOUR::Location::IsMark, int32_t cue_id = 0) {
191  add_location_mark_with_flag (where, flags, cue_id);
192  }
193  virtual void add_location_mark_with_flag (Temporal::timepos_t const & where, ARDOUR::Location::Flags, int32_t cue_id) = 0;
194  virtual void remove_tracks () = 0;
195  virtual void set_loop_range (Temporal::timepos_t const & start, Temporal::timepos_t const & end, std::string cmd) = 0;
196  virtual void set_punch_range (Temporal::timepos_t const & start, Temporal::timepos_t const & end, std::string cmd) = 0;
197 
200  }
203  }
206 
207  virtual void set_session_start_from_playhead () = 0;
208  virtual void set_session_end_from_playhead () = 0;
209 
211 
212  virtual void nudge_forward (bool next, bool force_playhead) = 0;
213  virtual void nudge_backward (bool next, bool force_playhead) = 0;
214 
215  virtual void playhead_forward_to_grid () = 0;
216  virtual void playhead_backward_to_grid () = 0;
217 
220 
221  virtual void set_punch_start_from_edit_point () = 0;
222  virtual void set_punch_end_from_edit_point () = 0;
223  virtual void set_loop_start_from_edit_point () = 0;
224  virtual void set_loop_end_from_edit_point () = 0;
225 
227 
229  virtual void do_import (std::vector<std::string> paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality,
231  std::shared_ptr<ARDOUR::PluginInfo> instrument = std::shared_ptr<ARDOUR::PluginInfo>(),
232  std::shared_ptr<ARDOUR::Track> track = std::shared_ptr<ARDOUR::Track>(),
233  bool with_markers = false) = 0;
234  virtual void do_embed (std::vector<std::string> paths, Editing::ImportDisposition, Editing::ImportMode mode, Temporal::timepos_t&,
235  std::shared_ptr<ARDOUR::PluginInfo> instrument = std::shared_ptr<ARDOUR::PluginInfo>(),
236  std::shared_ptr<ARDOUR::Track> track = std::shared_ptr<ARDOUR::Track>()) = 0;
237 
239  virtual void export_audio () = 0;
240 
242  virtual void stem_export () = 0;
243 
245  virtual void export_selection () = 0;
246 
248  virtual void export_range () = 0;
249 
251  virtual void quick_export () = 0;
252 
253  virtual void surround_export () = 0;
254 
255  virtual void loudness_assistant (bool) = 0;
256 
257  virtual void register_actions () = 0;
258  virtual void clear_playlist (std::shared_ptr<ARDOUR::Playlist>) = 0;
259  virtual void clear_grouped_playlists (RouteUI*) = 0;
260 
261  virtual void mapped_select_playlist_matching (RouteUI&, std::weak_ptr<ARDOUR::Playlist> pl) = 0;
262 
263  virtual void mapover_grouped_routes (sigc::slot<void, RouteUI&> sl, RouteUI*, PBD::PropertyID) const = 0;
264  virtual void mapover_armed_routes (sigc::slot<void, RouteUI&> sl) const = 0;
265  virtual void mapover_selected_routes (sigc::slot<void, RouteUI&> sl) const = 0;
266  virtual void mapover_all_routes (sigc::slot<void, RouteUI&> sl) const = 0;
267 
268  virtual void new_playlists_for_all_tracks(bool copy) = 0;
269  virtual void new_playlists_for_grouped_tracks(RouteUI* rui, bool copy) = 0;
270  virtual void new_playlists_for_selected_tracks(bool copy) = 0;
271  virtual void new_playlists_for_armed_tracks(bool copy) = 0;
272 
273  virtual void select_all_visible_lanes () = 0;
274  virtual void select_all_tracks () = 0;
275  virtual void deselect_all () = 0;
276  virtual void invert_selection () = 0;
277  virtual void set_selected_track (TimeAxisView&, ARDOUR::SelectionOperation op = ARDOUR::SelectionSet, bool no_remove = false) = 0;
279  virtual void hide_track_in_display (TimeAxisView* tv, bool apply_to_selection = false) = 0;
280  virtual void show_track_in_display (TimeAxisView* tv, bool move_into_view = false) = 0;
281 
282  virtual void toggle_cue_behavior () = 0;
283 
285  virtual samplepos_t leftmost_sample() const = 0;
286  virtual samplecnt_t current_page_samples() const = 0;
287  virtual double visible_canvas_height () const = 0;
288  virtual void ensure_time_axis_view_is_visible (TimeAxisView const & tav, bool at_top = false) = 0;
289  virtual void override_visible_track_count () = 0;
290  virtual void scroll_tracks_down_line () = 0;
291  virtual void scroll_tracks_up_line () = 0;
292  virtual bool scroll_down_one_track (bool skip_child_views = false) = 0;
293  virtual bool scroll_up_one_track (bool skip_child_views = false) = 0;
294  virtual void select_topmost_track () = 0;
295  virtual void cleanup_regions () = 0;
296  virtual void prepare_for_cleanup () = 0;
297  virtual void finish_cleanup () = 0;
298  virtual void set_visible_track_count (int32_t) = 0;
299  virtual void fit_selection () = 0;
300  virtual void remove_last_capture () = 0;
301  virtual void maximise_editing_space () = 0;
302  virtual void restore_editing_space () = 0;
303  virtual void toggle_meter_updating() = 0;
305  virtual void split_region_at_points (std::shared_ptr<ARDOUR::Region>, ARDOUR::AnalysisFeatureList&, bool can_ferret, bool select_new = false) = 0;
306  virtual void foreach_time_axis_view (sigc::slot<void,TimeAxisView&>) = 0;
307  virtual void add_to_idle_resize (TimeAxisView*, int32_t) = 0;
308  virtual Temporal::timecnt_t get_paste_offset (Temporal::timepos_t const & pos, unsigned paste_count, Temporal::timecnt_t const & duration) = 0;
309 
311  virtual void set_close_video_sensitive (bool) = 0;
312  virtual void toggle_ruler_video (bool) = 0;
313  virtual void toggle_xjadeo_proc (int) = 0;
314  virtual void toggle_xjadeo_viewoption (int, int) = 0;
315  virtual void set_xjadeo_sensitive (bool onoff) = 0;
316  virtual int get_videotl_bar_height () const = 0;
317  virtual void set_video_timeline_height (const int h, bool force = false) = 0;
318  virtual void embed_audio_from_video (std::string, samplepos_t n = 0, bool lock_position_to_video = true) = 0;
319 
320  virtual void trigger_script_by_name (const std::string script_name, const std::string args = "") = 0;
321 
322  virtual bool track_selection_change_without_scroll () const = 0;
323  virtual bool show_touched_automation () const = 0;
324 
325  virtual TimeAxisView* time_axis_view_from_stripable (std::shared_ptr<ARDOUR::Stripable> s) const = 0;
326 
327  virtual void get_equivalent_regions (RegionView* rv, std::vector<RegionView*>&, PBD::PropertyID) const = 0;
328  virtual RegionView* regionview_from_region (std::shared_ptr<ARDOUR::Region>) const = 0;
329  virtual RouteTimeAxisView* rtav_from_route (std::shared_ptr<ARDOUR::Route>) const = 0;
330 
331  sigc::signal<void> Realized;
332  sigc::signal<void,samplepos_t> UpdateAllTransportClocks;
333 
334  virtual bool pending_locate_request() const = 0;
335 
336  struct RegionAction {
337  Glib::RefPtr<Gtk::Action> action;
339 
340  RegionAction (Glib::RefPtr<Gtk::Action> a, Editing::RegionActionTarget tgt)
341  : action (a), target (tgt) {}
342  };
343 
344  /* data-type of [region] object currently dragged with x-ardour/region.pbdid */
346 
347  std::map<std::string,RegionAction> region_action_map;
348 
349  Glib::RefPtr<Gtk::ActionGroup> editor_menu_actions;
350  Glib::RefPtr<Gtk::ActionGroup> _region_actions;
351 
352  virtual bool canvas_scroll_event (GdkEventScroll* event, bool from_canvas) = 0;
354  virtual bool canvas_velocity_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
381 
382  static const int window_border_width;
383  static const int container_border_width;
384  static const int vertical_spacing;
385  static const int horizontal_spacing;
386 
392 
393  virtual void set_current_trimmable (std::shared_ptr<ARDOUR::Trimmable>) = 0;
394  virtual void set_current_movable (std::shared_ptr<ARDOUR::Movable>) = 0;
395 
396  virtual TrackViewList const & get_track_views () const = 0;
397 
398  virtual MixerStrip* get_current_mixer_strip () const = 0;
399 
401  virtual void abort_tempo_map_edit () = 0;
402  void commit_tempo_map_edit (Temporal::TempoMap::WritableSharedPtr& map, bool with_update = false) {
403  _commit_tempo_map_edit (map, with_update);
404  }
405 
407  virtual void abort_tempo_mapping () = 0;
409 
410  virtual void access_action (const std::string&, const std::string&) = 0;
411  virtual void set_toggleaction (const std::string&, const std::string&, bool) = 0;
412 
413  virtual bool get_smart_mode () const = 0;
414 
415  virtual void get_pointer_position (double &, double &) const = 0;
416 
417  virtual std::pair <Temporal::timepos_t, Temporal::timepos_t> session_gui_extents (bool use_extra = true) const = 0;
418 
419  virtual void get_regions_at (RegionSelection &, Temporal::timepos_t const & where, TrackViewList const &) const = 0;
420  virtual void get_regions_after (RegionSelection&, Temporal::timepos_t const & where, const TrackViewList& ts) const = 0;
422 
423  virtual void build_region_boundary_cache () = 0;
424  virtual void mark_region_boundary_cache_dirty () = 0;
425 
430 
431  virtual bool should_ripple () const = 0;
432 
433  virtual void queue_redisplay_track_views () = 0;
434 
435  virtual void set_tempo_curve_range (double& max, double& min) const = 0;
436 
437  virtual void start_track_drag (TimeAxisView&, int y, Gtk::Widget&, bool can_change_cursor) = 0;
439  virtual void end_track_drag () = 0;
440  virtual bool track_dragging() const = 0;
441 
442  virtual void focus_on_clock() = 0;
443 
445 
447 
450 
451 protected:
452  friend class DisplaySuspender;
453  virtual void suspend_route_redisplay () = 0;
454  virtual void resume_route_redisplay () = 0;
455  virtual void _commit_tempo_map_edit (Temporal::TempoMap::WritableSharedPtr&, bool with_update) = 0;
456 
458 };
459 
461  public:
463  if (PublicEditor::instance()._suspend_route_redisplay_counter.fetch_add (1) == 0) {
465  }
466  }
468  if (PBD::atomic_dec_and_test (PublicEditor::instance()._suspend_route_redisplay_counter)) {
470  }
471  }
472 };
473 
475 public:
477  /* The global menu bar continues to be accessible to applications
478  with modal dialogs on mac, which means that we need to desensitize
479  all items in the menu bar.
480  */
482  }
483 
486  }
487 };
488 
Representation of the interface of the Editor class.
virtual void set_loop_range(Temporal::timepos_t const &start, Temporal::timepos_t const &end, std::string cmd)=0
virtual void play_solo_selection(bool restart)=0
virtual ArdourCanvas::ScrollGroup * get_hvscroll_group() const =0
virtual void set_loop_start_from_edit_point()=0
virtual void split_regions_at(Temporal::timepos_t const &, RegionSelection &)=0
virtual bool track_selection_change_without_scroll() const =0
virtual void build_region_boundary_cache()=0
virtual void start_track_drag(TimeAxisView &, int y, Gtk::Widget &, bool can_change_cursor)=0
virtual void set_punch_range(Temporal::timepos_t const &start, Temporal::timepos_t const &end, std::string cmd)=0
virtual void rec_with_count_in()=0
virtual void set_session(ARDOUR::Session *s)=0
virtual void maybe_locate_with_edit_preroll(samplepos_t location)=0
virtual void set_close_video_sensitive(bool)=0
virtual void rec_with_preroll()=0
static PublicEditor & instance()
virtual void finish_cleanup()=0
virtual void queue_redisplay_track_views()=0
static const int window_border_width
virtual void foreach_time_axis_view(sigc::slot< void, TimeAxisView & >)=0
virtual void trigger_script_by_name(const std::string script_name, const std::string args="")=0
virtual void new_playlists_for_armed_tracks(bool copy)=0
virtual void clear_playlist(std::shared_ptr< ARDOUR::Playlist >)=0
virtual TrackViewList const & get_track_views() const =0
virtual void toggle_xjadeo_proc(int)=0
void jump_forward_to_mark()
virtual void pitch_shift_region()=0
virtual bool canvas_videotl_bar_event(GdkEvent *event, ArdourCanvas::Item *)=0
virtual void set_selected_mixer_strip(TimeAxisView &)=0
virtual bool canvas_region_view_name_event(GdkEvent *event, ArdourCanvas::Item *, RegionView *)=0
virtual void get_regions_after(RegionSelection &, Temporal::timepos_t const &where, const TrackViewList &ts) const =0
void add_location_mark(Temporal::timepos_t const &where, ARDOUR::Location::Flags flags=ARDOUR::Location::IsMark, int32_t cue_id=0)
virtual void nudge_backward(bool next, bool force_playhead)=0
virtual void resume_route_redisplay()=0
virtual void do_import(std::vector< std::string > paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality, ARDOUR::MidiTrackNameSource, ARDOUR::MidiTempoMapDisposition, Temporal::timepos_t &, std::shared_ptr< ARDOUR::PluginInfo > instrument=std::shared_ptr< ARDOUR::PluginInfo >(), std::shared_ptr< ARDOUR::Track > track=std::shared_ptr< ARDOUR::Track >(), bool with_markers=false)=0
virtual void edit_tempo_section(Temporal::TempoPoint &)=0
virtual void mapover_selected_routes(sigc::slot< void, RouteUI & > sl) const =0
virtual ~PublicEditor()
virtual bool canvas_end_xfade_event(GdkEvent *event, ArdourCanvas::Item *, AudioRegionView *)=0
virtual void set_video_timeline_height(const int h, bool force=false)=0
virtual bool scroll_up_one_track(bool skip_child_views=false)=0
virtual ArdourCanvas::ScrollGroup * get_hscroll_group() const =0
virtual void loudness_assistant(bool)=0
virtual std::shared_ptr< ARDOUR::Route > current_mixer_stripable() const =0
virtual bool canvas_start_xfade_event(GdkEvent *event, ArdourCanvas::Item *, AudioRegionView *)=0
virtual void set_tempo_curve_range(double &max, double &min) const =0
virtual ArdourCanvas::Container * get_drag_motion_group() const =0
virtual void mouse_add_new_tempo_event(Temporal::timepos_t where)=0
virtual void set_toggleaction(const std::string &, const std::string &, bool)=0
static const int vertical_spacing
virtual void add_bbt_marker_at_playhead_cursor()=0
virtual void toggle_cue_behavior()=0
virtual void do_embed(std::vector< std::string > paths, Editing::ImportDisposition, Editing::ImportMode mode, Temporal::timepos_t &, std::shared_ptr< ARDOUR::PluginInfo > instrument=std::shared_ptr< ARDOUR::PluginInfo >(), std::shared_ptr< ARDOUR::Track > track=std::shared_ptr< ARDOUR::Track >())=0
virtual bool canvas_scroll_event(GdkEventScroll *event, bool from_canvas)=0
virtual void playhead_backward_to_grid()=0
virtual void split_region_at_points(std::shared_ptr< ARDOUR::Region >, ARDOUR::AnalysisFeatureList &, bool can_ferret, bool select_new=false)=0
virtual void access_action(const std::string &, const std::string &)=0
void jump_backward_to_mark()
virtual void cleanup_regions()=0
static PublicEditor * _instance
Singleton instance, set up by Editor::Editor()
virtual void play_with_preroll()=0
virtual void set_punch_end_from_edit_point()=0
static const int container_border_width
virtual ArdourCanvas::Container * get_trackview_group() const =0
virtual bool canvas_stream_view_event(GdkEvent *event, ArdourCanvas::Item *, RouteTimeAxisView *)=0
virtual bool canvas_selection_marker_event(GdkEvent *event, ArdourCanvas::Item *)=0
virtual samplepos_t playhead_cursor_sample() const =0
virtual void set_session_start_from_playhead()=0
virtual void mid_track_drag(GdkEventMotion *, Gtk::Widget &)=0
virtual bool canvas_fade_in_event(GdkEvent *event, ArdourCanvas::Item *, AudioRegionView *)=0
virtual void remove_tracks()=0
virtual void _commit_tempo_map_edit(Temporal::TempoMap::WritableSharedPtr &, bool with_update)=0
virtual void remove_location_at_playhead_cursor()=0
virtual void prepare_for_cleanup()=0
virtual bool canvas_velocity_base_event(GdkEvent *event, ArdourCanvas::Item *)=0
virtual void show_track_in_display(TimeAxisView *tv, bool move_into_view=false)=0
virtual void scroll_tracks_down_line()=0
virtual void edit_meter_section(Temporal::MeterPoint &)=0
virtual bool canvas_meter_marker_event(GdkEvent *event, ArdourCanvas::Item *, MeterMarker *)=0
virtual void export_audio()=0
virtual Temporal::timecnt_t get_paste_offset(Temporal::timepos_t const &pos, unsigned paste_count, Temporal::timecnt_t const &duration)=0
virtual void abort_tempo_map_edit()=0
virtual void consider_auditioning(std::shared_ptr< ARDOUR::Region > r)=0
virtual bool canvas_selection_start_trim_event(GdkEvent *event, ArdourCanvas::Item *, SelectionRect *)=0
virtual void ensure_time_axis_view_is_visible(TimeAxisView const &tav, bool at_top=false)=0
virtual void select_all_visible_lanes()=0
virtual bool scroll_down_one_track(bool skip_child_views=false)=0
static const int horizontal_spacing
void commit_tempo_map_edit(Temporal::TempoMap::WritableSharedPtr &map, bool with_update=false)
virtual void embed_audio_from_video(std::string, samplepos_t n=0, bool lock_position_to_video=true)=0
virtual bool canvas_bbt_marker_event(GdkEvent *event, ArdourCanvas::Item *, BBTMarker *)=0
virtual RegionSelection get_regions_from_selection_and_mouse(Temporal::timepos_t const &)=0
virtual bool canvas_line_event(GdkEvent *event, ArdourCanvas::Item *, EditorAutomationLine *)=0
virtual void maximise_editing_space()=0
virtual bool canvas_fade_in_handle_event(GdkEvent *event, ArdourCanvas::Item *, AudioRegionView *, bool)=0
virtual bool should_ripple() const =0
virtual void surround_export()=0
sigc::signal< void > Realized
virtual void playhead_forward_to_grid()=0
virtual void mapover_all_routes(sigc::slot< void, RouteUI & > sl) const =0
virtual void hide_track_in_display(TimeAxisView *tv, bool apply_to_selection=false)=0
virtual void add_location_from_playhead_cursor()=0
virtual bool canvas_tempo_marker_event(GdkEvent *event, ArdourCanvas::Item *, TempoMarker *)=0
virtual TimeAxisView * time_axis_view_from_stripable(std::shared_ptr< ARDOUR::Stripable > s) const =0
virtual void restore_editing_space()=0
virtual void set_loop_end_from_edit_point()=0
virtual bool canvas_selection_end_trim_event(GdkEvent *event, ArdourCanvas::Item *, SelectionRect *)=0
virtual MixerStrip * get_current_mixer_strip() const =0
virtual void jump_forward_to_mark_flagged(ARDOUR::Location::Flags whitelist, ARDOUR::Location::Flags blacklist, ARDOUR::Location::Flags equalist)=0
virtual void set_session_end_from_playhead()=0
virtual void mark_region_boundary_cache_dirty()=0
virtual void clear_grouped_playlists(RouteUI *)=0
virtual void keyboard_selection_begin(Editing::EditIgnoreOption=Editing::EDIT_IGNORE_NONE)=0
virtual void new_playlists_for_all_tracks(bool copy)=0
virtual void suspend_route_redisplay()=0
virtual void set_selection(std::list< Selectable * >, ARDOUR::SelectionOperation)=0
virtual ArdourCanvas::ScrollGroup * get_cursor_scroll_group() const =0
virtual void add_section_from_playhead()=0
virtual samplecnt_t current_page_samples() const =0
virtual void mapover_grouped_routes(sigc::slot< void, RouteUI & > sl, RouteUI *, PBD::PropertyID) const =0
virtual void set_selected_track(TimeAxisView &, ARDOUR::SelectionOperation op=ARDOUR::SelectionSet, bool no_remove=false)=0
virtual void mapover_armed_routes(sigc::slot< void, RouteUI & > sl) const =0
virtual int get_videotl_bar_height() const =0
virtual void first_idle()=0
virtual double visible_canvas_height() const =0
virtual bool canvas_frame_handle_event(GdkEvent *event, ArdourCanvas::Item *, RegionView *)=0
virtual void keyboard_selection_finish(bool add, Editing::EditIgnoreOption=Editing::EDIT_IGNORE_NONE)=0
virtual void select_all_tracks()=0
virtual void mouse_add_new_meter_event(Temporal::timepos_t where)=0
virtual Editing::MouseMode effective_mouse_mode() const =0
virtual RouteTimeAxisView * rtav_from_route(std::shared_ptr< ARDOUR::Route >) const =0
virtual void set_xjadeo_sensitive(bool onoff)=0
virtual bool track_dragging() const =0
virtual void session_import_dialog()=0
virtual void fit_selection()=0
virtual void set_visible_track_count(int32_t)=0
virtual void transition_to_rolling(bool fwd)=0
virtual void remove_last_capture()=0
virtual void nudge_forward(bool next, bool force_playhead)=0
virtual Temporal::TempoMap::WritableSharedPtr begin_tempo_mapping(Temporal::DomainBounceInfo &)=0
virtual void new_playlists_for_selected_tracks(bool copy)=0
std::map< std::string, RegionAction > region_action_map
virtual void external_audio_dialog()=0
virtual void stem_export()=0
virtual void toggle_meter_updating()=0
virtual void toggle_ruler_video(bool)=0
virtual bool extend_selection_to_track(TimeAxisView &)=0
virtual void get_equivalent_regions(RegionView *rv, std::vector< RegionView * > &, PBD::PropertyID) const =0
virtual void invert_selection()=0
virtual void add_to_idle_resize(TimeAxisView *, int32_t)=0
virtual samplepos_t leftmost_sample() const =0
virtual bool canvas_feature_line_event(GdkEvent *event, ArdourCanvas::Item *, RegionView *)=0
virtual void reverse_region()=0
virtual RegionView * regionview_from_region(std::shared_ptr< ARDOUR::Region >) const =0
Glib::RefPtr< Gtk::ActionGroup > _region_actions
virtual void queue_visual_videotimeline_update()=0
virtual void register_actions()=0
virtual void goto_nth_marker(int nth)=0
static ARDOUR::DataType pbdid_dragged_dt
virtual void mapped_select_playlist_matching(RouteUI &, std::weak_ptr< ARDOUR::Playlist > pl)=0
virtual void focus_on_clock()=0
virtual bool have_idled() const =0
virtual bool canvas_fade_out_handle_event(GdkEvent *event, ArdourCanvas::Item *, AudioRegionView *, bool)=0
virtual bool canvas_tempo_curve_event(GdkEvent *event, ArdourCanvas::Item *, TempoCurve *)=0
virtual void normalize_region()=0
Glib::RefPtr< Gtk::ActionGroup > editor_menu_actions
std::atomic< int > _suspend_route_redisplay_counter
virtual void toggle_xjadeo_viewoption(int, int)=0
virtual void new_region_from_selection()=0
virtual bool canvas_control_point_event(GdkEvent *event, ArdourCanvas::Item *, ControlPoint *)=0
virtual bool canvas_automation_track_event(GdkEvent *event, ArdourCanvas::Item *, AutomationTimeAxisView *)=0
virtual void get_pointer_position(double &, double &) const =0
virtual bool canvas_velocity_event(GdkEvent *event, ArdourCanvas::Item *)=0
virtual void get_regions_at(RegionSelection &, Temporal::timepos_t const &where, TrackViewList const &) const =0
virtual void trigger_script(int nth)=0
virtual void new_playlists_for_grouped_tracks(RouteUI *rui, bool copy)=0
virtual bool show_touched_automation() const =0
virtual void select_topmost_track()=0
virtual void scroll_tracks_up_line()=0
virtual void separate_region_from_selection()=0
virtual bool canvas_region_view_name_highlight_event(GdkEvent *event, ArdourCanvas::Item *, RegionView *)=0
virtual std::pair< Temporal::timepos_t, Temporal::timepos_t > session_gui_extents(bool use_extra=true) const =0
virtual void set_current_trimmable(std::shared_ptr< ARDOUR::Trimmable >)=0
sigc::signal< void, samplepos_t > UpdateAllTransportClocks
virtual void set_current_movable(std::shared_ptr< ARDOUR::Movable >)=0
virtual bool pending_locate_request() const =0
virtual void toggle_location_at_playhead_cursor()=0
virtual void override_visible_track_count()=0
virtual void jump_to_loop_marker(bool start)=0
virtual bool canvas_selection_rect_event(GdkEvent *event, ArdourCanvas::Item *, SelectionRect *)=0
virtual void end_track_drag()=0
virtual void setup_tooltips()=0
virtual bool canvas_fade_out_event(GdkEvent *event, ArdourCanvas::Item *, AudioRegionView *)=0
virtual bool canvas_wave_view_event(GdkEvent *event, ArdourCanvas::Item *, RegionView *)=0
virtual void export_selection()=0
virtual bool get_selection_extents(Temporal::timepos_t &start, Temporal::timepos_t &end) const =0
virtual void commit_tempo_mapping(Temporal::TempoMap::WritableSharedPtr &map)=0
virtual void quick_export()=0
virtual void jump_backward_to_mark_flagged(ARDOUR::Location::Flags whitelist, ARDOUR::Location::Flags blacklist, ARDOUR::Location::Flags equalist)=0
virtual bool get_smart_mode() const =0
virtual void export_range()=0
virtual void add_location_mark_with_flag(Temporal::timepos_t const &where, ARDOUR::Location::Flags, int32_t cue_id)=0
virtual bool canvas_marker_event(GdkEvent *event, ArdourCanvas::Item *, ArdourMarker *)=0
virtual void abort_tempo_mapping()=0
virtual void deselect_all()=0
virtual void play_selection()=0
virtual Temporal::TempoMap::WritableSharedPtr begin_tempo_map_edit()=0
virtual void set_punch_start_from_edit_point()=0
virtual bool canvas_region_view_event(GdkEvent *event, ArdourCanvas::Item *, RegionView *)=0
Lists of selected things.
std::shared_ptr< TempoMap > WritableSharedPtr
PBD::PropertyDescriptor< timepos_t > start
bool relay_key_press(GdkEventKey *ev, Gtk::Window *win)
bool forward_key_press(GdkEventKey *ev)
std::list< samplepos_t > AnalysisFeatureList
Temporal::samplecnt_t samplecnt_t
Temporal::samplepos_t samplepos_t
void enable_active_actions()
void disable_active_actions()
ImportDisposition
Definition: editing.h:176
ImportMode
Definition: editing.h:156
EditIgnoreOption
Definition: editing.h:254
@ EDIT_IGNORE_NONE
Definition: editing.h:255
RegionActionTarget
Definition: editing.h:267
MouseMode
Definition: editing.h:99
void add(const Gtk::StockItem &item)
Definition: ardour_ui.h:192
GQuark PropertyID
bool atomic_dec_and_test(std::atomic< T > &aval)
Definition: atomic.h:26
Editing::RegionActionTarget target
RegionAction(Glib::RefPtr< Gtk::Action > a, Editing::RegionActionTarget tgt)
Glib::RefPtr< Gtk::Action > action