X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fardour_ui.h;h=637cc117103242ac23f33bf86c064fb5ec475277;hb=b2aaffadc51ad38939e52d5f792e3e9a098ff2d7;hp=33a5f6e3ee0dc95da7713bd4374f5e89f9183402;hpb=6e335ca5d90ddc62b0af9a60a6b156ed74ac8eb1;p=ardour.git diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 33a5f6e3ee..637cc11710 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -53,10 +53,13 @@ #include #include #include -#include -#include -#include -#include + +#include "gtkmm2ext/gtk_ui.h" +#include "gtkmm2ext/click_box.h" +#include "gtkmm2ext/stateful_button.h" +#include "gtkmm2ext/bindable_button.h" +#include "gtkmm2ext/bindings.h" +#include "gtkmm2ext/visibility_tracker.h" #include "ardour/ardour.h" #include "ardour/types.h" @@ -67,47 +70,67 @@ #include "video_timeline.h" -#include "about.h" +#include "add_route_dialog.h" #include "ardour_button.h" #include "ardour_dialog.h" #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" #include "visibility_group.h" #include "window_manager.h" -#include "add_route_dialog.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 "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" +#else +class About; +class AddRouteDialog; +class AddVideoDialog; +class BigClockWindow; +class BundleManager; +class EngineControl; +class ExportVideoDialog; +class KeyEditor; +class LocationUIWindow; +class LuaScriptManager; +class RCOptionEditor; +class RouteParams_UI; +class SessionOptionEditor; +class SpeakerDialog; +class GlobalPortMatrixWindow; +#endif class VideoTimeLine; class ArdourKeyboard; class AudioClock; class ButtonJoiner; class ConnectionEditor; +class DuplicateRouteDialog; class MainClock; class Mixer_UI; +class ArdourPrompter; class PublicEditor; -class RCOptionEditor; -class RouteParams_UI; class SaveAsDialog; class SessionDialog; -class SessionOptionEditor; +class SessionOptionEditorWindow; class ShuttleControl; class Splash; class TimeInfoBox; +class Meterbridge; +class LuaWindow; class MidiTracer; class NSM_Client; class LevelMeterHBox; @@ -123,24 +146,18 @@ namespace ARDOUR { class ProcessThread; } -namespace Gtkmm2ext { - class TearOff; -} - namespace Gtk { class ProgressBar; } +namespace Gtkmm2ext { + class Tabbable; +} + class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr { - 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); +public: + ARDOUR_UI (int *argcp, char **argvp[], const char* localedir); ~ARDOUR_UI(); bool run_startup (bool should_be_new, std::string load_template); @@ -172,9 +189,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr ARDOUR::Session* the_session() { return _session; } 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_dialog (SessionDialog&, 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. @@ -185,20 +202,24 @@ 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 theArdourUI->ui_config; } - static float ui_scale; - + + /* 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; } void new_midi_tracer_window (); void toggle_editing_space(); void toggle_mixer_space(); + void toggle_mixer_list(); + void toggle_monitor_section_visibility (); void toggle_keep_tearoffs(); - Gtk::Tooltips& tooltips() { return _tooltips; } - - Gtk::HBox& editor_transport_box() { return _editor_transport_box; } + void reset_focus (Gtk::Widget*); static PublicEditor* _instance; @@ -210,9 +231,11 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr static sigc::signal Clock; static void close_all_dialogs () { CloseAllDialogs(); } - static sigc::signal CloseAllDialogs; + static sigc::signal CloseAllDialogs; + 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; @@ -225,7 +248,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 (); @@ -241,9 +264,16 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void synchronize_sync_source_and_video_pullup (); - void add_route (Gtk::Window* float_window); - void add_routes_part_two (); - void add_routes_thread (); + 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 (); @@ -253,36 +283,57 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void flush_videotimeline_cache (bool localcacheonly=false); void export_video (bool range = false); + 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, ARDOUR::TrackMode mode, ARDOUR::RouteGroup* route_group, uint32_t how_many, - std::string const & name_template + std::string const & name_template, + bool strict_io, + ARDOUR::PresentationInfo::order_t order ) { - - session_add_audio_route (true, input_channels, output_channels, mode, route_group, how_many, name_template); + session_add_audio_route (true, input_channels, output_channels, mode, route_group, how_many, name_template, strict_io, order); } - void session_add_audio_bus (int input_channels, int32_t output_channels, ARDOUR::RouteGroup* route_group, - uint32_t how_many, std::string const & name_template) { - session_add_audio_route (false, input_channels, output_channels, ARDOUR::Normal, route_group, how_many, name_template); + void session_add_audio_bus ( + int input_channels, + int32_t output_channels, + ARDOUR::RouteGroup* route_group, + uint32_t how_many, + std::string const & name_template, + 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, order); } - void session_add_midi_track (ARDOUR::RouteGroup* route_group, uint32_t how_many, std::string const & name_template, - ARDOUR::PluginInfoPtr instrument) { - session_add_midi_route (true, route_group, how_many, name_template, instrument); + void session_add_midi_track ( + ARDOUR::RouteGroup* route_group, + uint32_t how_many, + std::string const & name_template, + bool strict_io, + ARDOUR::PluginInfoPtr instrument, + 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& input, const ARDOUR::ChanCount& output, ARDOUR::RouteGroup* route_group, uint32_t how_many, std::string const & name_template, - ARDOUR::PluginInfoPtr instrument); - - /*void session_add_midi_bus () { - session_add_midi_route (false); - }*/ - - void attach_to_engine (); + 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 (); void post_engine (); gint exit_on_main_window_close (GdkEventAny *); @@ -292,7 +343,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void show_ui_prefs (); - void update_tearoff_visibility (); + bool check_audioengine(Gtk::Window&); void setup_profile (); void setup_tooltips (); @@ -306,12 +357,31 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void reset_route_peak_display (ARDOUR::Route*); void reset_group_peak_display (ARDOUR::RouteGroup*); - const std::string& announce_string() const { return _announce_string; } + const std::string& announce_string() const { return _announce_string; } + + void hide_application (); + + Gtk::Notebook& tabs(); + Gtk::Window& main_window () { return _main_window; } + + void setup_toplevel_window (Gtk::Window&, const std::string& name, void* owner); + + /* called from a static C function */ - int disconnect_from_engine (); - int reconnect_to_engine (); + GtkNotebook* tab_window_root_drop (GtkNotebook* src, + GtkWidget* w, + gint x, + gint y, + gpointer user_data); - protected: + bool tabbed_window_state_event_handler (GdkEventWindowState*, void* object); + bool key_event_handler (GdkEventKey*, Gtk::Window* window); + + Gtkmm2ext::ActionMap global_actions; + + ARDOUR::PresentationInfo::order_t translate_order (RouteDialogs::InsertAt); + +protected: friend class PublicEditor; void toggle_auto_play (); @@ -325,33 +395,47 @@ 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_audio_midi_setup (); void toggle_session_auto_loop (); void toggle_rc_options_window (); void toggle_session_options_window (); - private: - PublicEditor* editor; - Mixer_UI* mixer; - 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 (); +private: + Gtk::Window _main_window; + Gtkmm2ext::VisibilityTracker* main_window_visibility; + Gtk::VBox main_vpacker; + Gtk::HBox status_bar_hpacker; + Gtk::Notebook _tabs; + PublicEditor* editor; + Mixer_UI* mixer; + Gtk::Tooltips _tooltips; + NSM_Client* nsm; + bool _was_dirty; + bool _mixer_on_top; + bool _initial_verbose_plugin_scan; + bool first_time_engine_run; + + void show_tabbable (Gtkmm2ext::Tabbable*); + void hide_tabbable (Gtkmm2ext::Tabbable*); + void detach_tabbable (Gtkmm2ext::Tabbable*); + void attach_tabbable (Gtkmm2ext::Tabbable*); + 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 (); - void toggle_editor_mixer (); + void toggle_luawindow (); int setup_windows (); void setup_transport (); void setup_clock (); static ARDOUR_UI *theArdourUI; + SessionDialog *_session_dialog; - int starting (); + int starting (); int ask_about_saving_session (const std::vector& actions); @@ -361,6 +445,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void update_autosave(); sigc::connection _autosave_connection; + void session_dirty_changed (); + void update_title (); + void map_transport_state (); int32_t do_engine_start (); @@ -379,23 +466,14 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void start_clocking (); void stop_clocking (); - bool main_window_state_event_handler (GdkEventWindowState*, bool window_was_editor); - void update_transport_clocks (framepos_t pos); void record_state_changed (); std::list _midi_tracer_windows; - 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; @@ -421,7 +499,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr }; TransportControllable (std::string name, ARDOUR_UI&, ToggleType); - void set_value (double); + void set_value (double, PBD::Controllable::GroupControlDisposition group_override); double get_value (void) const; ARDOUR_UI& ui; @@ -466,6 +544,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr ArdourButton feedback_alert_button; ArdourButton error_alert_button; + ArdourButton action_script_call_btn[10]; + Gtk::Table action_script_table; + Gtk::VBox alert_box; Gtk::VBox meter_box; LevelMeterHBox * editor_meter; @@ -476,18 +557,19 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr 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); void _auditioning_changed (bool); - + bool solo_alert_press (GdkEventButton* ev); bool audition_alert_press (GdkEventButton* ev); bool feedback_alert_press (GdkEventButton *); @@ -503,34 +585,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 ARDOUR::cmp_nocase(a.first, b.first) == -1; - } - }; - /* menu bar and associated stuff */ Gtk::MenuBar* menu_bar; @@ -555,6 +609,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr 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 (); @@ -563,7 +620,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr Gtk::Label format_label; void update_format (); - + void every_second (); void every_point_one_seconds (); void every_point_zero_something_seconds (); @@ -577,14 +634,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void open_session (); void open_recent_session (); + bool process_save_template_prompter (ArdourPrompter& prompter); void save_template (); void edit_metadata (); void import_metadata (); - void session_add_audio_route (bool, int32_t, int32_t, ARDOUR::TrackMode, ARDOUR::RouteGroup *, uint32_t, std::string const &); - void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, ARDOUR::PluginInfoPtr); - void set_transport_sensitivity (bool); //stuff for ProTools-style numpad @@ -604,7 +659,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void transport_record (bool roll); void transport_roll (); void transport_play_selection(); - void transport_play_preroll(); + void transport_play_preroll(); void transport_forward (int option); void transport_rewind (int option); void transport_loop (); @@ -620,48 +675,59 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr guint32 last_key_press_time; + bool process_snapshot_session_prompter (ArdourPrompter& prompter, bool switch_to_it); void snapshot_session (bool switch_to_it); + void quick_snapshot_session (bool switch_to_it); //does not promtp for name, just makes a timestamped file + 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 archive_session (); void rename_session (); - void setup_order_hint (AddRouteDialog::InsertAt); int create_mixer (); int create_editor (); + int create_meterbridge (); + int create_luawindow (); + int create_masters (); Meterbridge *meterbridge; - int create_meterbridge (); - /* Dialogs that can be created via new */ - - WM::Proxy speaker_config_window; - 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; - WM::Proxy export_video_dialog; - - /* 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); + LuaWindow *luawindow; + + /* Dialogs that can be created via new */ + + RCOptionEditor* rc_option_editor; + Gtk::HBox rc_option_editor_placeholder; + + WM::Proxy speaker_config_window; + WM::Proxy add_route_dialog; + WM::Proxy about; + WM::Proxy location_ui; + WM::Proxy route_params; + WM::Proxy audio_midi_setup; + WM::Proxy export_video_dialog; + WM::Proxy lua_script_window; + + /* 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; + WM::ProxyWithConstructor key_editor; + + /* 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); + KeyEditor* create_key_editor (); ARDOUR::SystemExec *video_server_process; @@ -675,7 +741,7 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr 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&); @@ -690,6 +756,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; @@ -710,11 +777,12 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void plugin_scan_dialog (std::string type, std::string plugin, bool); void plugin_scan_timeout (int); - void session_format_mismatch (std::string, std::string); + void session_format_mismatch (std::string, std::string); void session_dialog (std::string); int pending_state_dialog (); int sr_mismatch_dialog (ARDOUR::framecnt_t, ARDOUR::framecnt_t); + void sr_mismatch_message (ARDOUR::framecnt_t, ARDOUR::framecnt_t); Gtk::MenuItem* jack_disconnect_item; Gtk::MenuItem* jack_reconnect_item; @@ -741,33 +809,28 @@ 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, Glib::RefPtr ptag, Glib::RefPtr mtag, const char *msg); Gtk::Label status_bar_label; - bool status_bar_button_press (GdkEventButton*); + bool status_bar_button_press (GdkEventButton*); void loading_message (const std::string& msg); PBD::ScopedConnectionList forever_connections; - PBD::ScopedConnection halt_connection; + PBD::ScopedConnection halt_connection; - void step_edit_status_change (bool); + void step_edit_status_change (bool); - void platform_specific (); - void platform_setup (); - - /* these are used only in response to a platform-specific "ShouldQuit" signal - */ + /* these are used only in response to a platform-specific "ShouldQuit" signal */ bool idle_finish (); void queue_finish (); void fontconfig_dialog (); - int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type); - int ambiguous_file (std::string file, std::vector hits); + int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type); + int ambiguous_file (std::string file, std::vector hits); bool click_button_clicked (GdkEventButton *); @@ -797,12 +860,40 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr void resize_text_widgets (); - std::string _announce_string; - void check_announcements (); + bool xrun_button_release (GdkEventButton* ev); - int do_audio_midi_setup (uint32_t); + std::string _announce_string; + void check_announcements (); + + int do_audio_midi_setup (uint32_t); void audioengine_became_silent (); + + DuplicateRouteDialog* duplicate_routes_dialog; + + void grab_focus_after_dialog (); + + void tabs_switch (GtkNotebookPage*, guint page_number); + void tabs_page_added (Gtk::Widget*, guint); + void tabs_page_removed (Gtk::Widget*, guint); + ArdourButton editor_visibility_button; + ArdourButton mixer_visibility_button; + ArdourButton prefs_visibility_button; + + bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev, Gtkmm2ext::Bindings*); + bool try_gtk_accel_binding (GtkWindow* win, GdkEventKey* ev, bool translate, GdkModifierType modifier); + + bool main_window_delete_event (GdkEventAny*); + bool idle_ask_about_quit (); + + void load_bindings (); + bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name); + + void step_up_through_tabs (); + void step_down_through_tabs (); + + void escape (); + void close_current_dialog (); + void pre_release_dialog (); }; #endif /* __ardour_gui_h__ */ -