X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor.h;h=2ff5d24999a5c8e8df0a4a58b3caed06c1e3b0f4;hb=d0227fe5b7c30271cd2950a71d429cf03b0db2db;hp=3c3f56d2f121ca2084eff107eb2f28068afcb103;hpb=8fc660e76e50920d744942c241275849b7b9720e;p=ardour.git diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h index 3c3f56d2f1..2ff5d24999 100644 --- a/gtk2_ardour/editor.h +++ b/gtk2_ardour/editor.h @@ -39,9 +39,10 @@ #include #include -#include -#include -#include +#include "gtkmm2ext/selector.h" +#include "gtkmm2ext/click_box.h" +#include "gtkmm2ext/dndtreeview.h" +#include "gtkmm2ext/stateful_button.h" #include "pbd/stateful.h" #include "pbd/signals.h" @@ -291,6 +292,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD /* export */ void export_audio (); + void stem_export (); void export_selection (); void export_range (); void export_region (); @@ -322,6 +324,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 mixer_strip_width_changed (); void hide_track_in_display (TimeAxisView* tv, bool temporary = false); /* nudge is initiated by transport controls owned by ARDOUR_UI */ @@ -343,7 +346,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void toggle_stationary_playhead (); bool stationary_playhead() const { return _stationary_playhead; } - void set_follow_playhead (bool yn); + void set_follow_playhead (bool yn, bool catch_up = true); void toggle_follow_playhead (); bool follow_playhead() const { return _follow_playhead; } bool dragging_playhead () const { return _dragging_playhead; } @@ -427,6 +430,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void snap_to (framepos_t& first, framepos_t& last, int32_t direction = 0, bool for_mark = false); void begin_reversible_command (std::string cmd_name); + void begin_reversible_command (GQuark); void commit_reversible_command (); DragManager* drags () const { @@ -519,7 +523,11 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD int pre_maximal_editor_height; void pane_allocation_handler (Gtk::Allocation&, Gtk::Paned*); - Gtk::Notebook the_notebook; + Gtk::Notebook _the_notebook; + bool _notebook_shrunk; + void add_notebook_page (std::string const &, Gtk::Widget &); + bool notebook_tab_clicked (GdkEventButton *, Gtk::Widget *); + Gtk::HPaned edit_pane; Gtk::VPaned editor_summary_pane; @@ -632,6 +640,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void set_selected_track (TimeAxisView&, Selection::Operation op = Selection::Set, bool no_remove=false); void select_all_tracks (); + void select_all_internal_edit (Selection::Operation); 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); @@ -663,7 +672,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Gtk::Menu* build_track_selection_context_menu (); void add_dstream_context_items (Gtk::Menu_Helpers::MenuList&); void add_bus_context_items (Gtk::Menu_Helpers::MenuList&); - void add_region_context_items (Gtk::Menu_Helpers::MenuList&, bool); + void add_region_context_items (Gtk::Menu_Helpers::MenuList&, boost::shared_ptr); void add_crossfade_context_items (AudioStreamView*, boost::shared_ptr, Gtk::Menu_Helpers::MenuList&, bool many); void add_selection_context_items (Gtk::Menu_Helpers::MenuList&); Gtk::MenuItem* _popup_region_menu_item; @@ -740,7 +749,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD enum RulerType { ruler_metric_timecode = 0, ruler_metric_bbt = 1, - ruler_metric_frames = 2, + ruler_metric_samples = 2, ruler_metric_minsec = 3, ruler_time_tempo = 4, @@ -787,7 +796,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD static gint _metric_get_timecode (GtkCustomRulerMark **, gdouble, gdouble, gint); static gint _metric_get_bbt (GtkCustomRulerMark **, gdouble, gdouble, gint); - static gint _metric_get_frames (GtkCustomRulerMark **, gdouble, gdouble, gint); + static gint _metric_get_samples (GtkCustomRulerMark **, gdouble, gdouble, gint); static gint _metric_get_minsec (GtkCustomRulerMark **, gdouble, gdouble, gint); enum MinsecRulerScale { @@ -799,10 +808,10 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD MinsecRulerScale minsec_ruler_scale; - nframes_t minsec_mark_interval; + framecnt_t minsec_mark_interval; gint minsec_mark_modulo; gint minsec_nmarks; - void set_minsec_ruler_scale (gdouble lower, gdouble upper); + void set_minsec_ruler_scale (framepos_t, framepos_t); enum TimecodeRulerScale { timecode_show_bits, @@ -814,10 +823,12 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD TimecodeRulerScale timecode_ruler_scale; - nframes_t timecode_mark_interval; gint timecode_mark_modulo; gint timecode_nmarks; - void set_timecode_ruler_scale (gdouble lower, gdouble upper); + void set_timecode_ruler_scale (framepos_t, framepos_t); + + framecnt_t _samples_ruler_interval; + void set_samples_ruler_scale (framepos_t, framepos_t); enum BBTRulerScale { bbt_over, @@ -841,17 +852,17 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD gint metric_get_timecode (GtkCustomRulerMark **, gdouble, gdouble, gint); gint metric_get_bbt (GtkCustomRulerMark **, gdouble, gdouble, gint); - gint metric_get_frames (GtkCustomRulerMark **, gdouble, gdouble, gint); + gint metric_get_samples (GtkCustomRulerMark **, gdouble, gdouble, gint); gint metric_get_minsec (GtkCustomRulerMark **, gdouble, gdouble, gint); Gtk::Widget *_ruler_separator; GtkWidget *_timecode_ruler; GtkWidget *_bbt_ruler; - GtkWidget *_frames_ruler; + GtkWidget *_samples_ruler; GtkWidget *_minsec_ruler; Gtk::Widget *timecode_ruler; Gtk::Widget *bbt_ruler; - Gtk::Widget *frames_ruler; + Gtk::Widget *samples_ruler; Gtk::Widget *minsec_ruler; static Editor *ruler_editor; @@ -871,7 +882,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Gtk::Label minsec_label; Gtk::Label bbt_label; Gtk::Label timecode_label; - Gtk::Label frame_label; + Gtk::Label samples_label; Gtk::Label tempo_label; Gtk::Label meter_label; Gtk::Label mark_label; @@ -924,16 +935,21 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Gtk::Table edit_packer; Gtk::Adjustment vertical_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; - - bool horizontal_scroll_left_press (); - void horizontal_scroll_left_release (); - bool horizontal_scroll_right_press (); - void horizontal_scroll_right_release (); + void reset_controls_layout_width (); + void reset_controls_layout_height (int32_t height); + + enum Direction { + LEFT, + RIGHT, + UP, + DOWN + }; + + bool scroll_press (Direction); + void scroll_release (); sigc::connection _scroll_connection; int _scroll_callbacks; @@ -1061,7 +1077,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void lower_region_to_bottom (); void split_regions_at (framepos_t, RegionSelection&); void split_region_at_transients (); - void split_region_at_points (boost::shared_ptr, ARDOUR::AnalysisFeatureList&, bool can_ferret); + void split_region_at_points (boost::shared_ptr, ARDOUR::AnalysisFeatureList&, bool can_ferret, bool select_new = false); void crop_region_to_selection (); void crop_region_to (framepos_t start, framepos_t end); void set_sync_point (framepos_t, const RegionSelection&); @@ -1090,6 +1106,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void reset_region_scale_amplitude (); void adjust_region_gain (bool up); void quantize_region (); + void insert_patch_change (); void fork_region (); void do_insert_time (); @@ -1121,8 +1138,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void snap_regions_to_grid (); void close_region_gaps (); - int get_prefix (float&, bool&); - void keyboard_paste (); void region_from_selection (); @@ -1144,9 +1159,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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 amplitude_zoom (gdouble scale); - void amplitude_zoom_step (bool in); - void insert_region_list_drag (boost::shared_ptr, int x, int y); void insert_region_list_selection (float times); @@ -1208,25 +1220,15 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void move_to_start (); void move_to_end (); - void goto_frame (); void center_playhead (); void center_edit_point (); - void edit_cursor_backward (); - void edit_cursor_forward (); void playhead_forward_to_grid (); void playhead_backward_to_grid (); - void playhead_backward (); - void playhead_forward (); 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 delete_sample_forward (); - void delete_sample_backward (); - void delete_screen (); - void search_backwards (); - void search_forwards (); void set_mark (); void clear_markers (); void clear_ranges (); @@ -1373,6 +1375,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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*); + + PBD::Signal0 EditorFreeze; + PBD::Signal0 EditorThaw; private: friend class DragManager; @@ -1471,15 +1476,14 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD 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, ARDOUR::Location *); + void build_range_marker_menu (bool); + void build_marker_menu (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* tempo_or_meter_marker_menu; Gtk::Menu* marker_menu; - Gtk::Menu* session_range_marker_menu; Gtk::Menu* range_marker_menu; Gtk::Menu* transport_marker_menu; Gtk::Menu* new_transport_marker_menu; @@ -1492,7 +1496,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void remove_metric_marks (); void draw_metric_marks (const ARDOUR::Metrics& metrics); - void compute_current_bbt_points (nframes_t left, nframes_t right); + void compute_current_bbt_points (framepos_t left, framepos_t right); void tempo_map_changed (const PBD::PropertyChange&); void redisplay_tempo (bool immediate_redraw); @@ -1520,19 +1524,19 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Gtk::Label toolbar_selection_cursor_label; 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 join_object_range_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; void mouse_mode_toggled (Editing::MouseMode m); void mouse_mode_object_range_toggled () {} bool ignore_mouse_mode_toggle; - Gtk::ToggleButton internal_edit_button; + Gtkmm2ext::StatefulToggleButton internal_edit_button; void toggle_internal_editing (); gint mouse_select_button_release (GdkEventButton*); @@ -1543,6 +1547,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Gtk::ComboBoxText edit_mode_selector; Gtk::VBox edit_mode_box; + std::vector edit_mode_strings; void set_edit_mode (ARDOUR::EditMode); void cycle_edit_mode (); @@ -1585,7 +1590,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Gtk::HBox toolbar_hbox; Gtk::EventBox toolbar_base; Gtk::Frame toolbar_frame; - + Gtk::Viewport _toolbar_viewport; + /* midi toolbar */ Gtk::HBox panic_box; @@ -1647,7 +1653,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD /* object rubberband select process */ - bool select_all_within (framepos_t, framepos_t, double, double, TrackViewList const &, Selection::Operation, bool); + void select_all_within (framepos_t, framepos_t, double, double, TrackViewList const &, Selection::Operation, bool); ArdourCanvas::SimpleRect *rubberband_rect; @@ -1788,11 +1794,6 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void freeze_route (); void unfreeze_route (); - /* route-group solo + mute */ - - void set_route_group_solo (ARDOUR::Route&, bool); - void set_route_group_mute (ARDOUR::Route&, bool); - /* duplication */ void duplicate_dialog (bool with_dialog); @@ -1969,6 +1970,7 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void get_regions_at (RegionSelection&, framepos_t where, const TrackViewList& ts) const; void get_regions_after (RegionSelection&, framepos_t where, const TrackViewList& ts) const; + RegionSelection get_regions_from_selection (); RegionSelection get_regions_from_selection_and_edit_point (); RegionSelection get_regions_from_selection_and_entered (); @@ -2014,7 +2016,9 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD Gtk::HBox _summary_hbox; EditorSummary* _summary; + void region_view_added (RegionView *); + void region_view_removed (); void update_canvas_now (); @@ -2052,6 +2056,8 @@ class Editor : public PublicEditor, public PBD::ScopedConnectionList, public ARD void set_canvas_cursor_for_region_view (double, RegionView *); MouseCursors* _cursors; + + void resize_text_widgets (); friend class Drag; friend class RegionDrag;