X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui.h;h=2bbd0f6b790737e52dcc3bf7e68500a7872a0da9;hb=8d85afd29420a98148ac994f8dcb4e5412b7c2e2;hp=1561a0102ce6e4e99016c00d0b3b2bf613747fda;hpb=2b9421fd391efcddde0be3397cb66e19b744a155;p=ardour.git diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 1561a0102c..2bbd0f6b79 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -63,6 +63,7 @@ #include "ardour/utils.h" #include "ardour/plugin.h" #include "ardour/session_handle.h" +#include "ardour/system_exec.h" #include "video_timeline.h" @@ -72,6 +73,7 @@ #include "ardour_window.h" #include "editing.h" #include "engine_dialog.h" +#include "export_video_dialog.h" #include "meterbridge.h" #include "ui_config.h" #include "enums.h" @@ -89,10 +91,8 @@ #include "route_params_ui.h" #include "session_option_editor.h" #include "speaker_dialog.h" -#include "theme_manager.h" class VideoTimeLine; -class SystemExec; class ArdourKeyboard; class AudioClock; class ButtonJoiner; @@ -112,10 +112,6 @@ class NSM_Client; class LevelMeterHBox; class GUIObjectState; -namespace Gtkmm2ext { - class TearOff; -} - namespace ARDOUR { class ControlProtocolInfo; class IO; @@ -126,9 +122,23 @@ namespace ARDOUR { class ProcessThread; } +namespace Gtkmm2ext { + class TearOff; +} + +namespace Gtk { + class ProgressBar; +} + class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr { - public: + private: + /* This must be the first data element because constructor ordering + relies on it. + */ + UIConfiguration* ui_config; + + public: ARDOUR_UI (int *argcp, char **argvp[], const char* localedir); ~ARDOUR_UI(); @@ -140,10 +150,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()); @@ -167,13 +184,15 @@ 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;} + static UIConfiguration *config () { return theArdourUI->ui_config; } + static float ui_scale; + + 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; } @@ -181,13 +200,6 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr 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. @@ -212,7 +224,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 (); @@ -238,6 +250,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, @@ -276,6 +289,8 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void maximise_editing_space (); void restore_editing_space (); + void show_ui_prefs (); + void update_tearoff_visibility (); void setup_profile (); @@ -315,8 +330,10 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void toggle_session_options_window (); private: + PublicEditor* editor; + Mixer_UI* mixer; Gtk::Tooltips _tooltips; - NSM_Client *nsm; + NSM_Client* nsm; bool _was_dirty; bool _mixer_on_top; bool first_time_engine_run; @@ -337,6 +354,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(); @@ -351,13 +369,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; @@ -374,10 +385,11 @@ 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; @@ -423,7 +435,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 (); @@ -451,6 +463,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; @@ -459,10 +472,16 @@ 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 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); @@ -471,6 +490,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 (); @@ -506,7 +526,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr struct RecentSessionsSorter { bool operator() (std::pair a, std::pair b) const { - return cmp_nocase(a.first, b.first) == -1; + return ARDOUR::cmp_nocase(a.first, b.first) == -1; } }; @@ -540,13 +560,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 (); @@ -560,6 +583,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 (); @@ -573,6 +605,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 *); @@ -584,13 +617,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr guint32 last_key_press_time; void snapshot_session (bool switch_to_it); + 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; @@ -598,7 +630,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; @@ -606,6 +637,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 */ @@ -624,9 +656,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*); @@ -666,6 +696,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); @@ -706,7 +742,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); @@ -744,12 +779,22 @@ 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 (); std::string _announce_string; void check_announcements (); int do_audio_midi_setup (uint32_t); + void audioengine_became_silent (); }; #endif /* __ardour_gui_h__ */