Ardour  9.0-pre0-1786-g726295c4ce
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 #pragma once
34 
35 #include <time.h>
36 
37 /* need _BSD_SOURCE to get timersub macros */
38 
39 #ifdef _BSD_SOURCE
40 #include <sys/time.h>
41 #else
42 #define _BSD_SOURCE
43 #include <sys/time.h>
44 #undef _BSD_SOURCE
45 #endif
46 
47 #include <list>
48 #include <cmath>
49 
50 #include "pbd/xml++.h"
51 #include <ytkmm/box.h>
52 #include <ytkmm/frame.h>
53 #include <ytkmm/label.h>
54 #include <ytkmm/table.h>
55 #include <ytkmm/fixed.h>
56 #include <ytkmm/drawingarea.h>
57 #include <ytkmm/eventbox.h>
58 #include <ytkmm/menu.h>
59 #include <ytkmm/menuitem.h>
60 #include <ytkmm/messagedialog.h>
61 #include <ytkmm/notebook.h>
62 #include <ytkmm/button.h>
63 #include <ytkmm/togglebutton.h>
64 #include <ytkmm/sizegroup.h>
65 #include <ytkmm/treeview.h>
66 #include <ytkmm/menubar.h>
67 #include <ytkmm/textbuffer.h>
68 #include <ytkmm/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 "region_ui_settings.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 "rta_window.h"
122 #include "session_option_editor.h"
123 #include "speaker_dialog.h"
125 #include "virtual_keyboard_window.h"
126 #include "library_download_dialog.h"
127 #else
128 class About;
129 class AddRouteDialog;
130 class AddVideoDialog;
131 class BigClockWindow;
132 class BigTransportWindow;
133 class BundleManager;
134 class EngineControl;
135 class ExportVideoDialog;
136 class KeyEditor;
137 class LocationUIWindow;
138 class LuaScriptManager;
139 class LuaWindow;
140 class RCOptionEditor;
141 class RouteParams_UI;
142 class SessionOptionEditor;
143 class SpeakerDialog;
145 class IdleOMeter;
146 class IOPluginWindow;
147 class PluginDSPLoadWindow;
148 class PluginManagerUI;
149 class RTAWindow;
150 class DspStatisticsWindow;
154 #endif
155 
156 class VideoTimeLine;
157 class ArdourKeyboard;
158 class AudioClock;
159 class ConnectionEditor;
161 class MainClock;
162 class Mixer_UI;
163 class PublicEditor;
164 class RecorderUI;
165 class TriggerPage;
166 class SaveAsDialog;
167 class SaveTemplateDialog;
168 class SessionDialog;
169 class SessionOptionEditorWindow;
170 class Splash;
171 class TimeInfoBox;
172 class ApplicationBar;
173 class Meterbridge;
174 class LuaWindow;
175 class MidiTracer;
176 class PianorollWindow;
177 class NSM_Client;
178 class LevelMeterHBox;
179 class GUIObjectState;
180 class BasicUI;
181 
182 namespace ARDOUR {
183  class ControlProtocolInfo;
184  class IO;
185  class Port;
186  class Route;
187  class RouteGroup;
188  class Location;
189  class ProcessThread;
190 }
191 
192 namespace Gtk {
193  class ProgressBar;
194 }
195 
196 namespace ArdourWidgets {
197  class Prompter;
198  class Tabbable;
199 }
200 
201 #define MAX_LUA_ACTION_SCRIPTS 32
202 
204 {
205 public:
206  ARDOUR_UI (int *argcp, char **argvp[], const char* localedir);
208 
209  bool run_startup (bool should_be_new, std::string load_template);
210 
211  void hide_splash ();
212 
213  void launch_chat ();
216  void launch_tracker ();
218  void launch_website ();
220  void launch_forums ();
222  void show_about ();
223  void hide_about ();
224 
225  void load_from_application_api (const std::string& path);
226  void finish();
227 
229  int load_session (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
231  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);
232  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);
233 
234  bool session_is_new() const { return _session_is_new; }
235 
237 
238  bool get_smart_mode () const;
239 
242  bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name);
243 
249  };
250 
253 
254  void start_session_load (bool create_new);
256  void build_session_from_dialog (SessionDialog&, std::string const& session_name, std::string const& session_path, std::string const& session_template, Temporal::TimeDomain domain);
257  bool ask_about_loading_existing_session (const std::string& session_path);
259 
260  bool loading_session () const { return _loading_session; }
261 
263  int unload_session (bool hide_stuff = false, bool force_unload = false);
265 
266  int save_state_canfail (std::string state_name = "", bool switch_to_it = false);
267  void save_state (const std::string & state_name = "", bool switch_to_it = false);
268 
269  int new_session_from_aaf (std::string const&, std::string const&, std::string&, std::string&);
270 
271  static ARDOUR_UI *instance () { return theArdourUI; }
272 
273  /* signal emitted when all windows (editor, mixer/monitor, recorder and cues)
274  have published their actions to the ActionManager
275  */
277 
278  /* signal emitted when escape key is pressed. All UI components that
279  need to respond to Escape in some way (e.g. break drag, clear
280  selection, etc) should connect to and handle this.
281  */
283 
285  Mixer_UI* the_mixer() { return mixer; }
286 
288 
296 
298 
304  static sigc::signal<void, Temporal::timepos_t> Clock;
305  static unsigned int clock_signal_interval ();
306 
307  static void close_all_dialogs () { CloseAllDialogs(); }
308  static sigc::signal<void> CloseAllDialogs;
309 
318  XMLNode* tearoff_settings (const char*) const;
319 
320  void trigger_slot (int c, int r);
321  void trigger_cue_row (int r);
322  void stop_all_cues (bool immediately);
323  void stop_cues (int c, bool immediately);
324 
327 
331 
332  Glib::RefPtr<Gtk::SizeGroup> button_height_size_group;
333 
335 
336  MainClock* primary_clock; //this clock is the canonical PrimaryClock, whose mode is reflected to all other clocks with PrimaryClock disposition.
337  MainClock* secondary_clock; //this clock is the canonical SecondaryClock, whose mode is reflected to all other clocks with PrimaryClock disposition
339 
340  void focus_on_clock ();
341 
343 
345 
347 
348  void add_route ();
350 
353 
355 
356  void add_video (Gtk::Window* float_window);
357  void remove_video ();
358  void start_video_server_menu (Gtk::Window* float_window);
359  bool start_video_server (Gtk::Window* float_window, bool popup_msg);
360  void stop_video_server (bool ask_confirm=false);
361  void flush_videotimeline_cache (bool localcacheonly=false);
362  void export_video (bool range = false);
363 
365  uint32_t, std::string const &, bool, ARDOUR::PresentationInfo::order_t order, bool trigger_visibility);
366 
367  void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool,
369  ARDOUR::PresentationInfo::order_t order, bool trigger_visibility);
370 
371  void session_add_foldback_bus (int32_t, uint32_t, std::string const &);
372 
374 
376  void post_engine ();
377 
379 
382 
383  void show_ui_prefs ();
386 
388 
389  void setup_profile ();
390  void setup_tooltips ();
391 
392  void set_shuttle_fract (double);
393 
396 
398 
399  const std::string& announce_string() const { return _announce_string; }
400 
402 
405 
406  void setup_toplevel_window (Gtk::Window&, const std::string& name, void* owner);
407 
408  /* called from a static C function */
409 
411  GtkWidget* w,
412  gint x,
413  gint y,
414  gpointer user_data);
415 
418 
420 
421  std::map<std::string, std::string> route_setup_info (const std::string& script_path);
422 
424 
426 
427 protected:
428  friend class PublicEditor;
429 
433  void monitor_mono ();
434 
437  void toggle_punch ();
447  void toggle_click ();
452 
453 private:
454 
468 
470 
478 
480 
482 
486  void setup_clock ();
487 
490 
492 
493  int starting ();
494  int nsm_init ();
495  void startup_done ();
497 
498  int ask_about_saving_session (const std::vector<std::string>& actions);
499 
500  void audio_midi_setup_reconfigure_done (int response, std::string path, std::string snapshot, std::string mix_template);
501  int load_session_stage_two (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
502  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);
503  sigc::connection _engine_dialog_connection;
504 
505  void save_session_at_its_request (std::string);
506  /* periodic safety backup, to be precise */
509  sigc::connection _autosave_connection;
510 
512  void update_title ();
513 
515  int32_t do_engine_start ();
516 
517  void engine_halted (const char* reason, bool free_reason);
518  void engine_stopped ();
519  void engine_running (uint32_t cnt);
520 
521  void use_config ();
522 
523  void about_signal_response(int response);
524 
526 
527  sigc::connection clock_signal_connection;
528  void update_clocks ();
529  void start_clocking ();
530  void stop_clocking ();
531 
534 
535  std::list<MidiTracer*> _midi_tracer_windows;
536 
537  /* Transport Control */
538 
540 
542 
545 
549 
551 
552  void blink_handler (bool);
553  sigc::connection blink_connection;
554 
555  void cancel_solo ();
556  void error_blink (bool);
557 
559 
561  /* menu bar and associated stuff */
562 
566 
568  void build_menu_bar ();
569 
572 
576 
579 
583 
586 
589 
592 
594  void update_format ();
595 
598 
600 
601  void every_second ();
603 
604  sigc::connection second_connection;
605  sigc::connection point_one_second_connection;
606  sigc::connection fps_connection;
607 
609 
610  void open_session ();
613  void save_template ();
615 
616  void meta_session_setup (const std::string& script_path);
617  void meta_route_setup (const std::string& script_path);
618 
619  void edit_metadata ();
621 
623 
624  //stuff for ProTools-style numpad
625  void transport_numpad_event (int num);
630  sigc::connection _numpad_timeout_connection;
631 
637  void transport_stop ();
638  void transport_record (bool roll);
639  void transport_roll ();
646  void transport_ffwd_rewind (bool fwd);
647  void transport_loop ();
648  void toggle_roll (bool with_abort, bool roll_out_of_bounded_mode);
649  void spacebar_action (bool with_abort, bool roll_out_of_bounded_mode);
651 
657 
659 
661 
662  bool process_snapshot_session_prompter (ArdourWidgets::Prompter& prompter, bool switch_to_it);
663  void snapshot_session (bool switch_to_it);
664 
665  void quick_snapshot_session (bool switch_to_it); //does not prompt for name, just makes a timestamped file
666 
668 
669  bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar);
672  void rename_session (bool for_unnamed);
673 
674  int create_mixer ();
680 
682 
683  /* Dialogs that can be created via new<T> */
684 
687 
702 
703  /* Windows/Dialogs that require a creator method */
704 
717 
718  /* creator methods */
719 
731 
733 
735 
736  /* Keyboard Handling */
737 
739 
740  /* Keymap handling */
741 
744 
745  void toggle_record_enable (uint16_t);
746 
749 
750  /* cleanup */
751 
753 
754  void display_cleanup_results (ARDOUR::CleanupReport const& rep, const gchar* list_title, const bool msg_delete);
755  void cleanup ();
757  void flush_trash ();
758 
762 
765 
767  void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*);
772 
773  void session_format_mismatch (std::string, std::string);
774 
775  void session_dialog (std::string);
779 
783 
784  Glib::RefPtr<Gtk::ActionGroup> common_actions;
785 
787 
788  void toggle_use_mmc ();
792 
793  void toggle_use_osc ();
794 
795  void parameter_changed (std::string);
796  void session_parameter_changed (std::string);
797 
798  bool first_idle ();
799 
801 
803 
804  void display_message (const char* prefix, gint prefix_len, Glib::RefPtr<Gtk::TextBuffer::Tag>, Glib::RefPtr<Gtk::TextBuffer::Tag>, const char* msg);
807 
811 
812  /* these are used only in response to a platform-specific "ShouldQuit" signal */
813  bool idle_finish ();
814  void queue_finish ();
816 
817  int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type);
818  int ambiguous_file (std::string file, std::vector<std::string> hits);
819 
821 
823 
828 
831 
833  void midi_panic ();
834 
836 
838 
845 
846  std::string _announce_string;
848 
850 
852 
854 
855  void tabs_switch (GtkNotebookPage*, guint page_number);
856  void tabs_page_added (Gtk::Widget*, guint);
863 
865  bool try_gtk_accel_binding (GtkWindow* win, GdkEventKey* ev, bool translate, GdkModifierType modifier);
866 
869 
872 
873  void escape ();
875 
878 
880 
882 };
883 
ARDOUR::Session * _session
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()
int create_editor()
void focus_on_clock()
void show_realtime_analyzer()
XMLNode * preferences_settings() const
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:230
static sigc::signal< void, Temporal::timepos_t > Clock
Definition: ardour_ui.h:304
void monitor_dim_all()
void session_dialog_response_handler(int response, SessionDialog *session_dialog)
SessionOptionEditor * create_session_option_editor()
void new_midi_tracer_window()
PBD::ScopedConnectionList clock_state_connection
Definition: ardour_ui.h:881
void sr_mismatch_message(ARDOUR::samplecnt_t, ARDOUR::samplecnt_t)
RCOptionEditor * rc_option_editor
Definition: ardour_ui.h:685
void stop_video_server(bool ask_confirm=false)
VideoTimeLine * video_timeline
Definition: ardour_ui.h:342
void setup_clock()
WM::Proxy< IdleOMeter > idleometer
Definition: ardour_ui.h:696
RCOptionEditor * get_rc_option_editor()
Definition: ardour_ui.h:240
void transport_goto_nth_marker(int nth)
Mixer_UI * mixer
Definition: ardour_ui.h:461
bool first_idle()
void every_point_one_seconds()
MainClock * primary_clock
Definition: ardour_ui.h:336
void set_punch_sensitivity()
WM::Proxy< EngineControl > audio_midi_setup
Definition: ardour_ui.h:693
BigTransportWindow * create_big_transport_window()
void add_routes_thread()
void stop_clocking()
void flush_trash()
Gtk::Label timecode_format_label
Definition: ardour_ui.h:577
void launch_tutorial()
void tabs_switch(GtkNotebookPage *, guint page_number)
ArdourWidgets::ArdourButton error_alert_button
Definition: ardour_ui.h:550
void open_recent_session()
PBD::microseconds_t last_configure_time
Definition: ardour_ui.h:760
bool try_gtk_accel_binding(GtkWindow *win, GdkEventKey *ev, bool translate, GdkModifierType modifier)
void attach_tabbable(ArdourWidgets::Tabbable *)
void monitor_mono()
bool _loading_session
Definition: ardour_ui.h:879
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:691
MainClock * secondary_clock
Definition: ardour_ui.h:337
void latency_switch_changed()
Gtk::Menu * _shared_popup_menu
Definition: ardour_ui.h:469
BasicUI * _basic_ui
Definition: ardour_ui.h:471
void disk_overrun_handler()
Gtk::Label format_label
Definition: ardour_ui.h:593
void transport_goto_wallclock()
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:563
void update_cpu_load()
bool ignore_dual_punch
Definition: ardour_ui.h:439
gint update_wall_clock()
WM::Proxy< TransportMastersWindow > transport_masters_window
Definition: ardour_ui.h:701
XMLNode * trigger_page_settings() const
void setup_action_tooltips()
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:695
void every_second()
Gtk::MenuItem * cleanup_item
Definition: ardour_ui.h:752
void use_config()
void record_state_changed()
sigc::connection blink_connection
Definition: ardour_ui.h:553
void stop_cues(int c, bool immediately)
bool error_alert_press(GdkEventButton *)
Gtk::Notebook _tabs
Definition: ardour_ui.h:459
ArdourLogLevel _log_not_acknowledged
Definition: ardour_ui.h:835
int copy_demo_sessions()
WM::Proxy< AddRouteDialog > add_route_dialog
Definition: ardour_ui.h:689
void launch_tracker()
int new_session_from_aaf(std::string const &, std::string const &, std::string &, std::string &)
void set_flat_buttons()
void detach_tabbable(ArdourWidgets::Tabbable *)
void show_plugin_manager()
int nsm_init()
void error_blink(bool)
void toggle_editor_and_mixer()
void tabs_page_added(Gtk::Widget *, guint)
void transport_forward()
Gtk::Label snapshot_name_label
Definition: ardour_ui.h:599
bool status_bar_button_press(GdkEventButton *)
void hide_tabbable(ArdourWidgets::Tabbable *)
VirtualKeyboardWindow * create_virtual_keyboard_window()
PBD::Signal< void()> Escape
Definition: ardour_ui.h:282
void setup_transport()
BundleManager * create_bundle_manager()
void disk_underrun_handler()
void save_template()
void transport_ffwd_rewind(bool fwd)
@ LogLevelNone
Definition: ardour_ui.h:245
@ LogLevelError
Definition: ardour_ui.h:248
@ LogLevelWarning
Definition: ardour_ui.h:247
@ LogLevelInfo
Definition: ardour_ui.h:246
PBD::ScopedConnection editor_meter_connection
Definition: ardour_ui.h:810
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)
static void close_all_dialogs()
Definition: ardour_ui.h:307
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:404
void launch_chat()
void fontconfig_dialog()
sigc::connection second_connection
Definition: ardour_ui.h:604
static sigc::signal< void > CloseAllDialogs
Definition: ardour_ui.h:308
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:710
void spacebar_action(bool with_abort, bool roll_out_of_bounded_mode)
ArdourWidgets::ArdourButton editor_visibility_button
Definition: ardour_ui.h:858
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:764
Glib::RefPtr< Gtk::SizeGroup > button_height_size_group
Definition: ardour_ui.h:332
Gtk::HBox status_bar_hpacker
Definition: ardour_ui.h:458
void launch_howto_report()
int _pending_locate_num
Definition: ardour_ui.h:628
Gtk::HBox rc_option_editor_placeholder
Definition: ardour_ui.h:686
PublicEditor * editor
Definition: ardour_ui.h:460
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:697
void transport_rewind()
WM::Proxy< DspStatisticsWindow > dsp_statistics_window
Definition: ardour_ui.h:700
int load_session_from_startup_fsm()
void load_from_application_api(const std::string &path)
WM::Proxy< SpeakerDialog > speaker_config_window
Definition: ardour_ui.h:688
static ARDOUR_UI * theArdourUI
Definition: ardour_ui.h:488
void tabs_page_removed(Gtk::Widget *, guint)
StartupFSM * startup_fsm
Definition: ardour_ui.h:491
void start_video_server_menu(Gtk::Window *float_window)
void launch_subscribe()
NSM_Client * nsm
Definition: ardour_ui.h:465
int setup_windows()
gboolean configure_handler(GdkEventConfigure *conf)
void toggle_send_mmc()
void map_transport_state()
void start_duplicate_routes()
Gtk::Menu * shared_popup_menu()
void add_route_dialog_response(int)
void close_current_dialog()
void reset_main_clocks()
void apply_window_settings(bool)
void toggle_editing_space()
void update_title()
void cancel_solo()
void transport_play_selection()
Gtk::EventBox menu_bar_base
Definition: ardour_ui.h:564
bool key_press_focus_accelerator_handler(Gtk::Window &window, GdkEventKey *ev, Gtkmm2ext::BindingSet *)
bool session_is_new() const
Definition: ardour_ui.h:234
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:509
std::string _announce_string
Definition: ardour_ui.h:846
bool have_mmcss_error_dialog_displayed
Definition: ardour_ui.h:770
void session_format_mismatch(std::string, std::string)
void update_format()
AudioClock * big_clock
Definition: ardour_ui.h:338
void remove_video()
ARDOUR::ProcessThread * _process_thread
Definition: ardour_ui.h:827
void post_engine()
PublicEditor & the_editor()
Definition: ardour_ui.h:284
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 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:832
void archive_session()
int create_recorder()
void show_lua_window()
bool tabbed_window_state_event_handler(GdkEventWindowState *, void *object)
void mmcss_error_handler()
const std::string & announce_string() const
Definition: ardour_ui.h:399
Gtk::Label pdc_info_label
Definition: ardour_ui.h:581
guint32 last_key_press_time
Definition: ardour_ui.h:660
void toggle_use_osc()
void about_signal_response(int response)
std::map< std::string, std::string > route_setup_info(const std::string &script_path)
XMLNode * editor_settings() const
BigClockWindow * create_big_clock_window()
bool loading_session() const
Definition: ardour_ui.h:260
PBD::ScopedConnectionList forever_connections
Definition: ardour_ui.h:808
void toggle_video_sync()
void transport_roll()
void add_routes_part_two()
WM::Proxy< RouteParams_UI > route_params
Definition: ardour_ui.h:692
void update_autosave()
void transport_rec_preroll()
ArdourWidgets::ArdourButton prefs_visibility_button
Definition: ardour_ui.h:860
bool _session_is_new
Definition: ardour_ui.h:652
Gtk::MenuItem * jack_disconnect_item
Definition: ardour_ui.h:780
void step_up_through_tabs()
WM::ProxyWithConstructor< BundleManager > bundle_manager
Definition: ardour_ui.h:707
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:271
sigc::connection point_one_second_connection
Definition: ardour_ui.h:605
void toggle_click_on_rec()
XMLNode * keyboard_settings() const
WM::ProxyWithConstructor< KeyEditor > key_editor
Definition: ardour_ui.h:714
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 &)
void xrun_handler(samplepos_t)
void check_memory_locking()
void update_disk_space()
void transport_rec_count_in()
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:587
bool timecode_button_press(GdkEventButton *ev)
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:681
WM::Proxy< ExportVideoDialog > export_video_dialog
Definition: ardour_ui.h:694
gint autosave_session()
void attach_to_engine()
void toggle_use_mmc()
void monitor_cut_all()
void toggle_external_sync()
void hide_about()
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:584
Gtk::Menu * jack_bufsize_menu
Definition: ardour_ui.h:782
WM::Proxy< PluginManagerUI > plugin_manager_ui
Definition: ardour_ui.h:698
void show_plugin_prefs()
PBD::ScopedConnection halt_connection
Definition: ardour_ui.h:809
sigc::connection clock_signal_connection
Definition: ardour_ui.h:527
void transport_loop()
uint32_t rec_enabled_streams
Definition: ardour_ui.h:747
void grab_focus_after_dialog()
void add_route()
Gtk::Notebook & tabs()
SaveAsDialog * save_as_dialog
Definition: ardour_ui.h:667
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:464
void toggle_punch_in()
void engine_halted(const char *reason, bool free_reason)
Glib::RefPtr< Gtk::ActionGroup > common_actions
Definition: ardour_ui.h:784
void save_session_as()
WM::Proxy< PluginDSPLoadWindow > plugin_dsp_load_window
Definition: ardour_ui.h:699
RegionUISettingsManager region_ui_settings_manager
Definition: ardour_ui.h:425
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:713
void session_dialog(std::string)
bool have_disk_speed_dialog_displayed
Definition: ardour_ui.h:766
sigc::connection fps_connection
Definition: ardour_ui.h:606
int pending_state_dialog()
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:630
int create_meterbridge()
LibraryDownloadDialog * create_library_download_window()
void toggle_mixer_space()
gint configure_timeout()
SessionDialog * _session_dialog
Definition: ardour_ui.h:489
void transport_goto_zero()
bool key_event_handler(GdkEventKey *, Gtk::Window *window)
Gtk::Window _main_window
Definition: ardour_ui.h:455
void edit_metadata()
WM::ProxyWithConstructor< SessionOptionEditor > session_option_editor
Definition: ardour_ui.h:705
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:466
bool _numpad_locate_happening
Definition: ardour_ui.h:627
GtkNotebook * tab_window_root_drop(GtkNotebook *src, GtkWidget *w, gint x, gint y, gpointer user_data)
GUIObjectState * gui_object_state
Definition: ardour_ui.h:334
WM::ProxyWithConstructor< LuaWindow > luawindow
Definition: ardour_ui.h:715
void install_dependent_actions()
void halt_on_xrun_message()
void midi_panic()
Gtk::MenuItem * jack_reconnect_item
Definition: ardour_ui.h:781
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)
static unsigned int clock_signal_interval()
void export_video(bool range=false)
Gtk::VBox top_packer
Definition: ardour_ui.h:525
bool main_window_delete_event(GdkEventAny *)
void save_ardour_state()
void build_menu_bar()
void save_template_dialog_response(int response, SaveTemplateDialog *d)
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:851
ArdourWidgets::ArdourButton trigger_page_visibility_button
Definition: ardour_ui.h:862
void toggle_rc_options_window()
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()
PBD::Signal< void()> ActionsReady
Definition: ardour_ui.h:276
KeyEditor * create_key_editor()
GlobalPortMatrixWindow * create_global_port_matrix(ARDOUR::DataType)
void show_about()
PBD::microseconds_t last_peak_grab
Definition: ardour_ui.h:763
ArdourKeyboard * keyboard
Definition: ardour_ui.h:738
WM::ProxyWithConstructor< BigClockWindow > big_clock_window
Definition: ardour_ui.h:708
void hide_application()
ARDOUR::SystemExec * video_server_process
Definition: ardour_ui.h:732
VisibilityGroup _status_bar_visibility
Definition: ardour_ui.h:822
WM::ProxyWithConstructor< BigTransportWindow > big_transport_window
Definition: ardour_ui.h:709
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:877
WM::ProxyWithConstructor< LibraryDownloadDialog > library_download_window
Definition: ardour_ui.h:711
ARDOUR::PresentationInfo::order_t translate_order(RouteDialogs::InsertAt)
void snapshot_session(bool switch_to_it)
TriggerPage * trigger_page
Definition: ardour_ui.h:463
void setup_profile()
Gtk::Label sample_rate_label
Definition: ardour_ui.h:590
void close_session()
void update_path_label()
WM::ProxyWithConstructor< RTAWindow > rtawindow
Definition: ardour_ui.h:716
void trigger_slot(int c, int r)
void launch_forums()
XMLNode & get_transport_controllable_state()
ArdourLogLevel log_not_acknowledged() const
Definition: ardour_ui.h:251
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:861
WM::ProxyWithConstructor< AddVideoDialog > add_video_dialog
Definition: ardour_ui.h:706
void format_disk_space_label(float)
XMLNode * mixer_settings() const
int ambiguous_file(std::string file, std::vector< std::string > hits)
ARDOUR::Session * the_session()
Definition: ardour_ui.h:236
XMLNode * main_window_settings() const
void show_ui_prefs()
bool have_configure_timeout
Definition: ardour_ui.h:759
AddVideoDialog * create_add_video_dialog()
Gtk::Table tabbables_table
Definition: ardour_ui.h:539
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)
bool _mixer_on_top
Definition: ardour_ui.h:467
bool run_startup(bool should_be_new, std::string load_template)
Gtk::Label wall_clock_label
Definition: ardour_ui.h:570
Mixer_UI * the_mixer()
Definition: ardour_ui.h:285
void queue_finish()
RTAWindow * create_rtawindow()
void save_state(const std::string &state_name="", bool switch_to_it=false)
void manage_templates()
void transport_play_preroll()
bool idle_finish()
void flush_videotimeline_cache(bool localcacheonly=false)
void toggle_follow_edits()
Gtk::Label status_bar_label
Definition: ardour_ui.h:805
WM::ProxyWithConstructor< GlobalPortMatrixWindow > audio_port_matrix
Definition: ardour_ui.h:712
Gtk::Label disk_space_label
Definition: ardour_ui.h:573
ArdourWidgets::ArdourButton mixer_visibility_button
Definition: ardour_ui.h:859
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:596
std::list< MidiTracer * > _midi_tracer_windows
Definition: ardour_ui.h:535
WM::Proxy< About > about
Definition: ardour_ui.h:690
gint transport_numpad_timeout()
bool idle_ask_about_quit()
Gtkmm2ext::VisibilityTracker * main_window_visibility
Definition: ardour_ui.h:456
RecorderUI * recorder
Definition: ardour_ui.h:462
int32_t do_engine_start()
Gtk::VBox main_vpacker
Definition: ardour_ui.h:457
Gtk::Label latency_info_label
Definition: ardour_ui.h:580
Gtk::HBox menu_hbox
Definition: ardour_ui.h:565
sigc::connection _engine_dialog_connection
Definition: ardour_ui.h:503
void set_log_not_acknowledged(const ArdourLogLevel lvl)
Definition: ardour_ui.h:252
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:29
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:65
Definition: ardour_ui.h:192
std::vector< Bindings * > BindingSet
Definition: bindings.h:224
int64_t microseconds_t
Definition: microseconds.h:28
Editing of options which are obtained from and written back to one of the .rc files.