X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor.h;h=95fbde83de8cec4870210b77b80b0cd3e0cd76b9;hb=fddb3778120e25b3b8e8134084e260dac07c1365;hp=6b79f7d3a69d8efb95e3da19f9174f11cf99bbf8;hpb=ce7a5e1c9fa3edf2d9cc66875505e402a0aaa6f6;p=ardour.git diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 6b79f7d3a6..95fbde83de 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -76,7 +76,6 @@ namespace Gtkmm2ext { } namespace ARDOUR { - class AudioDiskstream; class RouteGroup; class Playlist; class AudioPlaylist; @@ -198,6 +197,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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); @@ -217,17 +217,12 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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 (); @@ -340,7 +335,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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 */ @@ -357,13 +352,16 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD /* 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 (); @@ -393,7 +391,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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 (); @@ -419,6 +416,10 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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; } @@ -436,6 +437,15 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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 (); @@ -503,13 +513,18 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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; @@ -520,7 +535,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void location_changed (ARDOUR::Location *); void location_flags_changed (ARDOUR::Location *, void *); void refresh_location_display (); - void refresh_location_display_s (PBD::PropertyChange); + 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 *); @@ -889,7 +904,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Gtk::Table edit_packer; Gtk::Adjustment vertical_adjustment; - Gtk::Adjustment horizontal_adjustment; Gtk::Layout controls_layout; bool control_layout_scroll (GdkEventScroll* ev); @@ -926,7 +940,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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 { @@ -960,8 +975,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void queue_visual_change_y (double); void ensure_visual_change_idle_handler (); - void end_location_changed (ARDOUR::Location*); - /* track views */ TrackViewList track_views; std::pair trackview_by_y_position (double); @@ -1031,7 +1044,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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 (); @@ -1068,6 +1081,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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); @@ -1081,6 +1095,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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); @@ -1144,7 +1159,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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&); @@ -1156,17 +1171,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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; @@ -1183,7 +1187,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD }; EditorImportStatus import_status; - gint import_progress_timeout (void *); static void *_import_thread (void *); void* import_thread (); void finish_import (); @@ -1339,8 +1342,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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*); @@ -1369,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*); @@ -1393,7 +1401,6 @@ public: void kbd_do_brush (GdkEvent*); void kbd_do_audition (GdkEvent*); - void handle_new_duration (); void initialize_canvas (); /* display control */ @@ -1401,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; @@ -1451,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; @@ -1475,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 (PBD::PropertyChange); + 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 */ @@ -1505,7 +1509,7 @@ public: Gtk::Table toolbar_selection_clock_table; Gtk::Label toolbar_selection_cursor_label; - 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; @@ -1568,7 +1572,7 @@ public: void setup_tooltips (); - Gtkmm2ext::TearOff* tools_tearoff; + Gtkmm2ext::TearOff* _tools_tearoff; Gtk::HBox toolbar_hbox; Gtk::EventBox toolbar_base; Gtk::Frame toolbar_frame; @@ -1676,9 +1680,9 @@ public: /* trimming */ void point_trim (GdkEvent *, nframes64_t); - 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 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); @@ -1756,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); @@ -1777,7 +1778,6 @@ public: /* freeze operations */ ARDOUR::InterThreadInfo freeze_status; - gint freeze_progress_timeout (void *); static void* _freeze_thread (void*); void* freeze_thread (); @@ -1926,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 (); @@ -1982,15 +1980,15 @@ public: 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;