2 Copyright (C) 1999-2002 Paul Davis
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 #ifndef __ardour_gui_h__
21 #define __ardour_gui_h__
25 /* need _BSD_SOURCE to get timersub macros */
39 #include "pbd/xml++.h"
40 #include <gtkmm/box.h>
41 #include <gtkmm/frame.h>
42 #include <gtkmm/label.h>
43 #include <gtkmm/table.h>
44 #include <gtkmm/fixed.h>
45 #include <gtkmm/drawingarea.h>
46 #include <gtkmm/eventbox.h>
47 #include <gtkmm/menu.h>
48 #include <gtkmm/menuitem.h>
49 #include <gtkmm/messagedialog.h>
50 #include <gtkmm/notebook.h>
51 #include <gtkmm/button.h>
52 #include <gtkmm/togglebutton.h>
53 #include <gtkmm/treeview.h>
54 #include <gtkmm/menubar.h>
55 #include <gtkmm/textbuffer.h>
56 #include <gtkmm/adjustment.h>
58 #include "gtkmm2ext/gtk_ui.h"
59 #include "gtkmm2ext/bindings.h"
60 #include "gtkmm2ext/visibility_tracker.h"
62 #include "ardour/ardour.h"
63 #include "ardour/types.h"
64 #include "ardour/utils.h"
65 #include "ardour/plugin.h"
66 #include "ardour/session_handle.h"
67 #include "ardour/system_exec.h"
69 #include "video_timeline.h"
71 #include "widgets/ardour_button.h"
72 #include "widgets/ardour_spacer.h"
74 #include "add_route_dialog.h"
75 #include "ardour_dialog.h"
76 #include "ardour_window.h"
79 #include "mini_timeline.h"
80 #include "shuttle_control.h"
81 #include "transport_control.h"
82 #include "transport_control_ui.h"
83 #include "visibility_group.h"
84 #include "window_manager.h"
88 #include "add_video_dialog.h"
89 #include "big_clock_window.h"
90 #include "big_transport_window.h"
91 #include "bundle_manager.h"
92 #include "engine_dialog.h"
93 #include "export_video_dialog.h"
94 #include "global_port_matrix.h"
95 #include "idleometer.h"
96 #include "keyeditor.h"
97 #include "location_ui.h"
98 #include "lua_script_manager.h"
99 #include "rc_option_editor.h"
100 #include "route_dialogs.h"
101 #include "route_params_ui.h"
102 #include "session_option_editor.h"
103 #include "speaker_dialog.h"
106 class AddRouteDialog;
107 class AddVideoDialog;
108 class BigClockWindow;
109 class BigTransportWindow;
112 class ExportVideoDialog;
114 class LocationUIWindow;
115 class LuaScriptManager;
116 class RCOptionEditor;
117 class RouteParams_UI;
118 class SessionOptionEditor;
120 class GlobalPortMatrixWindow;
125 class ArdourKeyboard;
127 class ConnectionEditor;
128 class DuplicateRouteDialog;
133 class SaveTemplateDialog;
135 class SessionOptionEditorWindow;
142 class LevelMeterHBox;
143 class GUIObjectState;
146 class ControlProtocolInfo;
159 namespace ArdourWidgets {
164 class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr, public TransportControlProvider
167 ARDOUR_UI (int *argcp, char **argvp[], const char* localedir);
170 bool run_startup (bool should_be_new, std::string load_template);
176 void launch_manual ();
177 void launch_reference ();
178 void launch_tracker ();
179 void launch_subscribe ();
180 void launch_cheat_sheet ();
181 void launch_website ();
182 void launch_website_dev ();
183 void launch_forums ();
184 void launch_howto_report ();
188 void load_from_application_api (const std::string& path);
191 int load_session (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
193 bool session_load_in_progress;
194 int build_session (const std::string& path, const std::string& snapshot, ARDOUR::BusProfile*);
195 bool session_is_new() const { return _session_is_new; }
197 ARDOUR::Session* the_session() { return _session; }
199 bool get_smart_mode () const;
201 RCOptionEditor* get_rc_option_editor() { return rc_option_editor; }
202 void show_tabbable (ArdourWidgets::Tabbable*);
204 int get_session_parameters (bool quit_on_cancel, bool should_be_new = false, std::string load_template = "");
205 int build_session_from_dialog (SessionDialog&, const std::string& session_name, const std::string& session_path);
206 bool ask_about_loading_existing_session (const std::string& session_path);
208 /// @return true if session was successfully unloaded.
209 int unload_session (bool hide_stuff = false);
210 void close_session();
212 int save_state_canfail (std::string state_name = "", bool switch_to_it = false);
213 void save_state (const std::string & state_name = "", bool switch_to_it = false);
215 static ARDOUR_UI *instance () { return theArdourUI; }
217 /* signal emitted when escape key is pressed. All UI components that
218 need to respond to Escape in some way (e.g. break drag, clear
219 selection, etc) should connect to and handle this.
221 PBD::Signal0<void> Escape;
223 PublicEditor& the_editor() { return *editor;}
224 Mixer_UI* the_mixer() { return mixer; }
226 void new_midi_tracer_window ();
227 void toggle_editing_space();
228 void toggle_mixer_space();
229 void toggle_mixer_list();
230 void toggle_monitor_section_visibility ();
231 void toggle_keep_tearoffs();
233 void toggle_vca_pane();
235 void toggle_mixbus_pane();
238 void reset_focus (Gtk::Widget*);
240 static PublicEditor* _instance;
242 /** Emitted frequently with the audible sample, false, and the edit point as
243 * parameters respectively.
245 * (either RapidScreenUpdate || SuperRapidScreenUpdate - user-config)
247 static sigc::signal<void, samplepos_t> Clock;
249 static void close_all_dialogs () { CloseAllDialogs(); }
250 static sigc::signal<void> CloseAllDialogs;
252 XMLNode* main_window_settings() const;
253 XMLNode* editor_settings() const;
254 XMLNode* preferences_settings() const;
255 XMLNode* mixer_settings () const;
256 XMLNode* keyboard_settings () const;
257 XMLNode* tearoff_settings (const char*) const;
259 void save_ardour_state ();
260 gboolean configure_handler (GdkEventConfigure* conf);
262 void halt_on_xrun_message ();
263 void xrun_handler (samplepos_t);
264 void create_xrun_marker (samplepos_t);
266 GUIObjectState* gui_object_state;
268 MainClock* primary_clock;
269 MainClock* secondary_clock;
270 void focus_on_clock ();
271 AudioClock* big_clock;
273 VideoTimeLine *video_timeline;
275 void store_clock_modes ();
276 void restore_clock_modes ();
277 void reset_main_clocks ();
279 void synchronize_sync_source_and_video_pullup ();
282 void add_route_dialog_response (int);
284 void add_routes_part_two ();
285 void add_routes_thread ();
287 void start_duplicate_routes ();
289 void add_video (Gtk::Window* float_window);
290 void remove_video ();
291 void start_video_server_menu (Gtk::Window* float_window);
292 bool start_video_server (Gtk::Window* float_window, bool popup_msg);
293 void stop_video_server (bool ask_confirm=false);
294 void flush_videotimeline_cache (bool localcacheonly=false);
295 void export_video (bool range = false);
297 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);
299 void session_add_mixed_track (const ARDOUR::ChanCount&, const ARDOUR::ChanCount&, ARDOUR::RouteGroup*,
300 uint32_t, std::string const &, bool strict_io,
301 ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord* pset,
302 ARDOUR::PresentationInfo::order_t order);
304 void session_add_midi_bus (ARDOUR::RouteGroup*, uint32_t, std::string const &, bool strict_io,
305 ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord* pset,
306 ARDOUR::PresentationInfo::order_t order);
308 void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool,
309 ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord*,
310 ARDOUR::PresentationInfo::order_t order);
312 void display_insufficient_ports_message ();
314 void attach_to_engine ();
317 gint exit_on_main_window_close (GdkEventAny *);
319 void maximise_editing_space ();
320 void restore_editing_space ();
322 void show_ui_prefs ();
324 bool check_audioengine(Gtk::Window&);
326 void setup_profile ();
327 void setup_tooltips ();
329 void set_shuttle_fract (double);
331 void get_process_buffers ();
332 void drop_process_buffers ();
334 void reset_peak_display ();
335 void reset_route_peak_display (ARDOUR::Route*);
336 void reset_group_peak_display (ARDOUR::RouteGroup*);
338 const std::string& announce_string() const { return _announce_string; }
340 void hide_application ();
342 Gtk::Notebook& tabs();
343 Gtk::Window& main_window () { return _main_window; }
345 void setup_toplevel_window (Gtk::Window&, const std::string& name, void* owner);
347 /* called from a static C function */
349 GtkNotebook* tab_window_root_drop (GtkNotebook* src,
355 bool tabbed_window_state_event_handler (GdkEventWindowState*, void* object);
356 bool key_event_handler (GdkEventKey*, Gtk::Window* window);
358 Gtkmm2ext::ActionMap global_actions;
360 ARDOUR::PresentationInfo::order_t translate_order (RouteDialogs::InsertAt);
362 std::map<std::string, std::string> route_setup_info (const std::string& script_path);
365 friend class PublicEditor;
367 void toggle_auto_play ();
368 void toggle_auto_input ();
369 void toggle_punch ();
370 void unset_dual_punch ();
371 bool ignore_dual_punch;
372 void toggle_punch_in ();
373 void toggle_punch_out ();
374 void toggle_session_monitoring_in ();
375 void toggle_session_monitoring_disk ();
376 void show_loop_punch_ruler_and_disallow_hide ();
377 void reenable_hide_loop_punch_ruler_if_appropriate ();
378 void toggle_auto_return ();
379 void toggle_click ();
380 void toggle_audio_midi_setup ();
381 void toggle_session_auto_loop ();
382 void toggle_rc_options_window ();
383 void toggle_session_options_window ();
387 Gtk::Window _main_window;
388 Gtkmm2ext::VisibilityTracker* main_window_visibility;
389 Gtk::VBox main_vpacker;
390 Gtk::HBox status_bar_hpacker;
392 PublicEditor* editor;
394 Gtk::Tooltips _tooltips;
398 bool _initial_verbose_plugin_scan;
399 bool first_time_engine_run;
401 void hide_tabbable (ArdourWidgets::Tabbable*);
402 void detach_tabbable (ArdourWidgets::Tabbable*);
403 void attach_tabbable (ArdourWidgets::Tabbable*);
404 void button_change_tabbable_visibility (ArdourWidgets::Tabbable*);
405 void key_change_tabbable_visibility (ArdourWidgets::Tabbable*);
406 void toggle_editor_and_mixer ();
408 void tabbable_state_change (ArdourWidgets::Tabbable&);
410 void toggle_meterbridge ();
411 void toggle_luawindow ();
413 int setup_windows ();
414 void setup_transport ();
417 static ARDOUR_UI *theArdourUI;
418 SessionDialog *_session_dialog;
422 int ask_about_saving_session (const std::vector<std::string>& actions);
424 void save_session_at_its_request (std::string);
425 /* periodic safety backup, to be precise */
426 gint autosave_session();
427 void update_autosave();
428 sigc::connection _autosave_connection;
430 void session_dirty_changed ();
431 void update_title ();
433 void map_transport_state ();
434 int32_t do_engine_start ();
436 void engine_halted (const char* reason, bool free_reason);
437 void engine_stopped ();
438 void engine_running ();
442 void about_signal_response(int response);
444 Gtk::VBox top_packer;
446 sigc::connection clock_signal_connection;
447 void update_clocks ();
448 void start_clocking ();
449 void stop_clocking ();
451 void update_transport_clocks (samplepos_t pos);
452 void record_state_changed ();
454 std::list<MidiTracer*> _midi_tracer_windows;
456 /* Transport Control */
458 Gtk::Table transport_table;
459 Gtk::Frame transport_frame;
460 Gtk::HBox transport_hbox;
462 ArdourWidgets::ArdourVSpacer* secondary_clock_spacer;
463 void repack_transport_hbox ();
464 void update_clock_visibility ();
465 void toggle_follow_edits ();
467 void set_transport_controllable_state (const XMLNode&);
468 XMLNode& get_transport_controllable_state ();
470 TransportControlUI transport_ctrl;
472 ArdourWidgets::ArdourButton punch_in_button;
473 ArdourWidgets::ArdourButton punch_out_button;
474 ArdourWidgets::ArdourButton layered_button;
476 ArdourWidgets::ArdourVSpacer recpunch_spacer;
477 ArdourWidgets::ArdourVSpacer monitoring_spacer;
479 ArdourWidgets::ArdourButton monitor_in_button;
480 ArdourWidgets::ArdourButton monitor_disk_button;
481 ArdourWidgets::ArdourButton auto_input_button;
483 Gtk::Label punch_label;
484 Gtk::Label layered_label;
486 Gtk::Label punch_space;
487 Gtk::Label mon_space;
489 void toggle_external_sync ();
490 void toggle_time_master ();
491 void toggle_video_sync ();
493 ShuttleControl shuttle_box;
494 MiniTimeline mini_timeline;
495 TimeInfoBox* time_info_box;
498 ArdourWidgets::ArdourVSpacer meterbox_spacer;
499 ArdourWidgets::ArdourVSpacer meterbox_spacer2;
501 ArdourWidgets::ArdourButton auto_return_button;
502 ArdourWidgets::ArdourButton follow_edits_button;
503 ArdourWidgets::ArdourButton sync_button;
505 ArdourWidgets::ArdourButton auditioning_alert_button;
506 ArdourWidgets::ArdourButton solo_alert_button;
507 ArdourWidgets::ArdourButton feedback_alert_button;
508 ArdourWidgets::ArdourButton error_alert_button;
510 ArdourWidgets::ArdourButton action_script_call_btn[10];
511 Gtk::Table action_script_table;
514 Gtk::Table editor_meter_table;
515 ArdourWidgets::ArdourButton editor_meter_peak_display;
516 LevelMeterHBox * editor_meter;
517 float editor_meter_max_peak;
518 bool editor_meter_peak_button_release (GdkEventButton*);
520 bool editor_meter_button_press (GdkEventButton* ev);
521 void popup_editor_meter_menu (GdkEventButton* ev);
522 void add_editor_meter_type_item (Gtk::Menu_Helpers::MenuList&, Gtk::RadioMenuItem::Group&, std::string const &, ARDOUR::MeterType);
523 bool _suspend_editor_meter_callbacks;
525 void blink_handler (bool);
526 sigc::connection blink_connection;
529 void solo_blink (bool);
530 void sync_blink (bool);
531 void audition_blink (bool);
532 void feedback_blink (bool);
533 void error_blink (bool);
535 void set_flat_buttons();
537 void soloing_changed (bool);
538 void auditioning_changed (bool);
539 void _auditioning_changed (bool);
541 bool solo_alert_press (GdkEventButton* ev);
542 void audition_alert_clicked ();
543 bool error_alert_press (GdkEventButton *);
545 void layered_button_clicked ();
547 void big_clock_value_changed ();
548 void primary_clock_value_changed ();
549 void secondary_clock_value_changed ();
551 /* called by Blink signal */
553 void transport_rec_enable_blink (bool onoff);
555 Gtk::Menu* session_popup_menu;
557 /* menu bar and associated stuff */
559 Gtk::MenuBar* menu_bar;
560 Gtk::EventBox menu_bar_base;
563 void use_menubar_as_top_menubar ();
564 void build_menu_bar ();
566 Gtk::Label wall_clock_label;
567 gint update_wall_clock ();
569 Gtk::Label disk_space_label;
570 void update_disk_space ();
571 void format_disk_space_label (float);
573 Gtk::Label timecode_format_label;
574 void update_timecode_format ();
576 Gtk::Label dsp_load_label;
577 void update_cpu_load ();
579 Gtk::Label peak_thread_work_label;
580 void update_peak_thread_work ();
582 Gtk::Label sample_rate_label;
583 void update_sample_rate (ARDOUR::samplecnt_t);
585 Gtk::Label format_label;
586 void update_format ();
588 void every_second ();
589 void every_point_one_seconds ();
590 void every_point_zero_something_seconds ();
592 sigc::connection second_connection;
593 sigc::connection point_one_second_connection;
594 sigc::connection point_zero_something_second_connection;
595 sigc::connection fps_connection;
597 void set_fps_timeout_connection ();
599 void open_session ();
600 void open_recent_session ();
601 void save_template_dialog_response (int response, SaveTemplateDialog* d);
602 void save_template ();
603 void manage_templates ();
605 void meta_session_setup (const std::string& script_path);
606 void meta_route_setup (const std::string& script_path);
608 void edit_metadata ();
609 void import_metadata ();
611 void set_transport_sensitivity (bool);
613 //stuff for ProTools-style numpad
614 void transport_numpad_event (int num);
615 void transport_numpad_decimal ();
616 bool _numpad_locate_happening;
617 int _pending_locate_num;
618 gint transport_numpad_timeout ();
619 sigc::connection _numpad_timeout_connection;
621 void transport_goto_nth_marker (int nth);
622 void transport_goto_zero ();
623 void transport_goto_start ();
624 void transport_goto_end ();
625 void transport_goto_wallclock ();
626 void transport_stop ();
627 void transport_record (bool roll);
628 void transport_roll ();
629 void transport_play_selection();
630 void transport_play_preroll();
631 void transport_rec_preroll();
632 void transport_rec_count_in();
633 void transport_forward (int option);
634 void transport_rewind (int option);
635 void transport_loop ();
636 void toggle_roll (bool with_abort, bool roll_out_of_bounded_mode);
637 bool trx_record_enable_all_tracks ();
639 bool _session_is_new;
640 void set_session (ARDOUR::Session *);
641 void connect_dependents_to_session (ARDOUR::Session *);
642 void we_have_dependents ();
644 void setup_session_options ();
646 guint32 last_key_press_time;
648 bool process_snapshot_session_prompter (ArdourWidgets::Prompter& prompter, bool switch_to_it);
649 void snapshot_session (bool switch_to_it);
651 void quick_snapshot_session (bool switch_to_it); //does not promtp for name, just makes a timestamped file
653 SaveAsDialog* save_as_dialog;
655 bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar);
656 void save_session_as ();
657 void archive_session ();
658 void rename_session ();
661 int create_editor ();
662 int create_meterbridge ();
663 int create_luawindow ();
664 int create_masters ();
666 Meterbridge *meterbridge;
667 LuaWindow *luawindow;
669 /* Dialogs that can be created via new<T> */
671 RCOptionEditor* rc_option_editor;
672 Gtk::HBox rc_option_editor_placeholder;
674 WM::Proxy<SpeakerDialog> speaker_config_window;
675 WM::Proxy<AddRouteDialog> add_route_dialog;
676 WM::Proxy<About> about;
677 WM::Proxy<LocationUIWindow> location_ui;
678 WM::Proxy<RouteParams_UI> route_params;
679 WM::Proxy<EngineControl> audio_midi_setup;
680 WM::Proxy<ExportVideoDialog> export_video_dialog;
681 WM::Proxy<LuaScriptManager> lua_script_window;
682 WM::Proxy<IdleOMeter> idleometer;
684 /* Windows/Dialogs that require a creator method */
686 WM::ProxyWithConstructor<SessionOptionEditor> session_option_editor;
687 WM::ProxyWithConstructor<AddVideoDialog> add_video_dialog;
688 WM::ProxyWithConstructor<BundleManager> bundle_manager;
689 WM::ProxyWithConstructor<BigClockWindow> big_clock_window;
690 WM::ProxyWithConstructor<BigTransportWindow> big_transport_window;
691 WM::ProxyWithConstructor<GlobalPortMatrixWindow> audio_port_matrix;
692 WM::ProxyWithConstructor<GlobalPortMatrixWindow> midi_port_matrix;
693 WM::ProxyWithConstructor<KeyEditor> key_editor;
695 /* creator methods */
697 SessionOptionEditor* create_session_option_editor ();
698 BundleManager* create_bundle_manager ();
699 AddVideoDialog* create_add_video_dialog ();
700 BigClockWindow* create_big_clock_window();
701 BigTransportWindow* create_big_transport_window();
702 GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType);
703 KeyEditor* create_key_editor ();
705 ARDOUR::SystemExec *video_server_process;
707 void handle_locations_change (ARDOUR::Location*);
709 /* Keyboard Handling */
711 ArdourKeyboard* keyboard;
713 /* Keymap handling */
715 void install_actions ();
717 void toggle_record_enable (uint16_t);
719 uint32_t rec_enabled_streams;
720 void count_recenabled_streams (ARDOUR::Route&);
724 void pop_back_splash (Gtk::Window&);
728 Gtk::MenuItem *cleanup_item;
730 void display_cleanup_results (ARDOUR::CleanupReport& rep, const gchar* list_title, const bool msg_delete);
732 void cleanup_peakfiles ();
735 bool have_configure_timeout;
736 ARDOUR::microseconds_t last_configure_time;
737 gint configure_timeout ();
739 ARDOUR::microseconds_t last_peak_grab;
740 ARDOUR::microseconds_t last_shuttle_request;
742 bool have_disk_speed_dialog_displayed;
743 void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*);
744 void disk_overrun_handler ();
745 void disk_underrun_handler ();
746 void gui_idle_handler ();
748 void cancel_plugin_scan ();
749 void cancel_plugin_timeout ();
750 void plugin_scan_dialog (std::string type, std::string plugin, bool);
751 void plugin_scan_timeout (int);
753 void session_format_mismatch (std::string, std::string);
755 void session_dialog (std::string);
756 int pending_state_dialog ();
757 int sr_mismatch_dialog (ARDOUR::samplecnt_t, ARDOUR::samplecnt_t);
758 void sr_mismatch_message (ARDOUR::samplecnt_t, ARDOUR::samplecnt_t);
760 Gtk::MenuItem* jack_disconnect_item;
761 Gtk::MenuItem* jack_reconnect_item;
762 Gtk::Menu* jack_bufsize_menu;
764 Glib::RefPtr<Gtk::ActionGroup> common_actions;
766 void editor_realized ();
768 std::vector<std::string> positional_sync_strings;
770 void toggle_use_mmc ();
771 void toggle_send_mmc ();
772 void toggle_send_mtc ();
773 void toggle_send_midi_clock ();
775 void toggle_use_osc ();
777 void parameter_changed (std::string);
778 void session_parameter_changed (std::string);
782 void check_memory_locking ();
784 void audioengine_setup ();
786 void display_message (const char* prefix, gint prefix_len, Glib::RefPtr<Gtk::TextBuffer::Tag>, Glib::RefPtr<Gtk::TextBuffer::Tag>, const char* msg);
787 Gtk::Label status_bar_label;
788 bool status_bar_button_press (GdkEventButton*);
790 void loading_message (const std::string& msg);
792 PBD::ScopedConnectionList forever_connections;
793 PBD::ScopedConnection halt_connection;
794 PBD::ScopedConnection editor_meter_connection;
796 /* these are used only in response to a platform-specific "ShouldQuit" signal */
798 void queue_finish ();
799 void fontconfig_dialog ();
801 int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type);
802 int ambiguous_file (std::string file, std::vector<std::string> hits);
804 bool click_button_clicked (GdkEventButton *);
805 bool sync_button_clicked (GdkEventButton *);
807 VisibilityGroup _status_bar_visibility;
809 /** A ProcessThread so that we have some thread-local buffers for use by
810 * PluginEqGui::impulse_analysis ().
812 ARDOUR::ProcessThread* _process_thread;
814 void feedback_detected ();
816 ArdourWidgets::ArdourButton midi_panic_button;
819 void successful_graph_sort ();
820 bool _feedback_exists;
822 enum ArdourLogLevel {
829 ArdourLogLevel _log_not_acknowledged;
831 void resize_text_widgets ();
833 bool xrun_button_release (GdkEventButton* ev);
835 std::string _announce_string;
836 void check_announcements ();
838 int do_audio_midi_setup (uint32_t);
839 void audioengine_became_silent ();
841 DuplicateRouteDialog* duplicate_routes_dialog;
843 void grab_focus_after_dialog ();
845 void tabs_switch (GtkNotebookPage*, guint page_number);
846 void tabs_page_added (Gtk::Widget*, guint);
847 void tabs_page_removed (Gtk::Widget*, guint);
848 ArdourWidgets::ArdourButton editor_visibility_button;
849 ArdourWidgets::ArdourButton mixer_visibility_button;
850 ArdourWidgets::ArdourButton prefs_visibility_button;
852 bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev, Gtkmm2ext::Bindings*);
853 bool try_gtk_accel_binding (GtkWindow* win, GdkEventKey* ev, bool translate, GdkModifierType modifier);
855 bool main_window_delete_event (GdkEventAny*);
856 bool idle_ask_about_quit ();
858 void load_bindings ();
859 bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name);
861 void step_up_through_tabs ();
862 void step_down_through_tabs ();
865 void close_current_dialog ();
866 void pre_release_dialog ();
868 bool bind_lua_action_script (GdkEventButton*, int);
869 void update_action_script_btn (int i, const std::string&);
872 #endif /* __ardour_gui_h__ */