X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui.h;h=8b106921255280f4853d7c6127edcbf5f4e0e23b;hb=eebbf64484f3b939b92b2d2dda75858c7c11b8e5;hp=78cc46efb5c9762a072570c42fff11e5165043f4;hpb=36c233fe6ce570ce85224626ce7aba4a2607537f;p=ardour.git diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 78cc46efb5..8b10692125 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -63,55 +63,70 @@ #include "ardour/utils.h" #include "ardour/plugin.h" #include "ardour/session_handle.h" +#include "ardour/system_exec.h" #include "video_timeline.h" +#include "add_route_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 "enums.h" #include "visibility_group.h" #include "window_manager.h" +#ifdef COMPILER_MSVC +#include "about.h" +#include "add_video_dialog.h" +#include "big_clock_window.h" +#include "bundle_manager.h" +#include "engine_dialog.h" +#include "export_video_dialog.h" +#include "global_port_matrix.h" +#include "keyeditor.h" +#include "location_ui.h" +#include "rc_option_editor.h" +#include "route_params_ui.h" +#include "session_option_editor.h" +#include "speaker_dialog.h" +#else class About; class AddRouteDialog; class AddVideoDialog; -class VideoTimeLine; -class SystemExec; -class ArdourKeyboard; -class AudioClock; class BigClockWindow; class BundleManager; -class ButtonJoiner; -class ConnectionEditor; class EngineControl; +class ExportVideoDialog; class KeyEditor; class LocationUIWindow; +class RCOptionEditor; +class RouteParams_UI; +class SessionOptionEditor; +class SpeakerDialog; +class GlobalPortMatrixWindow; +#endif + +class VideoTimeLine; +class ArdourKeyboard; +class AudioClock; +class ButtonJoiner; +class ConnectionEditor; class MainClock; class Mixer_UI; class PublicEditor; -class RCOptionEditor; -class RouteParams_UI; +class SaveAsDialog; class SessionDialog; class SessionOptionEditor; class ShuttleControl; class Splash; -class SpeakerDialog; -class ThemeManager; class TimeInfoBox; +class Meterbridge; class MidiTracer; class NSM_Client; class LevelMeterHBox; -class GlobalPortMatrixWindow; class GUIObjectState; -namespace Gtkmm2ext { - class TearOff; -} - namespace ARDOUR { class ControlProtocolInfo; class IO; @@ -122,10 +137,18 @@ namespace ARDOUR { class ProcessThread; } +namespace Gtkmm2ext { + class TearOff; +} + +namespace Gtk { + class ProgressBar; +} + class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr { - public: - ARDOUR_UI (int *argcp, char **argvp[], const char* localedir); + public: + ARDOUR_UI (int *argcp, char **argvp[], const char* localedir); ~ARDOUR_UI(); bool run_startup (bool should_be_new, std::string load_template); @@ -136,10 +159,17 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void launch_chat (); void launch_manual (); void launch_reference (); + void launch_tracker (); + void launch_subscribe (); + void launch_cheat_sheet (); + void launch_website (); + void launch_website_dev (); + void launch_forums (); + void launch_howto_report (); void show_about (); void hide_about (); - void idle_load (const std::string& path); + void load_from_application_api (const std::string& path); void finish(); int load_session (const std::string& path, const std::string& snapshot, std::string mix_template = std::string()); @@ -163,27 +193,16 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void save_state (const std::string & state_name = "", bool switch_to_it = false); static ARDOUR_UI *instance () { return theArdourUI; } - static UIConfiguration *config () { return ui_config; } - - PublicEditor& the_editor(){return *editor;} + + PublicEditor& the_editor() { return *editor;} Mixer_UI* the_mixer() { return mixer; } void new_midi_tracer_window (); void toggle_editing_space(); + void toggle_mixer_space(); void toggle_keep_tearoffs(); - Gtk::Tooltips& tooltips() { return _tooltips; } - - Gtk::HBox& editor_transport_box() { return _editor_transport_box; } - 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. @@ -208,7 +227,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void create_xrun_marker (framepos_t); GUIObjectState* gui_object_state; - + MainClock* primary_clock; MainClock* secondary_clock; void focus_on_clock (); @@ -234,6 +253,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr 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); + void export_video (bool range = false); void session_add_audio_track ( int input_channels, @@ -272,6 +292,10 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void maximise_editing_space (); void restore_editing_space (); + void show_ui_prefs (); + + bool check_audioengine(Gtk::Window&); + void update_tearoff_visibility (); void setup_profile (); @@ -290,6 +314,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr int disconnect_from_engine (); int reconnect_to_engine (); + void hide_application (); protected: friend class PublicEditor; @@ -311,10 +336,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void toggle_session_options_window (); private: - Gtk::Tooltips _tooltips; - NSM_Client *nsm; + PublicEditor* editor; + Mixer_UI* mixer; + NSM_Client* nsm; bool _was_dirty; bool _mixer_on_top; + bool _initial_verbose_plugin_scan; bool first_time_engine_run; void goto_editor_window (); @@ -333,6 +360,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr int ask_about_saving_session (const std::vector& actions); + void save_session_at_its_request (std::string); /* periodic safety backup, to be precise */ gint autosave_session(); void update_autosave(); @@ -347,13 +375,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void use_config (); - static gint _blink (void *); - void blink (); - gint blink_timeout_tag; - bool blink_on; - void start_blinking (); - void stop_blinking (); - void about_signal_response(int response); Gtk::VBox top_packer; @@ -370,15 +391,15 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr std::list _midi_tracer_windows; - /* Transport Control */ - void detach_tearoff (Gtk::Box* parent, Gtk::Widget* contents); void reattach_tearoff (Gtk::Box* parent, Gtk::Widget* contents, int32_t order); + void reattach_all_tearoffs (); + + /* Transport Control */ Gtkmm2ext::TearOff* transport_tearoff; Gtk::Frame transport_frame; Gtk::HBox transport_tearoff_hbox; - Gtk::HBox _editor_transport_box; Gtk::HBox transport_hbox; Gtk::Fixed transport_base; Gtk::Fixed transport_button_base; @@ -419,7 +440,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr boost::shared_ptr play_selection_controllable; boost::shared_ptr rec_controllable; - void toggle_always_play_range (); + void toggle_follow_edits (); void set_transport_controllable_state (const XMLNode&); XMLNode& get_transport_controllable_state (); @@ -447,6 +468,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr ArdourButton auditioning_alert_button; ArdourButton solo_alert_button; ArdourButton feedback_alert_button; + ArdourButton error_alert_button; Gtk::VBox alert_box; Gtk::VBox meter_box; @@ -455,10 +477,17 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr ArdourButton editor_meter_peak_display; bool editor_meter_peak_button_release (GdkEventButton*); + void blink_handler (bool); + sigc::connection blink_connection; + + void cancel_solo (); void solo_blink (bool); void sync_blink (bool); void audition_blink (bool); void feedback_blink (bool); + void error_blink (bool); + + void set_flat_buttons(); void soloing_changed (bool); void auditioning_changed (bool); @@ -467,6 +496,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr bool solo_alert_press (GdkEventButton* ev); bool audition_alert_press (GdkEventButton* ev); bool feedback_alert_press (GdkEventButton *); + bool error_alert_press (GdkEventButton *); void big_clock_value_changed (); void primary_clock_value_changed (); @@ -478,34 +508,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr Gtk::Menu* session_popup_menu; - struct RecentSessionModelColumns : public Gtk::TreeModel::ColumnRecord { - RecentSessionModelColumns() { - add (visible_name); - add (tip); - add (fullpath); - } - Gtk::TreeModelColumn visible_name; - Gtk::TreeModelColumn tip; - Gtk::TreeModelColumn fullpath; - }; - - RecentSessionModelColumns recent_session_columns; - Gtk::TreeView recent_session_display; - Glib::RefPtr recent_session_model; - - ArdourDialog* session_selector_window; - Gtk::FileChooserDialog* open_session_selector; - - void build_session_selector(); - void redisplay_recent_sessions(); - void recent_session_row_activated (const Gtk::TreePath& path, Gtk::TreeViewColumn* col); - - struct RecentSessionsSorter { - bool operator() (std::pair a, std::pair b) const { - return cmp_nocase(a.first, b.first) == -1; - } - }; - /* menu bar and associated stuff */ Gtk::MenuBar* menu_bar; @@ -527,6 +529,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr Gtk::Label cpu_load_label; void update_cpu_load (); + Gtk::Label xrun_label; + void update_xrun_count (); + + Gtk::Label peak_thread_work_label; + void update_peak_thread_work (); + Gtk::Label buffer_load_label; void update_buffer_load (); @@ -536,13 +544,16 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr Gtk::Label format_label; void update_format (); - gint every_second (); - gint every_point_one_seconds (); - gint every_point_zero_something_seconds (); + void every_second (); + void every_point_one_seconds (); + void every_point_zero_something_seconds (); sigc::connection second_connection; sigc::connection point_one_second_connection; sigc::connection point_zero_something_second_connection; + sigc::connection fps_connection; + + void set_fps_timeout_connection (); void open_session (); void open_recent_session (); @@ -556,6 +567,15 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void set_transport_sensitivity (bool); + //stuff for ProTools-style numpad + void transport_numpad_event (int num); + void transport_numpad_decimal (); + bool _numpad_locate_happening; + int _pending_locate_num; + gint transport_numpad_timeout (); + sigc::connection _numpad_timeout_connection; + + void transport_goto_nth_marker (int nth); void transport_goto_zero (); void transport_goto_start (); void transport_goto_end (); @@ -569,6 +589,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void transport_rewind (int option); void transport_loop (); void toggle_roll (bool with_abort, bool roll_out_of_bounded_mode); + bool trx_record_enable_all_tracks (); bool _session_is_new; void set_session (ARDOUR::Session *); @@ -580,13 +601,15 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr guint32 last_key_press_time; void snapshot_session (bool switch_to_it); + + SaveAsDialog* save_as_dialog; + + bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar); + void save_session_as (); void rename_session (); - void setup_order_hint (); + void setup_order_hint (AddRouteDialog::InsertAt); - Mixer_UI *mixer; int create_mixer (); - - PublicEditor *editor; int create_editor (); Meterbridge *meterbridge; @@ -594,7 +617,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr /* 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; @@ -602,6 +624,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr WM::Proxy location_ui; WM::Proxy route_params; WM::Proxy audio_midi_setup; + WM::Proxy export_video_dialog; /* Windows/Dialogs that require a creator method */ @@ -620,9 +643,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr BigClockWindow* create_big_clock_window(); GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType); - static UIConfiguration *ui_config; - - SystemExec *video_server_process; + ARDOUR::SystemExec *video_server_process; void handle_locations_change (ARDOUR::Location*); @@ -649,6 +670,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void display_cleanup_results (ARDOUR::CleanupReport& rep, const gchar* list_title, const bool msg_delete); void cleanup (); + void cleanup_peakfiles (); void flush_trash (); bool have_configure_timeout; @@ -662,6 +684,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*); void disk_overrun_handler (); void disk_underrun_handler (); + void gui_idle_handler (); + + void cancel_plugin_scan (); + void cancel_plugin_timeout (); + void plugin_scan_dialog (std::string type, std::string plugin, bool); + void plugin_scan_timeout (int); void session_format_mismatch (std::string, std::string); @@ -694,7 +722,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void check_memory_locking (); - bool check_audioengine(); void audioengine_setup (); void display_message (const char *prefix, gint prefix_len, @@ -702,7 +729,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr const char *msg); Gtk::Label status_bar_label; bool status_bar_button_press (GdkEventButton*); - Gtk::ToggleButton error_log_button; void loading_message (const std::string& msg); @@ -721,7 +747,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void fontconfig_dialog (); 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 *); @@ -740,12 +766,24 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void successful_graph_sort (); bool _feedback_exists; + enum ArdourLogLevel { + LogLevelNone = 0, + LogLevelInfo, + LogLevelWarning, + LogLevelError + }; + + ArdourLogLevel _log_not_acknowledged; + void resize_text_widgets (); + bool xrun_button_release (GdkEventButton* ev); + std::string _announce_string; void check_announcements (); int do_audio_midi_setup (uint32_t); + void audioengine_became_silent (); }; #endif /* __ardour_gui_h__ */