Ardour  9.0-pre0-2182-g296c8681f0
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 
160  virtual void new_region_from_selection () = 0;
161  virtual void separate_region_from_selection () = 0;
162 
163  virtual void reverse_region () = 0;
164  virtual void normalize_region () = 0;
165  virtual void pitch_shift_region () = 0;
166 
167  virtual void transition_to_rolling (bool fwd) = 0;
168 
170 
171  virtual void set_selection (std::list<Selectable*>, ARDOUR::SelectionOperation) = 0;
172 
173  virtual std::shared_ptr<ARDOUR::Route> current_mixer_stripable () const = 0;
174 
176  virtual void play_solo_selection(bool restart) = 0;
177  virtual void play_selection () = 0;
178  virtual void play_with_preroll () = 0;
179  virtual void rec_with_preroll () = 0;
180  virtual void rec_with_count_in () = 0;
181  virtual void maybe_locate_with_edit_preroll (samplepos_t location) = 0;
182  virtual void goto_nth_marker (int nth) = 0;
183  virtual void jump_to_loop_marker (bool start) = 0;
184  virtual void trigger_script (int nth) = 0;
187  virtual void add_section_from_playhead () = 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 remove_tracks () = 0;
194  virtual void set_loop_range (Temporal::timepos_t const & start, Temporal::timepos_t const & end, std::string cmd) = 0;
195  virtual void set_punch_range (Temporal::timepos_t const & start, Temporal::timepos_t const & end, std::string cmd) = 0;
196 
199  }
202  }
205 
206  virtual void set_session_start_from_playhead () = 0;
207  virtual void set_session_end_from_playhead () = 0;
208 
210 
211  virtual void nudge_forward (bool next, bool force_playhead) = 0;
212  virtual void nudge_backward (bool next, bool force_playhead) = 0;
213 
214  virtual void playhead_forward_to_grid () = 0;
215  virtual void playhead_backward_to_grid () = 0;
216 
219 
220  virtual void set_punch_start_from_edit_point () = 0;
221  virtual void set_punch_end_from_edit_point () = 0;
222  virtual void set_loop_start_from_edit_point () = 0;
223  virtual void set_loop_end_from_edit_point () = 0;
224 
226 
228  virtual void do_import (std::vector<std::string> paths, Editing::ImportDisposition, Editing::ImportMode mode, ARDOUR::SrcQuality,
230  std::shared_ptr<ARDOUR::PluginInfo> instrument = std::shared_ptr<ARDOUR::PluginInfo>(),
231  std::shared_ptr<ARDOUR::Track> track = std::shared_ptr<ARDOUR::Track>(),
232  bool with_markers = false) = 0;
233  virtual void do_embed (std::vector<std::string> paths, Editing::ImportDisposition, Editing::ImportMode mode, Temporal::timepos_t&,
234  std::shared_ptr<ARDOUR::PluginInfo> instrument = std::shared_ptr<ARDOUR::PluginInfo>(),
235  std::shared_ptr<ARDOUR::Track> track = std::shared_ptr<ARDOUR::Track>()) = 0;
236 
238  virtual void export_audio () = 0;
239 
241  virtual void stem_export () = 0;
242 
244  virtual void export_selection () = 0;
245 
247  virtual void export_range () = 0;
248 
250  virtual void quick_export () = 0;
251 
252  virtual void surround_export () = 0;
253 
254  virtual void loudness_assistant (bool) = 0;
255 
256  virtual void register_actions () = 0;
257  virtual void clear_playlist (std::shared_ptr<ARDOUR::Playlist>) = 0;
258  virtual void clear_grouped_playlists (RouteUI*) = 0;
259 
260  virtual void mapped_select_playlist_matching (RouteUI&, std::weak_ptr<ARDOUR::Playlist> pl) = 0;
261 
262  virtual void mapover_grouped_routes (sigc::slot<void, RouteUI&> sl, RouteUI*, PBD::PropertyID) const = 0;
263  virtual void mapover_armed_routes (sigc::slot<void, RouteUI&> sl) const = 0;
264  virtual void mapover_selected_routes (sigc::slot<void, RouteUI&> sl) const = 0;
265  virtual void mapover_all_routes (sigc::slot<void, RouteUI&> sl) const = 0;
266 
267  virtual void new_playlists_for_all_tracks(bool copy) = 0;
268  virtual void new_playlists_for_grouped_tracks(RouteUI* rui, bool copy) = 0;
269  virtual void new_playlists_for_selected_tracks(bool copy) = 0;
270  virtual void new_playlists_for_armed_tracks(bool copy) = 0;
271 
272  virtual void select_all_visible_lanes () = 0;
273  virtual void select_all_tracks () = 0;
274  virtual void deselect_all () = 0;
275  virtual void invert_selection () = 0;
276  virtual void set_selected_track (TimeAxisView&, ARDOUR::SelectionOperation op = ARDOUR::SelectionSet, bool no_remove = false) = 0;
278  virtual void hide_track_in_display (TimeAxisView* tv, bool apply_to_selection = false) = 0;
279  virtual void show_track_in_display (TimeAxisView* tv, bool move_into_view = false) = 0;
280 
281  virtual void toggle_cue_behavior () = 0;
282 
284  virtual samplepos_t leftmost_sample() const = 0;
285  virtual samplecnt_t current_page_samples() const = 0;
286  virtual double visible_canvas_height () const = 0;
287  virtual void ensure_time_axis_view_is_visible (TimeAxisView const & tav, bool at_top = false) = 0;
288  virtual void override_visible_track_count () = 0;
289  virtual void scroll_tracks_down_line () = 0;
290  virtual void scroll_tracks_up_line () = 0;
291  virtual bool scroll_down_one_track (bool skip_child_views = false) = 0;
292  virtual bool scroll_up_one_track (bool skip_child_views = false) = 0;
293  virtual void select_topmost_track () = 0;
294  virtual void cleanup_regions () = 0;
295  virtual void prepare_for_cleanup () = 0;
296  virtual void finish_cleanup () = 0;
297  virtual void set_visible_track_count (int32_t) = 0;
298  virtual void fit_selection () = 0;
299  virtual void remove_last_capture () = 0;
300  virtual void maximise_editing_space () = 0;
301  virtual void restore_editing_space () = 0;
302  virtual void toggle_meter_updating() = 0;
304  virtual void split_region_at_points (std::shared_ptr<ARDOUR::Region>, ARDOUR::AnalysisFeatureList&, bool can_ferret, bool select_new = false) = 0;
305  virtual void foreach_time_axis_view (sigc::slot<void,TimeAxisView&>) = 0;
306  virtual void add_to_idle_resize (TimeAxisView*, int32_t) = 0;
307  virtual Temporal::timecnt_t get_paste_offset (Temporal::timepos_t const & pos, unsigned paste_count, Temporal::timecnt_t const & duration) = 0;
308 
310  virtual void set_close_video_sensitive (bool) = 0;
311  virtual void toggle_ruler_video (bool) = 0;
312  virtual void toggle_xjadeo_proc (int) = 0;
313  virtual void toggle_xjadeo_viewoption (int, int) = 0;
314  virtual void set_xjadeo_sensitive (bool onoff) = 0;
315  virtual int get_videotl_bar_height () const = 0;
316  virtual void set_video_timeline_height (const int h, bool force = false) = 0;
317  virtual void embed_audio_from_video (std::string, samplepos_t n = 0, bool lock_position_to_video = true) = 0;
318 
319  virtual void trigger_script_by_name (const std::string script_name, const std::string args = "") = 0;
320 
321  virtual bool track_selection_change_without_scroll () const = 0;
322  virtual bool show_touched_automation () const = 0;
323 
324  virtual TimeAxisView* time_axis_view_from_stripable (std::shared_ptr<ARDOUR::Stripable> s) const = 0;
325 
326  virtual void get_equivalent_regions (RegionView* rv, std::vector<RegionView*>&, PBD::PropertyID) const = 0;
327  virtual RegionView* regionview_from_region (std::shared_ptr<ARDOUR::Region>) const = 0;
328  virtual RouteTimeAxisView* rtav_from_route (std::shared_ptr<ARDOUR::Route>) const = 0;
329 
330  sigc::signal<void> Realized;
331  sigc::signal<void,samplepos_t> UpdateAllTransportClocks;
332 
333  virtual bool pending_locate_request() const = 0;
334 
335  struct RegionAction {
336  Glib::RefPtr<Gtk::Action> action;
338 
339  RegionAction (Glib::RefPtr<Gtk::Action> a, Editing::RegionActionTarget tgt)
340  : action (a), target (tgt) {}
341  };
342 
343  /* data-type of [region] object currently dragged with x-ardour/region.pbdid */
345 
346  std::map<std::string,RegionAction> region_action_map;
347 
348  Glib::RefPtr<Gtk::ActionGroup> editor_menu_actions;
349  Glib::RefPtr<Gtk::ActionGroup> _region_actions;
350 
351  virtual bool canvas_scroll_event (GdkEventScroll* event, bool from_canvas) = 0;
353  virtual bool canvas_velocity_event (GdkEvent* event, ArdourCanvas::Item*) = 0;
380 
381  static const int window_border_width;
382  static const int container_border_width;
383  static const int vertical_spacing;
384  static const int horizontal_spacing;
385 
391 
392  virtual void set_current_trimmable (std::shared_ptr<ARDOUR::Trimmable>) = 0;
393  virtual void set_current_movable (std::shared_ptr<ARDOUR::Movable>) = 0;
394 
395  virtual TrackViewList const & get_track_views () const = 0;
396 
397  virtual MixerStrip* get_current_mixer_strip () const = 0;
398 
400  virtual void abort_tempo_map_edit () = 0;
401  void commit_tempo_map_edit (Temporal::TempoMap::WritableSharedPtr& map, bool with_update = false) {
402  _commit_tempo_map_edit (map, with_update);
403  }
404 
406  virtual void abort_tempo_mapping () = 0;
408 
409  virtual void access_action (const std::string&, const std::string&) = 0;
410  virtual void set_toggleaction (const std::string&, const std::string&, bool) = 0;
411 
412  virtual bool get_smart_mode () const = 0;
413 
414  virtual void get_pointer_position (double &, double &) const = 0;
415 
416  virtual std::pair <Temporal::timepos_t, Temporal::timepos_t> session_gui_extents (bool use_extra = true) const = 0;
417 
418  virtual void get_regions_at (RegionSelection &, Temporal::timepos_t const & where, TrackViewList const &) const = 0;
419  virtual void get_regions_after (RegionSelection&, Temporal::timepos_t const & where, const TrackViewList& ts) const = 0;
421 
422  virtual void build_region_boundary_cache () = 0;
423  virtual void mark_region_boundary_cache_dirty () = 0;
424 
429 
430  virtual bool should_ripple () const = 0;
431 
432  virtual void queue_redisplay_track_views () = 0;
433 
434  virtual void set_tempo_curve_range (double& max, double& min) const = 0;
435 
436  virtual void start_track_drag (TimeAxisView&, int y, Gtk::Widget&, bool can_change_cursor) = 0;
438  virtual void end_track_drag () = 0;
439  virtual bool track_dragging() const = 0;
440 
441  virtual void focus_on_clock() = 0;
442 
444 
446 
449 
450 protected:
451  friend class DisplaySuspender;
452  virtual void suspend_route_redisplay () = 0;
453  virtual void resume_route_redisplay () = 0;
454  virtual void _commit_tempo_map_edit (Temporal::TempoMap::WritableSharedPtr&, bool with_update) = 0;
455 
457 
459 };
460 
462  public:
464  if (PublicEditor::instance()._suspend_route_redisplay_counter.fetch_add (1) == 0) {
466  }
467  }
469  if (PBD::atomic_dec_and_test (PublicEditor::instance()._suspend_route_redisplay_counter)) {
471  }
472  }
473 };
474 
476 public:
478  /* The global menu bar continues to be accessible to applications
479  with modal dialogs on mac, which means that we need to desensitize
480  all items in the menu bar.
481  */
483  }
484 
487  }
488 };
489 
Gtk::Window * current_toplevel() const
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()
Gtk::Window * transient_parent()
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 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