#include "gtkmm2ext/click_box.h"
#include "gtkmm2ext/dndtreeview.h"
#include "gtkmm2ext/stateful_button.h"
+#include "gtkmm2ext/bindings.h"
#include "pbd/stateful.h"
#include "pbd/signals.h"
#include "ardour/location.h"
#include "ardour/types.h"
-#include "audio_clock.h"
#include "gtk-custom-ruler.h"
+#include "ardour_button.h"
#include "ardour_dialog.h"
#include "public_editor.h"
#include "editing.h"
}
class AnalysisWindow;
+class AudioClock;
class AudioRegionView;
class AudioStreamView;
class AudioTimeAxisView;
class CrossfadeView;
class DragManager;
class GroupedButtons;
+class GUIObjectState;
class Marker;
class MidiRegionView;
class MixerStrip;
void foreach_time_axis_view (sigc::slot<void,TimeAxisView&>);
void add_to_idle_resize (TimeAxisView*, int32_t);
- RouteTimeAxisView* get_route_view_by_route_id (PBD::ID& id) const;
+ RouteTimeAxisView* get_route_view_by_route_id (const PBD::ID& id) const;
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; }
+ void track_mixer_selection ();
bool extend_selection_to_track (TimeAxisView&);
void show_window ();
+ void ensure_time_axis_view_is_visible (const TimeAxisView& tav);
void scroll_tracks_down_line ();
void scroll_tracks_up_line ();
typedef std::pair<TimeAxisView*,XMLNode*> TAVState;
struct VisualState {
+ VisualState();
+ ~VisualState ();
double y_position;
double frames_per_unit;
- framepos_t leftmost_frame;
+ framepos_t leftmost_frame;
Editing::ZoomFocus zoom_focus;
- std::list<TAVState> track_states;
+ GUIObjectState* gui_state;
};
std::list<VisualState*> undo_visual_stack;
Gtk::HPaned edit_pane;
Gtk::VPaned editor_summary_pane;
+ bool idle_reset_vertical_pane_position (int);
+
Gtk::EventBox meter_base;
Gtk::HBox meter_box;
Gtk::EventBox marker_base;
LocationMarkers *find_location_markers (ARDOUR::Location *) const;
ARDOUR::Location* find_location_from_marker (Marker *, bool& is_start) const;
+ Marker* find_marker_from_location_id (PBD::ID const &, bool) const;
Marker* entered_marker;
bool _show_marker_lines;
CrossfadeView* clicked_crossfadeview;
ControlPoint* clicked_control_point;
- void sort_track_selection (TrackViewList* sel = 0);
+ void sort_track_selection (TrackViewList&);
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 mapover_tracks_with_unique_playlists (sigc::slot<void,RouteTimeAxisView&,uint32_t> sl, TimeAxisView*, PBD::PropertyID) const;
/* functions to be passed to mapover_tracks(), possibly with sigc::bind()-supplied arguments */
void add_selection_context_items (Gtk::Menu_Helpers::MenuList&);
Gtk::MenuItem* _popup_region_menu_item;
+ void popup_control_point_context_menu (ArdourCanvas::Item *, GdkEvent *);
+ Gtk::Menu _control_point_context_menu;
+
void handle_new_route (ARDOUR::RouteList&);
void timeaxisview_deleted (TimeAxisView *);
Gtk::HBox edit_controls_hbox;
void control_scroll (float);
+ void control_select (uint32_t rid);
void access_action (std::string,std::string);
bool deferred_control_scroll (framepos_t);
sigc::connection control_scroll_connection;
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 register_actions ();
void register_region_actions ();
+ void load_bindings ();
+ Gtkmm2ext::ActionMap editor_action_map;
+ Gtkmm2ext::Bindings key_bindings;
+
int ensure_cursor (framepos_t* pos);
void cut_copy (Editing::CutCopyOp);
void toggle_region_lock ();
void toggle_opaque_region ();
void toggle_record_enable ();
+ void toggle_solo ();
+ void toggle_solo_isolate ();
+ void toggle_mute ();
void toggle_region_lock_style ();
void raise_region ();
void raise_region_to_top ();
void fork_region ();
void do_insert_time ();
- 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 tab_to_transient (bool forward);
void split_region ();
+ void delete_ ();
void cut ();
void copy ();
void paste (float times);
void region_view_item_click (AudioRegionView&, GdkEventButton*);
- 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 mouse_brush_insert_region (RegionView*, framepos_t pos);
friend class EditorRouteGroups;
friend class EditorRegions;
- ArdourCanvas::Item *last_item_entered;
/** true if the mouse is over a place where region trim can happen */
bool _over_region_trim_target;
void new_transport_marker_menu_popdown ();
void 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);
+ void build_range_marker_menu (bool, bool);
void build_marker_menu (ARDOUR::Location *);
void build_tempo_or_meter_marker_menu (bool);
void build_new_transport_marker_menu ();
void editor_mixer_button_toggled ();
void editor_list_button_toggled ();
- 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;
Gtk::Button tav_expand_button;
Gtk::Button tav_shrink_button;
Gtk::Label toolbar_selection_cursor_label;
Gtkmm2ext::TearOff* _mouse_mode_tearoff;
- 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;
- Gtkmm2ext::StatefulToggleButton internal_edit_button;
- void toggle_internal_editing ();
+ ArdourButton internal_edit_button;
+ void toggle_internal_editing ();
bool mouse_select_button_release (GdkEventButton*);
Gtk::VBox automation_box;
Gtk::Button automation_mode_button;
- Gtk::ToggleButton global_automation_button;
Gtk::ComboBoxText edit_mode_selector;
Gtk::VBox edit_mode_box;
/* midi toolbar */
Gtk::HBox panic_box;
- Gtk::Button midi_panic_button;
- Gtk::ToggleButton midi_sound_notes;
- void midi_panic ();
- bool sound_notes () const { return midi_sound_notes.get_active(); }
void setup_midi_toolbar ();
framecnt_t autoscroll_x_distance;
double autoscroll_y_distance;
+ bool _autoscroll_fudging;
+ int autoscroll_fudge_threshold () const;
+
static gint _autoscroll_canvas (void *);
bool autoscroll_canvas ();
void start_canvas_autoscroll (int x, int y);
int write_region_selection(RegionSelection&);
bool write_region (std::string path, boost::shared_ptr<ARDOUR::AudioRegion>);
- void bounce_region_selection ();
+ void bounce_region_selection (bool with_processing);
void bounce_range_selection (bool replace, bool enable_processing);
void external_edit_region ();
Gtk::Button nudge_backward_button;
Gtk::HBox nudge_hbox;
Gtk::VBox nudge_vbox;
- AudioClock nudge_clock;
+ AudioClock* nudge_clock;
bool nudge_forward_release (GdkEventButton*);
bool nudge_backward_release (GdkEventButton*);
MouseCursors* _cursors;
- void resize_text_widgets ();
+ void follow_mixer_selection ();
+ bool _following_mixer_selection;
friend class Drag;
friend class RegionDrag;
friend class ControlPointDrag;
friend class LineDrag;
friend class RubberbandSelectDrag;
+ friend class EditorRubberbandSelectDrag;
friend class TimeFXDrag;
friend class ScrubDrag;
friend class SelectionDrag;