#include <cmath>
-#include <gtkmm/layout.h>
#include <gtkmm/comboboxtext.h>
+#include <gtkmm/layout.h>
#include <gtkmm2ext/selector.h>
#include <gtkmm2ext/click_box.h>
#include "pbd/stateful.h"
#include "ardour/session.h"
#include "ardour/tempo.h"
-#include "ardour/stretch.h"
#include "ardour/location.h"
#include "ardour/audioregion.h"
#include "ardour/track.h"
void set_mouse_mode (Editing::MouseMode, bool force=true);
void step_mouse_mode (bool next);
Editing::MouseMode current_mouse_mode () const { return mouse_mode; }
-
- void set_midi_edit_cursor (Editing::MidiEditMode);
- void set_midi_edit_mode (Editing::MidiEditMode, bool force=true);
- Editing::MidiEditMode current_midi_edit_mode () const { return midi_edit_mode; }
+ Editing::MidiEditMode current_midi_edit_mode () const;
+
+ bool internal_editing() const { return _internal_editing ; }
+ void set_internal_edit (bool yn);
#ifdef WITH_CMT
void add_imageframe_time_axis(const std::string & track_name, void*) ;
- void add_imageframe_marker_time_axis(const std::string & track_name, TimeAxisViewPtr marked_track, void*) ;
+ void add_imageframe_marker_time_axis(const std::string & track_name, TimeAxisView* marked_track, void*) ;
void connect_to_image_compositor() ;
void scroll_timeaxis_to_imageframe_item(const TimeAxisViewItem* item) ;
#endif
- TimeAxisViewPtr get_named_time_axis(const std::string & name) ;
- void foreach_time_axis_view (sigc::slot<void,TimeAxisViewPtr>);
- void add_to_idle_resize (TimeAxisViewPtr, int32_t);
+ TimeAxisView* get_named_time_axis(const std::string & name) ;
+ void foreach_time_axis_view (sigc::slot<void,TimeAxisView&>);
+ void add_to_idle_resize (TimeAxisView*, int32_t);
- RouteTimeAxisViewPtr get_route_view_by_id (PBD::ID& id);
+ RouteTimeAxisView* get_route_view_by_id (PBD::ID& id);
void consider_auditioning (boost::shared_ptr<ARDOUR::Region>);
void hide_a_region (boost::shared_ptr<ARDOUR::Region>);
Selection& get_selection() const { return *selection; }
Selection& get_cut_buffer() const { return *cut_buffer; }
- bool extend_selection_to_track (TimeAxisViewPtr);
+ bool extend_selection_to_track (TimeAxisView&);
void play_selection ();
void select_all_in_track (Selection::Operation op);
PlaylistSelector& playlist_selector() const;
void clear_playlist (boost::shared_ptr<ARDOUR::Playlist>);
- void new_playlists (boost::weak_ptr<TimeAxisView>);
- void copy_playlists (boost::weak_ptr<TimeAxisView>);
- void clear_playlists (boost::weak_ptr<TimeAxisView>);
+ void new_playlists (TimeAxisView* v);
+ void copy_playlists (TimeAxisView* v);
+ void clear_playlists (TimeAxisView* v);
- TrackViewList* get_valid_views (TimeAxisViewPtr, ARDOUR::RouteGroup* grp = 0);
+ TrackViewList* get_valid_views (TimeAxisView*, ARDOUR::RouteGroup* grp = 0);
void get_onscreen_tracks (TrackViewList&);
Width editor_mixer_strip_width;
void show_editor_mixer (bool yn);
void create_editor_mixer ();
void show_editor_list (bool yn);
- void set_selected_mixer_strip (TimeAxisViewPtr);
- void hide_track_in_display (TimeAxisViewPtr tv, bool temporary = false);
+ void set_selected_mixer_strip (TimeAxisView&);
+ void hide_track_in_display (TimeAxisView& tv, bool temporary = false);
/* nudge is initiated by transport controls owned by ARDOUR_UI */
PlaylistSelector* _playlist_selector;
- typedef std::pair<TimeAxisViewPtr,XMLNode*> TAVState;
+ typedef std::pair<TimeAxisView*,XMLNode*> TAVState;
struct VisualState {
double y_position;
void post_zoom ();
Editing::MouseMode mouse_mode;
- Editing::MidiEditMode midi_edit_mode;
-
+ bool _internal_editing;
+
int post_maximal_editor_width;
int post_maximal_pane_position;
int pre_maximal_pane_position;
void update_cd_marker_display ();
void ensure_cd_marker_updated (LocationMarkers * lam, ARDOUR::Location * location);
- TimeAxisViewPtr clicked_axisview;
- RouteTimeAxisViewPtr clicked_routeview;
+ TimeAxisView* clicked_axisview;
+ RouteTimeAxisView* clicked_routeview;
/** The last RegionView that was clicked on, or 0 if the last click was not
* on a RegionView. This is set up by the canvas event handlers in
* editor_canvas_events.cc
void sort_track_selection (TrackSelection* sel = 0);
- void get_relevant_tracks (std::set<RouteTimeAxisViewPtr>& relevant_tracks) const;
- void get_equivalent_tracks (RouteTimeAxisViewPtr, std::set<RouteTimeAxisViewPtr> &, ARDOUR::RouteGroup::Property) const;
+ void get_relevant_tracks (std::set<RouteTimeAxisView*>& relevant_tracks) const;
+ void get_equivalent_tracks (RouteTimeAxisView*, std::set<RouteTimeAxisView*> &, ARDOUR::RouteGroup::Property) const;
void get_equivalent_regions (RegionView* rv, std::vector<RegionView*> &, ARDOUR::RouteGroup::Property) const;
RegionSelection get_equivalent_regions (RegionSelection &, ARDOUR::RouteGroup::Property) const;
- void mapover_tracks (sigc::slot<void,RouteTimeAxisViewPtr,uint32_t> sl, TimeAxisViewPtr, ARDOUR::RouteGroup::Property) const;
+ void mapover_tracks (sigc::slot<void,RouteTimeAxisView&,uint32_t> sl, TimeAxisView*, ARDOUR::RouteGroup::Property) const;
/* functions to be passed to mapover_tracks(), possibly with sigc::bind()-supplied arguments */
- void mapped_get_equivalent_regions (RouteTimeAxisViewPtr, uint32_t, RegionView *, std::vector<RegionView*>*) const;
- void mapped_use_new_playlist (RouteTimeAxisViewPtr, uint32_t, std::vector<boost::shared_ptr<ARDOUR::Playlist> > const &);
- void mapped_use_copy_playlist (RouteTimeAxisViewPtr, uint32_t, std::vector<boost::shared_ptr<ARDOUR::Playlist> > const &);
- void mapped_clear_playlist (RouteTimeAxisViewPtr, uint32_t);
+ void mapped_get_equivalent_regions (RouteTimeAxisView&, uint32_t, RegionView *, std::vector<RegionView*>*) const;
+ void mapped_use_new_playlist (RouteTimeAxisView&, uint32_t, std::vector<boost::shared_ptr<ARDOUR::Playlist> > const &);
+ void mapped_use_copy_playlist (RouteTimeAxisView&, uint32_t, std::vector<boost::shared_ptr<ARDOUR::Playlist> > const &);
+ void mapped_clear_playlist (RouteTimeAxisView&, uint32_t);
/* end */
void catch_vanishing_regionview (RegionView *);
- void set_selected_track (TimeAxisViewPtr, Selection::Operation op = Selection::Set, bool no_remove=false);
+ void set_selected_track (TimeAxisView&, Selection::Operation op = Selection::Set, bool no_remove=false);
void select_all_tracks ();
bool set_selected_control_point_from_click (Selection::Operation op = Selection::Set, bool no_remove=false);
void add_selection_context_items (Gtk::Menu_Helpers::MenuList&);
void handle_new_route (ARDOUR::RouteList&);
- void remove_route (TimeAxisViewPtr);
+ void remove_route (TimeAxisView *);
bool route_removal;
Gtk::HBox global_hpacker;
void select_all_selectables_between (bool within);
void select_range_between ();
- boost::shared_ptr<ARDOUR::Region> find_next_region (nframes64_t, ARDOUR::RegionPoint, int32_t dir, TrackViewList&, TimeAxisViewPtr * = 0);
+ boost::shared_ptr<ARDOUR::Region> 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&);
std::vector<nframes64_t> region_boundary_cache;
/* track views */
TrackViewList track_views;
- std::pair<TimeAxisViewPtr, ARDOUR::layer_t> trackview_by_y_position (double);
+ std::pair<TimeAxisView*, ARDOUR::layer_t> trackview_by_y_position (double);
+ TimeAxisView* axis_view_from_route (ARDOUR::Route *) const;
TrackSelection axis_views_from_routes (std::list<ARDOUR::Route *>) const;
+ TrackSelection get_tracks_for_range_action () const;
+
static Gdk::Cursor* cross_hair_cursor;
static Gdk::Cursor* trimmer_cursor;
static Gdk::Cursor* selector_cursor;
bool typed_event (ArdourCanvas::Item*, GdkEvent*, ItemType);
bool button_press_handler (ArdourCanvas::Item*, GdkEvent*, ItemType);
+ bool button_press_handler_1 (ArdourCanvas::Item *, GdkEvent *, ItemType);
+ bool button_press_handler_2 (ArdourCanvas::Item *, GdkEvent *, ItemType);
bool button_release_handler (ArdourCanvas::Item*, GdkEvent*, ItemType);
bool motion_handler (ArdourCanvas::Item*, GdkEvent*, bool from_autoscroll = false);
bool enter_handler (ArdourCanvas::Item*, GdkEvent*, ItemType);
void cut_copy_points (Editing::CutCopyOp);
void cut_copy_regions (Editing::CutCopyOp, RegionSelection&);
void cut_copy_ranges (Editing::CutCopyOp);
+ void cut_copy_midi (Editing::CutCopyOp);
void mouse_paste ();
void paste_internal (nframes64_t position, float times);
bool have_pending_keyboard_selection;
nframes64_t pending_keyboard_selection_start;
- boost::shared_ptr<ARDOUR::Region> select_region_for_operation (int dir, TimeAxisViewPtr *tv);
+ boost::shared_ptr<ARDOUR::Region> select_region_for_operation (int dir, TimeAxisView **tv);
void extend_selection_to_end_of_region (bool next);
void extend_selection_to_start_of_region (bool previous);
bool canvas_region_view_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_stream_view_event (GdkEvent* event,ArdourCanvas::Item*, boost::weak_ptr<TimeAxisView>);
+ 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*);
bool canvas_tempo_marker_event (GdkEvent* event,ArdourCanvas::Item*, TempoMarker*);
bool canvas_meter_marker_event (GdkEvent* event,ArdourCanvas::Item*, MeterMarker*);
- bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, boost::weak_ptr<AutomationTimeAxisView>);
+ bool canvas_automation_track_event(GdkEvent* event, ArdourCanvas::Item*, AutomationTimeAxisView*) ;
bool canvas_tempo_bar_event (GdkEvent* event, ArdourCanvas::Item*);
bool canvas_meter_bar_event (GdkEvent* event, ArdourCanvas::Item*);
Gtk::HBox mouse_mode_button_box;
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 mouse_note_button;
- GroupedButtons *mouse_mode_button_set;
+ 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;
+
void mouse_mode_toggled (Editing::MouseMode m);
bool ignore_mouse_mode_toggle;
+ Gtk::ToggleButton internal_edit_button;
+ void toggle_internal_editing ();
+
gint mouse_select_button_release (GdkEventButton*);
Gtk::VBox automation_box;
/* midi toolbar */
- Gtk::HBox midi_tool_button_box;
- Gtk::ToggleButton midi_tool_pencil_button;
- Gtk::ToggleButton midi_tool_select_button;
- Gtk::ToggleButton midi_tool_resize_button;
- Gtk::ToggleButton midi_tool_erase_button;
+ Gtk::HBox panic_box;
Gtk::Button midi_panic_button;
Gtk::ToggleButton midi_sound_notes;
- GroupedButtons *midi_tool_button_set;
- void midi_edit_mode_toggled (Editing::MidiEditMode m);
void midi_panic_button_pressed ();
bool sound_notes () const { return midi_sound_notes.get_active(); }
- bool ignore_midi_edit_mode_toggle;
-
- Gtkmm2ext::TearOff* midi_tools_tearoff;
- Gtk::HBox midi_toolbar_hbox;
- Gtk::EventBox midi_toolbar_base;
- Gtk::Frame midi_toolbar_frame;
-
void setup_midi_toolbar ();
/* selection process */
#ifdef WITH_CMT
void handle_new_imageframe_time_axis_view(const std::string & track_name, void* src) ;
- void handle_new_imageframe_marker_time_axis_view(const std::string & track_name, TimeAxisViewPtr marked_track) ;
+ void handle_new_imageframe_marker_time_axis_view(const std::string & track_name, TimeAxisView* marked_track) ;
void start_imageframe_grab(ArdourCanvas::Item*, GdkEvent*) ;
void start_markerview_grab(ArdourCanvas::Item*, GdkEvent*) ;
/* tracking step changes of track height */
- TimeAxisViewPtr current_stepping_trackview;
+ TimeAxisView* current_stepping_trackview;
ARDOUR::microseconds_t last_track_height_step_timestamp;
gint track_height_step_timeout();
sigc::connection step_timeout;
- TimeAxisViewPtr entered_track;
+ TimeAxisView* entered_track;
RegionView* entered_regionview;
bool clear_entered_track;
bool left_track_canvas (GdkEventCrossing*);
bool entered_track_canvas (GdkEventCrossing*);
- void set_entered_track (TimeAxisViewPtr);
+ void set_entered_track (TimeAxisView*);
void set_entered_regionview (RegionView*);
- void ensure_track_visible (TimeAxisViewPtr);
+ void ensure_track_visible (TimeAxisView*);
gint left_automation_track ();
bool _new_regionviews_show_envelope;
bool idle_resize();
friend gboolean _idle_resize (gpointer);
int32_t _pending_resize_amount;
- TimeAxisViewPtr _pending_resize_view;
+ TimeAxisView* _pending_resize_view;
void visible_order_range (int*, int*) const;
EditorGroupTabs* _group_tabs;
void fit_route_group (ARDOUR::RouteGroup *);
- TimeAxisViewPtr find_time_axis (TimeAxisView *);
-
friend class Drag;
friend class RegionDrag;
friend class RegionMoveDrag;