X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui.h;h=f11611821f785c606bb3e22c3c0ca09ee58dc86d;hb=08371ae2cf6231bbb8522645d14add41ffa9c1c0;hp=6c7edff1ba437fb4189e2b8778d375bc5c7659de;hpb=3b20beb8d80e6b0ac12ef17e4f10e1d5dcc9fe55;p=ardour.git diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 6c7edff1ba..f11611821f 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -65,31 +65,30 @@ #include "ardour/plugin.h" #include "ardour/session_handle.h" -#ifdef WITH_VIDEOTIMELINE #include "video_timeline.h" -#endif -#include "ardour_dialog.h" #include "ardour_button.h" +#include "ardour_dialog.h" +#include "ardour_window.h" #include "editing.h" +#include "meterbridge.h" #include "ui_config.h" -#include "window_proxy.h" #include "enums.h" #include "visibility_group.h" +#include "window_manager.h" class About; class AddRouteDialog; -#ifdef WITH_VIDEOTIMELINE class AddVideoDialog; class VideoTimeLine; class SystemExec; -#endif -class ArdourStartup; class ArdourKeyboard; class AudioClock; +class BigClockWindow; class BundleManager; class ButtonJoiner; class ConnectionEditor; +class EngineControl; class KeyEditor; class LocationUIWindow; class MainClock; @@ -97,6 +96,7 @@ class Mixer_UI; class PublicEditor; class RCOptionEditor; class RouteParams_UI; +class SessionDialog; class SessionOptionEditor; class ShuttleControl; class Splash; @@ -104,7 +104,8 @@ class SpeakerDialog; class ThemeManager; class TimeInfoBox; class MidiTracer; -class WindowProxyBase; +class NSM_Client; +class LevelMeterHBox; class GlobalPortMatrixWindow; class GUIObjectState; @@ -152,7 +153,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr bool get_smart_mode () const; int get_session_parameters (bool quit_on_cancel, bool should_be_new = false, std::string load_template = ""); - int build_session_from_nsd (const std::string& session_name, const std::string& session_path); + int build_session_from_dialog (SessionDialog&, const std::string& session_name, const std::string& session_path); bool ask_about_loading_existing_session (const std::string& session_path); /// @return true if session was successfully unloaded. @@ -168,14 +169,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr PublicEditor& the_editor(){return *editor;} Mixer_UI* the_mixer() { return mixer; } - void toggle_key_editor (); - void toggle_location_window (); - void toggle_theme_manager (); - void toggle_bundle_manager (); - void toggle_big_clock_window (); - void toggle_speaker_config_window (); void new_midi_tracer_window (); - void toggle_route_params_window (); void toggle_editing_space(); void toggle_keep_tearoffs(); @@ -185,13 +179,23 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr static PublicEditor* _instance; static sigc::signal Blink; + + /** point_zero_one_seconds -- 10Hz ^= 100ms */ static sigc::signal RapidScreenUpdate; + + /** point_zero_something_seconds -- currently 25Hz ^= 40ms */ static sigc::signal SuperRapidScreenUpdate; + /** Emitted frequently with the audible frame, false, and the edit point as * parameters respectively. + * + * (either RapidScreenUpdate || SuperRapidScreenUpdate - user-config) */ static sigc::signal Clock; + static void close_all_dialogs () { CloseAllDialogs(); } + static sigc::signal CloseAllDialogs; + XMLNode* editor_settings() const; XMLNode* mixer_settings () const; XMLNode* keyboard_settings () const; @@ -209,12 +213,11 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr MainClock* primary_clock; MainClock* secondary_clock; void focus_on_clock (); + AudioClock* big_clock; TimeInfoBox* time_info_box; -#ifdef WITH_VIDEOTIMELINE VideoTimeLine *video_timeline; -#endif void store_clock_modes (); void restore_clock_modes (); @@ -225,14 +228,13 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void add_route (Gtk::Window* float_window); void add_routes_part_two (); void add_routes_thread (); -#ifdef WITH_VIDEOTIMELINE + void add_video (Gtk::Window* float_window); void remove_video (); void start_video_server_menu (Gtk::Window* float_window); bool start_video_server (Gtk::Window* float_window, bool popup_msg); void stop_video_server (bool ask_confirm=false); void flush_videotimeline_cache (bool localcacheonly=false); -#endif void session_add_audio_track ( int input_channels, @@ -263,7 +265,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr session_add_midi_route (false); }*/ - int create_engine (); + void attach_to_engine (); void post_engine (); gint exit_on_main_window_close (GdkEventAny *); @@ -278,14 +280,18 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void set_shuttle_fract (double); - void add_window_proxy (WindowProxyBase *); - void remove_window_proxy (WindowProxyBase *); - void get_process_buffers (); void drop_process_buffers (); + void reset_peak_display (); + void reset_route_peak_display (ARDOUR::Route*); + void reset_group_peak_display (ARDOUR::RouteGroup*); + const std::string& announce_string() const { return _announce_string; } + int disconnect_from_engine (); + int reconnect_to_engine (); + protected: friend class PublicEditor; @@ -300,21 +306,23 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void reenable_hide_loop_punch_ruler_if_appropriate (); void toggle_auto_return (); void toggle_click (); - + void toggle_audio_midi_setup (); void toggle_session_auto_loop (); - void toggle_rc_options_window (); void toggle_session_options_window (); private: - ArdourStartup* _startup; - ARDOUR::AudioEngine *engine; - Gtk::Tooltips _tooltips; + Gtk::Tooltips _tooltips; + NSM_Client *nsm; + bool _was_dirty; + bool _mixer_on_top; + bool first_time_engine_run; void goto_editor_window (); void goto_mixer_window (); void toggle_mixer_window (); - void toggle_mixer_on_top (); + void toggle_meterbridge (); + void toggle_editor_mixer (); int setup_windows (); void setup_transport (); @@ -322,8 +330,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr static ARDOUR_UI *theArdourUI; - void startup (); - void shutdown (); + int starting (); int ask_about_saving_session (const std::vector& actions); @@ -357,27 +364,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void start_clocking (); void stop_clocking (); - void manage_window (Gtk::Window&); - - AudioClock* big_clock; - ActionWindowProxy* big_clock_window; - int original_big_clock_width; - int original_big_clock_height; - double original_big_clock_font_size; - - void big_clock_size_allocate (Gtk::Allocation&); - bool idle_big_clock_text_resizer (int width, int height); - void big_clock_realized (); - bool big_clock_resize_in_progress; - int big_clock_height; - void big_clock_catch_focus (); - void big_clock_reset_aspect_ratio (); - - void float_big_clock (Gtk::Window* parent); bool main_window_state_event_handler (GdkEventWindowState*, bool window_was_editor); - ActionWindowProxy* speaker_config_window; - void update_transport_clocks (framepos_t pos); void record_state_changed (); @@ -462,6 +450,11 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr ArdourButton feedback_alert_button; Gtk::VBox alert_box; + Gtk::VBox meter_box; + LevelMeterHBox * editor_meter; + float editor_meter_max_peak; + ArdourButton editor_meter_peak_display; + bool editor_meter_peak_button_release (GdkEventButton*); void solo_blink (bool); void sync_blink (bool); @@ -546,12 +539,11 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr gint every_second (); gint every_point_one_seconds (); - gint every_point_zero_one_seconds (); + gint every_point_zero_something_seconds (); sigc::connection second_connection; sigc::connection point_one_second_connection; - sigc::connection point_oh_five_second_connection; - sigc::connection point_zero_one_second_connection; + sigc::connection point_zero_something_second_connection; void open_session (); void open_recent_session (); @@ -590,6 +582,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void snapshot_session (bool switch_to_it); void rename_session (); + void setup_order_hint (); Mixer_UI *mixer; int create_mixer (); @@ -597,41 +590,42 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr PublicEditor *editor; int create_editor (); - RouteParams_UI *route_params; - int create_route_params (); - - BundleManager *bundle_manager; - void create_bundle_manager (); - - ActionWindowProxy* location_ui; - int create_location_ui (); - void handle_locations_change (ARDOUR::Location*); - - ActionWindowProxy* _global_port_matrix[ARDOUR::DataType::num_types]; - void toggle_global_port_matrix (ARDOUR::DataType); + Meterbridge *meterbridge; + int create_meterbridge (); + /* Dialogs that can be created via new */ + + WM::Proxy speaker_config_window; + WM::Proxy theme_manager; + WM::Proxy key_editor; + WM::Proxy rc_option_editor; + WM::Proxy add_route_dialog; + WM::Proxy about; + WM::Proxy location_ui; + WM::Proxy route_params; + WM::Proxy audio_midi_setup; + + /* Windows/Dialogs that require a creator method */ + + WM::ProxyWithConstructor session_option_editor; + WM::ProxyWithConstructor add_video_dialog; + WM::ProxyWithConstructor bundle_manager; + WM::ProxyWithConstructor big_clock_window; + WM::ProxyWithConstructor audio_port_matrix; + WM::ProxyWithConstructor midi_port_matrix; + + /* creator methods */ + + SessionOptionEditor* create_session_option_editor (); + BundleManager* create_bundle_manager (); + AddVideoDialog* create_add_video_dialog (); + BigClockWindow* create_big_clock_window(); + GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType); static UIConfiguration *ui_config; - ThemeManager *theme_manager; - - /* Key bindings editor */ - - KeyEditor *key_editor; - - /* RC Options window */ - - RCOptionEditor *rc_option_editor; - SessionOptionEditor *session_option_editor; - - /* route dialog */ - - AddRouteDialog *add_route_dialog; - -#ifdef WITH_VIDEOTIMELINE - /* video dialog */ - AddVideoDialog *add_video_dialog; SystemExec *video_server_process; -#endif + + void handle_locations_change (ARDOUR::Location*); /* Keyboard Handling */ @@ -646,7 +640,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr uint32_t rec_enabled_streams; void count_recenabled_streams (ARDOUR::Route&); - About* about; Splash* splash; void pop_back_splash (Gtk::Window&); @@ -677,10 +670,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr int pending_state_dialog (); int sr_mismatch_dialog (ARDOUR::framecnt_t, ARDOUR::framecnt_t); - void disconnect_from_jack (); - void reconnect_to_jack (); - void set_jack_buffer_size (ARDOUR::pframes_t); - Gtk::MenuItem* jack_disconnect_item; Gtk::MenuItem* jack_reconnect_item; Gtk::Menu* jack_bufsize_menu; @@ -704,7 +693,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr bool first_idle (); - void no_memory_warning (); void check_memory_locking (); bool check_audioengine(); @@ -720,6 +708,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void loading_message (const std::string& msg); PBD::ScopedConnectionList forever_connections; + PBD::ScopedConnection halt_connection; void step_edit_status_change (bool); @@ -732,10 +721,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void queue_finish (); void fontconfig_dialog (); - std::list _window_proxies; - int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type); - int ambiguous_file (std::string file, std::string path, std::vector hits); + int ambiguous_file (std::string file, std::vector hits); bool click_button_clicked (GdkEventButton *); @@ -758,6 +745,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr std::string _announce_string; void check_announcements (); + + int do_audio_midi_setup (uint32_t); }; #endif /* __ardour_gui_h__ */