Ardour  8.12
ardour_ui.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2005-2019 Paul Davis <paul@linuxaudiosystems.com>
3  * Copyright (C) 2005 Karsten Wiese <fzuuzf@googlemail.com>
4  * Copyright (C) 2005 Taybin Rutkin <taybin@taybin.com>
5  * Copyright (C) 2006-2007 Doug McLain <doug@nostar.net>
6  * Copyright (C) 2006-2011 David Robillard <d@drobilla.net>
7  * Copyright (C) 2007-2012 Carl Hetherington <carl@carlh.net>
8  * Copyright (C) 2007-2015 Tim Mayberry <mojofunk@gmail.com>
9  * Copyright (C) 2008 Hans Baier <hansfbaier@googlemail.com>
10  * Copyright (C) 2012-2015 Colin Fletcher <colin.m.fletcher@googlemail.com>
11  * Copyright (C) 2013-2015 Nick Mainsbridge <mainsbridge@gmail.com>
12  * Copyright (C) 2013-2016 John Emmas <john@creativepost.co.uk>
13  * Copyright (C) 2013-2019 Robin Gareus <robin@gareus.org>
14  * Copyright (C) 2014-2018 Ben Loftis <ben@harrisonconsoles.com>
15  * Copyright (C) 2017 Johannes Mueller <github@johannes-mueller.org>
16  * Copyright (C) 2018 Len Ovens <len@ovenwerks.net>
17  *
18  * This program is free software; you can redistribute it and/or modify
19  * it under the terms of the GNU General Public License as published by
20  * the Free Software Foundation; either version 2 of the License, or
21  * (at your option) any later version.
22  *
23  * This program is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26  * GNU General Public License for more details.
27  *
28  * You should have received a copy of the GNU General Public License along
29  * with this program; if not, write to the Free Software Foundation, Inc.,
30  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
31  */
32 
33 #ifndef __ardour_gui_h__
34 #define __ardour_gui_h__
35 
36 #include <time.h>
37 
38 /* need _BSD_SOURCE to get timersub macros */
39 
40 #ifdef _BSD_SOURCE
41 #include <sys/time.h>
42 #else
43 #define _BSD_SOURCE
44 #include <sys/time.h>
45 #undef _BSD_SOURCE
46 #endif
47 
48 #include <list>
49 #include <cmath>
50 
51 #include "pbd/xml++.h"
52 #include <gtkmm/box.h>
53 #include <gtkmm/frame.h>
54 #include <gtkmm/label.h>
55 #include <gtkmm/table.h>
56 #include <gtkmm/fixed.h>
57 #include <gtkmm/drawingarea.h>
58 #include <gtkmm/eventbox.h>
59 #include <gtkmm/menu.h>
60 #include <gtkmm/menuitem.h>
61 #include <gtkmm/messagedialog.h>
62 #include <gtkmm/notebook.h>
63 #include <gtkmm/button.h>
64 #include <gtkmm/togglebutton.h>
65 #include <gtkmm/treeview.h>
66 #include <gtkmm/menubar.h>
67 #include <gtkmm/textbuffer.h>
68 #include <gtkmm/adjustment.h>
69 
70 #include "gtkmm2ext/gtk_ui.h"
71 #include "gtkmm2ext/bindings.h"
73 
74 #include "ardour/ardour.h"
75 #include "ardour/types.h"
76 #include "ardour/utils.h"
77 #include "ardour/plugin.h"
78 #include "ardour/session_handle.h"
79 #include "ardour/system_exec.h"
80 
81 #include "video_timeline.h"
82 
83 #include "widgets/ardour_button.h"
85 #include "widgets/ardour_spacer.h"
86 
87 #include "add_route_dialog.h"
88 #include "ardour_dialog.h"
89 #include "ardour_window.h"
90 #include "editing.h"
91 #include "enums.h"
92 #include "mini_timeline.h"
93 #include "shuttle_control.h"
94 #include "startup_fsm.h"
95 #include "transport_control.h"
96 #include "transport_control_ui.h"
97 #include "visibility_group.h"
98 #include "window_manager.h"
99 
100 #ifdef COMPILER_MSVC
101 #include "about.h"
102 #include "add_video_dialog.h"
103 #include "big_clock_window.h"
104 #include "big_transport_window.h"
105 #include "bundle_manager.h"
106 #include "dsp_stats_window.h"
107 #include "engine_dialog.h"
108 #include "export_video_dialog.h"
109 #include "global_port_matrix.h"
110 #include "idleometer.h"
111 #include "io_plugin_window.h"
112 #include "keyeditor.h"
113 #include "location_ui.h"
114 #include "lua_script_manager.h"
115 #include "luawindow.h"
116 #include "plugin_dspload_window.h"
117 #include "plugin_manager_ui.h"
118 #include "rc_option_editor.h"
119 #include "route_dialogs.h"
120 #include "route_params_ui.h"
121 #include "session_option_editor.h"
122 #include "speaker_dialog.h"
124 #include "virtual_keyboard_window.h"
125 #include "library_download_dialog.h"
126 #else
127 class About;
128 class AddRouteDialog;
129 class AddVideoDialog;
130 class BigClockWindow;
131 class BigTransportWindow;
132 class BundleManager;
133 class EngineControl;
134 class ExportVideoDialog;
135 class KeyEditor;
136 class LocationUIWindow;
137 class LuaScriptManager;
138 class LuaWindow;
139 class RCOptionEditor;
140 class RouteParams_UI;
141 class SessionOptionEditor;
142 class SpeakerDialog;
144 class IdleOMeter;
145 class IOPluginWindow;
146 class PluginDSPLoadWindow;
147 class PluginManagerUI;
148 class DspStatisticsWindow;
152 #endif
153 
154 class VideoTimeLine;
155 class ArdourKeyboard;
156 class AudioClock;
157 class ConnectionEditor;
159 class MainClock;
160 class Mixer_UI;
161 class PublicEditor;
162 class RecorderUI;
163 class TriggerPage;
164 class SaveAsDialog;
165 class SaveTemplateDialog;
166 class SessionDialog;
167 class SessionOptionEditorWindow;
168 class Splash;
169 class TimeInfoBox;
170 class Meterbridge;
171 class LuaWindow;
172 class MidiTracer;
173 class NSM_Client;
174 class LevelMeterHBox;
175 class GUIObjectState;
176 class BasicUI;
177 
178 namespace ARDOUR {
179  class ControlProtocolInfo;
180  class IO;
181  class Port;
182  class Route;
183  class RouteGroup;
184  class Location;
185  class ProcessThread;
186 }
187 
188 namespace Gtk {
189  class ProgressBar;
190 }
191 
192 namespace ArdourWidgets {
193  class Prompter;
194  class Tabbable;
195 }
196 
197 #define MAX_LUA_ACTION_SCRIPTS 32
198 #define MAX_LUA_ACTION_BUTTONS 12
199 
201 {
202 public:
203  ARDOUR_UI (int *argcp, char **argvp[], const char* localedir);
205 
206  bool run_startup (bool should_be_new, std::string load_template);
207 
208  void hide_splash ();
209 
210  void launch_chat ();
213  void launch_tracker ();
215  void launch_website ();
217  void launch_forums ();
219  void show_about ();
220  void hide_about ();
221 
222  void load_from_application_api (const std::string& path);
223  void finish();
224 
226  int load_session (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
228  int build_session (std::string const& path, std::string const& snapshot, std::string const& session_template, ARDOUR::BusProfile const&, bool from_startup_fsm, bool unnamed, Temporal::TimeDomain domain);
229  int build_session_stage_two (std::string const& path, std::string const& snapshot, std::string const& session_template, ARDOUR::BusProfile const&, bool unnamed, Temporal::TimeDomain domain, ARDOUR::samplecnt_t samplerate = 0);
230 
231  bool session_is_new() const { return _session_is_new; }
232 
234 
235  bool get_smart_mode () const;
236 
239 
240  void start_session_load (bool create_new);
242  void build_session_from_dialog (SessionDialog&, std::string const& session_name, std::string const& session_path, std::string const& session_template, Temporal::TimeDomain domain);
243  bool ask_about_loading_existing_session (const std::string& session_path);
245 
247  int unload_session (bool hide_stuff = false, bool force_unload = false);
249 
250  int save_state_canfail (std::string state_name = "", bool switch_to_it = false);
251  void save_state (const std::string & state_name = "", bool switch_to_it = false);
252 
253  int new_session_from_aaf (std::string const&, std::string const&, std::string&, std::string&);
254 
255  static ARDOUR_UI *instance () { return theArdourUI; }
256 
257  /* signal emitted when escape key is pressed. All UI components that
258  need to respond to Escape in some way (e.g. break drag, clear
259  selection, etc) should connect to and handle this.
260  */
261  PBD::Signal0<void> Escape;
262 
264  Mixer_UI* the_mixer() { return mixer; }
265 
267 
273 
275 
281  static sigc::signal<void, Temporal::timepos_t> Clock;
282 
283  static void close_all_dialogs () { CloseAllDialogs(); }
284  static sigc::signal<void> CloseAllDialogs;
285 
294  XMLNode* tearoff_settings (const char*) const;
295 
296  void trigger_slot (int c, int r);
297  void trigger_cue_row (int r);
298  void stop_all_cues (bool immediately);
299  void stop_cues (int c, bool immediately);
300 
303 
307 
309 
312  void focus_on_clock ();
314 
316 
318 
320 
321  void add_route ();
323 
326 
328 
329  void add_video (Gtk::Window* float_window);
330  void remove_video ();
331  void start_video_server_menu (Gtk::Window* float_window);
332  bool start_video_server (Gtk::Window* float_window, bool popup_msg);
333  void stop_video_server (bool ask_confirm=false);
334  void flush_videotimeline_cache (bool localcacheonly=false);
335  void export_video (bool range = false);
336 
338  uint32_t, std::string const &, bool, ARDOUR::PresentationInfo::order_t order, bool trigger_visibility);
339 
340  void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool,
342  ARDOUR::PresentationInfo::order_t order, bool trigger_visibility);
343 
344  void session_add_foldback_bus (int32_t, uint32_t, std::string const &);
345 
347 
349  void post_engine ();
350 
352 
355 
356  void show_ui_prefs ();
359 
361 
362  void setup_profile ();
363  void setup_tooltips ();
364 
365  void set_shuttle_fract (double);
366 
369 
373 
375 
376  const std::string& announce_string() const { return _announce_string; }
377 
379 
382 
383  void setup_toplevel_window (Gtk::Window&, const std::string& name, void* owner);
384 
385  /* called from a static C function */
386 
388  GtkWidget* w,
389  gint x,
390  gint y,
391  gpointer user_data);
392 
395 
397 
398  std::map<std::string, std::string> route_setup_info (const std::string& script_path);
399 
401 
402 protected:
403  friend class PublicEditor;
404 
408  void monitor_mono ();
409 
412  void toggle_punch ();
422  void toggle_click ();
426 
427 private:
428 
442 
444 
452 
454 
456 
460  void setup_clock ();
461 
464 
466 
467  int starting ();
468  int nsm_init ();
469  void startup_done ();
471 
472  int ask_about_saving_session (const std::vector<std::string>& actions);
473 
474  void audio_midi_setup_reconfigure_done (int response, std::string path, std::string snapshot, std::string mix_template);
475  int load_session_stage_two (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
476  void audio_midi_setup_for_new_session_done (int response, std::string path, std::string snapshot, std::string session_template, ARDOUR::BusProfile const&, bool unnamed, Temporal::TimeDomain domain);
477  sigc::connection _engine_dialog_connection;
478 
479  void save_session_at_its_request (std::string);
480  /* periodic safety backup, to be precise */
483  sigc::connection _autosave_connection;
484 
486  void update_title ();
487 
491 
493  int32_t do_engine_start ();
494 
495  void engine_halted (const char* reason, bool free_reason);
496  void engine_stopped ();
497  void engine_running (uint32_t cnt);
498 
499  void use_config ();
500 
501  void about_signal_response(int response);
502 
504 
505  sigc::connection clock_signal_connection;
506  void update_clocks ();
507  void start_clocking ();
508  void stop_clocking ();
509 
512 
513  std::list<MidiTracer*> _midi_tracer_windows;
514 
515  /* Transport Control */
516 
520 
525 
528 
530 
534 
540 
544 
547 
549 
553 
554 
556 
559 
563 
567 
568 
571 
575 
580 
582 
584 
588 
592 
593  void blink_handler (bool);
594  sigc::connection blink_connection;
595 
596  void cancel_solo ();
597  void solo_blink (bool);
598  void sync_blink (bool);
599  void audition_blink (bool);
600  void feedback_blink (bool);
601  void error_blink (bool);
602 
604 
605  void soloing_changed (bool);
606  void auditioning_changed (bool);
607  void _auditioning_changed (bool);
608 
612 
614 
618 
619  /* menu bar and associated stuff */
620 
624 
626  void build_menu_bar ();
627 
630 
634 
637 
640 
643 
646 
648  void update_format ();
649 
652 
654 
655  void every_second ();
658 
659  sigc::connection second_connection;
660  sigc::connection point_one_second_connection;
662  sigc::connection fps_connection;
663 
665 
666  void open_session ();
669  void save_template ();
671 
672  void meta_session_setup (const std::string& script_path);
673  void meta_route_setup (const std::string& script_path);
674 
675  void edit_metadata ();
677 
680 
681  //stuff for ProTools-style numpad
682  void transport_numpad_event (int num);
687  sigc::connection _numpad_timeout_connection;
688 
694  void transport_stop ();
695  void transport_record (bool roll);
696  void transport_roll ();
703  void transport_ffwd_rewind (bool fwd);
704  void transport_loop ();
705  void toggle_roll (bool with_abort, bool roll_out_of_bounded_mode);
707 
712 
714 
716 
717  bool process_snapshot_session_prompter (ArdourWidgets::Prompter& prompter, bool switch_to_it);
718  void snapshot_session (bool switch_to_it);
719 
720  void quick_snapshot_session (bool switch_to_it); //does not promtp for name, just makes a timestamped file
721 
723 
724  bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar);
727  void rename_session (bool for_unnamed);
728 
729  int create_mixer ();
735 
737 
738  /* Dialogs that can be created via new<T> */
739 
742 
757 
758  /* Windows/Dialogs that require a creator method */
759 
771 
772  /* creator methods */
773 
784 
786 
788 
789  /* Keyboard Handling */
790 
792 
793  /* Keymap handling */
794 
797 
798  void toggle_record_enable (uint16_t);
799 
802 
803  /* cleanup */
804 
806 
807  void display_cleanup_results (ARDOUR::CleanupReport const& rep, const gchar* list_title, const bool msg_delete);
808  void cleanup ();
810  void flush_trash ();
811 
815 
818 
820  void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*);
823 
824  void session_format_mismatch (std::string, std::string);
825 
826  void session_dialog (std::string);
830 
834 
835  Glib::RefPtr<Gtk::ActionGroup> common_actions;
836 
838 
839  std::vector<std::string> record_mode_strings;
840 
841  void toggle_use_mmc ();
845 
846  void toggle_use_osc ();
847 
848  void parameter_changed (std::string);
849  void session_parameter_changed (std::string);
850 
851  bool first_idle ();
852 
854 
856 
857  void display_message (const char* prefix, gint prefix_len, Glib::RefPtr<Gtk::TextBuffer::Tag>, Glib::RefPtr<Gtk::TextBuffer::Tag>, const char* msg);
860 
864 
865  /* these are used only in response to a platform-specific "ShouldQuit" signal */
866  bool idle_finish ();
867  void queue_finish ();
869 
870  int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type);
871  int ambiguous_file (std::string file, std::vector<std::string> hits);
872 
875 
877 
882 
886 
888 
890  void midi_panic ();
891 
895 
901  };
902 
904 
906 
913 
914  std::string _announce_string;
916 
918 
920 
922 
923  void tabs_switch (GtkNotebookPage*, guint page_number);
924  void tabs_page_added (Gtk::Widget*, guint);
931 
933  bool try_gtk_accel_binding (GtkWindow* win, GdkEventKey* ev, bool translate, GdkModifierType modifier);
934 
937 
938  bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name);
939 
942 
943  void escape ();
945 
947  void action_script_changed (int i, const std::string&);
948 
951 
953 };
954 
955 #endif /* __ardour_gui_h__ */
#define MAX_LUA_ACTION_BUTTONS
Definition: ardour_ui.h:198
ARDOUR::Session * _session
bool solo_alert_press(GdkEventButton *ev)
void on_theme_changed()
void display_cleanup_results(ARDOUR::CleanupReport const &rep, const gchar *list_title, const bool msg_delete)
void toggle_session_auto_loop()
void feedback_blink(bool)
int create_editor()
void focus_on_clock()
XMLNode * preferences_settings() const
bool key_press_focus_accelerator_handler(Gtk::Window &window, GdkEventKey *ev, Gtkmm2ext::Bindings *)
void audio_midi_setup_for_new_session_done(int response, std::string path, std::string snapshot, std::string session_template, ARDOUR::BusProfile const &, bool unnamed, Temporal::TimeDomain domain)
bool session_load_in_progress
Definition: ardour_ui.h:227
static sigc::signal< void, Temporal::timepos_t > Clock
Definition: ardour_ui.h:281
void monitor_dim_all()
void session_dialog_response_handler(int response, SessionDialog *session_dialog)
SessionOptionEditor * create_session_option_editor()
void new_midi_tracer_window()
ArdourWidgets::ArdourButton punch_in_button
Definition: ardour_ui.h:531
ArdourWidgets::ArdourDropdown record_mode_selector
Definition: ardour_ui.h:533
PBD::ScopedConnectionList clock_state_connection
Definition: ardour_ui.h:952
void sr_mismatch_message(ARDOUR::samplecnt_t, ARDOUR::samplecnt_t)
RCOptionEditor * rc_option_editor
Definition: ardour_ui.h:740
void stop_video_server(bool ask_confirm=false)
VideoTimeLine * video_timeline
Definition: ardour_ui.h:315
void setup_clock()
WM::Proxy< IdleOMeter > idleometer
Definition: ardour_ui.h:751
RCOptionEditor * get_rc_option_editor()
Definition: ardour_ui.h:237
void transport_goto_nth_marker(int nth)
Mixer_UI * mixer
Definition: ardour_ui.h:435
bool first_idle()
void every_point_one_seconds()
MainClock * primary_clock
Definition: ardour_ui.h:310
void set_punch_sensitivity()
WM::Proxy< EngineControl > audio_midi_setup
Definition: ardour_ui.h:748
ArdourWidgets::ArdourButton action_script_call_btn[12]
Definition: ardour_ui.h:581
BigTransportWindow * create_big_transport_window()
ArdourWidgets::ArdourVSpacer scripts_spacer
Definition: ardour_ui.h:538
Gtk::Label layered_label
Definition: ardour_ui.h:546
void add_routes_thread()
void stop_clocking()
void flush_trash()
Gtk::Label timecode_format_label
Definition: ardour_ui.h:635
void successful_graph_sort()
void launch_tutorial()
void tabs_switch(GtkNotebookPage *, guint page_number)
ArdourWidgets::ArdourButton error_alert_button
Definition: ardour_ui.h:579
void open_recent_session()
PBD::microseconds_t last_configure_time
Definition: ardour_ui.h:813
bool try_gtk_accel_binding(GtkWindow *win, GdkEventKey *ev, bool translate, GdkModifierType modifier)
void attach_tabbable(ArdourWidgets::Tabbable *)
void monitor_mono()
void create_xrun_marker(samplepos_t)
void transport_goto_end()
void update_clocks()
void we_have_dependents()
WM::Proxy< LocationUIWindow > location_ui
Definition: ardour_ui.h:746
ArdourWidgets::ArdourButton auto_return_button
Definition: ardour_ui.h:572
MainClock * secondary_clock
Definition: ardour_ui.h:311
void latency_switch_changed()
Gtk::Menu * _shared_popup_menu
Definition: ardour_ui.h:443
BasicUI * _basic_ui
Definition: ardour_ui.h:445
void disk_overrun_handler()
Gtk::Label format_label
Definition: ardour_ui.h:647
void transport_goto_wallclock()
Gtk::HBox transport_hbox
Definition: ardour_ui.h:519
void set_record_mode(ARDOUR::RecordMode)
void update_transport_clocks(samplepos_t pos)
int missing_file(ARDOUR::Session *s, std::string str, ARDOUR::DataType type)
void toggle_auto_input()
void session_parameter_changed(std::string)
void launch_website_dev()
void show_loop_punch_ruler_and_disallow_hide()
Gtk::MenuBar * menu_bar
Definition: ardour_ui.h:621
void update_cpu_load()
bool ignore_dual_punch
Definition: ardour_ui.h:414
gint update_wall_clock()
WM::Proxy< TransportMastersWindow > transport_masters_window
Definition: ardour_ui.h:756
XMLNode * trigger_page_settings() const
XMLNode * clock_mode_settings() const
void editor_realized()
void blink_handler(bool)
void toggle_send_mtc()
void step_down_through_tabs()
void session_add_foldback_bus(int32_t, uint32_t, std::string const &)
int create_mixer()
void synchronize_sync_source_and_video_pullup()
WM::Proxy< LuaScriptManager > lua_script_window
Definition: ardour_ui.h:750
void every_second()
Gtk::MenuItem * cleanup_item
Definition: ardour_ui.h:805
void use_config()
void record_state_changed()
sigc::connection blink_connection
Definition: ardour_ui.h:594
void action_script_changed(int i, const std::string &)
void update_clock_visibility()
void stop_cues(int c, bool immediately)
bool error_alert_press(GdkEventButton *)
Gtk::Notebook _tabs
Definition: ardour_ui.h:433
ArdourLogLevel _log_not_acknowledged
Definition: ardour_ui.h:903
int copy_demo_sessions()
WM::Proxy< AddRouteDialog > add_route_dialog
Definition: ardour_ui.h:744
void launch_tracker()
int new_session_from_aaf(std::string const &, std::string const &, std::string &, std::string &)
void audition_alert_clicked()
void set_flat_buttons()
void detach_tabbable(ArdourWidgets::Tabbable *)
void show_plugin_manager()
int nsm_init()
void error_blink(bool)
Gtk::VBox alert_box
Definition: ardour_ui.h:583
void toggle_editor_and_mixer()
void tabs_page_added(Gtk::Widget *, guint)
void transport_forward()
ArdourWidgets::ArdourVSpacer recpunch_spacer
Definition: ardour_ui.h:535
Gtk::Label snapshot_name_label
Definition: ardour_ui.h:653
bool status_bar_button_press(GdkEventButton *)
void hide_tabbable(ArdourWidgets::Tabbable *)
VirtualKeyboardWindow * create_virtual_keyboard_window()
void setup_transport()
BundleManager * create_bundle_manager()
void big_clock_value_changed()
void disk_underrun_handler()
void save_template()
bool sync_button_clicked(GdkEventButton *)
void transport_ffwd_rewind(bool fwd)
void auditioning_changed(bool)
@ LogLevelNone
Definition: ardour_ui.h:897
@ LogLevelError
Definition: ardour_ui.h:900
@ LogLevelWarning
Definition: ardour_ui.h:899
@ LogLevelInfo
Definition: ardour_ui.h:898
PBD::ScopedConnection editor_meter_connection
Definition: ardour_ui.h:863
int create_masters()
void update_sample_rate()
void reenable_hide_loop_punch_ruler_if_appropriate()
void key_change_tabbable_visibility(ArdourWidgets::Tabbable *)
bool xrun_button_press(GdkEventButton *ev)
void engine_running(uint32_t cnt)
void toggle_record_enable(uint16_t)
void reset_group_peak_display(ARDOUR::RouteGroup *)
std::vector< std::string > record_mode_strings
Definition: ardour_ui.h:839
static void close_all_dialogs()
Definition: ardour_ui.h:283
void escape()
void cleanup_peakfiles()
int build_session(std::string const &path, std::string const &snapshot, std::string const &session_template, ARDOUR::BusProfile const &, bool from_startup_fsm, bool unnamed, Temporal::TimeDomain domain)
void toggle_punch_out()
Gtk::Window & main_window()
Definition: ardour_ui.h:381
void launch_chat()
void fontconfig_dialog()
sigc::connection second_connection
Definition: ardour_ui.h:659
static sigc::signal< void > CloseAllDialogs
Definition: ardour_ui.h:284
int load_session_stage_two(const std::string &path, const std::string &snapshot, std::string mix_template=std::string())
WM::ProxyWithConstructor< VirtualKeyboardWindow > virtual_keyboard_window
Definition: ardour_ui.h:765
ArdourWidgets::ArdourButton editor_visibility_button
Definition: ardour_ui.h:926
bool save_as_progress_update(float fraction, int64_t cnt, int64_t total, Gtk::Label *label, Gtk::ProgressBar *bar)
void toggle_send_midi_clock()
bool ask_about_loading_existing_session(const std::string &session_path)
PBD::microseconds_t last_shuttle_request
Definition: ardour_ui.h:817
Gtk::HBox status_bar_hpacker
Definition: ardour_ui.h:432
void launch_howto_report()
int _pending_locate_num
Definition: ardour_ui.h:685
Gtk::HBox rc_option_editor_placeholder
Definition: ardour_ui.h:741
PublicEditor * editor
Definition: ardour_ui.h:434
void audio_midi_setup_reconfigure_done(int response, std::string path, std::string snapshot, std::string mix_template)
WM::Proxy< IOPluginWindow > io_plugin_window
Definition: ardour_ui.h:752
void cue_rec_state_clicked()
void transport_rewind()
WM::Proxy< DspStatisticsWindow > dsp_statistics_window
Definition: ardour_ui.h:755
int load_session_from_startup_fsm()
void load_from_application_api(const std::string &path)
Gtk::HBox meterbox_spacer2
Definition: ardour_ui.h:570
WM::Proxy< SpeakerDialog > speaker_config_window
Definition: ardour_ui.h:743
static ARDOUR_UI * theArdourUI
Definition: ardour_ui.h:462
void tabs_page_removed(Gtk::Widget *, guint)
StartupFSM * startup_fsm
Definition: ardour_ui.h:465
void start_video_server_menu(Gtk::Window *float_window)
void cue_rec_state_changed()
void launch_subscribe()
NSM_Client * nsm
Definition: ardour_ui.h:439
Gtk::Frame transport_frame
Definition: ardour_ui.h:518
int setup_windows()
gboolean configure_handler(GdkEventConfigure *conf)
void repack_transport_hbox()
void toggle_send_mmc()
void map_transport_state()
void start_duplicate_routes()
Gtk::Menu * shared_popup_menu()
void set_transport_sensitivity(bool)
ArdourWidgets::ArdourVSpacer meterbox_spacer
Definition: ardour_ui.h:569
void add_route_dialog_response(int)
void close_current_dialog()
TimeInfoBox * time_info_box
Definition: ardour_ui.h:566
void reset_main_clocks()
void apply_window_settings(bool)
void toggle_editing_space()
void update_title()
void cancel_solo()
void transport_play_selection()
ArdourWidgets::ArdourButton _cue_play_enable
Definition: ardour_ui.h:558
Gtk::EventBox menu_bar_base
Definition: ardour_ui.h:622
bool session_is_new() const
Definition: ardour_ui.h:231
void toggle_session_options_window()
void unset_dual_punch()
void transport_stop()
void cleanup()
bool trx_record_enable_all_tracks()
sigc::connection _autosave_connection
Definition: ardour_ui.h:483
std::string _announce_string
Definition: ardour_ui.h:914
void session_format_mismatch(std::string, std::string)
void update_format()
void every_point_zero_something_seconds()
AudioClock * big_clock
Definition: ardour_ui.h:313
void remove_video()
ARDOUR::ProcessThread * _process_thread
Definition: ardour_ui.h:881
void post_engine()
PublicEditor & the_editor()
Definition: ardour_ui.h:263
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, bool trigger_visibility)
void secondary_clock_value_changed()
void trigger_cue_row(int r)
void set_fps_timeout_connection()
void toggle_roll(bool with_abort, bool roll_out_of_bounded_mode)
bool path_button_press(GdkEventButton *ev)
int save_state_canfail(std::string state_name="", bool switch_to_it=false)
void launch_reference()
void meta_route_setup(const std::string &script_path)
void gui_idle_handler()
ARDOUR_UI(int *argcp, char **argvp[], const char *localedir)
ArdourWidgets::ArdourButton midi_panic_button
Definition: ardour_ui.h:889
void archive_session()
int create_recorder()
Gtk::Table transport_table
Definition: ardour_ui.h:517
bool tabbed_window_state_event_handler(GdkEventWindowState *, void *object)
const std::string & announce_string() const
Definition: ardour_ui.h:376
guint32 last_key_press_time
Definition: ardour_ui.h:715
void toggle_use_osc()
void about_signal_response(int response)
std::map< std::string, std::string > route_setup_info(const std::string &script_path)
void solo_blink(bool)
XMLNode * editor_settings() const
BigClockWindow * create_big_clock_window()
PBD::ScopedConnectionList forever_connections
Definition: ardour_ui.h:861
void toggle_video_sync()
void transport_roll()
void add_routes_part_two()
WM::Proxy< RouteParams_UI > route_params
Definition: ardour_ui.h:747
ArdourWidgets::ArdourButton auditioning_alert_button
Definition: ardour_ui.h:576
void update_autosave()
void transport_rec_preroll()
ArdourWidgets::ArdourButton prefs_visibility_button
Definition: ardour_ui.h:928
bool _session_is_new
Definition: ardour_ui.h:708
Gtk::MenuItem * jack_disconnect_item
Definition: ardour_ui.h:831
void step_up_through_tabs()
WM::ProxyWithConstructor< BundleManager > bundle_manager
Definition: ardour_ui.h:762
int ask_about_saving_session(const std::vector< std::string > &actions)
void quick_snapshot_session(bool switch_to_it)
int unload_session(bool hide_stuff=false, bool force_unload=false)
static ARDOUR_UI * instance()
Definition: ardour_ui.h:255
sigc::connection point_one_second_connection
Definition: ardour_ui.h:660
XMLNode * keyboard_settings() const
void _auditioning_changed(bool)
WM::ProxyWithConstructor< KeyEditor > key_editor
Definition: ardour_ui.h:769
void build_session_from_dialog(SessionDialog &, std::string const &session_name, std::string const &session_path, std::string const &session_template, Temporal::TimeDomain domain)
void button_change_tabbable_visibility(ArdourWidgets::Tabbable *)
bool check_audioengine(Gtk::Window &)
ArdourWidgets::ArdourButton editor_meter_peak_display
Definition: ardour_ui.h:586
void xrun_handler(samplepos_t)
ArdourWidgets::ArdourButton latency_disable_button
Definition: ardour_ui.h:555
void check_memory_locking()
void update_disk_space()
ArdourWidgets::ArdourButton monitor_dim_button
Definition: ardour_ui.h:541
void transport_rec_count_in()
void cue_ffwd_state_clicked()
bool _feedback_exists
Definition: ardour_ui.h:893
gint exit_on_main_window_close(GdkEventAny *)
void rename_session(bool for_unnamed)
void use_menubar_as_top_menubar()
void toggle_session_monitoring_disk()
Gtk::Label peak_thread_work_label
Definition: ardour_ui.h:641
bool timecode_button_press(GdkEventButton *ev)
bool _clear_editor_meter
Definition: ardour_ui.h:589
void count_recenabled_streams(ARDOUR::Route &)
void add_video(Gtk::Window *float_window)
void stop_all_cues(bool immediately)
Meterbridge * meterbridge
Definition: ardour_ui.h:736
WM::Proxy< ExportVideoDialog > export_video_dialog
Definition: ardour_ui.h:749
gint autosave_session()
void attach_to_engine()
void toggle_use_mmc()
ArdourWidgets::ArdourVSpacer cuectrl_spacer
Definition: ardour_ui.h:539
void feedback_detected()
void monitor_cut_all()
void toggle_external_sync()
sigc::connection point_zero_something_second_connection
Definition: ardour_ui.h:661
void hide_about()
Gtk::Label io_latency_label
Definition: ardour_ui.h:561
MiniTimeline mini_timeline
Definition: ardour_ui.h:565
void session_dirty_changed()
int starting()
int load_session(const std::string &path, const std::string &snapshot, std::string mix_template=std::string())
void display_insufficient_ports_message()
XMLNode * recorder_settings() const
Gtk::Label dsp_load_label
Definition: ardour_ui.h:638
Gtk::Menu * jack_bufsize_menu
Definition: ardour_ui.h:833
WM::Proxy< PluginManagerUI > plugin_manager_ui
Definition: ardour_ui.h:753
void show_plugin_prefs()
PBD::ScopedConnection halt_connection
Definition: ardour_ui.h:862
ArdourWidgets::ArdourVSpacer * secondary_clock_spacer
Definition: ardour_ui.h:521
sigc::connection clock_signal_connection
Definition: ardour_ui.h:505
void transport_loop()
bool _ambiguous_latency
Definition: ardour_ui.h:894
uint32_t rec_enabled_streams
Definition: ardour_ui.h:800
void grab_focus_after_dialog()
void add_route()
void reset_peak_display()
Gtk::Notebook & tabs()
SaveAsDialog * save_as_dialog
Definition: ardour_ui.h:722
void update_timecode_format()
void transport_record(bool roll)
void setup_session_options()
int create_trigger_page()
void session_add_midi_route(bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool, ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord *, ARDOUR::PresentationInfo::order_t order, bool trigger_visibility)
bool start_video_server(Gtk::Window *float_window, bool popup_msg)
Gtk::Tooltips _tooltips
Definition: ardour_ui.h:438
void toggle_punch_in()
void engine_halted(const char *reason, bool free_reason)
Glib::RefPtr< Gtk::ActionGroup > common_actions
Definition: ardour_ui.h:835
void save_session_as()
ArdourWidgets::ArdourButton monitor_mono_button
Definition: ardour_ui.h:542
WM::Proxy< PluginDSPLoadWindow > plugin_dsp_load_window
Definition: ardour_ui.h:754
int build_session_stage_two(std::string const &path, std::string const &snapshot, std::string const &session_template, ARDOUR::BusProfile const &, bool unnamed, Temporal::TimeDomain domain, ARDOUR::samplecnt_t samplerate=0)
void connect_dependents_to_session(ARDOUR::Session *)
void ask_about_scratch_deletion()
void maximise_editing_space()
WM::ProxyWithConstructor< GlobalPortMatrixWindow > midi_port_matrix
Definition: ardour_ui.h:768
ArdourWidgets::ArdourVSpacer monitor_spacer
Definition: ardour_ui.h:537
void session_dialog(std::string)
Gtk::Label route_latency_value
Definition: ardour_ui.h:560
ArdourWidgets::ArdourButton monitor_mute_button
Definition: ardour_ui.h:543
bool have_disk_speed_dialog_displayed
Definition: ardour_ui.h:819
void sync_blink(bool)
sigc::connection fps_connection
Definition: ardour_ui.h:662
int pending_state_dialog()
PBD::Signal0< void > Escape
Definition: ardour_ui.h:261
bool format_button_press(GdkEventButton *ev)
void toggle_latency_switch()
void tabbable_state_change(ArdourWidgets::Tabbable &)
void restore_editing_space()
sigc::connection _numpad_timeout_connection
Definition: ardour_ui.h:687
int create_meterbridge()
LibraryDownloadDialog * create_library_download_window()
TransportControlUI transport_ctrl
Definition: ardour_ui.h:529
void toggle_mixer_space()
gint configure_timeout()
SessionDialog * _session_dialog
Definition: ardour_ui.h:463
ArdourWidgets::ArdourButton follow_edits_button
Definition: ardour_ui.h:573
void transport_goto_zero()
bool key_event_handler(GdkEventKey *, Gtk::Window *window)
Gtk::Window _main_window
Definition: ardour_ui.h:429
void edit_metadata()
WM::ProxyWithConstructor< SessionOptionEditor > session_option_editor
Definition: ardour_ui.h:760
void reset_route_peak_display(ARDOUR::Route *)
ArdourWidgets::ArdourVSpacer latency_spacer
Definition: ardour_ui.h:536
void audioengine_became_silent()
void set_transport_controllable_state(const XMLNode &)
bool tabbable_visibility_button_press(GdkEventButton *ev, std::string const &tabbable_name)
void toggle_auto_play()
void hide_splash()
void install_actions()
bool _was_dirty
Definition: ardour_ui.h:440
bool _numpad_locate_happening
Definition: ardour_ui.h:684
GtkNotebook * tab_window_root_drop(GtkNotebook *src, GtkWidget *w, gint x, gint y, gpointer user_data)
GUIObjectState * gui_object_state
Definition: ardour_ui.h:308
WM::ProxyWithConstructor< LuaWindow > luawindow
Definition: ardour_ui.h:770
void install_dependent_actions()
void halt_on_xrun_message()
bool editor_meter_peak_button_release(GdkEventButton *)
void midi_panic()
Gtk::Label punch_space
Definition: ardour_ui.h:548
Gtk::MenuItem * jack_reconnect_item
Definition: ardour_ui.h:832
void audioengine_setup()
XMLNode * tearoff_settings(const char *) const
void set_session(ARDOUR::Session *)
void transport_numpad_event(int num)
void startup_done()
void start_clocking()
bool audio_button_press(GdkEventButton *ev)
void export_video(bool range=false)
Gtk::VBox top_packer
Definition: ardour_ui.h:503
bool main_window_delete_event(GdkEventAny *)
void save_ardour_state()
void build_menu_bar()
void save_template_dialog_response(int response, SaveTemplateDialog *d)
ArdourWidgets::ArdourButton _cue_rec_enable
Definition: ardour_ui.h:557
void get_process_buffers()
int sr_mismatch_dialog(ARDOUR::samplecnt_t, ARDOUR::samplecnt_t)
bool xrun_button_release(GdkEventButton *ev)
DuplicateRouteDialog * duplicate_routes_dialog
Definition: ardour_ui.h:919
ArdourWidgets::ArdourButton trigger_page_visibility_button
Definition: ardour_ui.h:930
void toggle_rc_options_window()
Gtk::Label io_latency_value
Definition: ardour_ui.h:562
ArdourWidgets::ArdourButton feedback_alert_button
Definition: ardour_ui.h:578
void meta_session_setup(const std::string &script_path)
void transport_numpad_decimal()
bool get_smart_mode() const
void finish()
void check_announcements()
void drop_process_buffers()
void handle_locations_change(ARDOUR::Location *)
void open_session()
bool bind_lua_action_script(GdkEventButton *, int)
KeyEditor * create_key_editor()
GlobalPortMatrixWindow * create_global_port_matrix(ARDOUR::DataType)
void show_about()
PBD::microseconds_t last_peak_grab
Definition: ardour_ui.h:816
ArdourKeyboard * keyboard
Definition: ardour_ui.h:791
WM::ProxyWithConstructor< BigClockWindow > big_clock_window
Definition: ardour_ui.h:763
void hide_application()
void soloing_changed(bool)
ARDOUR::SystemExec * video_server_process
Definition: ardour_ui.h:785
VisibilityGroup _status_bar_visibility
Definition: ardour_ui.h:876
WM::ProxyWithConstructor< BigTransportWindow > big_transport_window
Definition: ardour_ui.h:764
void setup_toplevel_window(Gtk::Window &, const std::string &name, void *owner)
LuaWindow * create_luawindow()
void toggle_click()
void setup_tooltips()
void session_latency_updated(bool)
bool nsm_first_session_opened
Definition: ardour_ui.h:950
WM::ProxyWithConstructor< LibraryDownloadDialog > library_download_window
Definition: ardour_ui.h:766
ARDOUR::PresentationInfo::order_t translate_order(RouteDialogs::InsertAt)
void snapshot_session(bool switch_to_it)
TriggerPage * trigger_page
Definition: ardour_ui.h:437
void setup_profile()
Gtk::Label sample_rate_label
Definition: ardour_ui.h:644
ArdourWidgets::ArdourButton solo_alert_button
Definition: ardour_ui.h:577
void close_session()
void update_path_label()
void primary_clock_value_changed()
void trigger_slot(int c, int r)
void launch_forums()
ArdourWidgets::ArdourButton punch_out_button
Definition: ardour_ui.h:532
XMLNode & get_transport_controllable_state()
bool click_button_clicked(GdkEventButton *)
void toggle_keep_tearoffs()
void show_library_download_window()
void transport_goto_start()
void toggle_time_master()
ArdourWidgets::ArdourButton recorder_visibility_button
Definition: ardour_ui.h:929
WM::ProxyWithConstructor< AddVideoDialog > add_video_dialog
Definition: ardour_ui.h:761
Gtk::Label punch_label
Definition: ardour_ui.h:545
ShuttleControl shuttle_box
Definition: ardour_ui.h:564
void format_disk_space_label(float)
XMLNode * mixer_settings() const
Gtk::Table editor_meter_table
Definition: ardour_ui.h:585
int ambiguous_file(std::string file, std::vector< std::string > hits)
ARDOUR::Session * the_session()
Definition: ardour_ui.h:233
XMLNode * main_window_settings() const
void show_ui_prefs()
bool have_configure_timeout
Definition: ardour_ui.h:812
AddVideoDialog * create_add_video_dialog()
void toggle_auto_return()
void engine_stopped()
void parameter_changed(std::string)
void toggle_use_monitor_section()
void save_session_at_its_request(std::string)
void toggle_punch()
void import_metadata()
bool process_snapshot_session_prompter(ArdourWidgets::Prompter &prompter, bool switch_to_it)
void show_tabbable(ArdourWidgets::Tabbable *)
void sfsm_response(StartupFSM::Result)
void audition_blink(bool)
bool _mixer_on_top
Definition: ardour_ui.h:441
bool run_startup(bool should_be_new, std::string load_template)
Gtk::Label wall_clock_label
Definition: ardour_ui.h:628
Mixer_UI * the_mixer()
Definition: ardour_ui.h:264
void queue_finish()
void save_state(const std::string &state_name="", bool switch_to_it=false)
void manage_templates()
void transport_play_preroll()
ArdourWidgets::ArdourButton sync_button
Definition: ardour_ui.h:574
bool idle_finish()
void flush_videotimeline_cache(bool localcacheonly=false)
void toggle_follow_edits()
Gtk::Label status_bar_label
Definition: ardour_ui.h:858
WM::ProxyWithConstructor< GlobalPortMatrixWindow > audio_port_matrix
Definition: ardour_ui.h:767
Gtk::Label disk_space_label
Definition: ardour_ui.h:631
LevelMeterHBox * editor_meter
Definition: ardour_ui.h:587
ArdourWidgets::ArdourButton mixer_visibility_button
Definition: ardour_ui.h:927
void toggle_meterbridge()
void show_mixer_prefs()
void disk_speed_dialog_gone(int ignored_response, Gtk::MessageDialog *)
Gtk::Label session_path_label
Definition: ardour_ui.h:650
bool _editor_meter_peaked
Definition: ardour_ui.h:590
std::list< MidiTracer * > _midi_tracer_windows
Definition: ardour_ui.h:513
WM::Proxy< About > about
Definition: ardour_ui.h:745
gint transport_numpad_timeout()
bool idle_ask_about_quit()
Gtkmm2ext::VisibilityTracker * main_window_visibility
Definition: ardour_ui.h:430
RecorderUI * recorder
Definition: ardour_ui.h:436
int32_t do_engine_start()
Gtk::VBox main_vpacker
Definition: ardour_ui.h:431
Gtk::HBox menu_hbox
Definition: ardour_ui.h:623
sigc::connection _engine_dialog_connection
Definition: ardour_ui.h:477
void reset_focus(Gtk::Widget *)
void set_shuttle_fract(double)
void display_message(const char *prefix, gint prefix_len, Glib::RefPtr< Gtk::TextBuffer::Tag >, Glib::RefPtr< Gtk::TextBuffer::Tag >, const char *msg)
void start_session_load(bool create_new)
void update_peak_thread_work()
void toggle_session_monitoring_in()
void launch_website()
Definition: about.h:30
dialog box and controller for video-file export
Definition: nsm.h:25
Representation of the interface of the Editor class.
video-timline controller and display
Definition: xml++.h:114
GdkModifierType
Definition: gdktypes.h:127
GtkImageIconNameData name
Definition: gtkimage.h:6
struct _GtkNotebookPage GtkNotebookPage
Definition: gtknotebook.h:58
PBD::PropertyDescriptor< uint32_t > order
std::string load_template
std::string session_name
Temporal::samplecnt_t samplecnt_t
Temporal::samplepos_t samplepos_t
std::shared_ptr< PluginInfo > PluginInfoPtr
Definition: plugin.h:66
Definition: ardour_ui.h:188
int64_t microseconds_t
Definition: microseconds.h:29
Editing of options which are obtained from and written back to one of the .rc files.