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 "pbd/controllable.h"
41 #include <gtkmm/box.h>
42 #include <gtkmm/frame.h>
43 #include <gtkmm/label.h>
44 #include <gtkmm/table.h>
45 #include <gtkmm/fixed.h>
46 #include <gtkmm/drawingarea.h>
47 #include <gtkmm/eventbox.h>
48 #include <gtkmm/menu.h>
49 #include <gtkmm/menuitem.h>
50 #include <gtkmm/button.h>
51 #include <gtkmm/togglebutton.h>
52 #include <gtkmm/treeview.h>
53 #include <gtkmm/menubar.h>
54 #include <gtkmm/textbuffer.h>
55 #include <gtkmm/adjustment.h>
57 #include "gtkmm2ext/gtk_ui.h"
58 #include "gtkmm2ext/click_box.h"
59 #include "gtkmm2ext/stateful_button.h"
60 #include "gtkmm2ext/bindable_button.h"
61 #include "gtkmm2ext/bindings.h"
62 #include "gtkmm2ext/visibility_tracker.h"
64 #include "ardour/ardour.h"
65 #include "ardour/types.h"
66 #include "ardour/utils.h"
67 #include "ardour/plugin.h"
68 #include "ardour/session_handle.h"
69 #include "ardour/system_exec.h"
71 #include "video_timeline.h"
73 #include "add_route_dialog.h"
74 #include "ardour_button.h"
75 #include "ardour_dialog.h"
76 #include "ardour_window.h"
79 #include "mini_timeline.h"
80 #include "shuttle_control.h"
81 #include "visibility_group.h"
82 #include "window_manager.h"
86 #include "add_video_dialog.h"
87 #include "big_clock_window.h"
88 #include "bundle_manager.h"
89 #include "engine_dialog.h"
90 #include "export_video_dialog.h"
91 #include "global_port_matrix.h"
92 #include "keyeditor.h"
93 #include "location_ui.h"
94 #include "lua_script_manager.h"
95 #include "rc_option_editor.h"
96 #include "route_dialogs.h"
97 #include "route_params_ui.h"
98 #include "session_option_editor.h"
99 #include "speaker_dialog.h"
102 class AddRouteDialog;
103 class AddVideoDialog;
104 class BigClockWindow;
107 class ExportVideoDialog;
109 class LocationUIWindow;
110 class LuaScriptManager;
111 class RCOptionEditor;
112 class RouteParams_UI;
113 class SessionOptionEditor;
115 class GlobalPortMatrixWindow;
119 class ArdourKeyboard;
123 class ConnectionEditor;
124 class DuplicateRouteDialog;
127 class ArdourPrompter;
131 class SessionOptionEditorWindow;
138 class LevelMeterHBox;
139 class GUIObjectState;
142 class ControlProtocolInfo;
155 namespace Gtkmm2ext {
159 class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
162 ARDOUR_UI (int *argcp, char **argvp[], const char* localedir);
165 bool run_startup (bool should_be_new, std::string load_template);
171 void launch_manual ();
172 void launch_reference ();
173 void launch_tracker ();
174 void launch_subscribe ();
175 void launch_cheat_sheet ();
176 void launch_website ();
177 void launch_website_dev ();
178 void launch_forums ();
179 void launch_howto_report ();
183 void load_from_application_api (const std::string& path);
186 int load_session (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
188 int build_session (const std::string& path, const std::string& snapshot, ARDOUR::BusProfile&);
189 bool session_is_new() const { return _session_is_new; }
191 ARDOUR::Session* the_session() { return _session; }
193 bool get_smart_mode () const;
195 int get_session_parameters (bool quit_on_cancel, bool should_be_new = false, std::string load_template = "");
196 int build_session_from_dialog (SessionDialog&, const std::string& session_name, const std::string& session_path);
197 bool ask_about_loading_existing_session (const std::string& session_path);
199 /// @return true if session was successfully unloaded.
200 int unload_session (bool hide_stuff = false);
201 void close_session();
203 int save_state_canfail (std::string state_name = "", bool switch_to_it = false);
204 void save_state (const std::string & state_name = "", bool switch_to_it = false);
206 static ARDOUR_UI *instance () { return theArdourUI; }
208 /* signal emitted when escape key is pressed. All UI components that
209 need to respond to Escape in some way (e.g. break drag, clear
210 selection, etc) should connect to and handle this.
212 PBD::Signal0<void> Escape;
214 PublicEditor& the_editor() { return *editor;}
215 Mixer_UI* the_mixer() { return mixer; }
217 void new_midi_tracer_window ();
218 void toggle_editing_space();
219 void toggle_mixer_space();
220 void toggle_mixer_list();
221 void toggle_monitor_section_visibility ();
222 void toggle_keep_tearoffs();
224 void reset_focus (Gtk::Widget*);
226 static PublicEditor* _instance;
228 /** Emitted frequently with the audible frame, false, and the edit point as
229 * parameters respectively.
231 * (either RapidScreenUpdate || SuperRapidScreenUpdate - user-config)
233 static sigc::signal<void, framepos_t, bool, framepos_t> Clock;
235 static void close_all_dialogs () { CloseAllDialogs(); }
236 static sigc::signal<void> CloseAllDialogs;
238 XMLNode* main_window_settings() const;
239 XMLNode* editor_settings() const;
240 XMLNode* preferences_settings() const;
241 XMLNode* mixer_settings () const;
242 XMLNode* keyboard_settings () const;
243 XMLNode* tearoff_settings (const char*) const;
245 void save_ardour_state ();
246 gboolean configure_handler (GdkEventConfigure* conf);
248 void halt_on_xrun_message ();
249 void xrun_handler (framepos_t);
250 void create_xrun_marker (framepos_t);
252 GUIObjectState* gui_object_state;
254 MainClock* primary_clock;
255 MainClock* secondary_clock;
256 void focus_on_clock ();
257 AudioClock* big_clock;
259 VideoTimeLine *video_timeline;
261 void store_clock_modes ();
262 void restore_clock_modes ();
263 void reset_main_clocks ();
265 void synchronize_sync_source_and_video_pullup ();
268 void add_route_dialog_finished (int);
270 void add_routes_part_two ();
271 void add_routes_thread ();
273 void start_duplicate_routes ();
275 void add_lua_script ();
276 void remove_lua_script ();
278 void add_video (Gtk::Window* float_window);
279 void remove_video ();
280 void start_video_server_menu (Gtk::Window* float_window);
281 bool start_video_server (Gtk::Window* float_window, bool popup_msg);
282 void stop_video_server (bool ask_confirm=false);
283 void flush_videotimeline_cache (bool localcacheonly=false);
284 void export_video (bool range = false);
286 void session_add_vca (std::string const &, uint32_t);
288 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);
289 void session_add_audio_track (
291 int32_t output_channels,
292 ARDOUR::TrackMode mode,
293 ARDOUR::RouteGroup* route_group,
295 std::string const & name_template,
297 ARDOUR::PresentationInfo::order_t order
299 session_add_audio_route (true, input_channels, output_channels, mode, route_group, how_many, name_template, strict_io, order);
302 void session_add_audio_bus (
304 int32_t output_channels,
305 ARDOUR::RouteGroup* route_group,
307 std::string const & name_template,
309 ARDOUR::PresentationInfo::order_t order
311 session_add_audio_route (false, input_channels, output_channels, ARDOUR::Normal, route_group, how_many, name_template, strict_io, order);
314 void session_add_midi_track (
315 ARDOUR::RouteGroup* route_group,
317 std::string const & name_template,
319 ARDOUR::PluginInfoPtr instrument,
320 ARDOUR::Plugin::PresetRecord* preset,
321 ARDOUR::PresentationInfo::order_t order
323 session_add_midi_route (true, route_group, how_many, name_template, strict_io, instrument, preset, order);
326 void session_add_mixed_track (const ARDOUR::ChanCount&, const ARDOUR::ChanCount&, ARDOUR::RouteGroup*, uint32_t, std::string const &, bool,
327 ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord* pset,
328 ARDOUR::PresentationInfo::order_t order);
329 void session_add_midi_bus (ARDOUR::RouteGroup*, uint32_t, std::string const &, bool, ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord* pset,
330 ARDOUR::PresentationInfo::order_t order);
331 void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool,
332 ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord*,
333 ARDOUR::PresentationInfo::order_t order);
334 void display_insufficient_ports_message ();
336 void attach_to_engine ();
339 gint exit_on_main_window_close (GdkEventAny *);
341 void maximise_editing_space ();
342 void restore_editing_space ();
344 void show_ui_prefs ();
346 bool check_audioengine(Gtk::Window&);
348 void setup_profile ();
349 void setup_tooltips ();
351 void set_shuttle_fract (double);
353 void get_process_buffers ();
354 void drop_process_buffers ();
356 void reset_peak_display ();
357 void reset_route_peak_display (ARDOUR::Route*);
358 void reset_group_peak_display (ARDOUR::RouteGroup*);
360 const std::string& announce_string() const { return _announce_string; }
362 void hide_application ();
364 Gtk::Notebook& tabs();
365 Gtk::Window& main_window () { return _main_window; }
367 void setup_toplevel_window (Gtk::Window&, const std::string& name, void* owner);
369 /* called from a static C function */
371 GtkNotebook* tab_window_root_drop (GtkNotebook* src,
377 bool tabbed_window_state_event_handler (GdkEventWindowState*, void* object);
378 bool key_event_handler (GdkEventKey*, Gtk::Window* window);
380 Gtkmm2ext::ActionMap global_actions;
382 ARDOUR::PresentationInfo::order_t translate_order (RouteDialogs::InsertAt);
385 friend class PublicEditor;
387 void toggle_auto_play ();
388 void toggle_auto_input ();
389 void toggle_punch ();
390 void unset_dual_punch ();
391 bool ignore_dual_punch;
392 void toggle_punch_in ();
393 void toggle_punch_out ();
394 bool ignore_session_monitoring;
395 void toggle_session_monitoring_in ();
396 void toggle_session_monitoring_disk ();
397 void show_loop_punch_ruler_and_disallow_hide ();
398 void reenable_hide_loop_punch_ruler_if_appropriate ();
399 void toggle_auto_return ();
400 void toggle_click ();
401 void toggle_audio_midi_setup ();
402 void toggle_session_auto_loop ();
403 void toggle_rc_options_window ();
404 void toggle_session_options_window ();
407 Gtk::Window _main_window;
408 Gtkmm2ext::VisibilityTracker* main_window_visibility;
409 Gtk::VBox main_vpacker;
410 Gtk::HBox status_bar_hpacker;
412 PublicEditor* editor;
414 Gtk::Tooltips _tooltips;
418 bool _initial_verbose_plugin_scan;
419 bool first_time_engine_run;
421 void show_tabbable (Gtkmm2ext::Tabbable*);
422 void hide_tabbable (Gtkmm2ext::Tabbable*);
423 void detach_tabbable (Gtkmm2ext::Tabbable*);
424 void attach_tabbable (Gtkmm2ext::Tabbable*);
425 void button_change_tabbable_visibility (Gtkmm2ext::Tabbable*);
426 void key_change_tabbable_visibility (Gtkmm2ext::Tabbable*);
427 void toggle_editor_and_mixer ();
429 void tabbable_state_change (Gtkmm2ext::Tabbable&);
431 void toggle_meterbridge ();
432 void toggle_luawindow ();
434 int setup_windows ();
435 void setup_transport ();
438 bool transport_expose (GdkEventExpose*);
440 static ARDOUR_UI *theArdourUI;
441 SessionDialog *_session_dialog;
445 int ask_about_saving_session (const std::vector<std::string>& actions);
447 void save_session_at_its_request (std::string);
448 /* periodic safety backup, to be precise */
449 gint autosave_session();
450 void update_autosave();
451 sigc::connection _autosave_connection;
453 void session_dirty_changed ();
454 void update_title ();
456 void map_transport_state ();
457 int32_t do_engine_start ();
459 void engine_halted (const char* reason, bool free_reason);
460 void engine_stopped ();
461 void engine_running ();
465 void about_signal_response(int response);
467 Gtk::VBox top_packer;
469 sigc::connection clock_signal_connection;
470 void update_clocks ();
471 void start_clocking ();
472 void stop_clocking ();
474 void update_transport_clocks (framepos_t pos);
475 void record_state_changed ();
477 std::list<MidiTracer*> _midi_tracer_windows;
479 /* Transport Control */
481 Gtk::Table transport_table;
482 Gtk::Frame transport_frame;
483 Gtk::HBox transport_hbox;
485 ArdourVSpacer *secondary_clock_spacer;
486 void repack_transport_hbox ();
487 void update_clock_visibility ();
489 struct TransportControllable : public PBD::Controllable {
500 TransportControllable (std::string name, ARDOUR_UI&, ToggleType);
501 void set_value (double, PBD::Controllable::GroupControlDisposition group_override);
502 double get_value (void) const;
508 boost::shared_ptr<TransportControllable> roll_controllable;
509 boost::shared_ptr<TransportControllable> stop_controllable;
510 boost::shared_ptr<TransportControllable> goto_start_controllable;
511 boost::shared_ptr<TransportControllable> goto_end_controllable;
512 boost::shared_ptr<TransportControllable> auto_loop_controllable;
513 boost::shared_ptr<TransportControllable> play_selection_controllable;
514 boost::shared_ptr<TransportControllable> rec_controllable;
516 void toggle_follow_edits ();
518 void set_transport_controllable_state (const XMLNode&);
519 XMLNode& get_transport_controllable_state ();
521 ArdourButton roll_button;
522 ArdourButton stop_button;
523 ArdourButton goto_start_button;
524 ArdourButton goto_end_button;
525 ArdourButton auto_loop_button;
526 ArdourButton play_selection_button;
527 ArdourButton rec_button;
528 ArdourButton punch_in_button;
529 ArdourButton punch_out_button;
530 ArdourButton layered_button;
532 ArdourButton monitor_in_button;
533 ArdourButton monitor_disk_button;
534 ArdourButton auto_input_button;
536 Gtk::Label punch_label;
537 Gtk::Label layered_label;
539 void toggle_external_sync ();
540 void toggle_time_master ();
541 void toggle_video_sync ();
543 ShuttleControl shuttle_box;
544 MiniTimeline mini_timeline;
545 TimeInfoBox *time_info_box;
547 ArdourButton auto_return_button;
548 ArdourButton follow_edits_button;
549 ArdourButton click_button;
550 ArdourButton sync_button;
552 ArdourButton auditioning_alert_button;
553 ArdourButton solo_alert_button;
554 ArdourButton feedback_alert_button;
555 ArdourButton error_alert_button;
557 ArdourButton action_script_call_btn[10];
558 Gtk::Table action_script_table;
562 LevelMeterHBox * editor_meter;
563 float editor_meter_max_peak;
564 ArdourButton editor_meter_peak_display;
565 bool editor_meter_peak_button_release (GdkEventButton*);
567 void blink_handler (bool);
568 sigc::connection blink_connection;
571 void solo_blink (bool);
572 void sync_blink (bool);
573 void audition_blink (bool);
574 void feedback_blink (bool);
575 void error_blink (bool);
577 void set_flat_buttons();
579 void soloing_changed (bool);
580 void auditioning_changed (bool);
581 void _auditioning_changed (bool);
583 bool solo_alert_press (GdkEventButton* ev);
584 void audition_alert_clicked ();
585 bool error_alert_press (GdkEventButton *);
587 void layered_button_clicked ();
589 void big_clock_value_changed ();
590 void primary_clock_value_changed ();
591 void secondary_clock_value_changed ();
593 /* called by Blink signal */
595 void transport_rec_enable_blink (bool onoff);
597 Gtk::Menu* session_popup_menu;
599 /* menu bar and associated stuff */
601 Gtk::MenuBar* menu_bar;
602 Gtk::EventBox menu_bar_base;
605 void use_menubar_as_top_menubar ();
606 void build_menu_bar ();
608 Gtk::Label wall_clock_label;
609 gint update_wall_clock ();
611 Gtk::Label disk_space_label;
612 void update_disk_space ();
614 Gtk::Label timecode_format_label;
615 void update_timecode_format ();
617 Gtk::Label cpu_load_label;
618 void update_cpu_load ();
620 Gtk::Label xrun_label;
621 void update_xrun_count ();
623 Gtk::Label peak_thread_work_label;
624 void update_peak_thread_work ();
626 Gtk::Label buffer_load_label;
627 void update_buffer_load ();
629 Gtk::Label sample_rate_label;
630 void update_sample_rate (ARDOUR::framecnt_t);
632 Gtk::Label format_label;
633 void update_format ();
635 void every_second ();
636 void every_point_one_seconds ();
637 void every_point_zero_something_seconds ();
639 sigc::connection second_connection;
640 sigc::connection point_one_second_connection;
641 sigc::connection point_zero_something_second_connection;
642 sigc::connection fps_connection;
644 void set_fps_timeout_connection ();
646 void open_session ();
647 void open_recent_session ();
648 bool process_save_template_prompter (ArdourPrompter& prompter);
649 void save_template ();
651 void edit_metadata ();
652 void import_metadata ();
654 void set_transport_sensitivity (bool);
656 //stuff for ProTools-style numpad
657 void transport_numpad_event (int num);
658 void transport_numpad_decimal ();
659 bool _numpad_locate_happening;
660 int _pending_locate_num;
661 gint transport_numpad_timeout ();
662 sigc::connection _numpad_timeout_connection;
664 void transport_goto_nth_marker (int nth);
665 void transport_goto_zero ();
666 void transport_goto_start ();
667 void transport_goto_end ();
668 void transport_goto_wallclock ();
669 void transport_stop ();
670 void transport_record (bool roll);
671 void transport_roll ();
672 void transport_play_selection();
673 void transport_play_preroll();
674 void transport_forward (int option);
675 void transport_rewind (int option);
676 void transport_loop ();
677 void toggle_roll (bool with_abort, bool roll_out_of_bounded_mode);
678 bool trx_record_enable_all_tracks ();
680 bool _session_is_new;
681 void set_session (ARDOUR::Session *);
682 void connect_dependents_to_session (ARDOUR::Session *);
683 void we_have_dependents ();
685 void setup_session_options ();
687 guint32 last_key_press_time;
689 bool process_snapshot_session_prompter (ArdourPrompter& prompter, bool switch_to_it);
690 void snapshot_session (bool switch_to_it);
692 void quick_snapshot_session (bool switch_to_it); //does not promtp for name, just makes a timestamped file
694 SaveAsDialog* save_as_dialog;
696 bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar);
697 void save_session_as ();
698 void archive_session ();
699 void rename_session ();
702 int create_editor ();
703 int create_meterbridge ();
704 int create_luawindow ();
705 int create_masters ();
707 Meterbridge *meterbridge;
708 LuaWindow *luawindow;
710 /* Dialogs that can be created via new<T> */
712 RCOptionEditor* rc_option_editor;
713 Gtk::HBox rc_option_editor_placeholder;
715 WM::Proxy<SpeakerDialog> speaker_config_window;
716 WM::Proxy<AddRouteDialog> add_route_dialog;
717 WM::Proxy<About> about;
718 WM::Proxy<LocationUIWindow> location_ui;
719 WM::Proxy<RouteParams_UI> route_params;
720 WM::Proxy<EngineControl> audio_midi_setup;
721 WM::Proxy<ExportVideoDialog> export_video_dialog;
722 WM::Proxy<LuaScriptManager> lua_script_window;
724 /* Windows/Dialogs that require a creator method */
726 WM::ProxyWithConstructor<SessionOptionEditor> session_option_editor;
727 WM::ProxyWithConstructor<AddVideoDialog> add_video_dialog;
728 WM::ProxyWithConstructor<BundleManager> bundle_manager;
729 WM::ProxyWithConstructor<BigClockWindow> big_clock_window;
730 WM::ProxyWithConstructor<GlobalPortMatrixWindow> audio_port_matrix;
731 WM::ProxyWithConstructor<GlobalPortMatrixWindow> midi_port_matrix;
732 WM::ProxyWithConstructor<KeyEditor> key_editor;
734 /* creator methods */
736 SessionOptionEditor* create_session_option_editor ();
737 BundleManager* create_bundle_manager ();
738 AddVideoDialog* create_add_video_dialog ();
739 BigClockWindow* create_big_clock_window();
740 GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType);
741 KeyEditor* create_key_editor ();
743 ARDOUR::SystemExec *video_server_process;
745 void handle_locations_change (ARDOUR::Location*);
747 /* Keyboard Handling */
749 ArdourKeyboard* keyboard;
751 /* Keymap handling */
753 void install_actions ();
755 void toggle_record_enable (uint16_t);
757 uint32_t rec_enabled_streams;
758 void count_recenabled_streams (ARDOUR::Route&);
762 void pop_back_splash (Gtk::Window&);
766 Gtk::MenuItem *cleanup_item;
768 void display_cleanup_results (ARDOUR::CleanupReport& rep, const gchar* list_title, const bool msg_delete);
770 void cleanup_peakfiles ();
773 bool have_configure_timeout;
774 ARDOUR::microseconds_t last_configure_time;
775 gint configure_timeout ();
777 ARDOUR::microseconds_t last_peak_grab;
778 ARDOUR::microseconds_t last_shuttle_request;
780 bool have_disk_speed_dialog_displayed;
781 void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*);
782 void disk_overrun_handler ();
783 void disk_underrun_handler ();
784 void gui_idle_handler ();
786 void cancel_plugin_scan ();
787 void cancel_plugin_timeout ();
788 void plugin_scan_dialog (std::string type, std::string plugin, bool);
789 void plugin_scan_timeout (int);
791 void session_format_mismatch (std::string, std::string);
793 void session_dialog (std::string);
794 int pending_state_dialog ();
795 int sr_mismatch_dialog (ARDOUR::framecnt_t, ARDOUR::framecnt_t);
796 void sr_mismatch_message (ARDOUR::framecnt_t, ARDOUR::framecnt_t);
798 Gtk::MenuItem* jack_disconnect_item;
799 Gtk::MenuItem* jack_reconnect_item;
800 Gtk::Menu* jack_bufsize_menu;
802 Glib::RefPtr<Gtk::ActionGroup> common_actions;
804 void editor_realized ();
806 std::vector<std::string> positional_sync_strings;
808 void toggle_use_mmc ();
809 void toggle_send_mmc ();
810 void toggle_send_mtc ();
811 void toggle_send_midi_clock ();
813 void toggle_use_osc ();
815 void parameter_changed (std::string);
816 void session_parameter_changed (std::string);
820 void check_memory_locking ();
822 void audioengine_setup ();
824 void display_message (const char *prefix, gint prefix_len,
825 Glib::RefPtr<Gtk::TextBuffer::Tag> ptag, Glib::RefPtr<Gtk::TextBuffer::Tag> mtag,
827 Gtk::Label status_bar_label;
828 bool status_bar_button_press (GdkEventButton*);
830 void loading_message (const std::string& msg);
832 PBD::ScopedConnectionList forever_connections;
833 PBD::ScopedConnection halt_connection;
835 void step_edit_status_change (bool);
837 /* these are used only in response to a platform-specific "ShouldQuit" signal */
839 void queue_finish ();
840 void fontconfig_dialog ();
842 int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type);
843 int ambiguous_file (std::string file, std::vector<std::string> hits);
845 bool click_button_clicked (GdkEventButton *);
846 bool sync_button_clicked (GdkEventButton *);
848 VisibilityGroup _status_bar_visibility;
850 /** A ProcessThread so that we have some thread-local buffers for use by
851 * PluginEqGui::impulse_analysis ().
853 ARDOUR::ProcessThread* _process_thread;
855 void feedback_detected ();
857 ArdourButton midi_panic_button;
860 void successful_graph_sort ();
861 bool _feedback_exists;
863 enum ArdourLogLevel {
870 ArdourLogLevel _log_not_acknowledged;
872 void resize_text_widgets ();
874 bool xrun_button_release (GdkEventButton* ev);
876 std::string _announce_string;
877 void check_announcements ();
879 int do_audio_midi_setup (uint32_t);
880 void audioengine_became_silent ();
882 DuplicateRouteDialog* duplicate_routes_dialog;
884 void grab_focus_after_dialog ();
886 void tabs_switch (GtkNotebookPage*, guint page_number);
887 void tabs_page_added (Gtk::Widget*, guint);
888 void tabs_page_removed (Gtk::Widget*, guint);
889 ArdourButton editor_visibility_button;
890 ArdourButton mixer_visibility_button;
891 ArdourButton prefs_visibility_button;
893 bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev, Gtkmm2ext::Bindings*);
894 bool try_gtk_accel_binding (GtkWindow* win, GdkEventKey* ev, bool translate, GdkModifierType modifier);
896 bool main_window_delete_event (GdkEventAny*);
897 bool idle_ask_about_quit ();
899 void load_bindings ();
900 bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name);
902 void step_up_through_tabs ();
903 void step_down_through_tabs ();
906 void close_current_dialog ();
907 void pre_release_dialog ();
910 #endif /* __ardour_gui_h__ */