Ardour  9.2-129-gdf5e1050bd
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 #include <list>
38 #include <cmath>
39 
40 #include "pbd/xml++.h"
41 #include <ytkmm/box.h>
42 #include <ytkmm/frame.h>
43 #include <ytkmm/label.h>
44 #include <ytkmm/table.h>
45 #include <ytkmm/fixed.h>
46 #include <ytkmm/drawingarea.h>
47 #include <ytkmm/eventbox.h>
48 #include <ytkmm/menu.h>
49 #include <ytkmm/menuitem.h>
50 #include <ytkmm/messagedialog.h>
51 #include <ytkmm/notebook.h>
52 #include <ytkmm/button.h>
53 #include <ytkmm/togglebutton.h>
54 #include <ytkmm/sizegroup.h>
55 #include <ytkmm/treeview.h>
56 #include <ytkmm/menubar.h>
57 #include <ytkmm/textbuffer.h>
58 #include <ytkmm/adjustment.h>
59 
60 #include "gtkmm2ext/gtk_ui.h"
61 #include "gtkmm2ext/bindings.h"
63 
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"
70 
71 #include "video_timeline.h"
72 
73 #include "widgets/ardour_button.h"
75 #include "widgets/ardour_spacer.h"
76 
77 #include "add_route_dialog.h"
78 #include "ardour_dialog.h"
79 #include "ardour_window.h"
80 #include "editing.h"
81 #include "enums.h"
82 #include "region_ui_settings.h"
83 #include "shuttle_control.h"
84 #include "startup_fsm.h"
85 #include "transport_control.h"
86 #include "transport_control_ui.h"
87 #include "visibility_group.h"
88 #include "window_manager.h"
89 
90 #ifdef COMPILER_MSVC
91 #include "about.h"
92 #include "add_video_dialog.h"
93 #include "big_clock_window.h"
94 #include "big_transport_window.h"
95 #include "bundle_manager.h"
96 #include "dsp_stats_window.h"
97 #include "engine_dialog.h"
98 #include "export_video_dialog.h"
99 #include "global_port_matrix.h"
100 #include "idleometer.h"
101 #include "io_plugin_window.h"
102 #include "keyeditor.h"
103 #include "location_ui.h"
104 #include "lua_script_manager.h"
105 #include "luawindow.h"
106 #include "plugin_dspload_window.h"
107 #include "plugin_manager_ui.h"
108 #include "rc_option_editor.h"
109 #include "route_dialogs.h"
110 #include "route_params_ui.h"
111 #include "rta_window.h"
112 #include "session_option_editor.h"
113 #include "speaker_dialog.h"
115 #include "virtual_keyboard_window.h"
116 #include "library_download_dialog.h"
117 #else
118 class About;
119 class AddRouteDialog;
120 class AddVideoDialog;
121 class BigClockWindow;
122 class BigTransportWindow;
123 class BundleManager;
124 class EngineControl;
125 class ExportVideoDialog;
126 class KeyEditor;
127 class LocationUIWindow;
128 class LuaScriptManager;
129 class LuaWindow;
130 class RCOptionEditor;
131 class RouteParams_UI;
132 class SessionOptionEditor;
133 class SpeakerDialog;
135 class IdleOMeter;
136 class IOPluginWindow;
137 class PluginDSPLoadWindow;
138 class PluginManagerUI;
139 class RTAWindow;
140 class DspStatisticsWindow;
144 #endif
145 
146 class VideoTimeLine;
147 class ArdourKeyboard;
148 class AudioClock;
149 class ConnectionEditor;
151 class MainClock;
152 class Mixer_UI;
153 class PublicEditor;
154 class RecorderUI;
155 class TriggerPage;
156 class SaveAsDialog;
157 class SaveTemplateDialog;
158 class SessionDialog;
159 class SessionOptionEditorWindow;
160 class Splash;
161 class TimeInfoBox;
162 class ApplicationBar;
163 class Meterbridge;
164 class LuaWindow;
165 class MidiTracer;
166 class PianorollWindow;
167 class NSM_Client;
168 class LevelMeterHBox;
169 class GUIObjectState;
170 class BasicUI;
171 
172 namespace ARDOUR {
173  class ControlProtocolInfo;
174  class IO;
175  class Port;
176  class Route;
177  class RouteGroup;
178  class Location;
179  class ProcessThread;
180 }
181 
182 namespace Gtk {
183  class ProgressBar;
184 }
185 
186 namespace ArdourWidgets {
187  class Prompter;
188  class Tabbable;
189 }
190 
191 #define MAX_LUA_ACTION_SCRIPTS 32
192 
194 {
195 public:
196  ARDOUR_UI (int *argcp, char **argvp[], const char* localedir);
198 
199  bool run_startup (bool should_be_new, std::string load_template);
200 
201  void hide_splash ();
202 
203  void launch_chat ();
206  void launch_tracker ();
208  void launch_website ();
210  void launch_forums ();
212  void show_about ();
213  void hide_about ();
214 
215  void load_from_application_api (const std::string& path);
216  void finish();
217 
219  int load_session (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
221  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);
222  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);
223 
224  bool session_is_new() const { return _session_is_new; }
225 
227 
228  bool get_smart_mode () const;
229 
232  bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name);
233 
239  };
240 
243 
244  void start_session_load (bool create_new);
246  void build_session_from_dialog (SessionDialog&, std::string const& session_name, std::string const& session_path, std::string const& session_template, Temporal::TimeDomain domain);
247  bool ask_about_loading_existing_session (const std::string& session_path);
249 
250  bool loading_session () const { return _loading_session; }
251 
253  int unload_session (bool hide_stuff = false, bool force_unload = false);
255 
256  int save_state_canfail (std::string state_name = "", bool switch_to_it = false);
257  void save_state (const std::string & state_name = "", bool switch_to_it = false);
258 
259  int new_session_from_aaf (std::string const&, std::string const&, std::string&, std::string&);
260 
261  static ARDOUR_UI *instance () { return theArdourUI; }
262 
263  /* signal emitted when all windows (editor, mixer/monitor, recorder and cues)
264  have published their actions to the ActionManager
265  */
267 
268  /* signal emitted when escape key is pressed. All UI components that
269  need to respond to Escape in some way (e.g. break drag, clear
270  selection, etc) should connect to and handle this.
271  */
273 
275  Mixer_UI* the_mixer() { return mixer; }
276 
278 
286 
288 
294  static sigc::signal<void, Temporal::timepos_t> Clock;
295  static unsigned int clock_signal_interval ();
296 
297  static void close_all_dialogs () { CloseAllDialogs(); }
298  static sigc::signal<void> CloseAllDialogs;
299 
308  XMLNode* tearoff_settings (const char*) const;
309 
310  void trigger_slot (int c, int r);
311  void trigger_cue_row (int r);
312  void stop_all_cues (bool immediately);
313  void stop_cues (int c, bool immediately);
314 
317 
321 
322  Glib::RefPtr<Gtk::SizeGroup> button_height_size_group;
323 
325 
326  MainClock* primary_clock; //this clock is the canonical PrimaryClock, whose mode is reflected to all other clocks with PrimaryClock disposition.
327  MainClock* secondary_clock; //this clock is the canonical SecondaryClock, whose mode is reflected to all other clocks with PrimaryClock disposition
329 
330  void focus_on_clock ();
331 
333 
335 
337 
338  void add_route ();
340 
343 
345 
346  void add_video (Gtk::Window* float_window);
347  void remove_video ();
348  void start_video_server_menu (Gtk::Window* float_window);
349  bool start_video_server (Gtk::Window* float_window, bool popup_msg);
350  void stop_video_server (bool ask_confirm=false);
351  void flush_videotimeline_cache (bool localcacheonly=false);
352  void export_video (bool range = false);
353 
354  void session_add_audio_route (bool, int32_t, int32_t, ARDOUR::TrackMode, std::shared_ptr<ARDOUR::RouteGroup>,
355  uint32_t, std::string const &, bool, ARDOUR::PresentationInfo::order_t order, bool trigger_visibility);
356 
357  void session_add_midi_route (bool, std::shared_ptr<ARDOUR::RouteGroup>, uint32_t, std::string const &, bool,
359  ARDOUR::PresentationInfo::order_t order, bool trigger_visibility);
360 
361  void session_add_foldback_bus (int32_t, uint32_t, std::string const &);
362 
364 
366  void post_engine ();
367 
369 
372 
373  void show_ui_prefs ();
376 
378 
379  void setup_profile ();
380  void setup_tooltips ();
381 
382  void set_shuttle_fract (double);
383 
386 
388 
389  const std::string& announce_string() const { return _announce_string; }
390 
392 
395 
396  void setup_toplevel_window (Gtk::Window&, const std::string& name, void* owner);
397 
398  /* called from a static C function */
399 
401  GtkWidget* w,
402  gint x,
403  gint y,
404  gpointer user_data);
405 
408 
410 
411  std::map<std::string, std::string> route_setup_info (const std::string& script_path);
412 
414 
416 
417 protected:
418  friend class PublicEditor;
419 
423  void monitor_mono ();
424 
434 
444 
445 
446 private:
447 
461 
463 
471 
473 
475 
479  void setup_clock ();
480 
483 
485 
486  int starting ();
487  int nsm_init ();
488  void startup_done ();
490 
491  int ask_about_saving_session (const std::vector<std::string>& actions);
492 
493  void audio_midi_setup_reconfigure_done (int response, std::string path, std::string snapshot, std::string mix_template);
494  int load_session_stage_two (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
495  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);
496  sigc::connection _engine_dialog_connection;
497 
498  void save_session_at_its_request (std::string);
499  /* periodic safety backup, to be precise */
502  sigc::connection _autosave_connection;
503 
505  void update_title ();
506 
508  int32_t do_engine_start ();
509 
510  void engine_halted (const char* reason, bool free_reason);
511  void engine_stopped ();
512  void engine_running (uint32_t cnt);
513 
514  void use_config ();
515 
516  void about_signal_response(int response);
517 
519 
520  sigc::connection clock_signal_connection;
521  void update_clocks ();
522  void start_clocking ();
523  void stop_clocking ();
524 
527 
528  std::list<MidiTracer*> _midi_tracer_windows;
529 
530  /* Transport Control */
531 
533 
536 
540 
542 
543  void blink_handler (bool);
544  sigc::connection blink_connection;
545 
546  void cancel_solo ();
547  void error_blink (bool);
548 
550 
552  /* menu bar and associated stuff */
553 
557 
559  void build_menu_bar ();
560 
563 
567 
570 
574 
577 
580 
583 
585  void update_format ();
586 
589 
591 
592  void every_second ();
594 
595  sigc::connection second_connection;
596  sigc::connection point_one_second_connection;
597  sigc::connection fps_connection;
598 
600 
601  void open_session ();
604  void save_template ();
606 
607  void meta_session_setup (const std::string& script_path);
608  void meta_route_setup (const std::string& script_path);
609 
610  void edit_metadata ();
612 
614 
615  //stuff for ProTools-style numpad
616  void transport_numpad_event (int num);
621  sigc::connection _numpad_timeout_connection;
622 
628  void transport_stop ();
629  void transport_record (bool roll);
630  void transport_roll ();
637  void transport_ffwd_rewind (bool fwd);
638  void transport_loop ();
639  void toggle_roll (bool with_abort, bool roll_out_of_bounded_mode);
640  void spacebar_action (bool with_abort, bool roll_out_of_bounded_mode);
642 
648 
650 
652 
653  bool process_snapshot_session_prompter (ArdourWidgets::Prompter& prompter, bool switch_to_it);
654  void snapshot_session (bool switch_to_it);
655 
656  void quick_snapshot_session (bool switch_to_it); //does not prompt for name, just makes a timestamped file
657 
659 
660  bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar);
663  void rename_session (bool for_unnamed);
664  void import_strips ();
665  void export_strips ();
666 
667  int create_mixer ();
673 
675 
676  /* Dialogs that can be created via new<T> */
677 
680 
695 
696  /* Windows/Dialogs that require a creator method */
697 
710 
711  /* creator methods */
712 
724 
726 
728 
729  /* Keyboard Handling */
730 
732 
733  /* Keymap handling */
734 
737 
738  void toggle_record_enable (uint16_t);
739 
742 
743  /* cleanup */
744 
746 
747  void display_cleanup_results (ARDOUR::CleanupReport const& rep, const gchar* list_title, const bool msg_delete);
748  void cleanup ();
750  void flush_trash ();
751 
755 
758 
760  void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*);
765 
766  void session_format_mismatch (std::string, std::string);
767 
768  void session_dialog (std::string);
772 
776 
777  Glib::RefPtr<Gtk::ActionGroup> common_actions;
778 
780 
781  void toggle_use_mmc ();
785 
786  void toggle_use_osc ();
787 
788  void parameter_changed (std::string);
789  void session_parameter_changed (std::string);
790 
791  bool first_idle ();
792 
794 
796 
797  void display_message (const char* prefix, gint prefix_len, Glib::RefPtr<Gtk::TextBuffer::Tag>, Glib::RefPtr<Gtk::TextBuffer::Tag>, const char* msg);
800 
804 
805  /* these are used only in response to a platform-specific "ShouldQuit" signal */
806  bool idle_finish ();
807  void queue_finish ();
809 
810  int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type);
811  int ambiguous_file (std::string file, std::vector<std::string> hits);
812 
814 
816 
821 
824 
826  void midi_panic ();
827 
829 
831 
838 
839  std::string _announce_string;
841 
843 
845 
847 
848  void tabs_switch (GtkNotebookPage*, guint page_number);
849  void tabs_page_added (Gtk::Widget*, guint);
856 
858  bool try_gtk_accel_binding (GtkWindow* win, GdkEventKey* ev, bool translate, GdkModifierType modifier);
859 
862 
865 
866  void escape ();
868 
871 
873 
875 };
876 
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:220
static sigc::signal< void, Temporal::timepos_t > Clock
Definition: ardour_ui.h:294
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:874
void sr_mismatch_message(ARDOUR::samplecnt_t, ARDOUR::samplecnt_t)
RCOptionEditor * rc_option_editor
Definition: ardour_ui.h:678
void stop_video_server(bool ask_confirm=false)
VideoTimeLine * video_timeline
Definition: ardour_ui.h:332
void setup_clock()
WM::Proxy< IdleOMeter > idleometer
Definition: ardour_ui.h:689
RCOptionEditor * get_rc_option_editor()
Definition: ardour_ui.h:230
void transport_goto_nth_marker(int nth)
Mixer_UI * mixer
Definition: ardour_ui.h:454
bool first_idle()
void every_point_one_seconds()
MainClock * primary_clock
Definition: ardour_ui.h:326
void set_punch_sensitivity()
WM::Proxy< EngineControl > audio_midi_setup
Definition: ardour_ui.h:686
BigTransportWindow * create_big_transport_window()
void add_routes_thread()
void stop_clocking()
void flush_trash()
Gtk::Label timecode_format_label
Definition: ardour_ui.h:568
void launch_tutorial()
void tabs_switch(GtkNotebookPage *, guint page_number)
void export_strips()
ArdourWidgets::ArdourButton error_alert_button
Definition: ardour_ui.h:541
void open_recent_session()
PBD::microseconds_t last_configure_time
Definition: ardour_ui.h:753
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:872
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:684
MainClock * secondary_clock
Definition: ardour_ui.h:327
void latency_switch_changed()
Gtk::Menu * _shared_popup_menu
Definition: ardour_ui.h:462
BasicUI * _basic_ui
Definition: ardour_ui.h:464
void disk_overrun_handler()
Gtk::Label format_label
Definition: ardour_ui.h:584
void transport_goto_wallclock()
void update_transport_clocks(samplepos_t pos)
int missing_file(ARDOUR::Session *s, std::string str, ARDOUR::DataType type)
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:554
void update_cpu_load()
void click_action_toggled()
bool ignore_dual_punch
Definition: ardour_ui.h:426
gint update_wall_clock()
WM::Proxy< TransportMastersWindow > transport_masters_window
Definition: ardour_ui.h:694
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:688
void every_second()
Gtk::MenuItem * cleanup_item
Definition: ardour_ui.h:745
void use_config()
void record_state_changed()
sigc::connection blink_connection
Definition: ardour_ui.h:544
void import_strips()
void stop_cues(int c, bool immediately)
bool error_alert_press(GdkEventButton *)
Gtk::Notebook _tabs
Definition: ardour_ui.h:452
ArdourLogLevel _log_not_acknowledged
Definition: ardour_ui.h:828
int copy_demo_sessions()
WM::Proxy< AddRouteDialog > add_route_dialog
Definition: ardour_ui.h:682
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:590
bool status_bar_button_press(GdkEventButton *)
void hide_tabbable(ArdourWidgets::Tabbable *)
VirtualKeyboardWindow * create_virtual_keyboard_window()
PBD::Signal< void()> Escape
Definition: ardour_ui.h:272
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:235
@ LogLevelError
Definition: ardour_ui.h:238
@ LogLevelWarning
Definition: ardour_ui.h:237
@ LogLevelInfo
Definition: ardour_ui.h:236
PBD::ScopedConnection editor_meter_connection
Definition: ardour_ui.h:803
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:297
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)
Gtk::Window & main_window()
Definition: ardour_ui.h:394
void launch_chat()
void fontconfig_dialog()
sigc::connection second_connection
Definition: ardour_ui.h:595
static sigc::signal< void > CloseAllDialogs
Definition: ardour_ui.h:298
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:703
void spacebar_action(bool with_abort, bool roll_out_of_bounded_mode)
ArdourWidgets::ArdourButton editor_visibility_button
Definition: ardour_ui.h:851
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:757
Glib::RefPtr< Gtk::SizeGroup > button_height_size_group
Definition: ardour_ui.h:322
Gtk::HBox status_bar_hpacker
Definition: ardour_ui.h:451
void launch_howto_report()
int _pending_locate_num
Definition: ardour_ui.h:619
Gtk::HBox rc_option_editor_placeholder
Definition: ardour_ui.h:679
PublicEditor * editor
Definition: ardour_ui.h:453
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:690
void transport_rewind()
WM::Proxy< DspStatisticsWindow > dsp_statistics_window
Definition: ardour_ui.h:693
void auto_play_action_toggled()
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:681
static ARDOUR_UI * theArdourUI
Definition: ardour_ui.h:481
void tabs_page_removed(Gtk::Widget *, guint)
StartupFSM * startup_fsm
Definition: ardour_ui.h:484
void start_video_server_menu(Gtk::Window *float_window)
void launch_subscribe()
NSM_Client * nsm
Definition: ardour_ui.h:458
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:555
bool key_press_focus_accelerator_handler(Gtk::Window &window, GdkEventKey *ev, Gtkmm2ext::BindingSet *)
bool session_is_new() const
Definition: ardour_ui.h:224
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:502
std::string _announce_string
Definition: ardour_ui.h:839
bool have_mmcss_error_dialog_displayed
Definition: ardour_ui.h:763
void session_format_mismatch(std::string, std::string)
void update_format()
AudioClock * big_clock
Definition: ardour_ui.h:328
void remove_video()
ARDOUR::ProcessThread * _process_thread
Definition: ardour_ui.h:820
void post_engine()
PublicEditor & the_editor()
Definition: ardour_ui.h:274
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:825
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:389
Gtk::Label pdc_info_label
Definition: ardour_ui.h:572
guint32 last_key_press_time
Definition: ardour_ui.h:651
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:250
PBD::ScopedConnectionList forever_connections
Definition: ardour_ui.h:801
void toggle_video_sync()
void transport_roll()
void add_routes_part_two()
WM::Proxy< RouteParams_UI > route_params
Definition: ardour_ui.h:685
void update_autosave()
void transport_rec_preroll()
ArdourWidgets::ArdourButton prefs_visibility_button
Definition: ardour_ui.h:853
bool _session_is_new
Definition: ardour_ui.h:643
Gtk::MenuItem * jack_disconnect_item
Definition: ardour_ui.h:773
void step_up_through_tabs()
WM::ProxyWithConstructor< BundleManager > bundle_manager
Definition: ardour_ui.h:700
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:261
sigc::connection point_one_second_connection
Definition: ardour_ui.h:596
XMLNode * keyboard_settings() const
WM::ProxyWithConstructor< KeyEditor > key_editor
Definition: ardour_ui.h:707
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:578
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:674
WM::Proxy< ExportVideoDialog > export_video_dialog
Definition: ardour_ui.h:687
gint autosave_session()
void attach_to_engine()
void toggle_use_mmc()
void monitor_cut_all()
void toggle_external_sync()
void punch_action_toggled()
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:575
Gtk::Menu * jack_bufsize_menu
Definition: ardour_ui.h:775
WM::Proxy< PluginManagerUI > plugin_manager_ui
Definition: ardour_ui.h:691
void show_plugin_prefs()
PBD::ScopedConnection halt_connection
Definition: ardour_ui.h:802
sigc::connection clock_signal_connection
Definition: ardour_ui.h:520
void transport_loop()
uint32_t rec_enabled_streams
Definition: ardour_ui.h:740
void grab_focus_after_dialog()
void follow_edits_action_toggled()
void add_route()
Gtk::Notebook & tabs()
SaveAsDialog * save_as_dialog
Definition: ardour_ui.h:658
void update_timecode_format()
void transport_record(bool roll)
void setup_session_options()
int create_trigger_page()
bool start_video_server(Gtk::Window *float_window, bool popup_msg)
Gtk::Tooltips _tooltips
Definition: ardour_ui.h:457
void engine_halted(const char *reason, bool free_reason)
Glib::RefPtr< Gtk::ActionGroup > common_actions
Definition: ardour_ui.h:777
void save_session_as()
WM::Proxy< PluginDSPLoadWindow > plugin_dsp_load_window
Definition: ardour_ui.h:692
RegionUISettingsManager region_ui_settings_manager
Definition: ardour_ui.h:415
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 auto_input_action_toggled()
void maximise_editing_space()
WM::ProxyWithConstructor< GlobalPortMatrixWindow > midi_port_matrix
Definition: ardour_ui.h:706
void session_dialog(std::string)
void session_add_audio_route(bool, int32_t, int32_t, ARDOUR::TrackMode, std::shared_ptr< ARDOUR::RouteGroup >, uint32_t, std::string const &, bool, ARDOUR::PresentationInfo::order_t order, bool trigger_visibility)
bool have_disk_speed_dialog_displayed
Definition: ardour_ui.h:759
sigc::connection fps_connection
Definition: ardour_ui.h:597
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:621
int create_meterbridge()
LibraryDownloadDialog * create_library_download_window()
void toggle_mixer_space()
gint configure_timeout()
SessionDialog * _session_dialog
Definition: ardour_ui.h:482
void transport_goto_zero()
bool key_event_handler(GdkEventKey *, Gtk::Window *window)
Gtk::Window _main_window
Definition: ardour_ui.h:448
void edit_metadata()
WM::ProxyWithConstructor< SessionOptionEditor > session_option_editor
Definition: ardour_ui.h:698
void audioengine_became_silent()
void set_transport_controllable_state(const XMLNode &)
bool tabbable_visibility_button_press(GdkEventButton *ev, std::string const &tabbable_name)
void hide_splash()
void install_actions()
bool _was_dirty
Definition: ardour_ui.h:459
bool _numpad_locate_happening
Definition: ardour_ui.h:618
GtkNotebook * tab_window_root_drop(GtkNotebook *src, GtkWidget *w, gint x, gint y, gpointer user_data)
GUIObjectState * gui_object_state
Definition: ardour_ui.h:324
WM::ProxyWithConstructor< LuaWindow > luawindow
Definition: ardour_ui.h:708
void install_dependent_actions()
void halt_on_xrun_message()
void midi_panic()
Gtk::MenuItem * jack_reconnect_item
Definition: ardour_ui.h:774
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:518
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:844
ArdourWidgets::ArdourButton trigger_page_visibility_button
Definition: ardour_ui.h:855
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:266
KeyEditor * create_key_editor()
GlobalPortMatrixWindow * create_global_port_matrix(ARDOUR::DataType)
void show_about()
PBD::microseconds_t last_peak_grab
Definition: ardour_ui.h:756
ArdourKeyboard * keyboard
Definition: ardour_ui.h:731
WM::ProxyWithConstructor< BigClockWindow > big_clock_window
Definition: ardour_ui.h:701
void hide_application()
ARDOUR::SystemExec * video_server_process
Definition: ardour_ui.h:725
VisibilityGroup _status_bar_visibility
Definition: ardour_ui.h:815
WM::ProxyWithConstructor< BigTransportWindow > big_transport_window
Definition: ardour_ui.h:702
void setup_toplevel_window(Gtk::Window &, const std::string &name, void *owner)
void punch_in_action_toggled()
LuaWindow * create_luawindow()
void setup_tooltips()
void session_latency_updated(bool)
bool nsm_first_session_opened
Definition: ardour_ui.h:870
WM::ProxyWithConstructor< LibraryDownloadDialog > library_download_window
Definition: ardour_ui.h:704
ARDOUR::PresentationInfo::order_t translate_order(RouteDialogs::InsertAt)
void snapshot_session(bool switch_to_it)
TriggerPage * trigger_page
Definition: ardour_ui.h:456
void setup_profile()
Gtk::Label sample_rate_label
Definition: ardour_ui.h:581
void close_session()
void update_path_label()
WM::ProxyWithConstructor< RTAWindow > rtawindow
Definition: ardour_ui.h:709
void trigger_slot(int c, int r)
void launch_forums()
XMLNode & get_transport_controllable_state()
ArdourLogLevel log_not_acknowledged() const
Definition: ardour_ui.h:241
bool click_button_clicked(GdkEventButton *)
void toggle_keep_tearoffs()
void show_library_download_window()
void transport_goto_start()
void toggle_time_master()
void auto_return_action_toggled()
ArdourWidgets::ArdourButton recorder_visibility_button
Definition: ardour_ui.h:854
WM::ProxyWithConstructor< AddVideoDialog > add_video_dialog
Definition: ardour_ui.h:699
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:226
XMLNode * main_window_settings() const
void show_ui_prefs()
bool have_configure_timeout
Definition: ardour_ui.h:752
AddVideoDialog * create_add_video_dialog()
Gtk::Table tabbables_table
Definition: ardour_ui.h:532
void engine_stopped()
void parameter_changed(std::string)
void toggle_use_monitor_section()
void save_session_at_its_request(std::string)
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:460
bool run_startup(bool should_be_new, std::string load_template)
Gtk::Label wall_clock_label
Definition: ardour_ui.h:561
Mixer_UI * the_mixer()
Definition: ardour_ui.h:275
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)
Gtk::Label status_bar_label
Definition: ardour_ui.h:798
WM::ProxyWithConstructor< GlobalPortMatrixWindow > audio_port_matrix
Definition: ardour_ui.h:705
void punch_out_action_toggled()
Gtk::Label disk_space_label
Definition: ardour_ui.h:564
ArdourWidgets::ArdourButton mixer_visibility_button
Definition: ardour_ui.h:852
void toggle_meterbridge()
void show_mixer_prefs()
void disk_speed_dialog_gone(int ignored_response, Gtk::MessageDialog *)
void session_add_midi_route(bool, std::shared_ptr< ARDOUR::RouteGroup >, uint32_t, std::string const &, bool, ARDOUR::PluginInfoPtr, ARDOUR::Plugin::PresetRecord *, ARDOUR::PresentationInfo::order_t order, bool trigger_visibility)
Gtk::Label session_path_label
Definition: ardour_ui.h:587
std::list< MidiTracer * > _midi_tracer_windows
Definition: ardour_ui.h:528
WM::Proxy< About > about
Definition: ardour_ui.h:683
gint transport_numpad_timeout()
void click_on_rec_action_toggled()
bool idle_ask_about_quit()
Gtkmm2ext::VisibilityTracker * main_window_visibility
Definition: ardour_ui.h:449
RecorderUI * recorder
Definition: ardour_ui.h:455
int32_t do_engine_start()
Gtk::VBox main_vpacker
Definition: ardour_ui.h:450
Gtk::Label latency_info_label
Definition: ardour_ui.h:571
Gtk::HBox menu_hbox
Definition: ardour_ui.h:556
sigc::connection _engine_dialog_connection
Definition: ardour_ui.h:496
void set_log_not_acknowledged(const ArdourLogLevel lvl)
Definition: ardour_ui.h:242
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:64
Definition: ardour_ui.h:182
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.