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 "plugin_dspload_window.h"
100 #include "rc_option_editor.h"
101 #include "route_dialogs.h"
102 #include "route_params_ui.h"
103 #include "session_option_editor.h"
104 #include "speaker_dialog.h"
105 #include "transport_masters_dialog.h"
108 class AddRouteDialog;
109 class AddVideoDialog;
110 class BigClockWindow;
111 class BigTransportWindow;
114 class ExportVideoDialog;
116 class LocationUIWindow;
117 class LuaScriptManager;
118 class RCOptionEditor;
119 class RouteParams_UI;
120 class SessionOptionEditor;
122 class GlobalPortMatrixWindow;
124 class PluginDSPLoadWindow;
125 class TransportMastersWindow;
129 class ArdourKeyboard;
131 class ConnectionEditor;
132 class DuplicateRouteDialog;
137 class SaveTemplateDialog;
139 class SessionOptionEditorWindow;
146 class LevelMeterHBox;
147 class GUIObjectState;
150 class ControlProtocolInfo;
163 namespace ArdourWidgets {
168 #define MAX_LUA_ACTION_SCRIPTS 12
170 class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr, public TransportControlProvider
173 ARDOUR_UI (int *argcp, char **argvp[], const char* localedir);
176 bool run_startup (bool should_be_new, std::string load_template);
182 void launch_manual ();
183 void launch_reference ();
184 void launch_tracker ();
185 void launch_subscribe ();
186 void launch_cheat_sheet ();
187 void launch_website ();
188 void launch_website_dev ();
189 void launch_forums ();
190 void launch_howto_report ();
194 void load_from_application_api (const std::string& path);
197 int load_session (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
199 bool session_load_in_progress;
200 int build_session (const std::string& path, const std::string& snapshot, ARDOUR::BusProfile*);
201 bool session_is_new() const { return _session_is_new; }
203 ARDOUR::Session* the_session() { return _session; }
205 bool get_smart_mode () const;
207 RCOptionEditor* get_rc_option_editor() { return rc_option_editor; }
208 void show_tabbable (ArdourWidgets::Tabbable*);
210 int get_session_parameters (bool quit_on_cancel, bool should_be_new = false, std::string load_template = "");
211 int build_session_from_dialog (SessionDialog&, const std::string& session_name, const std::string& session_path);
212 bool ask_about_loading_existing_session (const std::string& session_path);
214 /// @return true if session was successfully unloaded.
215 int unload_session (bool hide_stuff = false);
216 void close_session();
218 int save_state_canfail (std::string state_name = "", bool switch_to_it = false);
219 void save_state (const std::string & state_name = "", bool switch_to_it = false);
221 static ARDOUR_UI *instance () { return theArdourUI; }
223 /* signal emitted when escape key is pressed. All UI components that
224 need to respond to Escape in some way (e.g. break drag, clear
225 selection, etc) should connect to and handle this.
227 PBD::Signal0<void> Escape;
229 PublicEditor& the_editor() { return *editor;}
230 Mixer_UI* the_mixer() { return mixer; }
232 void new_midi_tracer_window ();
233 void toggle_editing_space();
234 void toggle_mixer_space();
235 void toggle_mixer_list();
236 void toggle_monitor_section_visibility ();
237 void toggle_keep_tearoffs();
239 void toggle_vca_pane();
241 void toggle_mixbus_pane();
244 void reset_focus (Gtk::Widget*);
246 static PublicEditor* _instance;
248 /** Emitted frequently with the audible sample, false, and the edit point as
249 * parameters respectively.
251 * (either RapidScreenUpdate || SuperRapidScreenUpdate - user-config)
253 static sigc::signal<void, samplepos_t> Clock;
255 static void close_all_dialogs () { CloseAllDialogs(); }
256 static sigc::signal<void> CloseAllDialogs;
258 XMLNode* main_window_settings() const;
259 XMLNode* editor_settings() const;
260 XMLNode* preferences_settings() const;
261 XMLNode* mixer_settings () const;
262 XMLNode* keyboard_settings () const;
263 XMLNode* tearoff_settings (const char*) const;
265 void save_ardour_state ();
266 gboolean configure_handler (GdkEventConfigure* conf);
268 void halt_on_xrun_message ();
269 void xrun_handler (samplepos_t);
270 void create_xrun_marker (samplepos_t);
272 GUIObjectState* gui_object_state;
274 MainClock* primary_clock;
275 MainClock* secondary_clock;
276 void focus_on_clock ();
277 AudioClock* big_clock;
279 VideoTimeLine *video_timeline;
281 void store_clock_modes ();
282 void restore_clock_modes ();
283 void reset_main_clocks ();
285 void synchronize_sync_source_and_video_pullup ();
288 void add_route_dialog_response (int);
290 void add_routes_part_two ();
291 void add_routes_thread ();
293 void start_duplicate_routes ();
295 void add_video (Gtk::Window* float_window);
296 void remove_video ();
297 void start_video_server_menu (Gtk::Window* float_window);
298 bool start_video_server (Gtk::Window* float_window, bool popup_msg);
299 void stop_video_server (bool ask_confirm=false);
300 void flush_videotimeline_cache (bool localcacheonly=false);
301 void export_video (bool range = false);
303 void session_add_audio_route (bool, int32_t, int32_t, ARDOUR::TrackMode, ARDOUR::RouteGroup *,
304 uint32_t, std::string const &, bool, ARDOUR::PresentationInfo::order_t order);
306 void session_add_mixed_track (const ARDOUR::ChanCount&, const ARDOUR::ChanCount&, ARDOUR::RouteGroup*,
307 uint32_t, std::string const &, bool strict_io,
308 ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord* pset,
309 ARDOUR::PresentationInfo::order_t order);
311 void session_add_midi_bus (ARDOUR::RouteGroup*, uint32_t, std::string const &, bool strict_io,
312 ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord* pset,
313 ARDOUR::PresentationInfo::order_t order);
315 void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool,
316 ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord*,
317 ARDOUR::PresentationInfo::order_t order);
319 void session_add_foldback_bus (uint32_t, std::string const &);
321 void display_insufficient_ports_message ();
323 void attach_to_engine ();
326 gint exit_on_main_window_close (GdkEventAny *);
328 void maximise_editing_space ();
329 void restore_editing_space ();
331 void show_ui_prefs ();
333 bool check_audioengine(Gtk::Window&);
335 void setup_profile ();
336 void setup_tooltips ();
338 void set_shuttle_fract (double);
340 void get_process_buffers ();
341 void drop_process_buffers ();
343 void reset_peak_display ();
344 void reset_route_peak_display (ARDOUR::Route*);
345 void reset_group_peak_display (ARDOUR::RouteGroup*);
347 const std::string& announce_string() const { return _announce_string; }
349 void hide_application ();
351 Gtk::Notebook& tabs();
352 Gtk::Window& main_window () { return _main_window; }
354 void setup_toplevel_window (Gtk::Window&, const std::string& name, void* owner);
356 /* called from a static C function */
358 GtkNotebook* tab_window_root_drop (GtkNotebook* src,
364 bool tabbed_window_state_event_handler (GdkEventWindowState*, void* object);
365 bool key_event_handler (GdkEventKey*, Gtk::Window* window);
367 Gtkmm2ext::ActionMap global_actions;
369 ARDOUR::PresentationInfo::order_t translate_order (RouteDialogs::InsertAt);
371 std::map<std::string, std::string> route_setup_info (const std::string& script_path);
374 friend class PublicEditor;
376 void toggle_auto_play ();
377 void toggle_auto_input ();
378 void toggle_punch ();
379 void unset_dual_punch ();
380 bool ignore_dual_punch;
381 void toggle_punch_in ();
382 void toggle_punch_out ();
383 void toggle_session_monitoring_in ();
384 void toggle_session_monitoring_disk ();
385 void show_loop_punch_ruler_and_disallow_hide ();
386 void reenable_hide_loop_punch_ruler_if_appropriate ();
387 void toggle_auto_return ();
388 void toggle_click ();
389 void toggle_audio_midi_setup ();
390 void toggle_session_auto_loop ();
391 void toggle_rc_options_window ();
392 void toggle_session_options_window ();
396 Gtk::Window _main_window;
397 Gtkmm2ext::VisibilityTracker* main_window_visibility;
398 Gtk::VBox main_vpacker;
399 Gtk::HBox status_bar_hpacker;
401 PublicEditor* editor;
403 Gtk::Tooltips _tooltips;
407 bool _initial_verbose_plugin_scan;
408 bool first_time_engine_run;
410 void hide_tabbable (ArdourWidgets::Tabbable*);
411 void detach_tabbable (ArdourWidgets::Tabbable*);
412 void attach_tabbable (ArdourWidgets::Tabbable*);
413 void button_change_tabbable_visibility (ArdourWidgets::Tabbable*);
414 void key_change_tabbable_visibility (ArdourWidgets::Tabbable*);
415 void toggle_editor_and_mixer ();
417 void tabbable_state_change (ArdourWidgets::Tabbable&);
419 void toggle_meterbridge ();
420 void toggle_luawindow ();
422 int setup_windows ();
423 void setup_transport ();
426 static ARDOUR_UI *theArdourUI;
427 SessionDialog *_session_dialog;
431 int ask_about_saving_session (const std::vector<std::string>& actions);
433 void save_session_at_its_request (std::string);
434 /* periodic safety backup, to be precise */
435 gint autosave_session();
436 void update_autosave();
437 sigc::connection _autosave_connection;
439 void session_dirty_changed ();
440 void update_title ();
442 void map_transport_state ();
443 int32_t do_engine_start ();
445 void engine_halted (const char* reason, bool free_reason);
446 void engine_stopped ();
447 void engine_running ();
451 void about_signal_response(int response);
453 Gtk::VBox top_packer;
455 sigc::connection clock_signal_connection;
456 void update_clocks ();
457 void start_clocking ();
458 void stop_clocking ();
460 void update_transport_clocks (samplepos_t pos);
461 void record_state_changed ();
463 std::list<MidiTracer*> _midi_tracer_windows;
465 /* Transport Control */
467 Gtk::Table transport_table;
468 Gtk::Frame transport_frame;
469 Gtk::HBox transport_hbox;
471 ArdourWidgets::ArdourVSpacer* secondary_clock_spacer;
472 void repack_transport_hbox ();
473 void update_clock_visibility ();
474 void toggle_follow_edits ();
476 void set_transport_controllable_state (const XMLNode&);
477 XMLNode& get_transport_controllable_state ();
479 TransportControlUI transport_ctrl;
481 ArdourWidgets::ArdourButton punch_in_button;
482 ArdourWidgets::ArdourButton punch_out_button;
483 ArdourWidgets::ArdourButton layered_button;
485 ArdourWidgets::ArdourVSpacer recpunch_spacer;
486 ArdourWidgets::ArdourVSpacer monitoring_spacer;
488 ArdourWidgets::ArdourButton monitor_in_button;
489 ArdourWidgets::ArdourButton monitor_disk_button;
490 ArdourWidgets::ArdourButton auto_input_button;
492 Gtk::Label punch_label;
493 Gtk::Label layered_label;
495 Gtk::Label punch_space;
496 Gtk::Label mon_space;
498 void toggle_external_sync ();
499 void toggle_time_master ();
500 void toggle_video_sync ();
502 ShuttleControl shuttle_box;
503 MiniTimeline mini_timeline;
504 TimeInfoBox* time_info_box;
507 ArdourWidgets::ArdourVSpacer meterbox_spacer;
508 ArdourWidgets::ArdourVSpacer meterbox_spacer2;
510 ArdourWidgets::ArdourButton auto_return_button;
511 ArdourWidgets::ArdourButton follow_edits_button;
512 ArdourWidgets::ArdourButton sync_button;
514 ArdourWidgets::ArdourButton auditioning_alert_button;
515 ArdourWidgets::ArdourButton solo_alert_button;
516 ArdourWidgets::ArdourButton feedback_alert_button;
517 ArdourWidgets::ArdourButton error_alert_button;
519 ArdourWidgets::ArdourButton action_script_call_btn[MAX_LUA_ACTION_SCRIPTS];
520 Gtk::Table action_script_table;
523 Gtk::Table editor_meter_table;
524 ArdourWidgets::ArdourButton editor_meter_peak_display;
525 LevelMeterHBox * editor_meter;
526 float editor_meter_max_peak;
527 bool editor_meter_peak_button_release (GdkEventButton*);
529 bool editor_meter_button_press (GdkEventButton* ev);
530 void popup_editor_meter_menu (GdkEventButton* ev);
531 void add_editor_meter_type_item (Gtk::Menu_Helpers::MenuList&, Gtk::RadioMenuItem::Group&, std::string const &, ARDOUR::MeterType);
532 bool _suspend_editor_meter_callbacks;
534 void blink_handler (bool);
535 sigc::connection blink_connection;
538 void solo_blink (bool);
539 void sync_blink (bool);
540 void audition_blink (bool);
541 void feedback_blink (bool);
542 void error_blink (bool);
544 void set_flat_buttons();
546 void soloing_changed (bool);
547 void auditioning_changed (bool);
548 void _auditioning_changed (bool);
550 bool solo_alert_press (GdkEventButton* ev);
551 void audition_alert_clicked ();
552 bool error_alert_press (GdkEventButton *);
554 void layered_button_clicked ();
556 void big_clock_value_changed ();
557 void primary_clock_value_changed ();
558 void secondary_clock_value_changed ();
560 /* called by Blink signal */
562 void transport_rec_enable_blink (bool onoff);
564 Gtk::Menu* session_popup_menu;
566 /* menu bar and associated stuff */
568 Gtk::MenuBar* menu_bar;
569 Gtk::EventBox menu_bar_base;
572 void use_menubar_as_top_menubar ();
573 void build_menu_bar ();
575 Gtk::Label wall_clock_label;
576 gint update_wall_clock ();
578 Gtk::Label disk_space_label;
579 void update_disk_space ();
580 void format_disk_space_label (float);
582 Gtk::Label timecode_format_label;
583 void update_timecode_format ();
585 Gtk::Label dsp_load_label;
586 void update_cpu_load ();
588 Gtk::Label peak_thread_work_label;
589 void update_peak_thread_work ();
591 Gtk::Label sample_rate_label;
592 void update_sample_rate (ARDOUR::samplecnt_t);
594 Gtk::Label format_label;
595 void update_format ();
597 void every_second ();
598 void every_point_one_seconds ();
599 void every_point_zero_something_seconds ();
601 sigc::connection second_connection;
602 sigc::connection point_one_second_connection;
603 sigc::connection point_zero_something_second_connection;
604 sigc::connection fps_connection;
606 void set_fps_timeout_connection ();
608 void open_session ();
609 void open_recent_session ();
610 void save_template_dialog_response (int response, SaveTemplateDialog* d);
611 void save_template ();
612 void manage_templates ();
614 void meta_session_setup (const std::string& script_path);
615 void meta_route_setup (const std::string& script_path);
617 void edit_metadata ();
618 void import_metadata ();
620 void set_transport_sensitivity (bool);
622 //stuff for ProTools-style numpad
623 void transport_numpad_event (int num);
624 void transport_numpad_decimal ();
625 bool _numpad_locate_happening;
626 int _pending_locate_num;
627 gint transport_numpad_timeout ();
628 sigc::connection _numpad_timeout_connection;
630 void transport_goto_nth_marker (int nth);
631 void transport_goto_zero ();
632 void transport_goto_start ();
633 void transport_goto_end ();
634 void transport_goto_wallclock ();
635 void transport_stop ();
636 void transport_record (bool roll);
637 void transport_roll ();
638 void transport_play_selection();
639 void transport_play_preroll();
640 void transport_rec_preroll();
641 void transport_rec_count_in();
642 void transport_forward (int option);
643 void transport_rewind (int option);
644 void transport_loop ();
645 void toggle_roll (bool with_abort, bool roll_out_of_bounded_mode);
646 bool trx_record_enable_all_tracks ();
648 bool _session_is_new;
649 void set_session (ARDOUR::Session *);
650 void connect_dependents_to_session (ARDOUR::Session *);
651 void we_have_dependents ();
653 void setup_session_options ();
655 guint32 last_key_press_time;
657 bool process_snapshot_session_prompter (ArdourWidgets::Prompter& prompter, bool switch_to_it);
658 void snapshot_session (bool switch_to_it);
660 void quick_snapshot_session (bool switch_to_it); //does not promtp for name, just makes a timestamped file
662 SaveAsDialog* save_as_dialog;
664 bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar);
665 void save_session_as ();
666 void archive_session ();
667 void rename_session ();
670 int create_editor ();
671 int create_meterbridge ();
672 int create_luawindow ();
673 int create_masters ();
675 Meterbridge *meterbridge;
676 LuaWindow *luawindow;
678 /* Dialogs that can be created via new<T> */
680 RCOptionEditor* rc_option_editor;
681 Gtk::HBox rc_option_editor_placeholder;
683 WM::Proxy<SpeakerDialog> speaker_config_window;
684 WM::Proxy<AddRouteDialog> add_route_dialog;
685 WM::Proxy<About> about;
686 WM::Proxy<LocationUIWindow> location_ui;
687 WM::Proxy<RouteParams_UI> route_params;
688 WM::Proxy<EngineControl> audio_midi_setup;
689 WM::Proxy<ExportVideoDialog> export_video_dialog;
690 WM::Proxy<LuaScriptManager> lua_script_window;
691 WM::Proxy<IdleOMeter> idleometer;
692 WM::Proxy<PluginDSPLoadWindow> plugin_dsp_load_window;
693 WM::Proxy<TransportMastersWindow> transport_masters_window;
695 /* Windows/Dialogs that require a creator method */
697 WM::ProxyWithConstructor<SessionOptionEditor> session_option_editor;
698 WM::ProxyWithConstructor<AddVideoDialog> add_video_dialog;
699 WM::ProxyWithConstructor<BundleManager> bundle_manager;
700 WM::ProxyWithConstructor<BigClockWindow> big_clock_window;
701 WM::ProxyWithConstructor<BigTransportWindow> big_transport_window;
702 WM::ProxyWithConstructor<GlobalPortMatrixWindow> audio_port_matrix;
703 WM::ProxyWithConstructor<GlobalPortMatrixWindow> midi_port_matrix;
704 WM::ProxyWithConstructor<KeyEditor> key_editor;
706 /* creator methods */
708 SessionOptionEditor* create_session_option_editor ();
709 BundleManager* create_bundle_manager ();
710 AddVideoDialog* create_add_video_dialog ();
711 BigClockWindow* create_big_clock_window();
712 BigTransportWindow* create_big_transport_window();
713 GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType);
714 KeyEditor* create_key_editor ();
716 ARDOUR::SystemExec *video_server_process;
718 void handle_locations_change (ARDOUR::Location*);
720 /* Keyboard Handling */
722 ArdourKeyboard* keyboard;
724 /* Keymap handling */
726 void install_actions ();
728 void toggle_record_enable (uint16_t);
730 uint32_t rec_enabled_streams;
731 void count_recenabled_streams (ARDOUR::Route&);
735 void pop_back_splash (Gtk::Window&);
739 Gtk::MenuItem *cleanup_item;
741 void display_cleanup_results (ARDOUR::CleanupReport& rep, const gchar* list_title, const bool msg_delete);
743 void cleanup_peakfiles ();
746 bool have_configure_timeout;
747 ARDOUR::microseconds_t last_configure_time;
748 gint configure_timeout ();
750 ARDOUR::microseconds_t last_peak_grab;
751 ARDOUR::microseconds_t last_shuttle_request;
753 bool have_disk_speed_dialog_displayed;
754 void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*);
755 void disk_overrun_handler ();
756 void disk_underrun_handler ();
757 void gui_idle_handler ();
759 void cancel_plugin_scan ();
760 void cancel_plugin_timeout ();
761 void plugin_scan_dialog (std::string type, std::string plugin, bool);
762 void plugin_scan_timeout (int);
764 void session_format_mismatch (std::string, std::string);
766 void session_dialog (std::string);
767 int pending_state_dialog ();
768 int sr_mismatch_dialog (ARDOUR::samplecnt_t, ARDOUR::samplecnt_t);
769 void sr_mismatch_message (ARDOUR::samplecnt_t, ARDOUR::samplecnt_t);
771 Gtk::MenuItem* jack_disconnect_item;
772 Gtk::MenuItem* jack_reconnect_item;
773 Gtk::Menu* jack_bufsize_menu;
775 Glib::RefPtr<Gtk::ActionGroup> common_actions;
777 void editor_realized ();
779 std::vector<std::string> positional_sync_strings;
781 void toggle_use_mmc ();
782 void toggle_send_mmc ();
783 void toggle_send_mtc ();
784 void toggle_send_midi_clock ();
786 void toggle_use_osc ();
788 void parameter_changed (std::string);
789 void session_parameter_changed (std::string);
793 void check_memory_locking ();
795 void audioengine_setup ();
797 void display_message (const char* prefix, gint prefix_len, Glib::RefPtr<Gtk::TextBuffer::Tag>, Glib::RefPtr<Gtk::TextBuffer::Tag>, const char* msg);
798 Gtk::Label status_bar_label;
799 bool status_bar_button_press (GdkEventButton*);
801 void loading_message (const std::string& msg);
803 PBD::ScopedConnectionList forever_connections;
804 PBD::ScopedConnection halt_connection;
805 PBD::ScopedConnection editor_meter_connection;
807 /* these are used only in response to a platform-specific "ShouldQuit" signal */
809 void queue_finish ();
810 void fontconfig_dialog ();
812 int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type);
813 int ambiguous_file (std::string file, std::vector<std::string> hits);
815 bool click_button_clicked (GdkEventButton *);
816 bool sync_button_clicked (GdkEventButton *);
818 VisibilityGroup _status_bar_visibility;
820 /** A ProcessThread so that we have some thread-local buffers for use by
821 * PluginEqGui::impulse_analysis ().
823 ARDOUR::ProcessThread* _process_thread;
825 void feedback_detected ();
827 ArdourWidgets::ArdourButton midi_panic_button;
830 void successful_graph_sort ();
831 bool _feedback_exists;
833 enum ArdourLogLevel {
840 ArdourLogLevel _log_not_acknowledged;
842 void resize_text_widgets ();
844 bool xrun_button_release (GdkEventButton* ev);
846 std::string _announce_string;
847 void check_announcements ();
849 int do_audio_midi_setup (uint32_t);
850 void audioengine_became_silent ();
852 DuplicateRouteDialog* duplicate_routes_dialog;
854 void grab_focus_after_dialog ();
856 void tabs_switch (GtkNotebookPage*, guint page_number);
857 void tabs_page_added (Gtk::Widget*, guint);
858 void tabs_page_removed (Gtk::Widget*, guint);
859 ArdourWidgets::ArdourButton editor_visibility_button;
860 ArdourWidgets::ArdourButton mixer_visibility_button;
861 ArdourWidgets::ArdourButton prefs_visibility_button;
863 bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev, Gtkmm2ext::Bindings*);
864 bool try_gtk_accel_binding (GtkWindow* win, GdkEventKey* ev, bool translate, GdkModifierType modifier);
866 bool main_window_delete_event (GdkEventAny*);
867 bool idle_ask_about_quit ();
869 void load_bindings ();
870 bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name);
872 void step_up_through_tabs ();
873 void step_down_through_tabs ();
876 void close_current_dialog ();
877 void pre_release_dialog ();
879 bool bind_lua_action_script (GdkEventButton*, int);
880 void update_action_script_btn (int i, const std::string&);
883 #endif /* __ardour_gui_h__ */