X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui.h;h=d6b897a42f4e812c2c0787b0f2ddf3347011f89e;hb=e00d35f1e8f71f26e8341b3a26f91adb47b410df;hp=4227c5fb288d030e7b14ea140a68528be220f49c;hpb=33e56e58d7b60232d7024368aed4026a6f07a7d1;p=ardour.git diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 4227c5fb28..d6b897a42f 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -73,9 +73,12 @@ #include "add_route_dialog.h" #include "ardour_button.h" #include "ardour_dialog.h" +#include "ardour_spacer.h" #include "ardour_window.h" #include "editing.h" #include "enums.h" +#include "mini_timeline.h" +#include "shuttle_control.h" #include "visibility_group.h" #include "window_manager.h" @@ -91,6 +94,7 @@ #include "location_ui.h" #include "lua_script_manager.h" #include "rc_option_editor.h" +#include "route_dialogs.h" #include "route_params_ui.h" #include "session_option_editor.h" #include "speaker_dialog.h" @@ -114,6 +118,7 @@ class GlobalPortMatrixWindow; class VideoTimeLine; class ArdourKeyboard; +class ArdourVSpacer; class AudioClock; class ButtonJoiner; class ConnectionEditor; @@ -125,7 +130,6 @@ class PublicEditor; class SaveAsDialog; class SessionDialog; class SessionOptionEditorWindow; -class ShuttleControl; class Splash; class TimeInfoBox; class Meterbridge; @@ -202,6 +206,12 @@ public: static ARDOUR_UI *instance () { return theArdourUI; } + /* signal emitted when escape key is pressed. All UI components that + need to respond to Escape in some way (e.g. break drag, clear + selection, etc) should connect to and handle this. + */ + PBD::Signal0 Escape; + PublicEditor& the_editor() { return *editor;} Mixer_UI* the_mixer() { return mixer; } @@ -212,6 +222,8 @@ public: void toggle_monitor_section_visibility (); void toggle_keep_tearoffs(); + void reset_focus (Gtk::Widget*); + static PublicEditor* _instance; /** Emitted frequently with the audible frame, false, and the edit point as @@ -226,6 +238,7 @@ public: XMLNode* main_window_settings() const; XMLNode* editor_settings() const; + XMLNode* preferences_settings() const; XMLNode* mixer_settings () const; XMLNode* keyboard_settings () const; XMLNode* tearoff_settings (const char*) const; @@ -244,8 +257,6 @@ public: void focus_on_clock (); AudioClock* big_clock; - TimeInfoBox* time_info_box; - VideoTimeLine *video_timeline; void store_clock_modes (); @@ -255,14 +266,13 @@ public: void synchronize_sync_source_and_video_pullup (); void add_route (); + void add_route_dialog_finished (int); + void add_routes_part_two (); void add_routes_thread (); void start_duplicate_routes (); - void add_lua_script (); - void remove_lua_script (); - void add_video (Gtk::Window* float_window); void remove_video (); void start_video_server_menu (Gtk::Window* float_window); @@ -273,6 +283,7 @@ public: void session_add_vca (std::string const &, uint32_t); + void session_add_audio_route (bool, int32_t, int32_t, ARDOUR::TrackMode, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool, ARDOUR::PresentationInfo::order_t order); void session_add_audio_track ( int input_channels, int32_t output_channels, @@ -280,9 +291,10 @@ public: ARDOUR::RouteGroup* route_group, uint32_t how_many, std::string const & name_template, - bool strict_io + bool strict_io, + ARDOUR::PresentationInfo::order_t order ) { - session_add_audio_route (true, input_channels, output_channels, mode, route_group, how_many, name_template, strict_io); + session_add_audio_route (true, input_channels, output_channels, mode, route_group, how_many, name_template, strict_io, order); } void session_add_audio_bus ( @@ -291,9 +303,10 @@ public: ARDOUR::RouteGroup* route_group, uint32_t how_many, std::string const & name_template, - bool strict_io + bool strict_io, + ARDOUR::PresentationInfo::order_t order ) { - session_add_audio_route (false, input_channels, output_channels, ARDOUR::Normal, route_group, how_many, name_template, strict_io); + session_add_audio_route (false, input_channels, output_channels, ARDOUR::Normal, route_group, how_many, name_template, strict_io, order); } void session_add_midi_track ( @@ -302,15 +315,20 @@ public: std::string const & name_template, bool strict_io, ARDOUR::PluginInfoPtr instrument, - ARDOUR::Plugin::PresetRecord* preset = NULL) { - session_add_midi_route (true, route_group, how_many, name_template, strict_io, instrument, preset); + ARDOUR::Plugin::PresetRecord* preset, + ARDOUR::PresentationInfo::order_t order + ) { + session_add_midi_route (true, route_group, how_many, name_template, strict_io, instrument, preset, order); } - void session_add_mixed_track (const ARDOUR::ChanCount&, const ARDOUR::ChanCount&, ARDOUR::RouteGroup*, uint32_t, std::string const &, bool, ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord*); - void session_add_midi_bus (ARDOUR::RouteGroup*, uint32_t, std::string const &, bool, ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord*); - void session_add_audio_route (bool, int32_t, int32_t, ARDOUR::TrackMode, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool); - void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool, ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord*); - + void session_add_mixed_track (const ARDOUR::ChanCount&, const ARDOUR::ChanCount&, ARDOUR::RouteGroup*, uint32_t, std::string const &, bool, + ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord* pset, + ARDOUR::PresentationInfo::order_t order); + void session_add_midi_bus (ARDOUR::RouteGroup*, uint32_t, std::string const &, bool, ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord* pset, + ARDOUR::PresentationInfo::order_t order); + void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool, + ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord*, + ARDOUR::PresentationInfo::order_t order); void display_insufficient_ports_message (); void attach_to_engine (); @@ -359,6 +377,8 @@ public: Gtkmm2ext::ActionMap global_actions; + ARDOUR::PresentationInfo::order_t translate_order (RouteDialogs::InsertAt); + protected: friend class PublicEditor; @@ -369,6 +389,8 @@ protected: bool ignore_dual_punch; void toggle_punch_in (); void toggle_punch_out (); + void toggle_session_monitoring_in (); + void toggle_session_monitoring_disk (); void show_loop_punch_ruler_and_disallow_hide (); void reenable_hide_loop_punch_ruler_if_appropriate (); void toggle_auto_return (); @@ -400,7 +422,7 @@ private: void button_change_tabbable_visibility (Gtkmm2ext::Tabbable*); void key_change_tabbable_visibility (Gtkmm2ext::Tabbable*); void toggle_editor_and_mixer (); - + void tabbable_state_change (Gtkmm2ext::Tabbable&); void toggle_meterbridge (); @@ -451,19 +473,13 @@ private: /* Transport Control */ + Gtk::Table transport_table; Gtk::Frame transport_frame; Gtk::HBox transport_hbox; - Gtk::Fixed transport_base; - Gtk::Fixed transport_button_base; - Gtk::Frame transport_button_frame; - Gtk::HBox transport_button_hbox; - Gtk::VBox transport_button_vbox; - Gtk::HBox transport_option_button_hbox; - Gtk::VBox transport_option_button_vbox; - Gtk::HBox transport_clock_hbox; - Gtk::VBox transport_clock_vbox; - Gtk::HBox primary_clock_hbox; - Gtk::HBox secondary_clock_hbox; + + ArdourVSpacer *secondary_clock_spacer; + void repack_transport_hbox (); + void update_clock_visibility (); struct TransportControllable : public PBD::Controllable { enum ToggleType { @@ -504,16 +520,33 @@ private: ArdourButton auto_loop_button; ArdourButton play_selection_button; ArdourButton rec_button; + ArdourButton punch_in_button; + ArdourButton punch_out_button; + ArdourButton layered_button; + + ArdourVSpacer recpunch_spacer; + ArdourVSpacer monitoring_spacer; + + ArdourButton monitor_in_button; + ArdourButton monitor_disk_button; + ArdourButton auto_input_button; + + Gtk::Label punch_label; + Gtk::Label layered_label; + + Gtk::Label punch_space; + Gtk::Label mon_space; void toggle_external_sync (); void toggle_time_master (); void toggle_video_sync (); - ShuttleControl* shuttle_box; + ShuttleControl shuttle_box; + MiniTimeline mini_timeline; + TimeInfoBox *time_info_box; ArdourButton auto_return_button; ArdourButton follow_edits_button; - ArdourButton auto_input_button; ArdourButton click_button; ArdourButton sync_button; @@ -549,10 +582,11 @@ private: void _auditioning_changed (bool); bool solo_alert_press (GdkEventButton* ev); - bool audition_alert_press (GdkEventButton* ev); - bool feedback_alert_press (GdkEventButton *); + void audition_alert_clicked (); bool error_alert_press (GdkEventButton *); + void layered_button_clicked (); + void big_clock_value_changed (); void primary_clock_value_changed (); void secondary_clock_value_changed (); @@ -618,6 +652,7 @@ private: void edit_metadata (); void import_metadata (); + void set_loop_sensitivity (); void set_transport_sensitivity (bool); //stuff for ProTools-style numpad @@ -638,6 +673,8 @@ private: void transport_roll (); void transport_play_selection(); void transport_play_preroll(); + void transport_rec_preroll(); + void transport_rec_count_in(); void transport_forward (int option); void transport_rewind (int option); void transport_loop (); @@ -662,8 +699,8 @@ private: bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar); void save_session_as (); + void archive_session (); void rename_session (); - void setup_order_hint (AddRouteDialog::InsertAt); int create_mixer (); int create_editor (); @@ -719,7 +756,7 @@ private: void install_actions (); - void toggle_record_enable (uint32_t); + void toggle_record_enable (uint16_t); uint32_t rec_enabled_streams; void count_recenabled_streams (ARDOUR::Route&); @@ -772,7 +809,6 @@ private: std::vector positional_sync_strings; - void toggle_send_midi_feedback (); void toggle_use_mmc (); void toggle_send_mmc (); void toggle_send_mtc (); @@ -811,6 +847,8 @@ private: int ambiguous_file (std::string file, std::vector hits); bool click_button_clicked (GdkEventButton *); + bool click_button_scroll (GdkEventScroll *); + bool sync_button_clicked (GdkEventButton *); VisibilityGroup _status_bar_visibility; @@ -868,6 +906,13 @@ private: void step_up_through_tabs (); void step_down_through_tabs (); + + void escape (); + void close_current_dialog (); + void pre_release_dialog (); + + bool bind_lua_action_script (GdkEventButton*, int); + void update_action_script_btn (int i, const std::string&); }; #endif /* __ardour_gui_h__ */