Ardour  9.0-pre0-822-g12e3bc5c20
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 "shuttle_control.h"
93 #include "startup_fsm.h"
94 #include "transport_control.h"
95 #include "transport_control_ui.h"
96 #include "visibility_group.h"
97 #include "window_manager.h"
98 
99 #ifdef COMPILER_MSVC
100 #include "about.h"
101 #include "add_video_dialog.h"
102 #include "big_clock_window.h"
103 #include "big_transport_window.h"
104 #include "bundle_manager.h"
105 #include "dsp_stats_window.h"
106 #include "engine_dialog.h"
107 #include "export_video_dialog.h"
108 #include "global_port_matrix.h"
109 #include "idleometer.h"
110 #include "io_plugin_window.h"
111 #include "keyeditor.h"
112 #include "location_ui.h"
113 #include "lua_script_manager.h"
114 #include "luawindow.h"
115 #include "plugin_dspload_window.h"
116 #include "plugin_manager_ui.h"
117 #include "rc_option_editor.h"
118 #include "route_dialogs.h"
119 #include "route_params_ui.h"
120 #include "session_option_editor.h"
121 #include "speaker_dialog.h"
123 #include "virtual_keyboard_window.h"
124 #include "library_download_dialog.h"
125 #else
126 class About;
127 class AddRouteDialog;
128 class AddVideoDialog;
129 class BigClockWindow;
130 class BigTransportWindow;
131 class BundleManager;
132 class EngineControl;
133 class ExportVideoDialog;
134 class KeyEditor;
135 class LocationUIWindow;
136 class LuaScriptManager;
137 class LuaWindow;
138 class RCOptionEditor;
139 class RouteParams_UI;
140 class SessionOptionEditor;
141 class SpeakerDialog;
143 class IdleOMeter;
144 class IOPluginWindow;
145 class PluginDSPLoadWindow;
146 class PluginManagerUI;
147 class DspStatisticsWindow;
151 #endif
152 
153 class VideoTimeLine;
154 class ArdourKeyboard;
155 class AudioClock;
156 class ConnectionEditor;
158 class MainClock;
159 class Mixer_UI;
160 class PublicEditor;
161 class RecorderUI;
162 class TriggerPage;
163 class SaveAsDialog;
164 class SaveTemplateDialog;
165 class SessionDialog;
166 class SessionOptionEditorWindow;
167 class Splash;
168 class TimeInfoBox;
169 class ApplicationBar;
170 class Meterbridge;
171 class LuaWindow;
172 class MidiTracer;
173 class PianorollWindow;
174 class NSM_Client;
175 class LevelMeterHBox;
176 class GUIObjectState;
177 class BasicUI;
178 
179 namespace ARDOUR {
180  class ControlProtocolInfo;
181  class IO;
182  class Port;
183  class Route;
184  class RouteGroup;
185  class Location;
186  class ProcessThread;
187 }
188 
189 namespace Gtk {
190  class ProgressBar;
191 }
192 
193 namespace ArdourWidgets {
194  class Prompter;
195  class Tabbable;
196 }
197 
198 #define MAX_LUA_ACTION_SCRIPTS 32
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 
245  };
246 
249 
250  void start_session_load (bool create_new);
252  void build_session_from_dialog (SessionDialog&, std::string const& session_name, std::string const& session_path, std::string const& session_template, Temporal::TimeDomain domain);
253  bool ask_about_loading_existing_session (const std::string& session_path);
255 
257  int unload_session (bool hide_stuff = false, bool force_unload = false);
259 
260  int save_state_canfail (std::string state_name = "", bool switch_to_it = false);
261  void save_state (const std::string & state_name = "", bool switch_to_it = false);
262 
263  int new_session_from_aaf (std::string const&, std::string const&, std::string&, std::string&);
264 
265  static ARDOUR_UI *instance () { return theArdourUI; }
266 
267  /* signal emitted when all windows (editor, mixer/monitor, recorder and cues)
268  have published their actions to the ActionManager
269  */
271 
272  /* signal emitted when escape key is pressed. All UI components that
273  need to respond to Escape in some way (e.g. break drag, clear
274  selection, etc) should connect to and handle this.
275  */
277 
279  Mixer_UI* the_mixer() { return mixer; }
280 
281  Gtk::Menu* shared_popup_menu ();
282 
288 
289  void reset_focus (Gtk::Widget*);
290 
296  static sigc::signal<void, Temporal::timepos_t> Clock;
297 
298  static void close_all_dialogs () { CloseAllDialogs(); }
299  static sigc::signal<void> CloseAllDialogs;
300 
309  XMLNode* tearoff_settings (const char*) const;
310 
311  void trigger_slot (int c, int r);
312  void trigger_cue_row (int r);
313  void stop_all_cues (bool immediately);
314  void stop_cues (int c, bool immediately);
315 
317  gboolean configure_handler (GdkEventConfigure* conf);
318 
322 
323  Glib::RefPtr<Gtk::SizeGroup> button_height_size_group;
324 
326 
327  MainClock* primary_clock; //this clock is the canonical PrimaryClock, whose mode is reflected to all other clocks with PrimaryClock disposition.
328  MainClock* secondary_clock; //this clock is the canonical SecondaryClock, whose mode is reflected to all other clocks with PrimaryClock disposition
330 
331  void focus_on_clock ();
332 
334 
336 
338 
339  void add_route ();
341 
344 
346 
347  void add_video (Gtk::Window* float_window);
348  void remove_video ();
349  void start_video_server_menu (Gtk::Window* float_window);
350  bool start_video_server (Gtk::Window* float_window, bool popup_msg);
351  void stop_video_server (bool ask_confirm=false);
352  void flush_videotimeline_cache (bool localcacheonly=false);
353  void export_video (bool range = false);
354 
356  uint32_t, std::string const &, bool, ARDOUR::PresentationInfo::order_t order, bool trigger_visibility);
357 
358  void session_add_midi_route (bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, bool,
360  ARDOUR::PresentationInfo::order_t order, bool trigger_visibility);
361 
362  void session_add_foldback_bus (int32_t, uint32_t, std::string const &);
363 
365 
367  void post_engine ();
368 
369  gint exit_on_main_window_close (GdkEventAny *);
370 
373 
374  void show_ui_prefs ();
377 
378  bool check_audioengine(Gtk::Window&);
379 
380  void setup_profile ();
381  void setup_tooltips ();
382 
383  void set_shuttle_fract (double);
384 
387 
389 
390  const std::string& announce_string() const { return _announce_string; }
391 
393 
394  Gtk::Notebook& tabs();
395  Gtk::Window& main_window () { return _main_window; }
396 
397  void setup_toplevel_window (Gtk::Window&, const std::string& name, void* owner);
398 
399  /* called from a static C function */
400 
401  GtkNotebook* tab_window_root_drop (GtkNotebook* src,
402  GtkWidget* w,
403  gint x,
404  gint y,
405  gpointer user_data);
406 
407  bool tabbed_window_state_event_handler (GdkEventWindowState*, void* object);
408  bool key_event_handler (GdkEventKey*, Gtk::Window* window);
409 
411 
412  std::map<std::string, std::string> route_setup_info (const std::string& script_path);
413 
415 
416 protected:
417  friend class PublicEditor;
418 
422  void monitor_mono ();
423 
426  void toggle_punch ();
436  void toggle_click ();
440 
441 private:
442 
443  Gtk::Window _main_window;
445  Gtk::VBox main_vpacker;
447  Gtk::Notebook _tabs;
452  Gtk::Tooltips _tooltips;
456 
457  Gtk::Menu* _shared_popup_menu;
458 
466 
468 
470 
474  void setup_clock ();
475 
478 
480 
481  int starting ();
482  int nsm_init ();
483  void startup_done ();
485 
486  int ask_about_saving_session (const std::vector<std::string>& actions);
487 
488  void audio_midi_setup_reconfigure_done (int response, std::string path, std::string snapshot, std::string mix_template);
489  int load_session_stage_two (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
490  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);
491  sigc::connection _engine_dialog_connection;
492 
493  void save_session_at_its_request (std::string);
494  /* periodic safety backup, to be precise */
497  sigc::connection _autosave_connection;
498 
500  void update_title ();
501 
503  int32_t do_engine_start ();
504 
505  void engine_halted (const char* reason, bool free_reason);
506  void engine_stopped ();
507  void engine_running (uint32_t cnt);
508 
509  void use_config ();
510 
511  void about_signal_response(int response);
512 
513  Gtk::VBox top_packer;
514 
515  sigc::connection clock_signal_connection;
516  void update_clocks ();
517  void start_clocking ();
518  void stop_clocking ();
519 
522 
523  std::list<MidiTracer*> _midi_tracer_windows;
524 
525  /* Transport Control */
526 
528 
530 
533 
537 
539 
540  void blink_handler (bool);
541  sigc::connection blink_connection;
542 
543  void cancel_solo ();
544  void error_blink (bool);
545 
547 
548  bool error_alert_press (GdkEventButton *);
549  /* menu bar and associated stuff */
550 
551  Gtk::MenuBar* menu_bar;
552  Gtk::EventBox menu_bar_base;
553  Gtk::HBox menu_hbox;
554 
556  void build_menu_bar ();
557 
558  Gtk::Label wall_clock_label;
560 
561  Gtk::Label disk_space_label;
564 
567 
568  Gtk::Label latency_info_label;
569  Gtk::Label pdc_info_label;
571 
572  Gtk::Label dsp_load_label;
574 
577 
578  Gtk::Label sample_rate_label;
580 
581  Gtk::Label format_label;
582  void update_format ();
583 
584  Gtk::Label session_path_label;
586 
588 
589  void every_second ();
591 
592  sigc::connection second_connection;
593  sigc::connection point_one_second_connection;
594  sigc::connection fps_connection;
595 
597 
598  void open_session ();
601  void save_template ();
603 
604  void meta_session_setup (const std::string& script_path);
605  void meta_route_setup (const std::string& script_path);
606 
607  void edit_metadata ();
609 
611 
612  //stuff for ProTools-style numpad
613  void transport_numpad_event (int num);
618  sigc::connection _numpad_timeout_connection;
619 
625  void transport_stop ();
626  void transport_record (bool roll);
627  void transport_roll ();
634  void transport_ffwd_rewind (bool fwd);
635  void transport_loop ();
636  void toggle_roll (bool with_abort, bool roll_out_of_bounded_mode);
638 
643 
645 
647 
648  bool process_snapshot_session_prompter (ArdourWidgets::Prompter& prompter, bool switch_to_it);
649  void snapshot_session (bool switch_to_it);
650 
651  void quick_snapshot_session (bool switch_to_it); //does not prompt for name, just makes a timestamped file
652 
654 
655  bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar);
658  void rename_session (bool for_unnamed);
659 
660  int create_mixer ();
666 
668 
669  /* Dialogs that can be created via new<T> */
670 
673 
688 
689  /* Windows/Dialogs that require a creator method */
690 
702 
703  /* creator methods */
704 
715 
717 
719 
720  /* Keyboard Handling */
721 
723 
724  /* Keymap handling */
725 
728 
729  void toggle_record_enable (uint16_t);
730 
733 
734  /* cleanup */
735 
736  Gtk::MenuItem *cleanup_item;
737 
738  void display_cleanup_results (ARDOUR::CleanupReport const& rep, const gchar* list_title, const bool msg_delete);
739  void cleanup ();
741  void flush_trash ();
742 
746 
749 
751  void disk_speed_dialog_gone (int ignored_response, Gtk::MessageDialog*);
754 
755  void session_format_mismatch (std::string, std::string);
756 
757  void session_dialog (std::string);
761 
762  Gtk::MenuItem* jack_disconnect_item;
763  Gtk::MenuItem* jack_reconnect_item;
764  Gtk::Menu* jack_bufsize_menu;
765 
766  Glib::RefPtr<Gtk::ActionGroup> common_actions;
767 
769 
770  void toggle_use_mmc ();
774 
775  void toggle_use_osc ();
776 
777  void parameter_changed (std::string);
778  void session_parameter_changed (std::string);
779 
780  bool first_idle ();
781 
783 
785 
786  void display_message (const char* prefix, gint prefix_len, Glib::RefPtr<Gtk::TextBuffer::Tag>, Glib::RefPtr<Gtk::TextBuffer::Tag>, const char* msg);
787  Gtk::Label status_bar_label;
788  bool status_bar_button_press (GdkEventButton*);
789 
793 
794  /* these are used only in response to a platform-specific "ShouldQuit" signal */
795  bool idle_finish ();
796  void queue_finish ();
798 
799  int missing_file (ARDOUR::Session*s, std::string str, ARDOUR::DataType type);
800  int ambiguous_file (std::string file, std::vector<std::string> hits);
801 
802  bool click_button_clicked (GdkEventButton *);
803 
805 
810 
813 
815  void midi_panic ();
816 
818 
820 
821  bool path_button_press (GdkEventButton* ev);
822  bool audio_button_press (GdkEventButton* ev);
823  bool format_button_press (GdkEventButton* ev);
824  bool timecode_button_press (GdkEventButton* ev);
825  bool xrun_button_press (GdkEventButton* ev);
826  bool xrun_button_release (GdkEventButton* ev);
827 
828  std::string _announce_string;
830 
832 
834 
836 
837  void tabs_switch (GtkNotebookPage*, guint page_number);
838  void tabs_page_added (Gtk::Widget*, guint);
839  void tabs_page_removed (Gtk::Widget*, guint);
845 
846  bool key_press_focus_accelerator_handler (Gtk::Window& window, GdkEventKey* ev, Gtkmm2ext::Bindings*);
847  bool try_gtk_accel_binding (GtkWindow* win, GdkEventKey* ev, bool translate, GdkModifierType modifier);
848 
849  bool main_window_delete_event (GdkEventAny*);
851 
852  bool tabbable_visibility_button_press (GdkEventButton* ev, std::string const& tabbable_name);
853 
856 
857  void escape ();
859 
862 
864 };
865 
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()
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:296
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:863
void sr_mismatch_message(ARDOUR::samplecnt_t, ARDOUR::samplecnt_t)
RCOptionEditor * rc_option_editor
Definition: ardour_ui.h:671
void stop_video_server(bool ask_confirm=false)
VideoTimeLine * video_timeline
Definition: ardour_ui.h:333
void setup_clock()
WM::Proxy< IdleOMeter > idleometer
Definition: ardour_ui.h:682
RCOptionEditor * get_rc_option_editor()
Definition: ardour_ui.h:237
void transport_goto_nth_marker(int nth)
Mixer_UI * mixer
Definition: ardour_ui.h:449
bool first_idle()
void every_point_one_seconds()
MainClock * primary_clock
Definition: ardour_ui.h:327
void set_punch_sensitivity()
WM::Proxy< EngineControl > audio_midi_setup
Definition: ardour_ui.h:679
BigTransportWindow * create_big_transport_window()
void add_routes_thread()
void stop_clocking()
void flush_trash()
Gtk::Label timecode_format_label
Definition: ardour_ui.h:565
void launch_tutorial()
void tabs_switch(GtkNotebookPage *, guint page_number)
ArdourWidgets::ArdourButton error_alert_button
Definition: ardour_ui.h:538
void open_recent_session()
PBD::microseconds_t last_configure_time
Definition: ardour_ui.h:744
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:677
MainClock * secondary_clock
Definition: ardour_ui.h:328
void latency_switch_changed()
Gtk::Menu * _shared_popup_menu
Definition: ardour_ui.h:457
BasicUI * _basic_ui
Definition: ardour_ui.h:459
void disk_overrun_handler()
Gtk::Label format_label
Definition: ardour_ui.h:581
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:551
void update_cpu_load()
bool ignore_dual_punch
Definition: ardour_ui.h:428
gint update_wall_clock()
WM::Proxy< TransportMastersWindow > transport_masters_window
Definition: ardour_ui.h:687
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:681
void every_second()
Gtk::MenuItem * cleanup_item
Definition: ardour_ui.h:736
void use_config()
void record_state_changed()
sigc::connection blink_connection
Definition: ardour_ui.h:541
void stop_cues(int c, bool immediately)
bool error_alert_press(GdkEventButton *)
Gtk::Notebook _tabs
Definition: ardour_ui.h:447
ArdourLogLevel _log_not_acknowledged
Definition: ardour_ui.h:817
int copy_demo_sessions()
WM::Proxy< AddRouteDialog > add_route_dialog
Definition: ardour_ui.h:675
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:587
bool status_bar_button_press(GdkEventButton *)
void hide_tabbable(ArdourWidgets::Tabbable *)
VirtualKeyboardWindow * create_virtual_keyboard_window()
PBD::Signal< void()> Escape
Definition: ardour_ui.h:276
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:241
@ LogLevelError
Definition: ardour_ui.h:244
@ LogLevelWarning
Definition: ardour_ui.h:243
@ LogLevelInfo
Definition: ardour_ui.h:242
PBD::ScopedConnection editor_meter_connection
Definition: ardour_ui.h:792
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:298
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:395
void launch_chat()
void fontconfig_dialog()
sigc::connection second_connection
Definition: ardour_ui.h:592
static sigc::signal< void > CloseAllDialogs
Definition: ardour_ui.h:299
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:696
ArdourWidgets::ArdourButton editor_visibility_button
Definition: ardour_ui.h:840
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:748
Glib::RefPtr< Gtk::SizeGroup > button_height_size_group
Definition: ardour_ui.h:323
Gtk::HBox status_bar_hpacker
Definition: ardour_ui.h:446
void launch_howto_report()
int _pending_locate_num
Definition: ardour_ui.h:616
Gtk::HBox rc_option_editor_placeholder
Definition: ardour_ui.h:672
PublicEditor * editor
Definition: ardour_ui.h:448
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:683
void transport_rewind()
WM::Proxy< DspStatisticsWindow > dsp_statistics_window
Definition: ardour_ui.h:686
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:674
static ARDOUR_UI * theArdourUI
Definition: ardour_ui.h:476
void tabs_page_removed(Gtk::Widget *, guint)
StartupFSM * startup_fsm
Definition: ardour_ui.h:479
void start_video_server_menu(Gtk::Window *float_window)
void launch_subscribe()
NSM_Client * nsm
Definition: ardour_ui.h:453
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:552
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:497
std::string _announce_string
Definition: ardour_ui.h:828
void session_format_mismatch(std::string, std::string)
void update_format()
AudioClock * big_clock
Definition: ardour_ui.h:329
void remove_video()
ARDOUR::ProcessThread * _process_thread
Definition: ardour_ui.h:809
void post_engine()
PublicEditor & the_editor()
Definition: ardour_ui.h:278
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:814
void archive_session()
int create_recorder()
bool tabbed_window_state_event_handler(GdkEventWindowState *, void *object)
const std::string & announce_string() const
Definition: ardour_ui.h:390
Gtk::Label pdc_info_label
Definition: ardour_ui.h:569
guint32 last_key_press_time
Definition: ardour_ui.h:646
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()
PBD::ScopedConnectionList forever_connections
Definition: ardour_ui.h:790
void toggle_video_sync()
void transport_roll()
void add_routes_part_two()
WM::Proxy< RouteParams_UI > route_params
Definition: ardour_ui.h:678
void update_autosave()
void transport_rec_preroll()
ArdourWidgets::ArdourButton prefs_visibility_button
Definition: ardour_ui.h:842
bool _session_is_new
Definition: ardour_ui.h:639
Gtk::MenuItem * jack_disconnect_item
Definition: ardour_ui.h:762
void step_up_through_tabs()
WM::ProxyWithConstructor< BundleManager > bundle_manager
Definition: ardour_ui.h:693
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:265
sigc::connection point_one_second_connection
Definition: ardour_ui.h:593
XMLNode * keyboard_settings() const
WM::ProxyWithConstructor< KeyEditor > key_editor
Definition: ardour_ui.h:700
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:575
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:667
WM::Proxy< ExportVideoDialog > export_video_dialog
Definition: ardour_ui.h:680
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:572
Gtk::Menu * jack_bufsize_menu
Definition: ardour_ui.h:764
WM::Proxy< PluginManagerUI > plugin_manager_ui
Definition: ardour_ui.h:684
void show_plugin_prefs()
PBD::ScopedConnection halt_connection
Definition: ardour_ui.h:791
sigc::connection clock_signal_connection
Definition: ardour_ui.h:515
void transport_loop()
uint32_t rec_enabled_streams
Definition: ardour_ui.h:731
void grab_focus_after_dialog()
void add_route()
Gtk::Notebook & tabs()
SaveAsDialog * save_as_dialog
Definition: ardour_ui.h:653
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:452
void toggle_punch_in()
void engine_halted(const char *reason, bool free_reason)
Glib::RefPtr< Gtk::ActionGroup > common_actions
Definition: ardour_ui.h:766
void save_session_as()
WM::Proxy< PluginDSPLoadWindow > plugin_dsp_load_window
Definition: ardour_ui.h:685
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:699
void session_dialog(std::string)
bool have_disk_speed_dialog_displayed
Definition: ardour_ui.h:750
sigc::connection fps_connection
Definition: ardour_ui.h:594
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:618
int create_meterbridge()
LibraryDownloadDialog * create_library_download_window()
void toggle_mixer_space()
gint configure_timeout()
SessionDialog * _session_dialog
Definition: ardour_ui.h:477
void transport_goto_zero()
bool key_event_handler(GdkEventKey *, Gtk::Window *window)
Gtk::Window _main_window
Definition: ardour_ui.h:443
void edit_metadata()
WM::ProxyWithConstructor< SessionOptionEditor > session_option_editor
Definition: ardour_ui.h:691
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:454
bool _numpad_locate_happening
Definition: ardour_ui.h:615
GtkNotebook * tab_window_root_drop(GtkNotebook *src, GtkWidget *w, gint x, gint y, gpointer user_data)
GUIObjectState * gui_object_state
Definition: ardour_ui.h:325
WM::ProxyWithConstructor< LuaWindow > luawindow
Definition: ardour_ui.h:701
void install_dependent_actions()
void halt_on_xrun_message()
void midi_panic()
Gtk::MenuItem * jack_reconnect_item
Definition: ardour_ui.h:763
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:513
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:833
ArdourWidgets::ArdourButton trigger_page_visibility_button
Definition: ardour_ui.h:844
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:270
KeyEditor * create_key_editor()
GlobalPortMatrixWindow * create_global_port_matrix(ARDOUR::DataType)
void show_about()
PBD::microseconds_t last_peak_grab
Definition: ardour_ui.h:747
ArdourKeyboard * keyboard
Definition: ardour_ui.h:722
WM::ProxyWithConstructor< BigClockWindow > big_clock_window
Definition: ardour_ui.h:694
void hide_application()
ARDOUR::SystemExec * video_server_process
Definition: ardour_ui.h:716
VisibilityGroup _status_bar_visibility
Definition: ardour_ui.h:804
WM::ProxyWithConstructor< BigTransportWindow > big_transport_window
Definition: ardour_ui.h:695
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:861
WM::ProxyWithConstructor< LibraryDownloadDialog > library_download_window
Definition: ardour_ui.h:697
ARDOUR::PresentationInfo::order_t translate_order(RouteDialogs::InsertAt)
void snapshot_session(bool switch_to_it)
TriggerPage * trigger_page
Definition: ardour_ui.h:451
void setup_profile()
Gtk::Label sample_rate_label
Definition: ardour_ui.h:578
void close_session()
void update_path_label()
void trigger_slot(int c, int r)
void launch_forums()
XMLNode & get_transport_controllable_state()
ArdourLogLevel log_not_acknowledged() const
Definition: ardour_ui.h:247
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:843
WM::ProxyWithConstructor< AddVideoDialog > add_video_dialog
Definition: ardour_ui.h:692
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:233
XMLNode * main_window_settings() const
void show_ui_prefs()
bool have_configure_timeout
Definition: ardour_ui.h:743
AddVideoDialog * create_add_video_dialog()
Gtk::Table tabbables_table
Definition: ardour_ui.h:527
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:455
bool run_startup(bool should_be_new, std::string load_template)
Gtk::Label wall_clock_label
Definition: ardour_ui.h:558
Mixer_UI * the_mixer()
Definition: ardour_ui.h:279
void queue_finish()
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:787
WM::ProxyWithConstructor< GlobalPortMatrixWindow > audio_port_matrix
Definition: ardour_ui.h:698
Gtk::Label disk_space_label
Definition: ardour_ui.h:561
ArdourWidgets::ArdourButton mixer_visibility_button
Definition: ardour_ui.h:841
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:584
std::list< MidiTracer * > _midi_tracer_windows
Definition: ardour_ui.h:523
WM::Proxy< About > about
Definition: ardour_ui.h:676
gint transport_numpad_timeout()
bool idle_ask_about_quit()
Gtkmm2ext::VisibilityTracker * main_window_visibility
Definition: ardour_ui.h:444
RecorderUI * recorder
Definition: ardour_ui.h:450
int32_t do_engine_start()
Gtk::VBox main_vpacker
Definition: ardour_ui.h:445
Gtk::Label latency_info_label
Definition: ardour_ui.h:568
Gtk::HBox menu_hbox
Definition: ardour_ui.h:553
sigc::connection _engine_dialog_connection
Definition: ardour_ui.h:491
void set_log_not_acknowledged(const ArdourLogLevel lvl)
Definition: ardour_ui.h:248
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
struct Table Table
PBD::PropertyDescriptor< std::string > name
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:189
int64_t microseconds_t
Definition: microseconds.h:28
Editing of options which are obtained from and written back to one of the .rc files.