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_spacer.h"
77 #include "ardour_window.h"
80 #include "mini_timeline.h"
81 #include "shuttle_control.h"
82 #include "visibility_group.h"
83 #include "window_manager.h"
87 #include "add_video_dialog.h"
88 #include "big_clock_window.h"
89 #include "bundle_manager.h"
90 #include "engine_dialog.h"
91 #include "export_video_dialog.h"
92 #include "global_port_matrix.h"
93 #include "keyeditor.h"
94 #include "location_ui.h"
95 #include "lua_script_manager.h"
96 #include "rc_option_editor.h"
97 #include "route_dialogs.h"
98 #include "route_params_ui.h"
99 #include "session_option_editor.h"
100 #include "speaker_dialog.h"
103 class AddRouteDialog;
104 class AddVideoDialog;
105 class BigClockWindow;
108 class ExportVideoDialog;
110 class LocationUIWindow;
111 class LuaScriptManager;
112 class RCOptionEditor;
113 class RouteParams_UI;
114 class SessionOptionEditor;
116 class GlobalPortMatrixWindow;
120 class ArdourKeyboard;
124 class ConnectionEditor;
125 class DuplicateRouteDialog;
128 class ArdourPrompter;
132 class SessionOptionEditorWindow;
139 class LevelMeterHBox;
140 class GUIObjectState;
143 class ControlProtocolInfo;
156 namespace Gtkmm2ext {
160 class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
163 ARDOUR_UI (int *argcp, char **argvp[], const char* localedir);
166 bool run_startup (bool should_be_new, std::string load_template);
172 void launch_manual ();
173 void launch_reference ();
174 void launch_tracker ();
175 void launch_subscribe ();
176 void launch_cheat_sheet ();
177 void launch_website ();
178 void launch_website_dev ();
179 void launch_forums ();
180 void launch_howto_report ();
184 void load_from_application_api (const std::string& path);
187 int load_session (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
189 int build_session (const std::string& path, const std::string& snapshot, ARDOUR::BusProfile&);
190 bool session_is_new() const { return _session_is_new; }
192 ARDOUR::Session* the_session() { return _session; }
194 bool get_smart_mode () const;
196 int get_session_parameters (bool quit_on_cancel, bool should_be_new = false, std::string load_template = "");
197 int build_session_from_dialog (SessionDialog&, const std::string& session_name, const std::string& session_path);
198 bool ask_about_loading_existing_session (const std::string& session_path);
200 /// @return true if session was successfully unloaded.
201 int unload_session (bool hide_stuff = false);
202 void close_session();
204 int save_state_canfail (std::string state_name = "", bool switch_to_it = false);
205 void save_state (const std::string & state_name = "", bool switch_to_it = false);
207 static ARDOUR_UI *instance () { return theArdourUI; }
209 /* signal emitted when escape key is pressed. All UI components that
210 need to respond to Escape in some way (e.g. break drag, clear
211 selection, etc) should connect to and handle this.
213 PBD::Signal0<void> Escape;
215 PublicEditor& the_editor() { return *editor;}
216 Mixer_UI* the_mixer() { return mixer; }
218 void new_midi_tracer_window ();
219 void toggle_editing_space();
220 void toggle_mixer_space();
221 void toggle_mixer_list();
222 void toggle_monitor_section_visibility ();
223 void toggle_keep_tearoffs();
225 void reset_focus (Gtk::Widget*);
227 static PublicEditor* _instance;
229 /** Emitted frequently with the audible frame, false, and the edit point as
230 * parameters respectively.
232 * (either RapidScreenUpdate || SuperRapidScreenUpdate - user-config)
234 static sigc::signal<void, framepos_t, bool, framepos_t> Clock;
236 static void close_all_dialogs () { CloseAllDialogs(); }
237 static sigc::signal<void> CloseAllDialogs;
239 XMLNode* main_window_settings() const;
240 XMLNode* editor_settings() const;
241 XMLNode* preferences_settings() const;
242 XMLNode* mixer_settings () const;
243 XMLNode* keyboard_settings () const;
244 XMLNode* tearoff_settings (const char*) const;
246 void save_ardour_state ();
247 gboolean configure_handler (GdkEventConfigure* conf);
249 void halt_on_xrun_message ();
250 void xrun_handler (framepos_t);
251 void create_xrun_marker (framepos_t);
253 GUIObjectState* gui_object_state;
255 MainClock* primary_clock;
256 MainClock* secondary_clock;
257 void focus_on_clock ();
258 AudioClock* big_clock;
260 VideoTimeLine *video_timeline;
262 void store_clock_modes ();
263 void restore_clock_modes ();
264 void reset_main_clocks ();
266 void synchronize_sync_source_and_video_pullup ();
269 void add_route_dialog_finished (int);
271 void add_routes_part_two ();
272 void add_routes_thread ();
274 void start_duplicate_routes ();
276 void add_video (Gtk::Window* float_window);
277 void remove_video ();
278 void start_video_server_menu (Gtk::Window* float_window);
279 bool start_video_server (Gtk::Window* float_window, bool popup_msg);
280 void stop_video_server (bool ask_confirm=false);
281 void flush_videotimeline_cache (bool localcacheonly=false);
282 void export_video (bool range = false);
284 void session_add_vca (std::string const &, uint32_t);
286 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);
287 void session_add_audio_track (
289 int32_t output_channels,
290 ARDOUR::TrackMode mode,
291 ARDOUR::RouteGroup* route_group,
293 std::string const & name_template,
295 ARDOUR::PresentationInfo::order_t order
297 session_add_audio_route (true, input_channels, output_channels, mode, route_group, how_many, name_template, strict_io, order);
300 void session_add_audio_bus (
302 int32_t output_channels,
303 ARDOUR::RouteGroup* route_group,
305 std::string const & name_template,
307 ARDOUR::PresentationInfo::order_t order
309 session_add_audio_route (false, input_channels, output_channels, ARDOUR::Normal, route_group, how_many, name_template, strict_io, order);
312 void session_add_midi_track (
313 ARDOUR::RouteGroup* route_group,
315 std::string const & name_template,
317 ARDOUR::PluginInfoPtr instrument,
318 ARDOUR::Plugin::PresetRecord* preset,
319 ARDOUR::PresentationInfo::order_t order
321 session_add_midi_route (true, route_group, how_many, name_template, strict_io, instrument, preset, order);
324 void session_add_mixed_track (const ARDOUR::ChanCount&, const ARDOUR::ChanCount&, ARDOUR::RouteGroup*, uint32_t, std::string const &, bool,
325 ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord* pset,
326 ARDOUR::PresentationInfo::order_t order);
327 void session_add_midi_bus (ARDOUR::RouteGroup*, uint32_t, std::string const &, bool, ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord* pset,
328 ARDOUR::PresentationInfo::order_t order);
329 void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool,
330 ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord*,
331 ARDOUR::PresentationInfo::order_t order);
332 void display_insufficient_ports_message ();
334 void attach_to_engine ();
337 gint exit_on_main_window_close (GdkEventAny *);
339 void maximise_editing_space ();
340 void restore_editing_space ();
342 void show_ui_prefs ();
344 bool check_audioengine(Gtk::Window&);
346 void setup_profile ();
347 void setup_tooltips ();
349 void set_shuttle_fract (double);
351 void get_process_buffers ();
352 void drop_process_buffers ();
354 void reset_peak_display ();
355 void reset_route_peak_display (ARDOUR::Route*);
356 void reset_group_peak_display (ARDOUR::RouteGroup*);
358 const std::string& announce_string() const { return _announce_string; }
360 void hide_application ();
362 Gtk::Notebook& tabs();
363 Gtk::Window& main_window () { return _main_window; }
365 void setup_toplevel_window (Gtk::Window&, const std::string& name, void* owner);
367 /* called from a static C function */
369 GtkNotebook* tab_window_root_drop (GtkNotebook* src,
375 bool tabbed_window_state_event_handler (GdkEventWindowState*, void* object);
376 bool key_event_handler (GdkEventKey*, Gtk::Window* window);
378 Gtkmm2ext::ActionMap global_actions;
380 ARDOUR::PresentationInfo::order_t translate_order (RouteDialogs::InsertAt);
383 friend class PublicEditor;
385 void toggle_auto_play ();
386 void toggle_auto_input ();
387 void toggle_punch ();
388 void unset_dual_punch ();
389 bool ignore_dual_punch;
390 void toggle_punch_in ();
391 void toggle_punch_out ();
392 void toggle_session_monitoring_in ();
393 void toggle_session_monitoring_disk ();
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::Table transport_table;
477 Gtk::Frame transport_frame;
478 Gtk::HBox transport_hbox;
480 ArdourVSpacer *secondary_clock_spacer;
481 void repack_transport_hbox ();
482 void update_clock_visibility ();
484 struct TransportControllable : public PBD::Controllable {
495 TransportControllable (std::string name, ARDOUR_UI&, ToggleType);
496 void set_value (double, PBD::Controllable::GroupControlDisposition group_override);
497 double get_value (void) const;
503 boost::shared_ptr<TransportControllable> roll_controllable;
504 boost::shared_ptr<TransportControllable> stop_controllable;
505 boost::shared_ptr<TransportControllable> goto_start_controllable;
506 boost::shared_ptr<TransportControllable> goto_end_controllable;
507 boost::shared_ptr<TransportControllable> auto_loop_controllable;
508 boost::shared_ptr<TransportControllable> play_selection_controllable;
509 boost::shared_ptr<TransportControllable> rec_controllable;
511 void toggle_follow_edits ();
513 void set_transport_controllable_state (const XMLNode&);
514 XMLNode& get_transport_controllable_state ();
516 ArdourButton roll_button;
517 ArdourButton stop_button;
518 ArdourButton goto_start_button;
519 ArdourButton goto_end_button;
520 ArdourButton auto_loop_button;
521 ArdourButton play_selection_button;
522 ArdourButton rec_button;
523 ArdourButton punch_in_button;
524 ArdourButton punch_out_button;
525 ArdourButton layered_button;
527 ArdourVSpacer recpunch_spacer;
528 ArdourVSpacer monitoring_spacer;
530 ArdourButton monitor_in_button;
531 ArdourButton monitor_disk_button;
532 ArdourButton auto_input_button;
534 Gtk::Label punch_label;
535 Gtk::Label layered_label;
537 Gtk::Label punch_space;
538 Gtk::Label mon_space;
540 void toggle_external_sync ();
541 void toggle_time_master ();
542 void toggle_video_sync ();
544 ShuttleControl shuttle_box;
545 MiniTimeline mini_timeline;
546 TimeInfoBox *time_info_box;
548 ArdourButton auto_return_button;
549 ArdourButton follow_edits_button;
550 ArdourButton click_button;
551 ArdourButton sync_button;
553 ArdourButton auditioning_alert_button;
554 ArdourButton solo_alert_button;
555 ArdourButton feedback_alert_button;
556 ArdourButton error_alert_button;
558 ArdourButton action_script_call_btn[10];
559 Gtk::Table action_script_table;
563 LevelMeterHBox * editor_meter;
564 float editor_meter_max_peak;
565 ArdourButton editor_meter_peak_display;
566 bool editor_meter_peak_button_release (GdkEventButton*);
568 void blink_handler (bool);
569 sigc::connection blink_connection;
572 void solo_blink (bool);
573 void sync_blink (bool);
574 void audition_blink (bool);
575 void feedback_blink (bool);
576 void error_blink (bool);
578 void set_flat_buttons();
580 void soloing_changed (bool);
581 void auditioning_changed (bool);
582 void _auditioning_changed (bool);
584 bool solo_alert_press (GdkEventButton* ev);
585 void audition_alert_clicked ();
586 bool error_alert_press (GdkEventButton *);
588 void layered_button_clicked ();
590 void big_clock_value_changed ();
591 void primary_clock_value_changed ();
592 void secondary_clock_value_changed ();
594 /* called by Blink signal */
596 void transport_rec_enable_blink (bool onoff);
598 Gtk::Menu* session_popup_menu;
600 /* menu bar and associated stuff */
602 Gtk::MenuBar* menu_bar;
603 Gtk::EventBox menu_bar_base;
606 void use_menubar_as_top_menubar ();
607 void build_menu_bar ();
609 Gtk::Label wall_clock_label;
610 gint update_wall_clock ();
612 Gtk::Label disk_space_label;
613 void update_disk_space ();
615 Gtk::Label timecode_format_label;
616 void update_timecode_format ();
618 Gtk::Label cpu_load_label;
619 void update_cpu_load ();
621 Gtk::Label xrun_label;
622 void update_xrun_count ();
624 Gtk::Label peak_thread_work_label;
625 void update_peak_thread_work ();
627 Gtk::Label buffer_load_label;
628 void update_buffer_load ();
630 Gtk::Label sample_rate_label;
631 void update_sample_rate (ARDOUR::framecnt_t);
633 Gtk::Label format_label;
634 void update_format ();
636 void every_second ();
637 void every_point_one_seconds ();
638 void every_point_zero_something_seconds ();
640 sigc::connection second_connection;
641 sigc::connection point_one_second_connection;
642 sigc::connection point_zero_something_second_connection;
643 sigc::connection fps_connection;
645 void set_fps_timeout_connection ();
647 void open_session ();
648 void open_recent_session ();
649 bool process_save_template_prompter (ArdourPrompter& prompter);
650 void save_template ();
652 void edit_metadata ();
653 void import_metadata ();
655 void set_loop_sensitivity ();
656 void set_transport_sensitivity (bool);
658 //stuff for ProTools-style numpad
659 void transport_numpad_event (int num);
660 void transport_numpad_decimal ();
661 bool _numpad_locate_happening;
662 int _pending_locate_num;
663 gint transport_numpad_timeout ();
664 sigc::connection _numpad_timeout_connection;
666 void transport_goto_nth_marker (int nth);
667 void transport_goto_zero ();
668 void transport_goto_start ();
669 void transport_goto_end ();
670 void transport_goto_wallclock ();
671 void transport_stop ();
672 void transport_record (bool roll);
673 void transport_roll ();
674 void transport_play_selection();
675 void transport_play_preroll();
676 void transport_rec_preroll();
677 void transport_rec_count_in();
678 void transport_forward (int option);
679 void transport_rewind (int option);
680 void transport_loop ();
681 void toggle_roll (bool with_abort, bool roll_out_of_bounded_mode);
682 bool trx_record_enable_all_tracks ();
684 bool _session_is_new;
685 void set_session (ARDOUR::Session *);
686 void connect_dependents_to_session (ARDOUR::Session *);
687 void we_have_dependents ();
689 void setup_session_options ();
691 guint32 last_key_press_time;
693 bool process_snapshot_session_prompter (ArdourPrompter& prompter, bool switch_to_it);
694 void snapshot_session (bool switch_to_it);
696 void quick_snapshot_session (bool switch_to_it); //does not promtp for name, just makes a timestamped file
698 SaveAsDialog* save_as_dialog;
700 bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar);
701 void save_session_as ();
702 void archive_session ();
703 void rename_session ();
706 int create_editor ();
707 int create_meterbridge ();
708 int create_luawindow ();
709 int create_masters ();
711 Meterbridge *meterbridge;
712 LuaWindow *luawindow;
714 /* Dialogs that can be created via new<T> */
716 RCOptionEditor* rc_option_editor;
717 Gtk::HBox rc_option_editor_placeholder;
719 WM::Proxy<SpeakerDialog> speaker_config_window;
720 WM::Proxy<AddRouteDialog> add_route_dialog;
721 WM::Proxy<About> about;
722 WM::Proxy<LocationUIWindow> location_ui;
723 WM::Proxy<RouteParams_UI> route_params;
724 WM::Proxy<EngineControl> audio_midi_setup;
725 WM::Proxy<ExportVideoDialog> export_video_dialog;
726 WM::Proxy<LuaScriptManager> lua_script_window;
728 /* Windows/Dialogs that require a creator method */
730 WM::ProxyWithConstructor<SessionOptionEditor> session_option_editor;
731 WM::ProxyWithConstructor<AddVideoDialog> add_video_dialog;
732 WM::ProxyWithConstructor<BundleManager> bundle_manager;
733 WM::ProxyWithConstructor<BigClockWindow> big_clock_window;
734 WM::ProxyWithConstructor<GlobalPortMatrixWindow> audio_port_matrix;
735 WM::ProxyWithConstructor<GlobalPortMatrixWindow> midi_port_matrix;
736 WM::ProxyWithConstructor<KeyEditor> key_editor;
738 /* creator methods */
740 SessionOptionEditor* create_session_option_editor ();
741 BundleManager* create_bundle_manager ();
742 AddVideoDialog* create_add_video_dialog ();
743 BigClockWindow* create_big_clock_window();
744 GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType);
745 KeyEditor* create_key_editor ();
747 ARDOUR::SystemExec *video_server_process;
749 void handle_locations_change (ARDOUR::Location*);
751 /* Keyboard Handling */
753 ArdourKeyboard* keyboard;
755 /* Keymap handling */
757 void install_actions ();
759 void toggle_record_enable (uint16_t);
761 uint32_t rec_enabled_streams;
762 void count_recenabled_streams (ARDOUR::Route&);
766 void pop_back_splash (Gtk::Window&);
770 Gtk::MenuItem *cleanup_item;
772 void display_cleanup_results (ARDOUR::CleanupReport& rep, const gchar* list_title, const bool msg_delete);
774 void cleanup_peakfiles ();
777 bool have_configure_timeout;
778 ARDOUR::microseconds_t last_configure_time;
779 gint configure_timeout ();
781 ARDOUR::microseconds_t last_peak_grab;
782 ARDOUR::microseconds_t last_shuttle_request;
784 bool have_disk_speed_dialog_displayed;
785 void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*);
786 void disk_overrun_handler ();
787 void disk_underrun_handler ();
788 void gui_idle_handler ();
790 void cancel_plugin_scan ();
791 void cancel_plugin_timeout ();
792 void plugin_scan_dialog (std::string type, std::string plugin, bool);
793 void plugin_scan_timeout (int);
795 void session_format_mismatch (std::string, std::string);
797 void session_dialog (std::string);
798 int pending_state_dialog ();
799 int sr_mismatch_dialog (ARDOUR::framecnt_t, ARDOUR::framecnt_t);
800 void sr_mismatch_message (ARDOUR::framecnt_t, ARDOUR::framecnt_t);
802 Gtk::MenuItem* jack_disconnect_item;
803 Gtk::MenuItem* jack_reconnect_item;
804 Gtk::Menu* jack_bufsize_menu;
806 Glib::RefPtr<Gtk::ActionGroup> common_actions;
808 void editor_realized ();
810 std::vector<std::string> positional_sync_strings;
812 void toggle_use_mmc ();
813 void toggle_send_mmc ();
814 void toggle_send_mtc ();
815 void toggle_send_midi_clock ();
817 void toggle_use_osc ();
819 void parameter_changed (std::string);
820 void session_parameter_changed (std::string);
824 void check_memory_locking ();
826 void audioengine_setup ();
828 void display_message (const char *prefix, gint prefix_len,
829 Glib::RefPtr<Gtk::TextBuffer::Tag> ptag, Glib::RefPtr<Gtk::TextBuffer::Tag> mtag,
831 Gtk::Label status_bar_label;
832 bool status_bar_button_press (GdkEventButton*);
834 void loading_message (const std::string& msg);
836 PBD::ScopedConnectionList forever_connections;
837 PBD::ScopedConnection halt_connection;
839 void step_edit_status_change (bool);
841 /* these are used only in response to a platform-specific "ShouldQuit" signal */
843 void queue_finish ();
844 void fontconfig_dialog ();
846 int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type);
847 int ambiguous_file (std::string file, std::vector<std::string> hits);
849 bool click_button_clicked (GdkEventButton *);
850 bool click_button_scroll (GdkEventScroll *);
851 bool sync_button_clicked (GdkEventButton *);
853 VisibilityGroup _status_bar_visibility;
855 /** A ProcessThread so that we have some thread-local buffers for use by
856 * PluginEqGui::impulse_analysis ().
858 ARDOUR::ProcessThread* _process_thread;
860 void feedback_detected ();
862 ArdourButton midi_panic_button;
865 void successful_graph_sort ();
866 bool _feedback_exists;
868 enum ArdourLogLevel {
875 ArdourLogLevel _log_not_acknowledged;
877 void resize_text_widgets ();
879 bool xrun_button_release (GdkEventButton* ev);
881 std::string _announce_string;
882 void check_announcements ();
884 int do_audio_midi_setup (uint32_t);
885 void audioengine_became_silent ();
887 DuplicateRouteDialog* duplicate_routes_dialog;
889 void grab_focus_after_dialog ();
891 void tabs_switch (GtkNotebookPage*, guint page_number);
892 void tabs_page_added (Gtk::Widget*, guint);
893 void tabs_page_removed (Gtk::Widget*, guint);
894 ArdourButton editor_visibility_button;
895 ArdourButton mixer_visibility_button;
896 ArdourButton prefs_visibility_button;
898 bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev, Gtkmm2ext::Bindings*);
899 bool try_gtk_accel_binding (GtkWindow* win, GdkEventKey* ev, bool translate, GdkModifierType modifier);
901 bool main_window_delete_event (GdkEventAny*);
902 bool idle_ask_about_quit ();
904 void load_bindings ();
905 bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name);
907 void step_up_through_tabs ();
908 void step_down_through_tabs ();
911 void close_current_dialog ();
912 void pre_release_dialog ();
914 bool bind_lua_action_script (GdkEventButton*, int);
915 void update_action_script_btn (int i, const std::string&);
918 #endif /* __ardour_gui_h__ */