X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor.h;h=b96f67ab6b5ca5014d7ce415857e096eab0c9c28;hb=69d043766f3e0f4715f6c9b32afa93069de7df61;hp=96b3d490fb02739c9ac98249efb111d942f58ed5;hpb=daa07ce6e0303b27fb396be26007c18267ffb867;p=ardour.git diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 96b3d490fb..b96f67ab6b 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -34,11 +34,12 @@ #include #include -#include "gtkmm2ext/selector.h" +#include "gtkmm2ext/bindings.h" #include "gtkmm2ext/click_box.h" #include "gtkmm2ext/dndtreeview.h" +#include "gtkmm2ext/pane.h" +#include "gtkmm2ext/selector.h" #include "gtkmm2ext/stateful_button.h" -#include "gtkmm2ext/bindings.h" #include "pbd/stateful.h" #include "pbd/signals.h" @@ -60,11 +61,16 @@ #include "editor_items.h" #include "region_selection.h" #include "selection_memento.h" +#include "tempo_curve.h" namespace Gtkmm2ext { class Bindings; } +namespace Evoral { + class SMF; +} + namespace ARDOUR { class AudioPlaylist; class AudioRegion; @@ -128,6 +134,7 @@ class SoundFileOmega; class StreamView; class TempoLines; class TimeAxisView; +class TimeInfoBox; class TimeFXDialog; class TimeSelection; class RegionLayeringOrderEditor; @@ -295,8 +302,10 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Editing::ZoomFocus get_zoom_focus () const { return zoom_focus; } framecnt_t get_current_zoom () const { return samples_per_pixel; } void cycle_zoom_focus (); - void temporal_zoom_step (bool coarser); - void temporal_zoom_step_mouse_focus (bool coarser); + void temporal_zoom_step (bool zoom_out); + void temporal_zoom_step_scale (bool zoom_out, double scale); + void temporal_zoom_step_mouse_focus (bool zoom_out); + void temporal_zoom_step_mouse_focus_scale (bool zoom_out, double scale); void ensure_time_axis_view_is_visible (TimeAxisView const & tav, bool at_top); void tav_zoom_step (bool coarser); void tav_zoom_smooth (bool coarser, bool force_all); @@ -328,6 +337,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD unsigned get_grid_beat_divisions(framepos_t position); Evoral::Beats get_grid_type_as_beats (bool& success, framepos_t position); + int32_t get_grid_music_divisions (uint32_t event_state); + void nudge_forward (bool next, bool force_playhead); void nudge_backward (bool next, bool force_playhead); @@ -422,6 +433,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Editing::ImportDisposition disposition, Editing::ImportMode mode, ARDOUR::SrcQuality quality, + ARDOUR::MidiTrackNameSource mts, + ARDOUR::MidiTempoMapDisposition mtd, framepos_t& pos, boost::shared_ptr instrument = boost::shared_ptr()); @@ -530,7 +543,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD /* editing operations that need to be public */ void mouse_add_new_marker (framepos_t where, bool is_cd=false); - void split_regions_at (framepos_t, RegionSelection&); + void split_regions_at (framepos_t, RegionSelection&, const int32_t sub_num, bool snap = true); void split_region_at_points (boost::shared_ptr, ARDOUR::AnalysisFeatureList&, bool can_ferret, bool select_new = false); RegionSelection get_regions_from_selection_and_mouse (framepos_t); @@ -559,6 +572,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD PlaylistSelector* _playlist_selector; + TimeInfoBox* _time_info_box; + typedef std::pair TAVState; struct VisualState { @@ -609,17 +624,16 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void update_join_object_range_location (double); - boost::optional pre_notebook_shrink_pane_width; - - void pane_allocation_handler (Gtk::Allocation&, Gtk::Paned*); + boost::optional pre_notebook_shrink_pane_width; + Gtk::VBox _editor_list_vbox; Gtk::Notebook _the_notebook; bool _notebook_shrunk; void add_notebook_page (std::string const &, Gtk::Widget &); bool notebook_tab_clicked (GdkEventButton *, Gtk::Widget *); - Gtk::HPaned edit_pane; - Gtk::VPaned editor_summary_pane; + Gtkmm2ext::HPane edit_pane; + Gtkmm2ext::VPane editor_summary_pane; Gtk::EventBox meter_base; Gtk::HBox meter_box; @@ -772,8 +786,10 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void popup_note_context_menu (ArdourCanvas::Item *, GdkEvent *); Gtk::Menu _note_context_menu; + void add_stripables (ARDOUR::StripableList&); void add_routes (ARDOUR::RouteList&); void timeaxisview_deleted (TimeAxisView *); + void add_vcas (ARDOUR::VCAList&); Gtk::HBox global_hpacker; Gtk::VBox global_vpacker; @@ -886,7 +902,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void update_just_timecode (); void compute_fixed_ruler_scale (); //calculates the RulerScale of the fixed rulers void update_fixed_rulers (); - void update_tempo_based_rulers (std::vector& grid); + void update_tempo_based_rulers (); void popup_ruler_menu (framepos_t where = 0, ItemType type = RegionItem); void update_ruler_visibility (); void set_ruler_visible (RulerType, bool); @@ -949,7 +965,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD gint bbt_nmarks; uint32_t bbt_bar_helper_on; uint32_t bbt_accent_modulo; - void compute_bbt_ruler_scale (std::vector& grid, framepos_t lower, framepos_t upper); + void compute_bbt_ruler_scale (framepos_t lower, framepos_t upper); ArdourCanvas::Ruler* timecode_ruler; ArdourCanvas::Ruler* bbt_ruler; @@ -1003,7 +1019,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD friend class EditorCursor; - EditorCursor* playhead_cursor; + EditorCursor* playhead_cursor; + framepos_t playhead_cursor_sample () const; framepos_t get_region_boundary (framepos_t pos, int32_t dir, bool with_selection, bool only_onscreen); @@ -1038,7 +1055,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Gtk::HBox toplevel_hpacker; - Gtk::HBox top_hbox; Gtk::HBox bottom_hbox; Gtk::Table edit_packer; @@ -1087,7 +1103,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void control_step_tracks_down (); void control_view (uint32_t); void control_scroll (float); - void control_select (uint32_t rid, Selection::Operation); + void control_select (boost::shared_ptr, Selection::Operation); void control_unselect (); void access_action (std::string,std::string); bool deferred_control_scroll (framepos_t); @@ -1129,7 +1145,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD /* track views */ TrackViewList track_views; std::pair trackview_by_y_position (double, bool trackview_relative_offset = true) const; - RouteTimeAxisView* axis_view_from_route (boost::shared_ptr) const; + TimeAxisView* axis_view_from_stripable (boost::shared_ptr) const; TrackViewList get_tracks_for_range_action () const; @@ -1186,7 +1202,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void cut_copy_midi (Editing::CutCopyOp); void mouse_paste (); - void paste_internal (framepos_t position, float times); + void paste_internal (framepos_t position, float times, const int32_t sub_num); /* EDITING OPERATIONS */ @@ -1272,14 +1288,12 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void naturalize_region (); - void reset_focus (Gtk::Widget*); - void split_region (); void delete_ (); void cut (); void copy (); - void paste (float times, bool from_context_menu = false); + void paste (float times, bool from_context_menu); void place_transient (); void remove_transient (ArdourCanvas::Item* item); @@ -1300,8 +1314,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void loop_location (ARDOUR::Location&); void calc_extra_zoom_edges(framepos_t &start, framepos_t &end); - void temporal_zoom_selection (bool both_axes = false); - void temporal_zoom_region (bool both_axes); + void temporal_zoom_selection (Editing::ZoomAxis); void temporal_zoom_session (); void temporal_zoom (framecnt_t samples_per_pixel); void temporal_zoom_by_frame (framepos_t start, framepos_t end); @@ -1408,7 +1421,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void import_audio (bool as_tracks); void do_import (std::vector paths, bool split, bool as_tracks); - + void import_smf_tempo_map (Evoral::SMF const &, framepos_t pos); void move_to_start (); void move_to_end (); void center_playhead (); @@ -1447,6 +1460,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void set_loop_from_selection (bool play); void set_punch_from_selection (); void set_punch_from_region (); + void set_auto_punch_range(); void set_session_start_from_playhead (); void set_session_end_from_playhead (); @@ -1457,7 +1471,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void set_loop_range (framepos_t start, framepos_t end, std::string cmd); void set_punch_range (framepos_t start, framepos_t end, std::string cmd); + void toggle_location_at_playhead_cursor (); void add_location_from_playhead_cursor (); + bool do_remove_location_at_playhead_cursor (); void remove_location_at_playhead_cursor (); bool select_new_marker; @@ -1565,6 +1581,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD bool canvas_stream_view_event (GdkEvent* event,ArdourCanvas::Item*, RouteTimeAxisView*); bool canvas_marker_event (GdkEvent* event,ArdourCanvas::Item*, ArdourMarker*); bool canvas_tempo_marker_event (GdkEvent* event,ArdourCanvas::Item*, TempoMarker*); + bool canvas_tempo_curve_event (GdkEvent* event,ArdourCanvas::Item*, TempoCurve*); bool canvas_meter_marker_event (GdkEvent* event,ArdourCanvas::Item*, MeterMarker*); bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, AutomationTimeAxisView*); bool canvas_note_event (GdkEvent* event, ArdourCanvas::Item *); @@ -1648,11 +1665,17 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void edit_meter_marker (MeterMarker&); void edit_control_point (ArdourCanvas::Item*); void edit_notes (MidiRegionView*); + void edit_region (RegionView*); + + void edit_current_meter (); + void edit_current_tempo (); void marker_menu_edit (); void marker_menu_remove (); void marker_menu_rename (); void rename_marker (ArdourMarker *marker); + void toggle_marker_lock_style (); + void toggle_tempo_type (); void toggle_marker_menu_lock (); void toggle_marker_menu_glue (); void marker_menu_hide (); @@ -1675,13 +1698,15 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void marker_context_menu (GdkEventButton*, ArdourCanvas::Item*); void tempo_or_meter_marker_context_menu (GdkEventButton*, ArdourCanvas::Item*); void new_transport_marker_context_menu (GdkEventButton*, ArdourCanvas::Item*); - void build_range_marker_menu (bool, bool); + void build_range_marker_menu (ARDOUR::Location *, bool, bool); void build_marker_menu (ARDOUR::Location *); - void build_tempo_or_meter_marker_menu (bool); + void build_tempo_marker_menu (TempoMarker *, bool); + void build_meter_marker_menu (MeterMarker *, bool); void build_new_transport_marker_menu (); void dynamic_cast_marker_object (void*, MeterMarker**, TempoMarker**) const; - Gtk::Menu* tempo_or_meter_marker_menu; + Gtk::Menu* tempo_marker_menu; + Gtk::Menu* meter_marker_menu; Gtk::Menu* marker_menu; Gtk::Menu* range_marker_menu; Gtk::Menu* transport_marker_menu; @@ -1692,6 +1717,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD typedef std::list Marks; Marks metric_marks; + typedef std::list Curves; + Curves tempo_curves; + void remove_metric_marks (); void draw_metric_marks (const ARDOUR::Metrics& metrics); @@ -1787,6 +1815,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Glib::RefPtr zoom_focus_action (Editing::ZoomFocus); + Gtk::HBox _track_box; + Gtk::HBox _zoom_box; void zoom_adjustment_changed(); @@ -1795,9 +1825,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void setup_tooltips (); Gtk::HBox toolbar_hbox; - Gtk::EventBox toolbar_base; - Gtk::Frame toolbar_frame; - Gtk::Viewport _toolbar_viewport; void setup_midi_toolbar (); @@ -1824,8 +1851,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void point_selection_changed (); void marker_selection_changed (); - bool _ignore_follow_edits; - void cancel_selection (); void cancel_time_selection (); @@ -1987,6 +2012,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD /* duplication */ void duplicate_range (bool with_dialog); + void duplicate_regions (float times); /** computes the timeline frame (sample) of an event whose coordinates * are in canvas units (pixels, scroll offset included). @@ -2240,11 +2266,13 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Gtkmm2ext::ActionMap myactions; friend class Drag; + friend class RegionCutDrag; friend class RegionDrag; friend class RegionMoveDrag; friend class RegionSpliceDrag; friend class RegionRippleDrag; friend class TrimDrag; + friend class BBTRulerDrag; friend class MeterMarkerDrag; friend class TempoMarkerDrag; friend class CursorDrag; @@ -2255,6 +2283,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD friend class ControlPointDrag; friend class LineDrag; friend class RubberbandSelectDrag; + friend class RulerZoomDrag; friend class EditorRubberbandSelectDrag; friend class TimeFXDrag; friend class ScrubDrag;