X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor.h;h=95fbde83de8cec4870210b77b80b0cd3e0cd76b9;hb=fddb3778120e25b3b8e8134084e260dac07c1365;hp=609a0ef6ed7c0e465797a6a65b11db008a80b433;hpb=c83e48e07a0b4790512c6251d8ad8f941c881021;p=ardour.git diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 609a0ef6ed..95fbde83de 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -46,6 +46,8 @@ #include #include "pbd/stateful.h" +#include "pbd/signals.h" + #include "ardour/import_status.h" #include "ardour/tempo.h" #include "ardour/location.h" @@ -65,12 +67,15 @@ #include "canvas.h" #include "editor_summary.h" +namespace Gnome { namespace Canvas { + class NoEventText; +} } + namespace Gtkmm2ext { class TearOff; } namespace ARDOUR { - class AudioDiskstream; class RouteGroup; class Playlist; class AudioPlaylist; @@ -101,7 +106,7 @@ class AutomationTimeAxisView; class BundleManager; class ControlPoint; class CrossfadeView; -class Drag; +class DragManager; class GlobalPortMatrixWindow; class GroupedButtons; class Marker; @@ -117,11 +122,11 @@ class TempoLines; class TimeAxisView; class TimeFXDialog; class TimeSelection; -class TrackSelection; class EditorGroupTabs; class EditorRoutes; class EditorRouteGroups; class EditorRegions; +class EditorLocations; class EditorSnapshots; /* */ @@ -148,17 +153,18 @@ struct EditorCursor { void set_length (double units); void set_y_axis (double position); - sigc::signal PositionChanged; + PBD::Signal1 PositionChanged; }; -class Editor : public PublicEditor +class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARDOUR::SessionHandlePtr { public: Editor (); ~Editor (); - void connect_to_session (ARDOUR::Session *); - ARDOUR::Session* current_session() const { return session; } + void set_session (ARDOUR::Session *); + ARDOUR::Session* session() const { return _session; } + void first_idle (); virtual bool have_idled () const { return _have_idled; } @@ -191,6 +197,7 @@ class Editor : public PublicEditor void step_mouse_mode (bool next); Editing::MouseMode current_mouse_mode () const { return mouse_mode; } Editing::MidiEditMode current_midi_edit_mode () const; + void remove_midi_note (ArdourCanvas::Item *, GdkEvent *); bool internal_editing() const { return _internal_editing ; } void set_internal_edit (bool yn); @@ -210,17 +217,12 @@ class Editor : public PublicEditor void consider_auditioning (boost::shared_ptr); void hide_a_region (boost::shared_ptr); - void remove_a_region (boost::shared_ptr); + void show_a_region (boost::shared_ptr); #ifdef USE_RUBBERBAND std::vector rb_opt_strings; #endif - /* option editor-access */ - - void set_show_waveforms_recording (bool yn); - bool show_waveforms_recording() const { return _show_waveforms_recording; } - /* things that need to be public to be used in the main menubar */ void new_region_from_selection (); @@ -229,7 +231,6 @@ class Editor : public PublicEditor void separate_region_from_punch (); void separate_region_from_loop (); void separate_regions_using_location (ARDOUR::Location&); - void toggle_playback (bool with_abort); void transition_to_rolling (bool forward); /* undo related */ @@ -326,7 +327,6 @@ class Editor : public PublicEditor void copy_playlists (TimeAxisView* v); void clear_playlists (TimeAxisView* v); - TrackViewList* get_valid_views (TimeAxisView*, ARDOUR::RouteGroup* grp = 0); void get_onscreen_tracks (TrackViewList&); Width editor_mixer_strip_width; @@ -335,7 +335,7 @@ class Editor : public PublicEditor void create_editor_mixer (); void show_editor_list (bool yn); void set_selected_mixer_strip (TimeAxisView&); - void hide_track_in_display (TimeAxisView& tv, bool temporary = false); + void hide_track_in_display (TimeAxisView* tv, bool temporary = false); /* nudge is initiated by transport controls owned by ARDOUR_UI */ @@ -352,13 +352,16 @@ class Editor : public PublicEditor /* playhead/screen stuff */ + void set_stationary_playhead (bool yn); + void toggle_stationary_playhead (); + bool stationary_playhead() const { return _stationary_playhead; } + void set_follow_playhead (bool yn); void toggle_follow_playhead (); bool follow_playhead() const { return _follow_playhead; } bool dragging_playhead () const { return _dragging_playhead; } void toggle_zero_line_visibility (); - void toggle_waveforms_while_recording (); void set_summary (); void set_group_tabs (); void toggle_measure_visibility (); @@ -388,7 +391,6 @@ class Editor : public PublicEditor void scroll_tracks_down_line (); void scroll_tracks_up_line (); - bool new_regionviews_display_gain () { return _new_regionviews_show_envelope; } void prepare_for_cleanup (); void finish_cleanup (); @@ -396,6 +398,7 @@ class Editor : public PublicEditor void restore_editing_space(); void reset_x_origin (nframes64_t); + void reset_x_origin_to_follow_playhead (); void reset_y_origin (double); void reset_zoom (double); void reposition_and_zoom (nframes64_t, double); @@ -408,12 +411,15 @@ class Editor : public PublicEditor void toggle_meter_updating(); void show_rhythm_ferret(); - void show_bundle_manager (); void show_global_port_matrix (ARDOUR::DataType); void goto_visual_state (uint32_t); void save_visual_state (uint32_t); + void queue_draw_resize_line (int at); + void start_resize_line_ops (); + void end_resize_line_ops (); + TrackViewList const & get_track_views () { return track_views; } @@ -428,6 +434,19 @@ class Editor : public PublicEditor void show_verbose_canvas_cursor_with (const std::string& txt); void hide_verbose_canvas_cursor(); + void center_screen (nframes64_t); + + TrackViewList axis_views_from_routes (boost::shared_ptr) const; + Gtkmm2ext::TearOff* mouse_mode_tearoff () const { return _mouse_mode_tearoff; } + Gtkmm2ext::TearOff* tools_tearoff () const { return _tools_tearoff; } + + void snap_to (nframes64_t& first, int32_t direction = 0, bool for_mark = false); + void snap_to_with_modifier (nframes64_t& first, GdkEvent const *, int32_t direction = 0, bool for_mark = false); + void snap_to (nframes64_t& first, nframes64_t& last, int32_t direction = 0, bool for_mark = false); + + void begin_reversible_command (std::string cmd_name); + void commit_reversible_command (); + protected: void map_transport_state (); void map_position_change (nframes64_t); @@ -438,7 +457,6 @@ class Editor : public PublicEditor void color_handler (); - ARDOUR::Session *session; ///< The session that we are editing, or 0 bool constructed; // to keep track of the playhead position for control_scroll @@ -480,15 +498,33 @@ class Editor : public PublicEditor Editing::MouseMode mouse_mode; bool _internal_editing; + Editing::MouseMode effective_mouse_mode () const; + + enum JoinObjectRangeState { + JOIN_OBJECT_RANGE_NONE, + /** `join object/range' mode is active and the mouse is over a place where object mode should happen */ + JOIN_OBJECT_RANGE_OBJECT, + /** `join object/range' mode is active and the mouse is over a place where range mode should happen */ + JOIN_OBJECT_RANGE_RANGE + }; + + JoinObjectRangeState _join_object_range_state; + + void update_join_object_range_location (double, double); int post_maximal_editor_width; - int post_maximal_pane_position; - int pre_maximal_pane_position; + int post_maximal_editor_height; + int post_maximal_horizontal_pane_position; + int post_maximal_vertical_pane_position; + int pre_maximal_horizontal_pane_position; + int pre_maximal_vertical_pane_position; int pre_maximal_editor_width; + int pre_maximal_editor_height; void pane_allocation_handler (Gtk::Allocation&, Gtk::Paned*); Gtk::Notebook the_notebook; Gtk::HPaned edit_pane; + Gtk::VPaned editor_summary_pane; Gtk::EventBox meter_base; Gtk::HBox meter_box; @@ -499,7 +535,7 @@ class Editor : public PublicEditor void location_changed (ARDOUR::Location *); void location_flags_changed (ARDOUR::Location *, void *); void refresh_location_display (); - void refresh_location_display_s (ARDOUR::Change); + void refresh_location_display_s (const PBD::PropertyChange&); void refresh_location_display_internal (ARDOUR::Locations::LocationList&); void add_new_location (ARDOUR::Location *); void location_gone (ARDOUR::Location *); @@ -555,13 +591,11 @@ class Editor : public PublicEditor CrossfadeView* clicked_crossfadeview; ControlPoint* clicked_control_point; - void sort_track_selection (TrackSelection* sel = 0); + void sort_track_selection (TrackViewList* sel = 0); - void get_relevant_tracks (std::set& relevant_tracks) const; - void get_equivalent_tracks (RouteTimeAxisView*, std::set &, ARDOUR::RouteGroup::Property) const; - void get_equivalent_regions (RegionView* rv, std::vector &, ARDOUR::RouteGroup::Property) const; - RegionSelection get_equivalent_regions (RegionSelection &, ARDOUR::RouteGroup::Property) const; - void mapover_tracks (sigc::slot sl, TimeAxisView*, ARDOUR::RouteGroup::Property) const; + void get_equivalent_regions (RegionView* rv, std::vector &, PBD::PropertyID) const; + RegionSelection get_equivalent_regions (RegionSelection &, PBD::PropertyID) const; + void mapover_tracks (sigc::slot sl, TimeAxisView*, PBD::PropertyID) const; /* functions to be passed to mapover_tracks(), possibly with sigc::bind()-supplied arguments */ @@ -589,6 +623,8 @@ class Editor : public PublicEditor void collect_new_region_view (RegionView *); void collect_and_select_new_region_view (RegionView *); + long select_range_around_region (RegionView *); + Gtk::Menu track_context_menu; Gtk::Menu track_region_context_menu; Gtk::Menu track_selection_context_menu; @@ -613,8 +649,7 @@ class Editor : public PublicEditor void add_selection_context_items (Gtk::Menu_Helpers::MenuList&); void handle_new_route (ARDOUR::RouteList&); - void remove_route (TimeAxisView *); - bool route_removal; + void timeaxisview_deleted (TimeAxisView *); Gtk::HBox global_hpacker; Gtk::VBox global_vpacker; @@ -626,7 +661,7 @@ class Editor : public PublicEditor ArdourCanvas::Canvas* track_canvas; - ArdourCanvas::Text* verbose_canvas_cursor; + ArdourCanvas::NoEventText* verbose_canvas_cursor; bool verbose_cursor_visible; void parameter_changed (std::string); @@ -867,24 +902,16 @@ class Editor : public PublicEditor Gtk::HBox bottom_hbox; Gtk::Table edit_packer; - Gtk::VScrollbar edit_vscrollbar; Gtk::Adjustment vertical_adjustment; - Gtk::Adjustment horizontal_adjustment; Gtk::Layout controls_layout; bool control_layout_scroll (GdkEventScroll* ev); void controls_layout_size_request (Gtk::Requisition*); sigc::connection controls_layout_size_request_connection; - Gtk::HScrollbar edit_hscrollbar; - bool _dragging_hscrollbar; - - void reset_hscrollbar_stepping (); - - bool hscrollbar_button_press (GdkEventButton*); - bool hscrollbar_button_release (GdkEventButton*); - void hscrollbar_allocate (Gtk::Allocation &alloc); + void horizontal_scroll_left (); + void horizontal_scroll_right (); double _canvas_width; double _canvas_height; @@ -913,7 +940,8 @@ class Editor : public PublicEditor ArdourCanvas::Group* get_trackview_group () const { return _trackview_group; } double last_trackview_group_vertical_offset; void tie_vertical_scrolling (); - void scroll_canvas_horizontally (); + void set_horizontal_position (double); + double horizontal_position () const; void scroll_canvas_vertically (); struct VisualChange { @@ -947,44 +975,12 @@ class Editor : public PublicEditor void queue_visual_change_y (double); void ensure_visual_change_idle_handler (); - void end_location_changed (ARDOUR::Location*); - - /* named selections */ - - struct NamedSelectionDisplayModelColumns : public Gtk::TreeModel::ColumnRecord { - NamedSelectionDisplayModelColumns() { - add (text); - add (selection); - } - Gtk::TreeModelColumn text; - Gtk::TreeModelColumn selection; - }; - - NamedSelectionDisplayModelColumns named_selection_columns; - Glib::RefPtr named_selection_model; - - Gtkmm2ext::DnDTreeView named_selection_display; - Gtk::ScrolledWindow named_selection_scroller; - - void create_named_selection (); - void paste_named_selection (float times); - void remove_selected_named_selections (); - - void handle_new_named_selection (); - void add_named_selection_to_named_selection_display (ARDOUR::NamedSelection&); - void redisplay_named_selections (); - - bool named_selection_display_button_release (GdkEventButton *ev); - bool named_selection_display_key_release (GdkEventKey *ev); - void named_selection_display_selection_changed (); - /* track views */ TrackViewList track_views; std::pair trackview_by_y_position (double); - TimeAxisView* axis_view_from_route (ARDOUR::Route *) const; - TrackSelection axis_views_from_routes (std::list) const; + TimeAxisView* axis_view_from_route (boost::shared_ptr) const; - TrackSelection get_tracks_for_range_action () const; + TrackViewList get_tracks_for_range_action () const; static Gdk::Cursor* cross_hair_cursor; static Gdk::Cursor* trimmer_cursor; @@ -1005,12 +1001,11 @@ class Editor : public PublicEditor static void build_cursors (); - sigc::connection scroll_connection; + sigc::connection super_rapid_screen_update_connection; nframes64_t last_update_frame; - void center_screen (nframes64_t); void center_screen_internal (nframes64_t, float); - void update_current_screen (); + void super_rapid_screen_update (); void session_going_away (); @@ -1049,7 +1044,7 @@ class Editor : public PublicEditor void toggle_region_lock (); void toggle_region_opaque (); void toggle_record_enable (); - void set_region_lock_style (ARDOUR::Region::PositionLockStyle); + void toggle_region_lock_style (); void raise_region (); void raise_region_to_top (); void lower_region (); @@ -1086,6 +1081,7 @@ class Editor : public PublicEditor void reset_region_scale_amplitude (); void adjust_region_scale_amplitude (bool up); void quantize_region (); + void fork_region (); void do_insert_time (); void insert_time (nframes64_t, nframes64_t, Editing::InsertTimeOption, bool, bool, bool); @@ -1099,6 +1095,7 @@ class Editor : public PublicEditor void audition_region_from_region_list (); void hide_region_from_region_list (); + void show_region_in_region_list (); void align (ARDOUR::RegionPoint); void align_relative (ARDOUR::RegionPoint); @@ -1162,7 +1159,7 @@ class Editor : public PublicEditor void drop_paths_part_two (const std::vector& paths, nframes64_t frame, double ypos); int import_sndfiles (std::vector paths, Editing::ImportMode mode, ARDOUR::SrcQuality, nframes64_t& pos, - int target_regions, int target_tracks, boost::shared_ptr, bool, uint32_t total); + int target_regions, int target_tracks, boost::shared_ptr&, bool); int embed_sndfiles (std::vector paths, bool multiple_files, bool& check_sample_rate, Editing::ImportMode mode, nframes64_t& pos, int target_regions, int target_tracks, boost::shared_ptr&); @@ -1174,17 +1171,6 @@ class Editor : public PublicEditor boost::shared_ptr get_nth_selected_audio_track (int nth) const; boost::shared_ptr get_nth_selected_midi_track (int nth) const; - /* generic interthread progress window */ - - ArdourDialog* interthread_progress_window; - Gtk::Label interthread_progress_label; - Gtk::VBox interthread_progress_vbox; - Gtk::ProgressBar interthread_progress_bar; - Gtk::Button interthread_cancel_button; - Gtk::Label interthread_cancel_label; - sigc::connection interthread_progress_connection; - void interthread_cancel_clicked (); - void build_interthread_progress_window (); ARDOUR::InterThreadInfo* current_interthread_info; AnalysisWindow* analysis_window; @@ -1201,7 +1187,6 @@ class Editor : public PublicEditor }; EditorImportStatus import_status; - gint import_progress_timeout (void *); static void *_import_thread (void *); void* import_thread (); void finish_import (); @@ -1272,14 +1257,11 @@ class Editor : public PublicEditor void reverse_selection (); void edit_envelope (); - void start_scrolling (); - void stop_scrolling (); - double last_scrub_x; int scrubbing_direction; int scrub_reversals; int scrub_reverse_distance; - void scrub (); + void scrub (nframes64_t, double); void keyboard_selection_begin (); void keyboard_selection_finish (bool add); @@ -1298,9 +1280,9 @@ class Editor : public PublicEditor bool ignore_gui_changes; - Drag* _drag; + DragManager* _drags; - void break_drag (); + void escape (); Gtk::Menu fade_context_menu; void popup_fade_context_menu (int, int, ArdourCanvas::Item*, ItemType); @@ -1314,7 +1296,6 @@ class Editor : public PublicEditor void set_fade_out_active (bool); std::set > motion_frozen_playlists; - RegionSelection pre_drag_region_selection; bool _dragging_playhead; bool _dragging_edit_point; @@ -1324,10 +1305,10 @@ class Editor : public PublicEditor gint mouse_rename_region (ArdourCanvas::Item*, GdkEvent*); - void start_region_grab (ArdourCanvas::Item*, GdkEvent*, RegionView*); + void add_region_drag (ArdourCanvas::Item*, GdkEvent*, RegionView*); void start_create_region_grab (ArdourCanvas::Item*, GdkEvent*); - void start_region_copy_grab (ArdourCanvas::Item*, GdkEvent*, RegionView*); - void start_region_brush_grab (ArdourCanvas::Item*, GdkEvent*, RegionView*); + void add_region_copy_drag (ArdourCanvas::Item*, GdkEvent*, RegionView*); + void add_region_brush_drag (ArdourCanvas::Item*, GdkEvent*, RegionView*); void start_selection_grab (ArdourCanvas::Item*, GdkEvent*); void region_view_item_click (AudioRegionView&, GdkEventButton*); @@ -1361,8 +1342,8 @@ class Editor : public PublicEditor private: ArdourCanvas::Item *last_item_entered; int last_item_entered_n; -public: +public: bool canvas_region_view_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*); bool canvas_frame_handle_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*); bool canvas_region_view_name_highlight_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*); @@ -1391,6 +1372,11 @@ public: bool canvas_markerview_start_handle_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*); bool canvas_markerview_end_handle_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*); + private: + friend class DragManager; + friend class EditorRouteGroups; + friend class EditorRegions; + /* non-public event handlers */ bool canvas_playhead_cursor_event (GdkEvent* event, ArdourCanvas::Item*); @@ -1415,7 +1401,6 @@ public: void kbd_do_brush (GdkEvent*); void kbd_do_audition (GdkEvent*); - void handle_new_duration (); void initialize_canvas (); /* display control */ @@ -1423,8 +1408,8 @@ public: bool _show_measures; /// true if the editor should follow the playhead, otherwise false bool _follow_playhead; - /// true if waveforms should be shown while recording audio tracks, otherwise false - bool _show_waveforms_recording; + /// true if we scroll the tracks rather than the playhead + bool _stationary_playhead; ARDOUR::TempoMap::BBTPointList *current_bbt_points; @@ -1473,17 +1458,18 @@ public: void update_punch_range_view (bool visibility=false); void new_transport_marker_menu_popdown (); void marker_context_menu (GdkEventButton*, ArdourCanvas::Item*); - void tm_marker_context_menu (GdkEventButton*, ArdourCanvas::Item*); + void tempo_or_meter_marker_context_menu (GdkEventButton*, ArdourCanvas::Item*); void transport_marker_context_menu (GdkEventButton*, ArdourCanvas::Item*); void new_transport_marker_context_menu (GdkEventButton*, ArdourCanvas::Item*); void build_range_marker_menu (bool loop_or_punch); - void build_marker_menu (bool start_or_end); - void build_tm_marker_menu (); + void build_marker_menu (bool); + void build_tempo_or_meter_marker_menu (bool); void build_new_transport_marker_menu (); + void dynamic_cast_marker_object (void*, MeterMarker**, TempoMarker**) const; - Gtk::Menu* tm_marker_menu; + Gtk::Menu* tempo_or_meter_marker_menu; Gtk::Menu* marker_menu; - Gtk::Menu* start_end_marker_menu; + Gtk::Menu* session_range_marker_menu; Gtk::Menu* range_marker_menu; Gtk::Menu* transport_marker_menu; Gtk::Menu* new_transport_marker_menu; @@ -1497,13 +1483,9 @@ public: void draw_metric_marks (const ARDOUR::Metrics& metrics); void compute_current_bbt_points (nframes_t left, nframes_t right); - void tempo_map_changed (ARDOUR::Change); + void tempo_map_changed (const PBD::PropertyChange&); void redisplay_tempo (bool immediate_redraw); - void snap_to (nframes64_t& first, int32_t direction = 0, bool for_mark = false); - void snap_to_with_modifier (nframes64_t& first, GdkEvent const *, int32_t direction = 0, bool for_mark = false); - void snap_to (nframes64_t& first, nframes64_t& last, int32_t direction = 0, bool for_mark = false); - uint32_t bbt_beat_subdivision; /* toolbar */ @@ -1513,7 +1495,6 @@ public: void editor_mixer_button_toggled (); void editor_list_button_toggled (); - AudioClock edit_point_clock; AudioClock zoom_range_clock; Gtk::Button zoom_in_button; Gtk::Button zoom_out_button; @@ -1528,14 +1509,14 @@ public: Gtk::Table toolbar_selection_clock_table; Gtk::Label toolbar_selection_cursor_label; - Gtk::HBox mouse_mode_button_box; - Gtkmm2ext::TearOff* mouse_mode_tearoff; + Gtkmm2ext::TearOff* _mouse_mode_tearoff; Gtk::ToggleButton mouse_select_button; Gtk::ToggleButton mouse_move_button; Gtk::ToggleButton mouse_gain_button; Gtk::ToggleButton mouse_zoom_button; Gtk::ToggleButton mouse_timefx_button; Gtk::ToggleButton mouse_audition_button; + Gtk::ToggleButton join_object_range_button; void mouse_mode_toggled (Editing::MouseMode m); bool ignore_mouse_mode_toggle; @@ -1587,11 +1568,11 @@ public: void zoom_adjustment_changed(); - void edit_point_clock_changed(); - void setup_toolbar (); - Gtkmm2ext::TearOff* tools_tearoff; + void setup_tooltips (); + + Gtkmm2ext::TearOff* _tools_tearoff; Gtk::HBox toolbar_hbox; Gtk::EventBox toolbar_base; Gtk::Frame toolbar_frame; @@ -1653,7 +1634,7 @@ public: /* object rubberband select process */ - bool select_all_within (nframes64_t start, nframes64_t end, gdouble topy, gdouble boty, const TrackViewList&, Selection::Operation op); + bool select_all_within (nframes64_t, nframes64_t, double, double, TrackViewList const &, Selection::Operation op); ArdourCanvas::SimpleRect *rubberband_rect; @@ -1666,6 +1647,7 @@ public: EditorRoutes* _routes; EditorRegions* _regions; EditorSnapshots* _snapshots; + EditorLocations* _locations; /* diskstream/route display management */ Glib::RefPtr rec_enabled_icon; @@ -1697,10 +1679,10 @@ public: bool allow_vertical_scroll; /* trimming */ - void point_trim (GdkEvent*); - void single_contents_trim (RegionView&, nframes64_t, bool, bool, bool); - void single_start_trim (RegionView&, nframes64_t, bool, bool, bool); - void single_end_trim (RegionView&, nframes64_t, bool, bool, bool); + void point_trim (GdkEvent *, nframes64_t); + void single_contents_trim (RegionView&, nframes64_t, bool, bool); + void single_start_trim (RegionView&, nframes64_t, bool); + void single_end_trim (RegionView&, nframes64_t, bool); void thaw_region_after_trim (RegionView& rv); @@ -1778,9 +1760,6 @@ public: XMLNode *before; /* used in *_reversible_command */ - void begin_reversible_command (std::string cmd_name); - void commit_reversible_command (); - void update_title (); void update_title_s (const std::string & snapshot_name); @@ -1792,9 +1771,6 @@ public: ~State (); }; - void store_state (State&) const; - void restore_state (State *); - void instant_save (); boost::shared_ptr last_audition_region; @@ -1802,7 +1778,6 @@ public: /* freeze operations */ ARDOUR::InterThreadInfo freeze_status; - gint freeze_progress_timeout (void *); static void* _freeze_thread (void*); void* freeze_thread (); @@ -1842,9 +1817,7 @@ public: bool show_editor_mixer_when_tracks_arrive; Gtk::VBox current_mixer_strip_vbox; void cms_new (boost::shared_ptr); - void cms_deleted (); void current_mixer_strip_hidden (); - void current_mixer_strip_removed (); void detach_tearoff (Gtk::Box* b, Gtk::Window* w); void reattach_tearoff (Gtk::Box* b, Gtk::Window* w, int32_t n); @@ -1931,7 +1904,7 @@ public: int playlist_deletion_dialog (boost::shared_ptr); - std::vector session_connections; + PBD::ScopedConnectionList session_connections; /* tracking step changes of track height */ @@ -1953,8 +1926,6 @@ public: void ensure_track_visible (TimeAxisView*); gint left_automation_track (); - bool _new_regionviews_show_envelope; - void reset_canvas_action_sensitivity (bool); void toggle_gain_envelope_visibility (); void toggle_gain_envelope_active (); @@ -1985,20 +1956,16 @@ public: std::vector edit_point_strings; void selected_marker_moved (ARDOUR::Location*); - sigc::connection edit_point_clock_connection_a; - sigc::connection edit_point_clock_connection_b; bool get_edit_op_range (nframes64_t& start, nframes64_t& end) const; - void get_regions_at (RegionSelection&, nframes64_t where, const TrackSelection& ts) const; - void get_regions_after (RegionSelection&, nframes64_t where, const TrackSelection& ts) const; + void get_regions_at (RegionSelection&, nframes64_t where, const TrackViewList& ts) const; + void get_regions_after (RegionSelection&, nframes64_t where, const TrackViewList& ts) const; void get_regions_for_action (RegionSelection&, bool allow_entered = false, bool allow_edit_position = true); - sigc::connection fast_screen_update_connection; - gint start_updating (); - gint stop_updating (); - void fast_update_strips (); + void start_updating_meters (); + void stop_updating_meters (); bool meters_running; void select_next_route (); @@ -2011,25 +1978,34 @@ public: BundleManager* _bundle_manager; GlobalPortMatrixWindow* _global_port_matrix[ARDOUR::DataType::num_types]; - void fit_tracks (TrackSelection &); + void fit_tracks (TrackViewList &); void fit_selected_tracks (); - void set_track_height (uint32_t h); + void set_track_height (Height); void remove_tracks (); void toggle_tracks_active (); bool _have_idled; int resize_idle_id; + static gboolean _idle_resize (gpointer); bool idle_resize(); - friend gboolean _idle_resize (gpointer); int32_t _pending_resize_amount; TimeAxisView* _pending_resize_view; void visible_order_range (int*, int*) const; void located (); + + /** true if we've made a locate request that hasn't yet been processed */ bool _pending_locate_request; + + /** if true, there is a pending Session locate which is the initial one when loading a session; + we need to know this so that we don't (necessarily) set the viewport to show the playhead + initially. + */ + bool _pending_initial_locate; + Gtk::HBox _summary_hbox; EditorSummary* _summary; void region_view_added (RegionView *);