X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor.h;h=63a19e0d3eb83bae62a7109737e8d73357187f41;hb=523952e655d27f0ff6e5f2eff0f272fc5aca6fa5;hp=7117ae9da2f67040fbfe7c2496870b02c5974944;hpb=678de81b968e4042d402c724e6fb0b5897413a85;p=ardour.git diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 7117ae9da2..63a19e0d3e 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -217,6 +217,8 @@ class Editor : public PublicEditor return (gulong) rint ((frame / (frames_per_unit * GNOME_CANVAS(track_canvas.gobj())->pixels_per_unit))); } + void flush_canvas (); + /* selection */ Selection& get_selection() const { return *selection; } @@ -229,6 +231,7 @@ class Editor : public PublicEditor void select_all (Selection::Operation op); void invert_selection_in_track (); void invert_selection (); + void deselect_all (); /* tempo */ @@ -254,7 +257,7 @@ class Editor : public PublicEditor void set_zoom_focus (Editing::ZoomFocus); Editing::ZoomFocus get_zoom_focus () const { return zoom_focus; } - gdouble get_current_zoom () { return frames_per_unit; } + double get_current_zoom () const { return frames_per_unit; } void temporal_zoom_step (bool coarser); @@ -262,8 +265,6 @@ class Editor : public PublicEditor PlaylistSelector& playlist_selector() const; void route_name_changed (TimeAxisView *); - gdouble frames_per_unit; - nframes_t leftmost_frame; void clear_playlist (boost::shared_ptr); void new_playlists (TimeAxisView*); @@ -368,7 +369,22 @@ class Editor : public PublicEditor PlaylistSelector* _playlist_selector; - void set_frames_per_unit (double); + struct VisualState { + double frames_per_unit; + nframes_t leftmost_frame; + Editing::ZoomFocus zoom_focus; + }; + + VisualState last_visual_state; + + nframes_t leftmost_frame; + double frames_per_unit; + Editing::ZoomFocus zoom_focus; + + void use_visual_state (const VisualState&); + void set_frames_per_unit (double); + void swap_visual_state (); + void post_zoom (); Editing::MouseMode mouse_mode; @@ -429,7 +445,9 @@ class Editor : public PublicEditor void hide_marker (ArdourCanvas::Item*, GdkEvent*); void clear_marker_display (); - void mouse_add_new_marker (nframes_t where); + void mouse_add_new_marker (nframes_t where, bool is_cd=false); + void update_cd_marker_display (); + void ensure_cd_marker_updated (LocationMarkers * lam, ARDOUR::Location * location); TimeAxisView* clicked_trackview; AudioTimeAxisView* clicked_audio_trackview; @@ -537,6 +555,7 @@ class Editor : public PublicEditor ArdourCanvas::Group* marker_group; ArdourCanvas::Group* range_marker_group; ArdourCanvas::Group* transport_marker_group; + ArdourCanvas::Group* cd_marker_group; enum { ruler_metric_smpte = 0, @@ -549,10 +568,11 @@ class Editor : public PublicEditor ruler_time_marker = 6, ruler_time_range_marker = 7, ruler_time_transport_marker = 8, + ruler_time_cd_marker = 9, }; static GtkCustomMetric ruler_metrics[4]; - bool ruler_shown[9]; + bool ruler_shown[10]; bool no_ruler_shown_update; gint ruler_button_press (GdkEventButton*); @@ -603,6 +623,7 @@ class Editor : public PublicEditor ArdourCanvas::SimpleRect* marker_bar; ArdourCanvas::SimpleRect* range_marker_bar; ArdourCanvas::SimpleRect* transport_marker_bar; + ArdourCanvas::SimpleRect* cd_marker_bar; ArdourCanvas::SimpleLine* tempo_line; @@ -610,6 +631,7 @@ class Editor : public PublicEditor ArdourCanvas::SimpleLine* marker_line; ArdourCanvas::SimpleLine* range_marker_line; ArdourCanvas::SimpleLine* transport_marker_line; + ArdourCanvas::SimpleLine* cd_marker_line; Gtk::Label minsec_label; Gtk::Label bbt_label; @@ -620,6 +642,7 @@ class Editor : public PublicEditor Gtk::Label mark_label; Gtk::Label range_mark_label; Gtk::Label transport_mark_label; + Gtk::Label cd_mark_label; Gtk::VBox time_button_vbox; @@ -647,17 +670,23 @@ class Editor : public PublicEditor Cursor* playhead_cursor; ArdourCanvas::Group* cursor_group; + void cursor_to_region_boundary (Cursor*, int32_t dir); + void cursor_to_next_region_boundary (Cursor*); + void cursor_to_previous_region_boundary (Cursor*); void cursor_to_next_region_point (Cursor*, ARDOUR::RegionPoint); void cursor_to_previous_region_point (Cursor*, ARDOUR::RegionPoint); void cursor_to_region_point (Cursor*, ARDOUR::RegionPoint, int32_t dir); void cursor_to_selection_start (Cursor *); void cursor_to_selection_end (Cursor *); - void edit_point_to_next_region_point (ARDOUR::RegionPoint); - void edit_point_to_previous_region_point (ARDOUR::RegionPoint); - void edit_point_to_region_point (ARDOUR::RegionPoint, int32_t dir); - void edit_point_to_selection_start (); - void edit_point_to_selection_end (); + void selected_marker_to_region_boundary (int32_t dir); + void selected_marker_to_next_region_boundary (); + void selected_marker_to_previous_region_boundary (); + void selected_marker_to_next_region_point (ARDOUR::RegionPoint); + void selected_marker_to_previous_region_point (ARDOUR::RegionPoint); + void selected_marker_to_region_point (ARDOUR::RegionPoint, int32_t dir); + void selected_marker_to_selection_start (); + void selected_marker_to_selection_end (); void select_all_selectables_using_cursor (Cursor *, bool); void select_all_selectables_using_edit (bool); @@ -665,6 +694,7 @@ class Editor : public PublicEditor void select_range_between (); boost::shared_ptr find_next_region (nframes_t, ARDOUR::RegionPoint, int32_t dir, TrackViewList&, TimeAxisView ** = 0); + nframes64_t find_next_region_boundary (nframes64_t, int32_t dir, const TrackViewList&); vector region_boundary_cache; void build_region_boundary_cache (); @@ -756,13 +786,15 @@ class Editor : public PublicEditor RegionListDisplayModelColumns region_list_columns; Gtkmm2ext::DnDTreeView > region_list_display; - + Glib::RefPtr region_list_model; Glib::RefPtr toggle_full_region_list_action; Glib::RefPtr toggle_show_auto_regions_action; void region_list_selection_changed (); bool region_list_selection_filter (const Glib::RefPtr& model, const Gtk::TreeModel::Path& path, bool yn); + void region_name_edit (const Glib::ustring&, const Glib::ustring&); + void get_regions_corresponding_to (boost::shared_ptr region, std::vector& regions); Gtk::Menu *region_list_menu; Gtk::ScrolledWindow region_list_scroller; @@ -926,6 +958,7 @@ class Editor : public PublicEditor void remove_clicked_region (); void destroy_clicked_region (); void edit_region (); + void rename_region (); void duplicate_some_regions (RegionSelection&, float times); void duplicate_selection (float times); void region_fill_selection (); @@ -962,10 +995,6 @@ class Editor : public PublicEditor void region_from_selection (); void create_region_from_selection (std::vector >&); - bool region_renamed; - void rename_region (); - void rename_region_finished (bool); - void play_from_start (); void play_from_edit_point (); void play_selected_region (); @@ -974,9 +1003,8 @@ class Editor : public PublicEditor void play_location (ARDOUR::Location&); void loop_location (ARDOUR::Location&); - Editing::ZoomFocus zoom_focus; - void temporal_zoom_selection (); + void temporal_zoom_region (); void temporal_zoom_session (); void temporal_zoom (gdouble scale); void temporal_zoom_by_frame (nframes_t start, nframes_t end, const string & op); @@ -1080,15 +1108,21 @@ class Editor : public PublicEditor void set_selection_from_loop (); void set_selection_from_audio_region (); + void add_location_mark (nframes64_t where); void add_location_from_audio_region (); void add_location_from_selection (); void set_loop_from_selection (bool play); void set_punch_from_selection (); + void set_loop_from_edit_range (bool play); + void set_loop_from_region (bool play); + void set_punch_from_edit_range (); + void set_loop_range (nframes_t start, nframes_t end, std::string cmd); void set_punch_range (nframes_t start, nframes_t end, std::string cmd); void add_location_from_playhead_cursor (); + bool select_new_marker; void reverse_selection (); void edit_envelope (); @@ -1140,7 +1174,7 @@ class Editor : public PublicEditor void set_fade_out_shape (ARDOUR::AudioRegion::FadeShape); void set_fade_length (bool in); - + void toggle_fade_active (bool in); void set_fade_in_active (bool); void set_fade_out_active (bool); @@ -1148,6 +1182,10 @@ class Editor : public PublicEditor RegionSelection pre_drag_region_selection; void region_drag_motion_callback (ArdourCanvas::Item*, GdkEvent*); void region_drag_finished_callback (ArdourCanvas::Item*, GdkEvent*); + bool check_region_drag_possible (AudioTimeAxisView**); + void possibly_copy_regions_during_grab (GdkEvent*); + void region_drag_splice_motion_callback (ArdourCanvas::Item*, GdkEvent*); + void region_drag_splice_finished_callback (ArdourCanvas::Item*, GdkEvent*); bool _dragging_playhead; bool _dragging_edit_point; @@ -1221,6 +1259,7 @@ class Editor : public PublicEditor bool canvas_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*); bool canvas_range_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*); bool canvas_transport_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*); + bool canvas_cd_marker_bar_event (GdkEvent* event, ArdourCanvas::Item*); bool canvas_imageframe_item_view_event(GdkEvent* event, ArdourCanvas::Item*,ImageFrameView*); bool canvas_imageframe_view_event(GdkEvent* event, ArdourCanvas::Item*,ImageFrameTimeAxis*); @@ -1328,6 +1367,7 @@ class Editor : public PublicEditor Gtk::Menu* range_marker_menu; Gtk::Menu* transport_marker_menu; Gtk::Menu* new_transport_marker_menu; + Gtk::Menu* cd_marker_menu; ArdourCanvas::Item* marker_menu_item; typedef list Marks; @@ -1462,7 +1502,8 @@ class Editor : public PublicEditor /* transport range select process */ enum RangeMarkerOp { CreateRangeMarker, - CreateTransportMarker + CreateTransportMarker, + CreateCDMarker } range_marker_op; void start_range_markerbar_op (ArdourCanvas::Item* item, GdkEvent* event, RangeMarkerOp); @@ -1896,7 +1937,8 @@ class Editor : public PublicEditor TimeAxisView* entered_track; RegionView* entered_regionview; - void ensure_entered_selected (bool op_acts_on_objects = false); + void ensure_entered_region_selected (bool op_acts_on_objects = false); + void ensure_entered_track_selected (bool op_acts_on_objects = false); bool clear_entered_track; gint left_track_canvas (GdkEventCrossing*); void set_entered_track (TimeAxisView*); @@ -1916,6 +1958,7 @@ class Editor : public PublicEditor Gtk::CheckMenuItem* region_opaque_item; bool on_key_press_event (GdkEventKey*); + bool on_key_release_event (GdkEventKey*); void session_state_saved (string); @@ -1932,7 +1975,7 @@ class Editor : public PublicEditor Gtk::ComboBoxText edit_point_selector; void set_edit_point_preference (Editing::EditPoint ep); - void cycle_edit_point (); + void cycle_edit_point (bool with_marker); void set_edit_point (); void edit_point_selection_done (); void edit_point_chosen (Editing::EditPoint); @@ -1959,6 +2002,8 @@ class Editor : public PublicEditor void fast_update_strips (); bool meters_running; + void select_next_route (); + void select_prev_route (); }; #endif /* __ardour_editor_h__ */