Ardour  9.0-pre0-582-g084a23a80d
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 <gdk/gdktypes.h>
40 #include <gtkmm/box.h>
41 #include <gtkmm/window.h>
42 #include <gtkmm/actiongroup.h>
43 #include <gtkmm/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;
189  void add_location_mark (Temporal::timepos_t const & where, ARDOUR::Location::Flags flags = ARDOUR::Location::IsMark, int32_t cue_id = 0) {
190  add_location_mark_with_flag (where, flags, cue_id);
191  }
192  virtual void add_location_mark_with_flag (Temporal::timepos_t const & where, ARDOUR::Location::Flags, int32_t cue_id) = 0;
193  virtual void update_grid () = 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 set_stationary_playhead (bool yn) = 0;
283  virtual void toggle_stationary_playhead () = 0;
284  virtual bool stationary_playhead() const = 0;
285 
286  virtual void toggle_cue_behavior () = 0;
287 
289  virtual bool dragging_playhead () const = 0;
290  virtual samplepos_t leftmost_sample() const = 0;
291  virtual samplecnt_t current_page_samples() const = 0;
292  virtual double visible_canvas_height () const = 0;
293  virtual void ensure_time_axis_view_is_visible (TimeAxisView const & tav, bool at_top = false) = 0;
294  virtual void override_visible_track_count () = 0;
295  virtual void scroll_tracks_down_line () = 0;
296  virtual void scroll_tracks_up_line () = 0;
297  virtual bool scroll_down_one_track (bool skip_child_views = false) = 0;
298  virtual bool scroll_up_one_track (bool skip_child_views = false) = 0;
299  virtual void select_topmost_track () = 0;
300  virtual void cleanup_regions () = 0;
301  virtual void prepare_for_cleanup () = 0;
302  virtual void finish_cleanup () = 0;
303  virtual void set_visible_track_count (int32_t) = 0;
304  virtual void fit_selection () = 0;
305  virtual void remove_last_capture () = 0;
306  virtual void maximise_editing_space () = 0;
307  virtual void restore_editing_space () = 0;
308  virtual void toggle_meter_updating() = 0;
310  virtual void split_region_at_points (std::shared_ptr<ARDOUR::Region>, ARDOUR::AnalysisFeatureList&, bool can_ferret, bool select_new = false) = 0;
311  virtual void foreach_time_axis_view (sigc::slot<void,TimeAxisView&>) = 0;
312  virtual void add_to_idle_resize (TimeAxisView*, int32_t) = 0;
313  virtual Temporal::timecnt_t get_paste_offset (Temporal::timepos_t const & pos, unsigned paste_count, Temporal::timecnt_t const & duration) = 0;
314 
316  virtual void set_close_video_sensitive (bool) = 0;
317  virtual void toggle_ruler_video (bool) = 0;
318  virtual void toggle_xjadeo_proc (int) = 0;
319  virtual void toggle_xjadeo_viewoption (int, int) = 0;
320  virtual void set_xjadeo_sensitive (bool onoff) = 0;
321  virtual int get_videotl_bar_height () const = 0;
322  virtual void set_video_timeline_height (const int h) = 0;
323  virtual void embed_audio_from_video (std::string, samplepos_t n = 0, bool lock_position_to_video = true) = 0;
324 
325  virtual void trigger_script_by_name (const std::string script_name, const std::string args = "") = 0;
326 
327  virtual bool track_selection_change_without_scroll () const = 0;
328  virtual bool show_touched_automation () const = 0;
329 
330  virtual TimeAxisView* time_axis_view_from_stripable (std::shared_ptr<ARDOUR::Stripable> s) const = 0;
331 
332  virtual void get_equivalent_regions (RegionView* rv, std::vector<RegionView*>&, PBD::PropertyID) const = 0;
333  virtual RegionView* regionview_from_region (std::shared_ptr<ARDOUR::Region>) const = 0;
334  virtual RouteTimeAxisView* rtav_from_route (std::shared_ptr<ARDOUR::Route>) const = 0;
335 
336  sigc::signal<void> Realized;
337  sigc::signal<void,samplepos_t> UpdateAllTransportClocks;
338 
339  virtual bool pending_locate_request() const = 0;
340 
341  struct RegionAction {
342  Glib::RefPtr<Gtk::Action> action;
344 
345  RegionAction (Glib::RefPtr<Gtk::Action> a, Editing::RegionActionTarget tgt)
346  : action (a), target (tgt) {}
347  };
348 
349  /* data-type of [region] object currently dragged with x-ardour/region.pbdid */
351 
352  std::map<std::string,RegionAction> region_action_map;
353 
354  Glib::RefPtr<Gtk::ActionGroup> editor_menu_actions;
355  Glib::RefPtr<Gtk::ActionGroup> _region_actions;
356 
357  virtual bool canvas_scroll_event (GdkEventScroll* event, bool from_canvas) = 0;
359  virtual bool canvas_velocity_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
386 
387  static const int window_border_width;
388  static const int container_border_width;
389  static const int vertical_spacing;
390  static const int horizontal_spacing;
391 
397 
398  virtual void set_current_trimmable (std::shared_ptr<ARDOUR::Trimmable>) = 0;
399  virtual void set_current_movable (std::shared_ptr<ARDOUR::Movable>) = 0;
400 
401  virtual void center_screen (samplepos_t) = 0;
402 
403  virtual TrackViewList const & get_track_views () const = 0;
404 
405  virtual MixerStrip* get_current_mixer_strip () const = 0;
406 
408  virtual void abort_tempo_map_edit () = 0;
409  void commit_tempo_map_edit (Temporal::TempoMap::WritableSharedPtr& map, bool with_update = false) {
410  _commit_tempo_map_edit (map, with_update);
411  }
412 
414  virtual void abort_tempo_mapping () = 0;
416 
417  virtual void access_action (const std::string&, const std::string&) = 0;
418  virtual void set_toggleaction (const std::string&, const std::string&, bool) = 0;
419 
420  virtual bool get_smart_mode () const = 0;
421 
422  virtual void get_pointer_position (double &, double &) const = 0;
423 
424  virtual std::pair <Temporal::timepos_t, Temporal::timepos_t> session_gui_extents (bool use_extra = true) const = 0;
425 
426  virtual void get_regions_at (RegionSelection &, Temporal::timepos_t const & where, TrackViewList const &) const = 0;
427  virtual void get_regions_after (RegionSelection&, Temporal::timepos_t const & where, const TrackViewList& ts) const = 0;
429 
430  virtual void build_region_boundary_cache () = 0;
431  virtual void mark_region_boundary_cache_dirty () = 0;
432 
437 
438  virtual bool should_ripple () const = 0;
439 
440  virtual void queue_redisplay_track_views () = 0;
441 
442  virtual void set_tempo_curve_range (double& max, double& min) const = 0;
443 
444  virtual void start_track_drag (TimeAxisView&, int y, Gtk::Widget&, bool can_change_cursor) = 0;
446  virtual void end_track_drag () = 0;
447  virtual bool track_dragging() const = 0;
448 
449  virtual void focus_on_clock() = 0;
450 
452 
454 
457 
458 protected:
459  friend class DisplaySuspender;
460  virtual void suspend_route_redisplay () = 0;
461  virtual void resume_route_redisplay () = 0;
462  virtual void _commit_tempo_map_edit (Temporal::TempoMap::WritableSharedPtr&, bool with_update) = 0;
463 
465 };
466 
468  public:
470  if (PublicEditor::instance()._suspend_route_redisplay_counter.fetch_add (1) == 0) {
472  }
473  }
475  if (PBD::atomic_dec_and_test (PublicEditor::instance()._suspend_route_redisplay_counter)) {
477  }
478  }
479 };
480 
482 public:
484  /* The global menu bar continues to be accessible to applications
485  with modal dialogs on mac, which means that we need to desensitize
486  all items in the menu bar.
487  */
489  }
490 
493  }
494 };
495 
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 bool stationary_playhead() const =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 bool scroll_up_one_track(bool skip_child_views=false)=0
virtual ArdourCanvas::ScrollGroup * get_hscroll_group() const =0
virtual void center_screen(samplepos_t)=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 bool dragging_playhead() const =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 update_grid()=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 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 void set_stationary_playhead(bool yn)=0
virtual void set_video_timeline_height(const int h)=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 toggle_stationary_playhead()=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:175
ImportMode
Definition: editing.h:155
EditIgnoreOption
Definition: editing.h:241
@ EDIT_IGNORE_NONE
Definition: editing.h:242
RegionActionTarget
Definition: editing.h:254
MouseMode
Definition: editing.h:98
void add(const Gtk::StockItem &item)
Definition: ardour_ui.h:188
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