#include "gtkmm2ext/click_box.h"
#include "gtkmm2ext/dndtreeview.h"
#include "gtkmm2ext/stateful_button.h"
#include "gtkmm2ext/click_box.h"
#include "gtkmm2ext/dndtreeview.h"
#include "gtkmm2ext/stateful_button.h"
#include "ardour/import_status.h"
#include "ardour/tempo.h"
#include "ardour/location.h"
#include "ardour/import_status.h"
#include "ardour/tempo.h"
#include "ardour/location.h"
void foreach_time_axis_view (sigc::slot<void,TimeAxisView&>);
void add_to_idle_resize (TimeAxisView*, int32_t);
void foreach_time_axis_view (sigc::slot<void,TimeAxisView&>);
void add_to_idle_resize (TimeAxisView*, int32_t);
void consider_auditioning (boost::shared_ptr<ARDOUR::Region>);
void hide_a_region (boost::shared_ptr<ARDOUR::Region>);
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; }
Selection& get_selection() const { return *selection; }
Selection& get_cut_buffer() const { return *cut_buffer; }
void show_editor_list (bool yn);
void set_selected_mixer_strip (TimeAxisView&);
void mixer_strip_width_changed ();
void show_editor_list (bool yn);
void set_selected_mixer_strip (TimeAxisView&);
void mixer_strip_width_changed ();
- void set_stationary_playhead (bool yn);
- void toggle_stationary_playhead ();
- bool stationary_playhead() const { return _stationary_playhead; }
-
+ void set_stationary_playhead (bool yn);
+ void toggle_stationary_playhead ();
+ bool stationary_playhead() const { return _stationary_playhead; }
+
void set_follow_playhead (bool yn, bool catch_up = true);
void toggle_follow_playhead ();
bool follow_playhead() const { return _follow_playhead; }
void set_follow_playhead (bool yn, bool catch_up = true);
void toggle_follow_playhead ();
bool follow_playhead() const { return _follow_playhead; }
void center_screen (framepos_t);
TrackViewList axis_views_from_routes (boost::shared_ptr<ARDOUR::RouteList>) const;
void center_screen (framepos_t);
TrackViewList axis_views_from_routes (boost::shared_ptr<ARDOUR::RouteList>) const;
-
- Gdk::Cursor* get_canvas_cursor () const { return current_canvas_cursor; }
- void set_canvas_cursor (Gdk::Cursor*, bool save=false);
- void set_current_trimmable (boost::shared_ptr<ARDOUR::Trimmable>);
- void set_current_movable (boost::shared_ptr<ARDOUR::Movable>);
+
+ Gdk::Cursor* get_canvas_cursor () const { return current_canvas_cursor; }
+ void set_canvas_cursor (Gdk::Cursor*, bool save=false);
+ void set_current_trimmable (boost::shared_ptr<ARDOUR::Trimmable>);
+ void set_current_movable (boost::shared_ptr<ARDOUR::Movable>);
bool _notebook_shrunk;
void add_notebook_page (std::string const &, Gtk::Widget &);
bool notebook_tab_clicked (GdkEventButton *, Gtk::Widget *);
bool _notebook_shrunk;
void add_notebook_page (std::string const &, Gtk::Widget &);
bool notebook_tab_clicked (GdkEventButton *, Gtk::Widget *);
void location_changed (ARDOUR::Location *);
void location_flags_changed (ARDOUR::Location *, void *);
void refresh_location_display ();
void location_changed (ARDOUR::Location *);
void location_flags_changed (ARDOUR::Location *, void *);
void refresh_location_display ();
void refresh_location_display_internal (ARDOUR::Locations::LocationList&);
void add_new_location (ARDOUR::Location *);
void refresh_location_display_internal (ARDOUR::Locations::LocationList&);
void add_new_location (ARDOUR::Location *);
void location_gone (ARDOUR::Location *);
void remove_marker (ArdourCanvas::Item&, GdkEvent*);
gint really_remove_marker (ARDOUR::Location* loc);
void location_gone (ARDOUR::Location *);
void remove_marker (ArdourCanvas::Item&, GdkEvent*);
gint really_remove_marker (ARDOUR::Location* loc);
void set_name (const std::string&);
void set_position (framepos_t start, framepos_t end = 0);
void set_color_rgba (uint32_t);
void set_name (const std::string&);
void set_position (framepos_t start, framepos_t end = 0);
void set_color_rgba (uint32_t);
LocationMarkers *find_location_markers (ARDOUR::Location *) const;
ARDOUR::Location* find_location_from_marker (Marker *, bool& is_start) const;
LocationMarkers *find_location_markers (ARDOUR::Location *) const;
ARDOUR::Location* find_location_from_marker (Marker *, bool& is_start) const;
void get_equivalent_regions (RegionView* rv, std::vector<RegionView*> &, PBD::PropertyID) const;
RegionSelection get_equivalent_regions (RegionSelection &, PBD::PropertyID) const;
void mapover_tracks (sigc::slot<void,RouteTimeAxisView&,uint32_t> sl, TimeAxisView*, PBD::PropertyID) const;
void get_equivalent_regions (RegionView* rv, std::vector<RegionView*> &, PBD::PropertyID) const;
RegionSelection get_equivalent_regions (RegionSelection &, PBD::PropertyID) const;
void mapover_tracks (sigc::slot<void,RouteTimeAxisView&,uint32_t> sl, TimeAxisView*, PBD::PropertyID) const;
void set_selected_track (TimeAxisView&, Selection::Operation op = Selection::Set, bool no_remove=false);
void select_all_tracks ();
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 set_selected_track_from_click (bool press, Selection::Operation op = Selection::Set, bool no_remove=false);
bool set_selected_control_point_from_click (Selection::Operation op = Selection::Set, bool no_remove=false);
void set_selected_track_from_click (bool press, Selection::Operation op = Selection::Set, bool no_remove=false);
void add_selection_context_items (Gtk::Menu_Helpers::MenuList&);
Gtk::MenuItem* _popup_region_menu_item;
void add_selection_context_items (Gtk::Menu_Helpers::MenuList&);
Gtk::MenuItem* _popup_region_menu_item;
- void set_verbose_canvas_cursor (const std::string &, double x, double y);
- void set_verbose_canvas_cursor_text (const std::string &);
- void show_verbose_canvas_cursor();
-
- bool verbose_cursor_on; // so far unused
-
Gtk::EventBox time_canvas_event_box;
Gtk::EventBox track_canvas_event_box;
Gtk::EventBox time_button_event_box;
Gtk::EventBox time_canvas_event_box;
Gtk::EventBox track_canvas_event_box;
Gtk::EventBox time_button_event_box;
- gint ruler_button_press (GdkEventButton*);
- gint ruler_button_release (GdkEventButton*);
- gint ruler_mouse_motion (GdkEventMotion*);
+ bool ruler_button_press (GdkEventButton*);
+ bool ruler_button_release (GdkEventButton*);
+ bool ruler_mouse_motion (GdkEventMotion*);
void set_ruler_visible (RulerType, bool);
void toggle_ruler_visibility (RulerType rt);
void ruler_toggled (int);
void set_ruler_visible (RulerType, bool);
void toggle_ruler_visibility (RulerType rt);
void ruler_toggled (int);
void select_range_between ();
boost::shared_ptr<ARDOUR::Region> find_next_region (ARDOUR::framepos_t, ARDOUR::RegionPoint, int32_t dir, TrackViewList&, TimeAxisView ** = 0);
void select_range_between ();
boost::shared_ptr<ARDOUR::Region> 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&);
+ ARDOUR::framepos_t find_next_region_boundary (ARDOUR::framepos_t, int32_t dir, const TrackViewList&);
- bool horizontal_scroll_left_press ();
- void horizontal_scroll_left_release ();
- bool horizontal_scroll_right_press ();
- void horizontal_scroll_right_release ();
+ bool scroll_press (Direction);
+ void scroll_release ();
void access_action (std::string,std::string);
bool deferred_control_scroll (framepos_t);
sigc::connection control_scroll_connection;
void access_action (std::string,std::string);
bool deferred_control_scroll (framepos_t);
sigc::connection control_scroll_connection;
- Gdk::Cursor* pre_press_cursor;
- boost::weak_ptr<ARDOUR::Trimmable> _trimmable;
- boost::weak_ptr<ARDOUR::Movable> _movable;
+ Gdk::Cursor* pre_press_cursor;
+ boost::weak_ptr<ARDOUR::Trimmable> _trimmable;
+ boost::weak_ptr<ARDOUR::Movable> _movable;
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 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);
bool leave_handler (ArdourCanvas::Item*, GdkEvent*, ItemType);
bool motion_handler (ArdourCanvas::Item*, GdkEvent*, bool from_autoscroll = false);
bool enter_handler (ArdourCanvas::Item*, GdkEvent*, ItemType);
bool leave_handler (ArdourCanvas::Item*, GdkEvent*, ItemType);
+ bool key_press_handler (ArdourCanvas::Item*, GdkEvent*, ItemType);
+ bool key_release_handler (ArdourCanvas::Item*, GdkEvent*, ItemType);
+
+ Gtkmm2ext::Bindings* button_bindings;
+ XMLNode* button_settings () const;
void toggle_region_lock ();
void toggle_opaque_region ();
void toggle_record_enable ();
void toggle_region_lock ();
void toggle_opaque_region ();
void toggle_record_enable ();
void lower_region ();
void lower_region_to_bottom ();
void split_regions_at (framepos_t, RegionSelection&);
void lower_region ();
void lower_region_to_bottom ();
void split_regions_at (framepos_t, RegionSelection&);
void duplicate_some_regions (RegionSelection&, float times);
void duplicate_selection (float times);
void region_fill_selection ();
void duplicate_some_regions (RegionSelection&, float times);
void duplicate_selection (float times);
void region_fill_selection ();
void region_fill_track ();
void audition_playlist_region_standalone (boost::shared_ptr<ARDOUR::Region>);
void region_fill_track ();
void audition_playlist_region_standalone (boost::shared_ptr<ARDOUR::Region>);
- void insert_time (framepos_t, framecnt_t, Editing::InsertTimeOption, bool, bool, bool, bool, bool);
+ void insert_time (framepos_t, framecnt_t, Editing::InsertTimeOption, bool, bool, bool, bool, bool, bool);
void place_transient ();
void remove_transient (ArdourCanvas::Item* item);
void snap_regions_to_grid ();
void close_region_gaps ();
void place_transient ();
void remove_transient (ArdourCanvas::Item* item);
void snap_regions_to_grid ();
void close_region_gaps ();
void temporal_zoom_by_frame (framepos_t start, framepos_t end, const std::string & op);
void temporal_zoom_to_frame (bool coarser, framepos_t frame);
void temporal_zoom_by_frame (framepos_t start, framepos_t end, const std::string & op);
void temporal_zoom_to_frame (bool coarser, framepos_t frame);
void insert_region_list_drag (boost::shared_ptr<ARDOUR::Region>, int x, int y);
void insert_region_list_selection (float times);
void insert_region_list_drag (boost::shared_ptr<ARDOUR::Region>, int x, int y);
void insert_region_list_selection (float times);
void scroll_playhead (bool forward);
void scroll_backward (float pages=0.8f);
void scroll_forward (float pages=0.8f);
void scroll_tracks_down ();
void scroll_tracks_up ();
void scroll_playhead (bool forward);
void scroll_backward (float pages=0.8f);
void scroll_forward (float pages=0.8f);
void scroll_tracks_down ();
void scroll_tracks_up ();
- 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);
+ void move_range_selection_start_or_end_to_region_boundary (bool, bool);
- void remove_gain_control_point (ArdourCanvas::Item*, GdkEvent*);
- void remove_control_point (ArdourCanvas::Item*, GdkEvent*);
+ bool can_remove_control_point (ArdourCanvas::Item *);
+ void remove_control_point (ArdourCanvas::Item *);
- void brush (framepos_t);
-
- void show_verbose_time_cursor (framepos_t frame, double offset = 0, double xpos=-1, double ypos=-1);
- void show_verbose_duration_cursor (framepos_t start, framepos_t end, double offset = 0, double xpos=-1, double ypos=-1);
- double clamp_verbose_cursor_x (double);
- double clamp_verbose_cursor_y (double);
bool canvas_markerview_item_view_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*);
bool canvas_markerview_start_handle_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*);
bool canvas_markerview_end_handle_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*);
bool canvas_markerview_item_view_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*);
bool canvas_markerview_start_handle_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*);
bool canvas_markerview_end_handle_event(GdkEvent* event, ArdourCanvas::Item*,MarkerView*);
- friend class DragManager;
- friend class EditorRouteGroups;
- friend class EditorRegions;
+ friend class DragManager;
+ friend class EditorRouteGroups;
+ friend class EditorRegions;
void new_transport_marker_menu_set_punch ();
void update_loop_range_view (bool visibility=false);
void update_punch_range_view (bool visibility=false);
void new_transport_marker_menu_set_punch ();
void update_loop_range_view (bool visibility=false);
void update_punch_range_view (bool visibility=false);
void marker_context_menu (GdkEventButton*, ArdourCanvas::Item*);
void tempo_or_meter_marker_context_menu (GdkEventButton*, ArdourCanvas::Item*);
void marker_context_menu (GdkEventButton*, ArdourCanvas::Item*);
void tempo_or_meter_marker_context_menu (GdkEventButton*, ArdourCanvas::Item*);
void build_marker_menu (ARDOUR::Location *);
void build_tempo_or_meter_marker_menu (bool);
void build_new_transport_marker_menu ();
void build_marker_menu (ARDOUR::Location *);
void build_tempo_or_meter_marker_menu (bool);
void build_new_transport_marker_menu ();
- AudioClock zoom_range_clock;
- Gtk::Button zoom_in_button;
- Gtk::Button zoom_out_button;
- Gtk::Button zoom_out_full_button;
- Gtk::Button zoom_onetoone_button;
+ AudioClock* zoom_range_clock;
+ ArdourButton zoom_in_button;
+ ArdourButton zoom_out_button;
+ ArdourButton zoom_out_full_button;
- Gtkmm2ext::StatefulToggleButton mouse_select_button;
- Gtkmm2ext::StatefulToggleButton mouse_move_button;
- Gtkmm2ext::StatefulToggleButton mouse_gain_button;
- Gtkmm2ext::StatefulToggleButton mouse_zoom_button;
- Gtkmm2ext::StatefulToggleButton mouse_timefx_button;
- Gtkmm2ext::StatefulToggleButton mouse_audition_button;
- Gtkmm2ext::StatefulToggleButton join_object_range_button;
+ ArdourButton mouse_select_button;
+ ArdourButton mouse_move_button;
+ ArdourButton mouse_gain_button;
+ ArdourButton mouse_zoom_button;
+ ArdourButton mouse_timefx_button;
+ ArdourButton mouse_audition_button;
+ ArdourButton join_object_range_button;
void mouse_mode_toggled (Editing::MouseMode m);
void mouse_mode_object_range_toggled () {}
bool ignore_mouse_mode_toggle;
void mouse_mode_toggled (Editing::MouseMode m);
void mouse_mode_object_range_toggled () {}
bool ignore_mouse_mode_toggle;
Gtk::EventBox toolbar_base;
Gtk::Frame toolbar_frame;
Gtk::Viewport _toolbar_viewport;
Gtk::EventBox toolbar_base;
Gtk::Frame toolbar_frame;
Gtk::Viewport _toolbar_viewport;
static gint _autoscroll_canvas (void *);
bool autoscroll_canvas ();
void start_canvas_autoscroll (int x, int y);
static gint _autoscroll_canvas (void *);
bool autoscroll_canvas ();
void start_canvas_autoscroll (int x, int y);
void track_canvas_drag_data_received (
const Glib::RefPtr<Gdk::DragContext>& context,
gint x,
void track_canvas_drag_data_received (
const Glib::RefPtr<Gdk::DragContext>& context,
gint x,
/* audio export */
int write_region_selection(RegionSelection&);
bool write_region (std::string path, boost::shared_ptr<ARDOUR::AudioRegion>);
/* audio export */
int write_region_selection(RegionSelection&);
bool write_region (std::string path, boost::shared_ptr<ARDOUR::AudioRegion>);
void bounce_range_selection (bool replace, bool enable_processing);
void external_edit_region ();
void bounce_range_selection (bool replace, bool enable_processing);
void external_edit_region ();
void pitch_shift_region ();
int time_fx (RegionSelection&, float val, bool pitching);
void pitch_shift_region ();
int time_fx (RegionSelection&, float val, bool pitching);
RegionSelection get_regions_from_selection ();
RegionSelection get_regions_from_selection_and_edit_point ();
RegionSelection get_regions_from_selection_and_entered ();
RegionSelection get_regions_from_selection ();
RegionSelection get_regions_from_selection_and_edit_point ();
RegionSelection get_regions_from_selection_and_entered ();
void timecode_snap_to_internal (framepos_t& first, int32_t direction = 0, bool for_mark = false);
RhythmFerret* rhythm_ferret;
void timecode_snap_to_internal (framepos_t& first, int32_t direction = 0, bool for_mark = false);
RhythmFerret* rhythm_ferret;
/** true if we've made a locate request that hasn't yet been processed */
bool _pending_locate_request;
/** 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.
/** 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.
/** Track that was the source for the last cut/copy operation. Used as a place
to paste things iff there is no selected track.
/** Track that was the source for the last cut/copy operation. Used as a place
to paste things iff there is no selected track.
Gtk::MenuItem& action_menu_item (std::string const &);
void action_pre_activated (Glib::RefPtr<Gtk::Action> const &);
Gtk::MenuItem& action_menu_item (std::string const &);
void action_pre_activated (Glib::RefPtr<Gtk::Action> const &);
- friend class TimeFXDrag;
- friend class ScrubDrag;
+ friend class EditorRubberbandSelectDrag;
+ friend class TimeFXDrag;
+ friend class ScrubDrag;
friend class SelectionDrag;
friend class RangeMarkerBarDrag;
friend class MouseZoomDrag;
friend class SelectionDrag;
friend class RangeMarkerBarDrag;
friend class MouseZoomDrag;