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 "visibility_group.h"
80 #include "window_manager.h"
84 #include "add_video_dialog.h"
85 #include "big_clock_window.h"
86 #include "bundle_manager.h"
87 #include "engine_dialog.h"
88 #include "export_video_dialog.h"
89 #include "global_port_matrix.h"
90 #include "keyeditor.h"
91 #include "location_ui.h"
92 #include "lua_script_manager.h"
93 #include "rc_option_editor.h"
94 #include "route_dialogs.h"
95 #include "route_params_ui.h"
96 #include "session_option_editor.h"
97 #include "speaker_dialog.h"
100 class AddRouteDialog;
101 class AddVideoDialog;
102 class BigClockWindow;
105 class ExportVideoDialog;
107 class LocationUIWindow;
108 class LuaScriptManager;
109 class RCOptionEditor;
110 class RouteParams_UI;
111 class SessionOptionEditor;
113 class GlobalPortMatrixWindow;
117 class ArdourKeyboard;
120 class ConnectionEditor;
121 class DuplicateRouteDialog;
124 class ArdourPrompter;
128 class SessionOptionEditorWindow;
129 class ShuttleControl;
136 class LevelMeterHBox;
137 class GUIObjectState;
140 class ControlProtocolInfo;
153 namespace Gtkmm2ext {
157 class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
160 ARDOUR_UI (int *argcp, char **argvp[], const char* localedir);
163 bool run_startup (bool should_be_new, std::string load_template);
169 void launch_manual ();
170 void launch_reference ();
171 void launch_tracker ();
172 void launch_subscribe ();
173 void launch_cheat_sheet ();
174 void launch_website ();
175 void launch_website_dev ();
176 void launch_forums ();
177 void launch_howto_report ();
181 void load_from_application_api (const std::string& path);
184 int load_session (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
186 int build_session (const std::string& path, const std::string& snapshot, ARDOUR::BusProfile&);
187 bool session_is_new() const { return _session_is_new; }
189 ARDOUR::Session* the_session() { return _session; }
191 bool get_smart_mode () const;
193 int get_session_parameters (bool quit_on_cancel, bool should_be_new = false, std::string load_template = "");
194 int build_session_from_dialog (SessionDialog&, const std::string& session_name, const std::string& session_path);
195 bool ask_about_loading_existing_session (const std::string& session_path);
197 /// @return true if session was successfully unloaded.
198 int unload_session (bool hide_stuff = false);
199 void close_session();
201 int save_state_canfail (std::string state_name = "", bool switch_to_it = false);
202 void save_state (const std::string & state_name = "", bool switch_to_it = false);
204 static ARDOUR_UI *instance () { return theArdourUI; }
206 /* signal emitted when escape key is pressed. All UI components that
207 need to respond to Escape in some way (e.g. break drag, clear
208 selection, etc) should connect to and handle this.
210 PBD::Signal0<void> Escape;
212 PublicEditor& the_editor() { return *editor;}
213 Mixer_UI* the_mixer() { return mixer; }
215 void new_midi_tracer_window ();
216 void toggle_editing_space();
217 void toggle_mixer_space();
218 void toggle_mixer_list();
219 void toggle_monitor_section_visibility ();
220 void toggle_keep_tearoffs();
222 void reset_focus (Gtk::Widget*);
224 static PublicEditor* _instance;
226 /** Emitted frequently with the audible frame, false, and the edit point as
227 * parameters respectively.
229 * (either RapidScreenUpdate || SuperRapidScreenUpdate - user-config)
231 static sigc::signal<void, framepos_t, bool, framepos_t> Clock;
233 static void close_all_dialogs () { CloseAllDialogs(); }
234 static sigc::signal<void> CloseAllDialogs;
236 XMLNode* main_window_settings() const;
237 XMLNode* editor_settings() const;
238 XMLNode* preferences_settings() const;
239 XMLNode* mixer_settings () const;
240 XMLNode* keyboard_settings () const;
241 XMLNode* tearoff_settings (const char*) const;
243 void save_ardour_state ();
244 gboolean configure_handler (GdkEventConfigure* conf);
246 void halt_on_xrun_message ();
247 void xrun_handler (framepos_t);
248 void create_xrun_marker (framepos_t);
250 GUIObjectState* gui_object_state;
252 MainClock* primary_clock;
253 MainClock* secondary_clock;
254 void focus_on_clock ();
255 AudioClock* big_clock;
257 TimeInfoBox* time_info_box;
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 void show_loop_punch_ruler_and_disallow_hide ();
395 void reenable_hide_loop_punch_ruler_if_appropriate ();
396 void toggle_auto_return ();
397 void toggle_click ();
398 void toggle_audio_midi_setup ();
399 void toggle_session_auto_loop ();
400 void toggle_rc_options_window ();
401 void toggle_session_options_window ();
404 Gtk::Window _main_window;
405 Gtkmm2ext::VisibilityTracker* main_window_visibility;
406 Gtk::VBox main_vpacker;
407 Gtk::HBox status_bar_hpacker;
409 PublicEditor* editor;
411 Gtk::Tooltips _tooltips;
415 bool _initial_verbose_plugin_scan;
416 bool first_time_engine_run;
418 void show_tabbable (Gtkmm2ext::Tabbable*);
419 void hide_tabbable (Gtkmm2ext::Tabbable*);
420 void detach_tabbable (Gtkmm2ext::Tabbable*);
421 void attach_tabbable (Gtkmm2ext::Tabbable*);
422 void button_change_tabbable_visibility (Gtkmm2ext::Tabbable*);
423 void key_change_tabbable_visibility (Gtkmm2ext::Tabbable*);
424 void toggle_editor_and_mixer ();
426 void tabbable_state_change (Gtkmm2ext::Tabbable&);
428 void toggle_meterbridge ();
429 void toggle_luawindow ();
431 int setup_windows ();
432 void setup_transport ();
435 static ARDOUR_UI *theArdourUI;
436 SessionDialog *_session_dialog;
440 int ask_about_saving_session (const std::vector<std::string>& actions);
442 void save_session_at_its_request (std::string);
443 /* periodic safety backup, to be precise */
444 gint autosave_session();
445 void update_autosave();
446 sigc::connection _autosave_connection;
448 void session_dirty_changed ();
449 void update_title ();
451 void map_transport_state ();
452 int32_t do_engine_start ();
454 void engine_halted (const char* reason, bool free_reason);
455 void engine_stopped ();
456 void engine_running ();
460 void about_signal_response(int response);
462 Gtk::VBox top_packer;
464 sigc::connection clock_signal_connection;
465 void update_clocks ();
466 void start_clocking ();
467 void stop_clocking ();
469 void update_transport_clocks (framepos_t pos);
470 void record_state_changed ();
472 std::list<MidiTracer*> _midi_tracer_windows;
474 /* Transport Control */
476 Gtk::Frame transport_frame;
477 Gtk::HBox transport_hbox;
478 Gtk::Fixed transport_base;
479 Gtk::Fixed transport_button_base;
480 Gtk::Frame transport_button_frame;
481 Gtk::HBox transport_button_hbox;
482 Gtk::VBox transport_button_vbox;
483 Gtk::HBox transport_option_button_hbox;
484 Gtk::VBox transport_option_button_vbox;
485 Gtk::HBox transport_clock_hbox;
486 Gtk::VBox transport_clock_vbox;
487 Gtk::HBox primary_clock_hbox;
488 Gtk::HBox secondary_clock_hbox;
490 struct TransportControllable : public PBD::Controllable {
501 TransportControllable (std::string name, ARDOUR_UI&, ToggleType);
502 void set_value (double, PBD::Controllable::GroupControlDisposition group_override);
503 double get_value (void) const;
509 boost::shared_ptr<TransportControllable> roll_controllable;
510 boost::shared_ptr<TransportControllable> stop_controllable;
511 boost::shared_ptr<TransportControllable> goto_start_controllable;
512 boost::shared_ptr<TransportControllable> goto_end_controllable;
513 boost::shared_ptr<TransportControllable> auto_loop_controllable;
514 boost::shared_ptr<TransportControllable> play_selection_controllable;
515 boost::shared_ptr<TransportControllable> rec_controllable;
517 void toggle_follow_edits ();
519 void set_transport_controllable_state (const XMLNode&);
520 XMLNode& get_transport_controllable_state ();
522 ArdourButton roll_button;
523 ArdourButton stop_button;
524 ArdourButton goto_start_button;
525 ArdourButton goto_end_button;
526 ArdourButton auto_loop_button;
527 ArdourButton play_selection_button;
528 ArdourButton rec_button;
530 void toggle_external_sync ();
531 void toggle_time_master ();
532 void toggle_video_sync ();
534 ShuttleControl* shuttle_box;
536 ArdourButton auto_return_button;
537 ArdourButton follow_edits_button;
538 ArdourButton auto_input_button;
539 ArdourButton click_button;
540 ArdourButton sync_button;
542 ArdourButton auditioning_alert_button;
543 ArdourButton solo_alert_button;
544 ArdourButton feedback_alert_button;
545 ArdourButton error_alert_button;
547 ArdourButton action_script_call_btn[10];
548 Gtk::Table action_script_table;
552 LevelMeterHBox * editor_meter;
553 float editor_meter_max_peak;
554 ArdourButton editor_meter_peak_display;
555 bool editor_meter_peak_button_release (GdkEventButton*);
557 void blink_handler (bool);
558 sigc::connection blink_connection;
561 void solo_blink (bool);
562 void sync_blink (bool);
563 void audition_blink (bool);
564 void feedback_blink (bool);
565 void error_blink (bool);
567 void set_flat_buttons();
569 void soloing_changed (bool);
570 void auditioning_changed (bool);
571 void _auditioning_changed (bool);
573 bool solo_alert_press (GdkEventButton* ev);
574 bool audition_alert_press (GdkEventButton* ev);
575 bool feedback_alert_press (GdkEventButton *);
576 bool error_alert_press (GdkEventButton *);
578 void big_clock_value_changed ();
579 void primary_clock_value_changed ();
580 void secondary_clock_value_changed ();
582 /* called by Blink signal */
584 void transport_rec_enable_blink (bool onoff);
586 Gtk::Menu* session_popup_menu;
588 /* menu bar and associated stuff */
590 Gtk::MenuBar* menu_bar;
591 Gtk::EventBox menu_bar_base;
594 void use_menubar_as_top_menubar ();
595 void build_menu_bar ();
597 Gtk::Label wall_clock_label;
598 gint update_wall_clock ();
600 Gtk::Label disk_space_label;
601 void update_disk_space ();
603 Gtk::Label timecode_format_label;
604 void update_timecode_format ();
606 Gtk::Label cpu_load_label;
607 void update_cpu_load ();
609 Gtk::Label xrun_label;
610 void update_xrun_count ();
612 Gtk::Label peak_thread_work_label;
613 void update_peak_thread_work ();
615 Gtk::Label buffer_load_label;
616 void update_buffer_load ();
618 Gtk::Label sample_rate_label;
619 void update_sample_rate (ARDOUR::framecnt_t);
621 Gtk::Label format_label;
622 void update_format ();
624 void every_second ();
625 void every_point_one_seconds ();
626 void every_point_zero_something_seconds ();
628 sigc::connection second_connection;
629 sigc::connection point_one_second_connection;
630 sigc::connection point_zero_something_second_connection;
631 sigc::connection fps_connection;
633 void set_fps_timeout_connection ();
635 void open_session ();
636 void open_recent_session ();
637 bool process_save_template_prompter (ArdourPrompter& prompter);
638 void save_template ();
640 void edit_metadata ();
641 void import_metadata ();
643 void set_transport_sensitivity (bool);
645 //stuff for ProTools-style numpad
646 void transport_numpad_event (int num);
647 void transport_numpad_decimal ();
648 bool _numpad_locate_happening;
649 int _pending_locate_num;
650 gint transport_numpad_timeout ();
651 sigc::connection _numpad_timeout_connection;
653 void transport_goto_nth_marker (int nth);
654 void transport_goto_zero ();
655 void transport_goto_start ();
656 void transport_goto_end ();
657 void transport_goto_wallclock ();
658 void transport_stop ();
659 void transport_record (bool roll);
660 void transport_roll ();
661 void transport_play_selection();
662 void transport_play_preroll();
663 void transport_forward (int option);
664 void transport_rewind (int option);
665 void transport_loop ();
666 void toggle_roll (bool with_abort, bool roll_out_of_bounded_mode);
667 bool trx_record_enable_all_tracks ();
669 bool _session_is_new;
670 void set_session (ARDOUR::Session *);
671 void connect_dependents_to_session (ARDOUR::Session *);
672 void we_have_dependents ();
674 void setup_session_options ();
676 guint32 last_key_press_time;
678 bool process_snapshot_session_prompter (ArdourPrompter& prompter, bool switch_to_it);
679 void snapshot_session (bool switch_to_it);
681 void quick_snapshot_session (bool switch_to_it); //does not promtp for name, just makes a timestamped file
683 SaveAsDialog* save_as_dialog;
685 bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar);
686 void save_session_as ();
687 void archive_session ();
688 void rename_session ();
691 int create_editor ();
692 int create_meterbridge ();
693 int create_luawindow ();
694 int create_masters ();
696 Meterbridge *meterbridge;
697 LuaWindow *luawindow;
699 /* Dialogs that can be created via new<T> */
701 RCOptionEditor* rc_option_editor;
702 Gtk::HBox rc_option_editor_placeholder;
704 WM::Proxy<SpeakerDialog> speaker_config_window;
705 WM::Proxy<AddRouteDialog> add_route_dialog;
706 WM::Proxy<About> about;
707 WM::Proxy<LocationUIWindow> location_ui;
708 WM::Proxy<RouteParams_UI> route_params;
709 WM::Proxy<EngineControl> audio_midi_setup;
710 WM::Proxy<ExportVideoDialog> export_video_dialog;
711 WM::Proxy<LuaScriptManager> lua_script_window;
713 /* Windows/Dialogs that require a creator method */
715 WM::ProxyWithConstructor<SessionOptionEditor> session_option_editor;
716 WM::ProxyWithConstructor<AddVideoDialog> add_video_dialog;
717 WM::ProxyWithConstructor<BundleManager> bundle_manager;
718 WM::ProxyWithConstructor<BigClockWindow> big_clock_window;
719 WM::ProxyWithConstructor<GlobalPortMatrixWindow> audio_port_matrix;
720 WM::ProxyWithConstructor<GlobalPortMatrixWindow> midi_port_matrix;
721 WM::ProxyWithConstructor<KeyEditor> key_editor;
723 /* creator methods */
725 SessionOptionEditor* create_session_option_editor ();
726 BundleManager* create_bundle_manager ();
727 AddVideoDialog* create_add_video_dialog ();
728 BigClockWindow* create_big_clock_window();
729 GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType);
730 KeyEditor* create_key_editor ();
732 ARDOUR::SystemExec *video_server_process;
734 void handle_locations_change (ARDOUR::Location*);
736 /* Keyboard Handling */
738 ArdourKeyboard* keyboard;
740 /* Keymap handling */
742 void install_actions ();
744 void toggle_record_enable (uint16_t);
746 uint32_t rec_enabled_streams;
747 void count_recenabled_streams (ARDOUR::Route&);
751 void pop_back_splash (Gtk::Window&);
755 Gtk::MenuItem *cleanup_item;
757 void display_cleanup_results (ARDOUR::CleanupReport& rep, const gchar* list_title, const bool msg_delete);
759 void cleanup_peakfiles ();
762 bool have_configure_timeout;
763 ARDOUR::microseconds_t last_configure_time;
764 gint configure_timeout ();
766 ARDOUR::microseconds_t last_peak_grab;
767 ARDOUR::microseconds_t last_shuttle_request;
769 bool have_disk_speed_dialog_displayed;
770 void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*);
771 void disk_overrun_handler ();
772 void disk_underrun_handler ();
773 void gui_idle_handler ();
775 void cancel_plugin_scan ();
776 void cancel_plugin_timeout ();
777 void plugin_scan_dialog (std::string type, std::string plugin, bool);
778 void plugin_scan_timeout (int);
780 void session_format_mismatch (std::string, std::string);
782 void session_dialog (std::string);
783 int pending_state_dialog ();
784 int sr_mismatch_dialog (ARDOUR::framecnt_t, ARDOUR::framecnt_t);
785 void sr_mismatch_message (ARDOUR::framecnt_t, ARDOUR::framecnt_t);
787 Gtk::MenuItem* jack_disconnect_item;
788 Gtk::MenuItem* jack_reconnect_item;
789 Gtk::Menu* jack_bufsize_menu;
791 Glib::RefPtr<Gtk::ActionGroup> common_actions;
793 void editor_realized ();
795 std::vector<std::string> positional_sync_strings;
797 void toggle_send_midi_feedback ();
798 void toggle_use_mmc ();
799 void toggle_send_mmc ();
800 void toggle_send_mtc ();
801 void toggle_send_midi_clock ();
803 void toggle_use_osc ();
805 void parameter_changed (std::string);
806 void session_parameter_changed (std::string);
810 void check_memory_locking ();
812 void audioengine_setup ();
814 void display_message (const char *prefix, gint prefix_len,
815 Glib::RefPtr<Gtk::TextBuffer::Tag> ptag, Glib::RefPtr<Gtk::TextBuffer::Tag> mtag,
817 Gtk::Label status_bar_label;
818 bool status_bar_button_press (GdkEventButton*);
820 void loading_message (const std::string& msg);
822 PBD::ScopedConnectionList forever_connections;
823 PBD::ScopedConnection halt_connection;
825 void step_edit_status_change (bool);
827 /* these are used only in response to a platform-specific "ShouldQuit" signal */
829 void queue_finish ();
830 void fontconfig_dialog ();
832 int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type);
833 int ambiguous_file (std::string file, std::vector<std::string> hits);
835 bool click_button_clicked (GdkEventButton *);
837 VisibilityGroup _status_bar_visibility;
839 /** A ProcessThread so that we have some thread-local buffers for use by
840 * PluginEqGui::impulse_analysis ().
842 ARDOUR::ProcessThread* _process_thread;
844 void feedback_detected ();
846 ArdourButton midi_panic_button;
849 void successful_graph_sort ();
850 bool _feedback_exists;
852 enum ArdourLogLevel {
859 ArdourLogLevel _log_not_acknowledged;
861 void resize_text_widgets ();
863 bool xrun_button_release (GdkEventButton* ev);
865 std::string _announce_string;
866 void check_announcements ();
868 int do_audio_midi_setup (uint32_t);
869 void audioengine_became_silent ();
871 DuplicateRouteDialog* duplicate_routes_dialog;
873 void grab_focus_after_dialog ();
875 void tabs_switch (GtkNotebookPage*, guint page_number);
876 void tabs_page_added (Gtk::Widget*, guint);
877 void tabs_page_removed (Gtk::Widget*, guint);
878 ArdourButton editor_visibility_button;
879 ArdourButton mixer_visibility_button;
880 ArdourButton prefs_visibility_button;
882 bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev, Gtkmm2ext::Bindings*);
883 bool try_gtk_accel_binding (GtkWindow* win, GdkEventKey* ev, bool translate, GdkModifierType modifier);
885 bool main_window_delete_event (GdkEventAny*);
886 bool idle_ask_about_quit ();
888 void load_bindings ();
889 bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name);
891 void step_up_through_tabs ();
892 void step_down_through_tabs ();
895 void close_current_dialog ();
896 void pre_release_dialog ();
899 #endif /* __ardour_gui_h__ */