X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui.h;h=c6e9a4546e9015df4f360034aa2aa187257c24fc;hb=9ab70fb55284537228577d575f15aa03949bd678;hp=ec18a5637e76f6671a3b2a3bfc1b436d7f933f37;hpb=f69abbff90ac8b8426bb0c6e02a7f4d4a3fd5e6d;p=ardour.git diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index ec18a5637e..c6e9a4546e 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -53,8 +53,8 @@ #include #include #include -#include #include +#include #include #include @@ -71,7 +71,7 @@ class OptionEditor; class Mixer_UI; class ConnectionEditor; class RouteParams_UI; -class SoundFileChooser; +class SoundFileBrowser; class About; class AddRouteDialog; class NewSessionDialog; @@ -99,16 +99,16 @@ class ARDOUR_UI : public Gtkmm2ext::UI public: ARDOUR_UI (int *argcp, char **argvp[], string rcfile); ~ARDOUR_UI(); - + void show (); bool shown() { return shown_flag; } void show_splash (); void hide_splash (); - int load_session (string path, string snapshot, string* mix_template = 0); + int load_session (const string & path, const string & snapshot, string* mix_template = 0); bool session_loaded; - int build_session (string path, string snapshot, + int build_session (const string & path, const string & snapshot, uint32_t ctl_chns, uint32_t master_chns, ARDOUR::Session::AutoConnectOption input_connect, @@ -129,12 +129,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI } void new_session(bool startup = false, std::string path = string()); - gint cmdline_new_session (std::string path); + gint cmdline_new_session (string path); int unload_session (); void close_session() { unload_session(); } int save_state_canfail (string state_name = ""); - void save_state (string state_name = ""); + void save_state (const string & state_name = ""); void restore_state (string state_name = ""); static double gain_to_slider_position (ARDOUR::gain_t g); @@ -150,6 +150,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI void toggle_connection_editor (); void toggle_route_params_window (); void toggle_tempo_window (); + void toggle_editing_space(); gint32 select_diskstream (GdkEventButton *ev); @@ -188,12 +189,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI void add_route (); - void session_add_audio_track (int input_channels, int32_t output_channels) { - session_add_audio_route (true, input_channels, output_channels); + void session_add_audio_track (int input_channels, int32_t output_channels, ARDOUR::TrackMode mode) { + session_add_audio_route (true, input_channels, output_channels, mode); } void session_add_audio_bus (int input_channels, int32_t output_channels) { - session_add_audio_route (false, input_channels, output_channels); + session_add_audio_route (false, input_channels, output_channels, ARDOUR::Normal); } void session_add_midi_track (); @@ -202,10 +203,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI gint exit_on_main_window_close (GdkEventAny *); + void maximise_editing_space (); + void restore_editing_space (); + protected: friend class PublicEditor; - void toggle_metering (); void toggle_clocking (); void toggle_auto_play (); void toggle_auto_input (); @@ -213,7 +216,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI void toggle_punch_out (); void toggle_auto_return (); void toggle_click (); - void toggle_follow (); void toggle_session_auto_loop (); void toggle_session_punch_in (); @@ -287,7 +289,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI void shutdown (); void finish(); - int ask_about_saving_session (string why); + int ask_about_saving_session (const string & why); gint ask_about_save_deleted (GdkEventAny*); void save_session_choice_made (int); int save_the_session; @@ -301,14 +303,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI void engine_stopped (); void engine_running (); - void map_some_session_state (Gtk::ToggleButton& button, - bool (ARDOUR::Session::*get)() const); - - void toggle_some_session_state (Gtk::ToggleButton& button, - bool (ARDOUR::Session::*get)() const, - void (ARDOUR::Session::*set)(bool)); - void map_button_state (); - void clear_meters (); static gint _blink (void *); @@ -329,16 +323,18 @@ class ARDOUR_UI : public Gtkmm2ext::UI void start_clocking (); void stop_clocking (); - AudioClock big_clock; - Gtk::Frame big_clock_frame; - ArdourDialog* big_clock_window; + void manage_window (Gtk::Window&); + + AudioClock big_clock; + Gtk::Frame big_clock_frame; + Gtk::Window* big_clock_window; /* Transport Control */ void detach_tearoff (Gtk::Box* parent, Gtk::Widget* contents); void reattach_tearoff (Gtk::Box* parent, Gtk::Widget* contents, int32_t order); - Gtkmm2ext::TearOff* transport_tearoff; + Gtkmm2ext::TearOff* transport_tearoff; Gtk::Frame transport_frame; Gtk::HBox transport_tearoff_hbox; Gtk::HBox transport_hbox; @@ -354,11 +350,22 @@ class ARDOUR_UI : public Gtkmm2ext::UI Gtk::HBox primary_clock_hbox; Gtk::HBox secondary_clock_hbox; - Gtk::Button goto_start_button; - Gtk::Button goto_end_button; - Gtk::Button rewind_button; - Gtk::Button forward_button; - Gtk::Button stop_button; + Gtkmm2ext::StatefulButton roll_button; + Gtkmm2ext::StatefulButton stop_button; + Gtkmm2ext::StatefulButton rewind_button; + Gtkmm2ext::StatefulButton forward_button; + Gtkmm2ext::StatefulButton goto_start_button; + Gtkmm2ext::StatefulButton goto_end_button; + Gtkmm2ext::StatefulButton auto_loop_button; + Gtkmm2ext::StatefulButton play_selection_button; + + Gtkmm2ext::StatefulButton rec_button; + + Gtk::ToggleButton time_master_button; + Gtk::ComboBoxText sync_option_combo; + + void sync_option_changed (); + void toggle_time_master (); enum ShuttleBehaviour { Sprung, @@ -370,21 +377,22 @@ class ARDOUR_UI : public Gtkmm2ext::UI Semitones }; - Gtk::DrawingArea shuttle_box; - Gtk::EventBox speed_display_box; - Gtk::Label speed_display_label; - Gtk::Button shuttle_units_button; - Gtk::Button shuttle_style_button; - Gtk::Menu* shuttle_unit_menu; - Gtk::Menu* shuttle_style_menu; - ShuttleBehaviour shuttle_behaviour; - ShuttleUnits shuttle_units; - - void shuttle_style_clicked (); + Gtk::DrawingArea shuttle_box; + Gtk::EventBox speed_display_box; + Gtk::Label speed_display_label; + Gtk::Button shuttle_units_button; + Gtk::ComboBoxText shuttle_style_button; + Gtk::Menu* shuttle_unit_menu; + Gtk::Menu* shuttle_style_menu; + ShuttleBehaviour shuttle_behaviour; + ShuttleUnits shuttle_units; + + void shuttle_style_changed(); void shuttle_unit_clicked (); void set_shuttle_behaviour (ShuttleBehaviour); void set_shuttle_units (ShuttleUnits); void update_speed_display (); + float last_speed_displayed; gint shuttle_box_button_press (GdkEventButton*); gint shuttle_box_button_release (GdkEventButton*); @@ -396,25 +404,17 @@ class ARDOUR_UI : public Gtkmm2ext::UI bool shuttle_grabbed; double shuttle_fract; - Gtk::ToggleButton auto_loop_button; - Gtk::ToggleButton play_selection_button; - Gtk::ToggleButton roll_button; - - Gtk::ToggleButton rec_button; Gtk::ToggleButton punch_in_button; Gtk::ToggleButton punch_out_button; Gtk::ToggleButton auto_return_button; Gtk::ToggleButton auto_play_button; Gtk::ToggleButton auto_input_button; Gtk::ToggleButton click_button; - Gtk::ToggleButton follow_button; Gtk::ToggleButton auditioning_alert_button; Gtk::ToggleButton solo_alert_button; Gtk::VBox alert_box; - void follow_changed (); - void solo_blink (bool); void audition_blink (bool); @@ -473,39 +473,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI /* menu bar and associated stuff */ Gtk::MenuBar* menu_bar; - Gtk::Fixed menu_bar_base; + Gtk::EventBox menu_bar_base; Gtk::HBox menu_hbox; void build_menu_bar (); void pack_toplevel_controls(); - /* handles on the menu bar items that need to - be sensitive to whether or not we have - a session loaded. - */ - - Gtk::MenuItem *add_track_item; - Gtk::MenuItem *save_item; - Gtk::MenuItem *snapshot_item; - Gtk::MenuItem *save_as_item; - Gtk::MenuItem *save_template_item; - Gtk::MenuItem *export_item; - Gtk::MenuItem *close_item; - - Gtk::CheckMenuItem *meter_bridge_dialog_check; - Gtk::CheckMenuItem *connection_editor_check; - Gtk::CheckMenuItem *route_params_check; - Gtk::CheckMenuItem *locations_dialog_check; - Gtk::CheckMenuItem *big_clock_check; - Gtk::CheckMenuItem *tempo_editor_check; - Gtk::CheckMenuItem *sfdb_check; - Gtk::CheckMenuItem *options_window_check; - - /* */ - Gtk::MenuItem *image_compositor_item ; - /* */ - - Gtk::Label wall_clock_label; Gtk::EventBox wall_clock_box; gint update_wall_clock (); @@ -554,38 +527,13 @@ class ARDOUR_UI : public Gtkmm2ext::UI void save_template (); - void session_add_audio_route (bool disk, int32_t input_channels, int32_t output_channels); + void session_add_audio_route (bool disk, int32_t input_channels, int32_t output_channels, ARDOUR::TrackMode mode); void add_diskstream_to_menu (ARDOUR::DiskStream&); void diskstream_selected (gint32); Gtk::Menu *diskstream_menu; gint32 selected_dstream; - gint mouse_transport_goto_start (GdkEventButton *) { - transport_goto_start (); return TRUE; - } - gint mouse_transport_goto_end (GdkEventButton *) { - transport_goto_end (); return TRUE; - } - gint mouse_transport_record (GdkEventButton *) { - transport_record (); return TRUE; - } - gint mouse_transport_forward (GdkEventButton *) { - transport_forward (0); return TRUE; - } - gint mouse_transport_rewind (GdkEventButton *) { - transport_rewind (0); return TRUE; - } - gint mouse_transport_loop (GdkEventButton *) { - transport_loop (); return TRUE; - } - gint mouse_transport_play_selection (GdkEventButton *) { - transport_play_selection (); return TRUE; - } - - gint mouse_transport_roll (GdkEventButton *); - gint mouse_transport_stop (GdkEventButton *); - void set_transport_sensitivity (bool); void remove_last_capture (); @@ -614,13 +562,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI void connect_dependents_to_session (ARDOUR::Session *); void we_have_dependents (); void setup_keybindings (); - + void setup_options (); + guint32 last_key_press_time; void snapshot_session (); - void map_control_change (ARDOUR::Session::ControlType); - void queue_map_control_change (ARDOUR::Session::ControlType); void map_record_state (); void queue_map_record_state (); @@ -630,9 +577,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI PublicEditor *editor; int create_editor (); - MeterBridge *meter_bridge; - int create_meter_bridge (); - RouteParams_UI *route_params; int create_route_params (); @@ -642,17 +586,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI LocationUI *location_ui; int create_location_ui (); - void meter_bridge_hiding (); - void location_ui_hiding (); - void big_clock_hiding (); - void route_params_hiding (); - void connection_editor_hiding (); - void option_hiding (); - - /* Various options */ - - void toggle_recording_plugins (); - /* Options window */ OptionEditor *option_editor; @@ -663,7 +596,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI void add_route_dialog_done (int status); /* SoundFile Browser */ + SoundFileBrowser *sfdb; void toggle_sound_file_browser (); + int create_sound_file_browser (); /* Keyboard Handling */ @@ -689,7 +624,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI Gtk::MenuItem *cleanup_item; - void display_cleanup_results (ARDOUR::Session::cleanup_report& rep, const gchar* list_title, string msg); + void display_cleanup_results (ARDOUR::Session::cleanup_report& rep, const gchar* list_title, const string & msg); void cleanup (); void flush_trash (); @@ -728,6 +663,44 @@ class ARDOUR_UI : public Gtkmm2ext::UI bool filter_ardour_session_dirs (const Gtk::FileFilter::Info&); Glib::RefPtr common_actions; + + void editor_realized (); + + std::vector positional_sync_strings; + + void toggle_config_state (const char* group, const char* action, void (ARDOUR::Configuration::*set)(bool)); + void toggle_session_state (const char* group, const char* action, void (ARDOUR::Session::*set)(bool), bool (ARDOUR::Session::*get)(void) const); + void toggle_session_state (const char* group, const char* action, sigc::slot theSlot); + void toggle_send_midi_feedback (); + void toggle_use_mmc (); + void toggle_send_mmc (); + void toggle_use_midi_control(); + void toggle_send_mtc (); + + void toggle_AutoConnectNewTrackInputsToHardware(); + void toggle_AutoConnectNewTrackOutputsToHardware(); + void toggle_AutoConnectNewTrackOutputsToMaster(); + void toggle_ManuallyConnectNewTrackOutputs(); + void toggle_UseHardwareMonitoring(); + void toggle_UseSoftwareMonitoring(); + void toggle_UseExternalMonitoring(); + void toggle_StopPluginsWithTransport(); + void toggle_DoNotRunPluginsWhileRecording(); + void toggle_VerifyRemoveLastCapture(); + void toggle_StopRecordingOnXrun(); + void toggle_StopTransportAtEndOfSession(); + void toggle_GainReduceFastTransport(); + void toggle_LatchedSolo(); + void toggle_SoloViaBus(); + void toggle_AutomaticallyCreateCrossfades(); + void toggle_UnmuteNewFullCrossfades(); + void toggle_LatchedRecordEnable (); + + void mtc_port_changed (); + void map_some_session_state (const char* group, const char* action, bool (ARDOUR::Session::*get)() const); + void queue_session_control_changed (ARDOUR::Session::ControlType t); + void session_control_changed (ARDOUR::Session::ControlType t); }; + #endif /* __ardour_gui_h__ */