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 "idleometer.h"
94 #include "keyeditor.h"
95 #include "location_ui.h"
96 #include "lua_script_manager.h"
97 #include "rc_option_editor.h"
98 #include "route_dialogs.h"
99 #include "route_params_ui.h"
100 #include "session_option_editor.h"
101 #include "speaker_dialog.h"
104 class AddRouteDialog;
105 class AddVideoDialog;
106 class BigClockWindow;
109 class ExportVideoDialog;
111 class LocationUIWindow;
112 class LuaScriptManager;
113 class RCOptionEditor;
114 class RouteParams_UI;
115 class SessionOptionEditor;
117 class GlobalPortMatrixWindow;
122 class ArdourKeyboard;
126 class ConnectionEditor;
127 class DuplicateRouteDialog;
130 class ArdourPrompter;
134 class SessionOptionEditorWindow;
141 class LevelMeterHBox;
142 class GUIObjectState;
145 class ControlProtocolInfo;
158 namespace Gtkmm2ext {
162 class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr
165 ARDOUR_UI (int *argcp, char **argvp[], const char* localedir);
168 bool run_startup (bool should_be_new, std::string load_template);
174 void launch_manual ();
175 void launch_reference ();
176 void launch_tracker ();
177 void launch_subscribe ();
178 void launch_cheat_sheet ();
179 void launch_website ();
180 void launch_website_dev ();
181 void launch_forums ();
182 void launch_howto_report ();
186 void load_from_application_api (const std::string& path);
189 int load_session (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
191 int build_session (const std::string& path, const std::string& snapshot, ARDOUR::BusProfile&);
192 bool session_is_new() const { return _session_is_new; }
194 ARDOUR::Session* the_session() { return _session; }
196 bool get_smart_mode () const;
198 int get_session_parameters (bool quit_on_cancel, bool should_be_new = false, std::string load_template = "");
199 int build_session_from_dialog (SessionDialog&, const std::string& session_name, const std::string& session_path);
200 bool ask_about_loading_existing_session (const std::string& session_path);
202 /// @return true if session was successfully unloaded.
203 int unload_session (bool hide_stuff = false);
204 void close_session();
206 int save_state_canfail (std::string state_name = "", bool switch_to_it = false);
207 void save_state (const std::string & state_name = "", bool switch_to_it = false);
209 static ARDOUR_UI *instance () { return theArdourUI; }
211 /* signal emitted when escape key is pressed. All UI components that
212 need to respond to Escape in some way (e.g. break drag, clear
213 selection, etc) should connect to and handle this.
215 PBD::Signal0<void> Escape;
217 PublicEditor& the_editor() { return *editor;}
218 Mixer_UI* the_mixer() { return mixer; }
220 void new_midi_tracer_window ();
221 void toggle_editing_space();
222 void toggle_mixer_space();
223 void toggle_mixer_list();
224 void toggle_monitor_section_visibility ();
225 void toggle_keep_tearoffs();
227 void reset_focus (Gtk::Widget*);
229 static PublicEditor* _instance;
231 /** Emitted frequently with the audible frame, false, and the edit point as
232 * parameters respectively.
234 * (either RapidScreenUpdate || SuperRapidScreenUpdate - user-config)
236 static sigc::signal<void, framepos_t, bool, framepos_t> Clock;
238 static void close_all_dialogs () { CloseAllDialogs(); }
239 static sigc::signal<void> CloseAllDialogs;
241 XMLNode* main_window_settings() const;
242 XMLNode* editor_settings() const;
243 XMLNode* preferences_settings() const;
244 XMLNode* mixer_settings () const;
245 XMLNode* keyboard_settings () const;
246 XMLNode* tearoff_settings (const char*) const;
248 void save_ardour_state ();
249 gboolean configure_handler (GdkEventConfigure* conf);
251 void halt_on_xrun_message ();
252 void xrun_handler (framepos_t);
253 void create_xrun_marker (framepos_t);
255 GUIObjectState* gui_object_state;
257 MainClock* primary_clock;
258 MainClock* secondary_clock;
259 void focus_on_clock ();
260 AudioClock* big_clock;
262 VideoTimeLine *video_timeline;
264 void store_clock_modes ();
265 void restore_clock_modes ();
266 void reset_main_clocks ();
268 void synchronize_sync_source_and_video_pullup ();
271 void add_route_dialog_finished (int);
273 void add_routes_part_two ();
274 void add_routes_thread ();
276 void start_duplicate_routes ();
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 toggle_session_monitoring_in ();
395 void toggle_session_monitoring_disk ();
396 void show_loop_punch_ruler_and_disallow_hide ();
397 void reenable_hide_loop_punch_ruler_if_appropriate ();
398 void toggle_auto_return ();
399 void toggle_click ();
400 void toggle_audio_midi_setup ();
401 void toggle_session_auto_loop ();
402 void toggle_rc_options_window ();
403 void toggle_session_options_window ();
406 Gtk::Window _main_window;
407 Gtkmm2ext::VisibilityTracker* main_window_visibility;
408 Gtk::VBox main_vpacker;
409 Gtk::HBox status_bar_hpacker;
411 PublicEditor* editor;
413 Gtk::Tooltips _tooltips;
417 bool _initial_verbose_plugin_scan;
418 bool first_time_engine_run;
420 void show_tabbable (Gtkmm2ext::Tabbable*);
421 void hide_tabbable (Gtkmm2ext::Tabbable*);
422 void detach_tabbable (Gtkmm2ext::Tabbable*);
423 void attach_tabbable (Gtkmm2ext::Tabbable*);
424 void button_change_tabbable_visibility (Gtkmm2ext::Tabbable*);
425 void key_change_tabbable_visibility (Gtkmm2ext::Tabbable*);
426 void toggle_editor_and_mixer ();
428 void tabbable_state_change (Gtkmm2ext::Tabbable&);
430 void toggle_meterbridge ();
431 void toggle_luawindow ();
433 int setup_windows ();
434 void setup_transport ();
437 static ARDOUR_UI *theArdourUI;
438 SessionDialog *_session_dialog;
442 int ask_about_saving_session (const std::vector<std::string>& actions);
444 void save_session_at_its_request (std::string);
445 /* periodic safety backup, to be precise */
446 gint autosave_session();
447 void update_autosave();
448 sigc::connection _autosave_connection;
450 void session_dirty_changed ();
451 void update_title ();
453 void map_transport_state ();
454 int32_t do_engine_start ();
456 void engine_halted (const char* reason, bool free_reason);
457 void engine_stopped ();
458 void engine_running ();
462 void about_signal_response(int response);
464 Gtk::VBox top_packer;
466 sigc::connection clock_signal_connection;
467 void update_clocks ();
468 void start_clocking ();
469 void stop_clocking ();
471 void update_transport_clocks (framepos_t pos);
472 void record_state_changed ();
474 std::list<MidiTracer*> _midi_tracer_windows;
476 /* Transport Control */
478 Gtk::Table transport_table;
479 Gtk::Frame transport_frame;
480 Gtk::HBox transport_hbox;
482 ArdourVSpacer *secondary_clock_spacer;
483 void repack_transport_hbox ();
484 void update_clock_visibility ();
486 struct TransportControllable : public PBD::Controllable {
497 TransportControllable (std::string name, ARDOUR_UI&, ToggleType);
498 void set_value (double, PBD::Controllable::GroupControlDisposition group_override);
499 double get_value (void) const;
505 boost::shared_ptr<TransportControllable> roll_controllable;
506 boost::shared_ptr<TransportControllable> stop_controllable;
507 boost::shared_ptr<TransportControllable> goto_start_controllable;
508 boost::shared_ptr<TransportControllable> goto_end_controllable;
509 boost::shared_ptr<TransportControllable> auto_loop_controllable;
510 boost::shared_ptr<TransportControllable> play_selection_controllable;
511 boost::shared_ptr<TransportControllable> rec_controllable;
513 void toggle_follow_edits ();
515 void set_transport_controllable_state (const XMLNode&);
516 XMLNode& get_transport_controllable_state ();
518 ArdourButton roll_button;
519 ArdourButton stop_button;
520 ArdourButton goto_start_button;
521 ArdourButton goto_end_button;
522 ArdourButton auto_loop_button;
523 ArdourButton play_selection_button;
524 ArdourButton rec_button;
525 ArdourButton punch_in_button;
526 ArdourButton punch_out_button;
527 ArdourButton layered_button;
529 ArdourVSpacer recpunch_spacer;
530 ArdourVSpacer monitoring_spacer;
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 Gtk::Label punch_space;
540 Gtk::Label mon_space;
542 void toggle_external_sync ();
543 void toggle_time_master ();
544 void toggle_video_sync ();
546 ShuttleControl shuttle_box;
547 MiniTimeline mini_timeline;
548 TimeInfoBox *time_info_box;
550 ArdourButton auto_return_button;
551 ArdourButton follow_edits_button;
552 ArdourButton click_button;
553 ArdourButton sync_button;
555 ArdourButton auditioning_alert_button;
556 ArdourButton solo_alert_button;
557 ArdourButton feedback_alert_button;
558 ArdourButton error_alert_button;
560 ArdourButton action_script_call_btn[10];
561 Gtk::Table action_script_table;
565 LevelMeterHBox * editor_meter;
566 float editor_meter_max_peak;
567 ArdourButton editor_meter_peak_display;
568 bool editor_meter_peak_button_release (GdkEventButton*);
570 bool editor_meter_button_press (GdkEventButton* ev);
571 void popup_editor_meter_menu (GdkEventButton* ev);
572 void add_editor_meter_type_item (Gtk::Menu_Helpers::MenuList&, Gtk::RadioMenuItem::Group&, std::string const &, ARDOUR::MeterType);
573 bool _suspend_editor_meter_callbacks;
575 void blink_handler (bool);
576 sigc::connection blink_connection;
579 void solo_blink (bool);
580 void sync_blink (bool);
581 void audition_blink (bool);
582 void feedback_blink (bool);
583 void error_blink (bool);
585 void set_flat_buttons();
587 void soloing_changed (bool);
588 void auditioning_changed (bool);
589 void _auditioning_changed (bool);
591 bool solo_alert_press (GdkEventButton* ev);
592 void audition_alert_clicked ();
593 bool error_alert_press (GdkEventButton *);
595 void layered_button_clicked ();
597 void big_clock_value_changed ();
598 void primary_clock_value_changed ();
599 void secondary_clock_value_changed ();
601 /* called by Blink signal */
603 void transport_rec_enable_blink (bool onoff);
605 Gtk::Menu* session_popup_menu;
607 /* menu bar and associated stuff */
609 Gtk::MenuBar* menu_bar;
610 Gtk::EventBox menu_bar_base;
613 void use_menubar_as_top_menubar ();
614 void build_menu_bar ();
616 Gtk::Label wall_clock_label;
617 gint update_wall_clock ();
619 Gtk::Label disk_space_label;
620 void update_disk_space ();
622 Gtk::Label timecode_format_label;
623 void update_timecode_format ();
625 Gtk::Label cpu_load_label;
626 void update_cpu_load ();
628 Gtk::Label xrun_label;
629 void update_xrun_count ();
631 Gtk::Label peak_thread_work_label;
632 void update_peak_thread_work ();
634 Gtk::Label buffer_load_label;
635 void update_buffer_load ();
637 Gtk::Label sample_rate_label;
638 void update_sample_rate (ARDOUR::framecnt_t);
640 Gtk::Label format_label;
641 void update_format ();
643 void every_second ();
644 void every_point_one_seconds ();
645 void every_point_zero_something_seconds ();
647 sigc::connection second_connection;
648 sigc::connection point_one_second_connection;
649 sigc::connection point_zero_something_second_connection;
650 sigc::connection fps_connection;
652 void set_fps_timeout_connection ();
654 void open_session ();
655 void open_recent_session ();
656 bool process_save_template_prompter (ArdourPrompter& prompter);
657 void save_template ();
659 void edit_metadata ();
660 void import_metadata ();
662 void set_loop_sensitivity ();
663 void set_transport_sensitivity (bool);
665 //stuff for ProTools-style numpad
666 void transport_numpad_event (int num);
667 void transport_numpad_decimal ();
668 bool _numpad_locate_happening;
669 int _pending_locate_num;
670 gint transport_numpad_timeout ();
671 sigc::connection _numpad_timeout_connection;
673 void transport_goto_nth_marker (int nth);
674 void transport_goto_zero ();
675 void transport_goto_start ();
676 void transport_goto_end ();
677 void transport_goto_wallclock ();
678 void transport_stop ();
679 void transport_record (bool roll);
680 void transport_roll ();
681 void transport_play_selection();
682 void transport_play_preroll();
683 void transport_rec_preroll();
684 void transport_rec_count_in();
685 void transport_forward (int option);
686 void transport_rewind (int option);
687 void transport_loop ();
688 void toggle_roll (bool with_abort, bool roll_out_of_bounded_mode);
689 bool trx_record_enable_all_tracks ();
691 bool _session_is_new;
692 void set_session (ARDOUR::Session *);
693 void connect_dependents_to_session (ARDOUR::Session *);
694 void we_have_dependents ();
696 void setup_session_options ();
698 guint32 last_key_press_time;
700 bool process_snapshot_session_prompter (ArdourPrompter& prompter, bool switch_to_it);
701 void snapshot_session (bool switch_to_it);
703 void quick_snapshot_session (bool switch_to_it); //does not promtp for name, just makes a timestamped file
705 SaveAsDialog* save_as_dialog;
707 bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar);
708 void save_session_as ();
709 void archive_session ();
710 void rename_session ();
713 int create_editor ();
714 int create_meterbridge ();
715 int create_luawindow ();
716 int create_masters ();
718 Meterbridge *meterbridge;
719 LuaWindow *luawindow;
721 /* Dialogs that can be created via new<T> */
723 RCOptionEditor* rc_option_editor;
724 Gtk::HBox rc_option_editor_placeholder;
726 WM::Proxy<SpeakerDialog> speaker_config_window;
727 WM::Proxy<AddRouteDialog> add_route_dialog;
728 WM::Proxy<About> about;
729 WM::Proxy<LocationUIWindow> location_ui;
730 WM::Proxy<RouteParams_UI> route_params;
731 WM::Proxy<EngineControl> audio_midi_setup;
732 WM::Proxy<ExportVideoDialog> export_video_dialog;
733 WM::Proxy<LuaScriptManager> lua_script_window;
734 WM::Proxy<IdleOMeter> idleometer;
736 /* Windows/Dialogs that require a creator method */
738 WM::ProxyWithConstructor<SessionOptionEditor> session_option_editor;
739 WM::ProxyWithConstructor<AddVideoDialog> add_video_dialog;
740 WM::ProxyWithConstructor<BundleManager> bundle_manager;
741 WM::ProxyWithConstructor<BigClockWindow> big_clock_window;
742 WM::ProxyWithConstructor<GlobalPortMatrixWindow> audio_port_matrix;
743 WM::ProxyWithConstructor<GlobalPortMatrixWindow> midi_port_matrix;
744 WM::ProxyWithConstructor<KeyEditor> key_editor;
746 /* creator methods */
748 SessionOptionEditor* create_session_option_editor ();
749 BundleManager* create_bundle_manager ();
750 AddVideoDialog* create_add_video_dialog ();
751 BigClockWindow* create_big_clock_window();
752 GlobalPortMatrixWindow* create_global_port_matrix (ARDOUR::DataType);
753 KeyEditor* create_key_editor ();
755 ARDOUR::SystemExec *video_server_process;
757 void handle_locations_change (ARDOUR::Location*);
759 /* Keyboard Handling */
761 ArdourKeyboard* keyboard;
763 /* Keymap handling */
765 void install_actions ();
767 void toggle_record_enable (uint16_t);
769 uint32_t rec_enabled_streams;
770 void count_recenabled_streams (ARDOUR::Route&);
774 void pop_back_splash (Gtk::Window&);
778 Gtk::MenuItem *cleanup_item;
780 void display_cleanup_results (ARDOUR::CleanupReport& rep, const gchar* list_title, const bool msg_delete);
782 void cleanup_peakfiles ();
785 bool have_configure_timeout;
786 ARDOUR::microseconds_t last_configure_time;
787 gint configure_timeout ();
789 ARDOUR::microseconds_t last_peak_grab;
790 ARDOUR::microseconds_t last_shuttle_request;
792 bool have_disk_speed_dialog_displayed;
793 void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*);
794 void disk_overrun_handler ();
795 void disk_underrun_handler ();
796 void gui_idle_handler ();
798 void cancel_plugin_scan ();
799 void cancel_plugin_timeout ();
800 void plugin_scan_dialog (std::string type, std::string plugin, bool);
801 void plugin_scan_timeout (int);
803 void session_format_mismatch (std::string, std::string);
805 void session_dialog (std::string);
806 int pending_state_dialog ();
807 int sr_mismatch_dialog (ARDOUR::framecnt_t, ARDOUR::framecnt_t);
808 void sr_mismatch_message (ARDOUR::framecnt_t, ARDOUR::framecnt_t);
810 Gtk::MenuItem* jack_disconnect_item;
811 Gtk::MenuItem* jack_reconnect_item;
812 Gtk::Menu* jack_bufsize_menu;
814 Glib::RefPtr<Gtk::ActionGroup> common_actions;
816 void editor_realized ();
818 std::vector<std::string> positional_sync_strings;
820 void toggle_use_mmc ();
821 void toggle_send_mmc ();
822 void toggle_send_mtc ();
823 void toggle_send_midi_clock ();
825 void toggle_use_osc ();
827 void parameter_changed (std::string);
828 void session_parameter_changed (std::string);
832 void check_memory_locking ();
834 void audioengine_setup ();
836 void display_message (const char *prefix, gint prefix_len,
837 Glib::RefPtr<Gtk::TextBuffer::Tag> ptag, Glib::RefPtr<Gtk::TextBuffer::Tag> mtag,
839 Gtk::Label status_bar_label;
840 bool status_bar_button_press (GdkEventButton*);
842 void loading_message (const std::string& msg);
844 PBD::ScopedConnectionList forever_connections;
845 PBD::ScopedConnection halt_connection;
846 PBD::ScopedConnection editor_meter_connection;
848 void step_edit_status_change (bool);
850 /* these are used only in response to a platform-specific "ShouldQuit" signal */
852 void queue_finish ();
853 void fontconfig_dialog ();
855 int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type);
856 int ambiguous_file (std::string file, std::vector<std::string> hits);
858 bool click_button_clicked (GdkEventButton *);
859 bool click_button_scroll (GdkEventScroll *);
860 bool sync_button_clicked (GdkEventButton *);
862 VisibilityGroup _status_bar_visibility;
864 /** A ProcessThread so that we have some thread-local buffers for use by
865 * PluginEqGui::impulse_analysis ().
867 ARDOUR::ProcessThread* _process_thread;
869 void feedback_detected ();
871 ArdourButton midi_panic_button;
874 void successful_graph_sort ();
875 bool _feedback_exists;
877 enum ArdourLogLevel {
884 ArdourLogLevel _log_not_acknowledged;
886 void resize_text_widgets ();
888 bool xrun_button_release (GdkEventButton* ev);
890 std::string _announce_string;
891 void check_announcements ();
893 int do_audio_midi_setup (uint32_t);
894 void audioengine_became_silent ();
896 DuplicateRouteDialog* duplicate_routes_dialog;
898 void grab_focus_after_dialog ();
900 void tabs_switch (GtkNotebookPage*, guint page_number);
901 void tabs_page_added (Gtk::Widget*, guint);
902 void tabs_page_removed (Gtk::Widget*, guint);
903 ArdourButton editor_visibility_button;
904 ArdourButton mixer_visibility_button;
905 ArdourButton prefs_visibility_button;
907 bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev, Gtkmm2ext::Bindings*);
908 bool try_gtk_accel_binding (GtkWindow* win, GdkEventKey* ev, bool translate, GdkModifierType modifier);
910 bool main_window_delete_event (GdkEventAny*);
911 bool idle_ask_about_quit ();
913 void load_bindings ();
914 bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name);
916 void step_up_through_tabs ();
917 void step_down_through_tabs ();
920 void close_current_dialog ();
921 void pre_release_dialog ();
923 bool bind_lua_action_script (GdkEventButton*, int);
924 void update_action_script_btn (int i, const std::string&);
927 #endif /* __ardour_gui_h__ */