X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor.h;h=45ef788d40d63ee548291cfb77bdb961d6bd3c7c;hb=9ad776039e187aef613fe4e215444a8d9be94705;hp=ca6ff920c819a6e6b538dc0c5f6ee29bc651843f;hpb=7fc2e8da30a5ff21a98a31b25c0f8d8d99738ddc;p=ardour.git diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index ca6ff920c8..45ef788d40 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -65,7 +65,6 @@ #include "editor_items.h" #include "region_selection.h" #include "canvas.h" -#include "editor_summary.h" namespace Gnome { namespace Canvas { class NoEventText; @@ -128,6 +127,7 @@ class EditorRouteGroups; class EditorRegions; class EditorLocations; class EditorSnapshots; +class EditorSummary; /* */ class ImageFrameView; @@ -197,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); @@ -220,6 +221,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD #ifdef USE_RUBBERBAND std::vector rb_opt_strings; + int rb_current_opt; #endif /* things that need to be public to be used in the main menubar */ @@ -227,6 +229,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void new_region_from_selection (); void separate_regions_between (const TimeSelection&); void separate_region_from_selection (); + void separate_under_selected_regions (); void separate_region_from_punch (); void separate_region_from_loop (); void separate_regions_using_location (ARDOUR::Location&); @@ -334,7 +337,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 */ @@ -446,6 +449,36 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void begin_reversible_command (std::string cmd_name); void commit_reversible_command (); + DragManager* drags () const { + return _drags; + } + + void maybe_autoscroll (bool, bool); + + /* handy cursors for everyone to use */ + + static Gdk::Cursor* cross_hair_cursor; + static Gdk::Cursor* trimmer_cursor; + static Gdk::Cursor* right_side_trim_cursor; + static Gdk::Cursor* left_side_trim_cursor; + static Gdk::Cursor* fade_in_cursor; + static Gdk::Cursor* fade_out_cursor; + static Gdk::Cursor* selector_cursor; + static Gdk::Cursor* grabber_cursor; + static Gdk::Cursor* grabber_note_cursor; + static Gdk::Cursor* grabber_edit_point_cursor; + static Gdk::Cursor* zoom_cursor; + static Gdk::Cursor* time_fx_cursor; + static Gdk::Cursor* fader_cursor; + static Gdk::Cursor* speaker_cursor; + static Gdk::Cursor* midi_pencil_cursor; + static Gdk::Cursor* midi_select_cursor; + static Gdk::Cursor* midi_resize_cursor; + static Gdk::Cursor* midi_erase_cursor; + static Gdk::Cursor* wait_cursor; + static Gdk::Cursor* timebar_cursor; + static Gdk::Cursor* transparent_cursor; + protected: void map_transport_state (); void map_position_change (nframes64_t); @@ -512,13 +545,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; @@ -638,7 +676,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Gtk::Menu* build_track_selection_context_menu (nframes64_t); void add_dstream_context_items (Gtk::Menu_Helpers::MenuList&); void add_bus_context_items (Gtk::Menu_Helpers::MenuList&); - void add_region_context_items (StreamView*, boost::shared_ptr, Gtk::Menu_Helpers::MenuList&); + void add_region_context_items (StreamView*, std::list >, Gtk::Menu_Helpers::MenuList&); void add_crossfade_context_items (AudioStreamView*, boost::shared_ptr, Gtk::Menu_Helpers::MenuList&, bool many); void add_selection_context_items (Gtk::Menu_Helpers::MenuList&); @@ -886,10 +924,10 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void select_all_selectables_between (bool within); void select_range_between (); - boost::shared_ptr find_next_region (nframes64_t, ARDOUR::RegionPoint, int32_t dir, TrackViewList&, TimeAxisView ** = 0); - nframes64_t find_next_region_boundary (nframes64_t, int32_t dir, const TrackViewList&); + boost::shared_ptr find_next_region (ARDOUR::framepos_t, ARDOUR::RegionPoint, int32_t dir, TrackViewList&, TimeAxisView ** = 0); + ARDOUR::framepos_t find_next_region_boundary (ARDOUR::framepos_t, int32_t dir, const TrackViewList&); - std::vector region_boundary_cache; + std::vector region_boundary_cache; void build_region_boundary_cache (); Gtk::HBox top_hbox; @@ -898,19 +936,22 @@ 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); void controls_layout_size_request (Gtk::Requisition*); sigc::connection controls_layout_size_request_connection; - void horizontal_scroll_left (); - void horizontal_scroll_right (); + bool horizontal_scroll_left_press (); + void horizontal_scroll_left_release (); + bool horizontal_scroll_right_press (); + void horizontal_scroll_right_release (); + sigc::connection _scroll_connection; + int _scroll_callbacks; double _canvas_width; - double _canvas_height; - double full_canvas_height; + double _canvas_height; ///< height of the visible area of the track canvas + double full_canvas_height; ///< full height of the canvas bool track_canvas_map_handler (GdkEventAny*); @@ -935,7 +976,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 { @@ -969,8 +1011,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void queue_visual_change_y (double); void ensure_visual_change_idle_handler (); - void session_range_location_changed (ARDOUR::Location*); - /* track views */ TrackViewList track_views; std::pair trackview_by_y_position (double); @@ -978,23 +1018,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD TrackViewList get_tracks_for_range_action () const; - static Gdk::Cursor* cross_hair_cursor; - static Gdk::Cursor* trimmer_cursor; - static Gdk::Cursor* selector_cursor; - static Gdk::Cursor* grabber_cursor; - static Gdk::Cursor* grabber_edit_point_cursor; - static Gdk::Cursor* zoom_cursor; - static Gdk::Cursor* time_fx_cursor; - static Gdk::Cursor* fader_cursor; - static Gdk::Cursor* speaker_cursor; - static Gdk::Cursor* midi_pencil_cursor; - static Gdk::Cursor* midi_select_cursor; - static Gdk::Cursor* midi_resize_cursor; - static Gdk::Cursor* midi_erase_cursor; - static Gdk::Cursor* wait_cursor; - static Gdk::Cursor* timebar_cursor; - static Gdk::Cursor* transparent_cursor; - static void build_cursors (); sigc::connection super_rapid_screen_update_connection; @@ -1077,9 +1100,10 @@ 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); + void insert_time (nframes64_t, nframes64_t, Editing::InsertTimeOption, bool, bool, bool, bool, bool); void tab_to_transient (bool forward); @@ -1103,6 +1127,11 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void cut (); void copy (); void paste (float times); + + void place_transient (); + void remove_transient (ArdourCanvas::Item* item); + void snap_regions_to_grid (); + void close_region_gaps (); int get_prefix (float&, bool&); @@ -1343,6 +1372,7 @@ public: bool canvas_frame_handle_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*); bool canvas_region_view_name_highlight_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*); bool canvas_region_view_name_event (GdkEvent* event,ArdourCanvas::Item*, RegionView*); + bool canvas_feature_line_event (GdkEvent* event, ArdourCanvas::Item*, RegionView*); bool canvas_stream_view_event (GdkEvent* event,ArdourCanvas::Item*, RouteTimeAxisView*); bool canvas_marker_event (GdkEvent* event,ArdourCanvas::Item*, Marker*); bool canvas_zoom_rect_event (GdkEvent* event,ArdourCanvas::Item*); @@ -1396,7 +1426,6 @@ public: void kbd_do_brush (GdkEvent*); void kbd_do_audition (GdkEvent*); - void handle_new_duration (); void initialize_canvas (); /* display control */ @@ -1432,11 +1461,13 @@ public: void edit_tempo_marker (ArdourCanvas::Item*); void edit_meter_marker (ArdourCanvas::Item*); void edit_control_point (ArdourCanvas::Item*); + void edit_note (ArdourCanvas::Item *); void marker_menu_edit (); void marker_menu_remove (); void marker_menu_rename (); - void marker_menu_lock (bool yn); + void toggle_marker_menu_lock (); + void toggle_marker_menu_glue (); void marker_menu_hide (); void marker_menu_loop_range (); void marker_menu_select_all_selectables_using_range (); @@ -1454,15 +1485,16 @@ 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); - void build_tm_marker_menu (); + void build_marker_menu (bool, ARDOUR::Location *); + 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* session_range_marker_menu; Gtk::Menu* range_marker_menu; @@ -1514,6 +1546,7 @@ public: Gtk::ToggleButton join_object_range_button; void mouse_mode_toggled (Editing::MouseMode m); + void mouse_mode_object_range_toggled () {} bool ignore_mouse_mode_toggle; Gtk::ToggleButton internal_edit_button; @@ -1557,10 +1590,8 @@ public: Glib::RefPtr zoom_focus_action (Editing::ZoomFocus); - Gtk::HBox zoom_box; - Gtk::HBox track_zoom_box; - Gtk::VBox zoom_vbox; - + Gtk::HBox _zoom_box; + Gtkmm2ext::TearOff* _zoom_tearoff; void zoom_adjustment_changed(); void setup_toolbar (); @@ -1629,7 +1660,7 @@ public: /* object rubberband select process */ - bool select_all_within (nframes64_t, nframes64_t, double, double, TrackViewList const &, Selection::Operation op); + bool select_all_within (nframes64_t, nframes64_t, double, double, TrackViewList const &, Selection::Operation, bool); ArdourCanvas::SimpleRect *rubberband_rect; @@ -1670,14 +1701,12 @@ public: bool autoscroll_canvas (); void start_canvas_autoscroll (int x, int y); void stop_canvas_autoscroll (); - void maybe_autoscroll (GdkEventMotion*, bool); - bool allow_vertical_scroll; /* trimming */ void point_trim (GdkEvent *, nframes64_t); void single_contents_trim (RegionView&, nframes64_t, bool, bool); - void single_start_trim (RegionView&, nframes64_t, bool, bool); - void single_end_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); @@ -1909,6 +1938,9 @@ public: sigc::connection step_timeout; TimeAxisView* entered_track; + /** If the mouse is over a RegionView or one of its child canvas items, this is set up + to point to the RegionView. Otherwise it is 0. + */ RegionView* entered_regionview; @@ -1975,7 +2007,7 @@ 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 (); @@ -2005,11 +2037,11 @@ public: void region_view_added (RegionView *); void update_canvas_now (); - void streamview_height_changed (); EditorGroupTabs* _group_tabs; void fit_route_group (ARDOUR::RouteGroup *); + void step_edit_status_change (bool); void start_step_editing (); void stop_step_editing (); bool check_step_edit (); @@ -2043,6 +2075,7 @@ public: friend class EditorGroupTabs; friend class EditorRoutes; + friend class RhythmFerret; }; #endif /* __ardour_editor_h__ */