20 #ifndef __ardour_gui_h__
21 #define __ardour_gui_h__
41 #include <gtkmm/box.h>
42 #include <gtkmm/frame.h>
43 #include <gtkmm/label.h>
44 #include <gtkmm/table.h>
45 #include <gtkmm/fixed.h>
46 #include <gtkmm/drawingarea.h>
47 #include <gtkmm/eventbox.h>
48 #include <gtkmm/menu.h>
49 #include <gtkmm/menuitem.h>
50 #include <gtkmm/button.h>
51 #include <gtkmm/togglebutton.h>
52 #include <gtkmm/treeview.h>
53 #include <gtkmm/menubar.h>
54 #include <gtkmm/textbuffer.h>
55 #include <gtkmm/adjustment.h>
63 #include "ardour/utils.h"
99 class ConnectionEditor;
117 class ControlProtocolInfo;
167 int load_session (
const std::string& path,
const std::string& snapshot, std::string mix_template = std::string());
185 void save_state (
const std::string & state_name =
"",
bool switch_to_it =
false);
210 static sigc::signal<void, framepos_t, bool, framepos_t>
Clock;
244 void add_route (Gtk::Window* float_window);
248 void add_video (Gtk::Window* float_window);
258 int32_t output_channels,
262 std::string
const & name_template
269 uint32_t how_many, std::string
const & name_template) {
390 void reattach_tearoff (Gtk::Box* parent, Gtk::Widget* contents, int32_t order);
513 Gtk::TreeModelColumn<std::string>
tip;
529 bool operator() (std::pair<std::string,std::string> a, std::pair<std::string,std::string> b)
const {
611 void toggle_roll (
bool with_abort,
bool roll_out_of_bounded_mode);
627 bool save_as_progress_update (
float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar);
748 Glib::RefPtr<Gtk::TextBuffer::Tag> ptag, Glib::RefPtr<Gtk::TextBuffer::Tag> mtag,
770 int ambiguous_file (std::string file, std::vector<std::string> hits);
SessionOptionEditor * create_session_option_editor()
void toggle_mixer_window()
void reenable_hide_loop_punch_ruler_if_appropriate()
Gtk::Menu * session_popup_menu
bool operator()(std::pair< std::string, std::string > a, std::pair< std::string, std::string > b) const
sigc::connection second_connection
WM::ProxyWithConstructor< BundleManager > bundle_manager
void goto_editor_window()
void check_memory_locking()
int pending_state_dialog()
void update_transport_clocks(framepos_t pos)
void secondary_clock_value_changed()
int reconnect_to_engine()
ArdourButton solo_alert_button
AddVideoDialog * create_add_video_dialog()
void connect_dependents_to_session(ARDOUR::Session *)
void transport_forward(int option)
void display_message(const char *prefix, gint prefix_len, Glib::RefPtr< Gtk::TextBuffer::Tag > ptag, Glib::RefPtr< Gtk::TextBuffer::Tag > mtag, const char *msg)
ArdourKeyboard * keyboard
RecentSessionModelColumns recent_session_columns
void session_parameter_changed(std::string)
ArdourButton follow_edits_button
std::list< MidiTracer * > _midi_tracer_windows
void transport_rec_enable_blink(bool onoff)
Gtk::TreeModelColumn< std::string > visible_name
void restore_clock_modes()
void build_session_selector()
WM::ProxyWithConstructor< SessionOptionEditor > session_option_editor
ARDOUR_UI(int *argcp, char **argvp[], const char *localedir)
XMLNode * editor_settings() const
void create_xrun_marker(framepos_t)
WM::Proxy< EngineControl > audio_midi_setup
void xrun_handler(framepos_t)
MainClock * primary_clock
bool first_time_engine_run
sigc::connection point_one_second_connection
Gtk::HBox transport_button_hbox
int get_session_parameters(bool quit_on_cancel, bool should_be_new=false, std::string load_template="")
Gtk::HBox primary_clock_hbox
bool session_is_new() const
int unload_session(bool hide_stuff=false)
int sr_mismatch_dialog(ARDOUR::framecnt_t, ARDOUR::framecnt_t)
void reset_peak_display()
void step_edit_status_change(bool)
bool run_startup(bool should_be_new, std::string load_template)
WM::ProxyWithConstructor< GlobalPortMatrixWindow > midi_port_matrix
Gtk::Fixed transport_base
void transport_record(bool roll)
static ARDOUR_UI * instance()
XMLNode * tearoff_settings(const char *) const
gint exit_on_main_window_close(GdkEventAny *)
bool save_as_progress_update(float fraction, int64_t cnt, int64_t total, Gtk::Label *label, Gtk::ProgressBar *bar)
Gtk::HBox transport_option_button_hbox
void pop_back_splash(Gtk::Window &)
void session_add_audio_route(bool, int32_t, int32_t, ARDOUR::TrackMode, ARDOUR::RouteGroup *, uint32_t, std::string const &)
bool start_video_server(Gtk::Window *float_window, bool popup_msg)
static void close_all_dialogs()
bool click_button_clicked(GdkEventButton *)
void export_video(bool range=false)
void audioengine_became_silent()
void toggle_audio_midi_setup()
static PublicEditor * _instance
Representation of the interface of the Editor class.
void toggle_roll(bool with_abort, bool roll_out_of_bounded_mode)
sigc::connection blink_connection
ARDOUR::SystemExec * video_server_process
bool error_alert_press(GdkEventButton *)
void successful_graph_sort()
void about_signal_response(int response)
void transport_goto_start()
Gtk::Menu * jack_bufsize_menu
void toggle_external_sync()
void we_have_dependents()
void toggle_follow_edits()
UIConfiguration * ui_config
void toggle_send_midi_clock()
WM::Proxy< LocationUIWindow > location_ui
sigc::connection fps_connection
PublicEditor & the_editor()
Gtk::Label buffer_load_label
boost::shared_ptr< TransportControllable > roll_controllable
void detach_tearoff(Gtk::Box *parent, Gtk::Widget *contents)
ArdourButton feedback_alert_button
void transport_play_selection()
void toggle_send_midi_feedback()
void cancel_plugin_scan()
void session_format_mismatch(std::string, std::string)
void map_transport_state()
void flush_videotimeline_cache(bool localcacheonly=false)
const std::string & announce_string() const
void disk_overrun_handler()
float editor_meter_max_peak
ArdourLogLevel _log_not_acknowledged
int build_session_from_dialog(SessionDialog &, const std::string &session_name, const std::string &session_path)
GUIObjectState * gui_object_state
void reattach_tearoff(Gtk::Box *parent, Gtk::Widget *contents, int32_t order)
void reset_group_peak_display(ARDOUR::RouteGroup *)
bool audition_alert_press(GdkEventButton *ev)
void toggle_auto_return()
static ARDOUR_UI * theArdourUI
Gtk::Label status_bar_label
void recent_session_row_activated(const Gtk::TreePath &path, Gtk::TreeViewColumn *col)
void reattach_all_tearoffs()
int ambiguous_file(std::string file, std::vector< std::string > hits)
void every_point_one_seconds()
MainClock * secondary_clock
void set_transport_controllable_state(const XMLNode &)
ArdourButton goto_start_button
Gtk::EventBox menu_bar_base
Gtk::HBox transport_clock_hbox
XMLNode * mixer_settings() const
RecentSessionModelColumns()
void update_buffer_load()
PBD::ScopedConnection halt_connection
TimeInfoBox * time_info_box
ArdourButton auto_loop_button
Gtk::Fixed transport_button_base
void record_state_changed()
std::string _announce_string
void save_session_at_its_request(std::string)
void start_video_server_menu(Gtk::Window *float_window)
Gtk::HBox & editor_transport_box()
bool xrun_button_release(GdkEventButton *ev)
void stop_video_server(bool ask_confirm=false)
Meterbridge * meterbridge
void transport_goto_zero()
WM::ProxyWithConstructor< BigClockWindow > big_clock_window
void new_midi_tracer_window()
void launch_howto_report()
void save_state(const std::string &state_name="", bool switch_to_it=false)
int load_session(const std::string &path, const std::string &snapshot, std::string mix_template=std::string())
BundleManager * create_bundle_manager()
uint32_t rec_enabled_streams
gboolean configure_handler(GdkEventConfigure *conf)
Gtk::Frame transport_button_frame
void soloing_changed(bool)
void update_timecode_format()
GlobalPortMatrixWindow * create_global_port_matrix(ARDOUR::DataType)
static const char * localedir
ArdourButton goto_end_button
ARDOUR::Session * the_session()
gint transport_numpad_timeout()
void plugin_scan_dialog(std::string type, std::string plugin, bool)
VideoTimeLine * video_timeline
void auditioning_changed(bool)
void toggle_meterbridge()
void transport_goto_nth_marker(int nth)
WM::ProxyWithConstructor< GlobalPortMatrixWindow > audio_port_matrix
Gtk::Label disk_space_label
Gtk::VBox transport_button_vbox
sigc::connection clock_signal_connection
ArdourButton midi_panic_button
Gtk::VBox transport_option_button_vbox
void display_cleanup_results(ARDOUR::CleanupReport &rep, const gchar *list_title, const bool msg_delete)
void session_add_midi_track(ARDOUR::RouteGroup *route_group, uint32_t how_many, std::string const &name_template, ARDOUR::PluginInfoPtr instrument)
void setup_order_hint(AddRouteDialog::InsertAt)
void use_menubar_as_top_menubar()
SaveAsDialog * save_as_dialog
void big_clock_value_changed()
Gtk::MenuItem * jack_reconnect_item
double get_value(void) const
void session_add_midi_route(bool, ARDOUR::RouteGroup *, uint32_t, std::string const &, ARDOUR::PluginInfoPtr)
void show_loop_punch_ruler_and_disallow_hide()
void set_transport_sensitivity(bool)
void disk_speed_dialog_gone(int ignored_response, Gtk::MessageDialog *)
void audition_blink(bool)
boost::shared_ptr< TransportControllable > play_selection_controllable
std::string load_template
boost::shared_ptr< TransportControllable > auto_loop_controllable
bool feedback_alert_press(GdkEventButton *)
int do_audio_midi_setup(uint32_t)
Gtk::MenuItem * jack_disconnect_item
void toggle_record_enable(uint32_t)
ARDOUR::microseconds_t last_peak_grab
void disk_underrun_handler()
VisibilityGroup _status_bar_visibility
TransportControllable(std::string name, ARDOUR_UI &, ToggleType)
bool solo_alert_press(GdkEventButton *ev)
Gtk::MenuItem * cleanup_item
Gtk::Tooltips & tooltips()
LIBARDOUR_API int cmp_nocase(const std::string &s, const std::string &s2)
bool have_disk_speed_dialog_displayed
WM::Proxy< ExportVideoDialog > export_video_dialog
void transport_numpad_decimal()
ArdourDialog * session_selector_window
void halt_on_xrun_message()
void loading_message(const std::string &msg)
void toggle_editor_mixer()
Gtk::Frame transport_frame
WM::Proxy< AddRouteDialog > add_route_dialog
boost::shared_ptr< TransportControllable > stop_controllable
ArdourButton error_alert_button
void transport_goto_end()
Gtk::VBox transport_clock_vbox
bool editor_meter_peak_button_release(GdkEventButton *)
void launch_website_dev()
WM::Proxy< SpeakerDialog > speaker_config_window
void feedback_blink(bool)
void primary_clock_value_changed()
sigc::connection _numpad_timeout_connection
ArdourButton auditioning_alert_button
ArdourButton play_selection_button
void session_add_audio_bus(int input_channels, int32_t output_channels, ARDOUR::RouteGroup *route_group, uint32_t how_many, std::string const &name_template)
void transport_goto_wallclock()
Gtk::TreeModelColumn< std::string > tip
ArdourButton auto_return_button
static sigc::signal< void > CloseAllDialogs
void toggle_keep_tearoffs()
void setup_session_options()
Glib::RefPtr< Gtk::ActionGroup > common_actions
bool status_bar_button_press(GdkEventButton *)
bool get_smart_mode() const
std::vector< std::string > positional_sync_strings
WM::Proxy< KeyEditor > key_editor
bool have_configure_timeout
void redisplay_recent_sessions()
void count_recenabled_streams(ARDOUR::Route &)
bool ask_about_loading_existing_session(const std::string &session_path)
void handle_locations_change(ARDOUR::Location *)
void maximise_editing_space()
static UIConfiguration * config()
void launch_cheat_sheet()
PBD::ScopedConnectionList forever_connections
WM::Proxy< RCOptionEditor > rc_option_editor
Gtk::TreeView recent_session_display
void update_sample_rate(ARDOUR::framecnt_t)
void session_dialog(std::string)
void engine_halted(const char *reason, bool free_reason)
void cancel_plugin_timeout()
boost::shared_ptr< TransportControllable > rec_controllable
Gtkmm2ext::TearOff * transport_tearoff
void session_add_mixed_track(const ARDOUR::ChanCount &input, const ARDOUR::ChanCount &output, ARDOUR::RouteGroup *route_group, uint32_t how_many, std::string const &name_template, ARDOUR::PluginInfoPtr instrument)
video-timline controller and display
void toggle_time_master()
ARDOUR::ProcessThread * _process_thread
bool _numpad_locate_happening
void set_session(ARDOUR::Session *)
ArdourButton auto_input_button
Gtk::TreeModelColumn< std::string > fullpath
void set_shuttle_fract(double)
void transport_numpad_event(int num)
void add_routes_part_two()
static sigc::signal< void, framepos_t, bool, framepos_t > Clock
void parameter_changed(std::string)
BigClockWindow * create_big_clock_window()
Gtk::FileChooserDialog * open_session_selector
void transport_rewind(int option)
void every_point_zero_something_seconds()
void toggle_editing_space()
WM::Proxy< RouteParams_UI > route_params
void toggle_rc_options_window()
ArdourButton editor_meter_peak_display
void session_add_audio_track(int input_channels, int32_t output_channels, ARDOUR::TrackMode mode, ARDOUR::RouteGroup *route_group, uint32_t how_many, std::string const &name_template)
int missing_file(ARDOUR::Session *s, std::string str, ARDOUR::DataType type)
XMLNode * keyboard_settings() const
sigc::connection point_zero_something_second_connection
Gtk::Label cpu_load_label
void open_recent_session()
int disconnect_from_engine()
void drop_process_buffers()
void resize_text_widgets()
int build_session(const std::string &path, const std::string &snapshot, ARDOUR::BusProfile &)
void toggle_session_auto_loop()
Gtk::HBox secondary_clock_hbox
Glib::RefPtr< Gtk::TreeStore > recent_session_model
void toggle_session_options_window()
LevelMeterHBox * editor_meter
bool trx_record_enable_all_tracks()
void snapshot_session(bool switch_to_it)
ARDOUR::microseconds_t last_shuttle_request
sigc::connection _autosave_connection
ArdourButton click_button
boost::shared_ptr< TransportControllable > goto_start_controllable
void update_tearoff_visibility()
int save_state_canfail(std::string state_name="", bool switch_to_it=false)
int ask_about_saving_session(const std::vector< std::string > &actions)
void set_fps_timeout_connection()
WM::ProxyWithConstructor< AddVideoDialog > add_video_dialog
ARDOUR::microseconds_t last_configure_time
void add_route(Gtk::Window *float_window)
ARDOUR::Session * _session
void restore_editing_space()
void get_process_buffers()
void synchronize_sync_source_and_video_pullup()
Gtk::HBox _editor_transport_box
Editing of options which are obtained from and written back to one of the .rc files.
void add_video(Gtk::Window *float_window)
Gtk::Label wall_clock_label
int32_t do_engine_start()
boost::shared_ptr< TransportControllable > goto_end_controllable
guint32 last_key_press_time
void _auditioning_changed(bool)
Gtk::Label timecode_format_label
Gtk::HBox transport_tearoff_hbox
void reset_route_peak_display(ARDOUR::Route *)
Gtk::Label sample_rate_label
ShuttleControl * shuttle_box
void load_from_application_api(const std::string &path)
void toggle_mixer_space()
XMLNode & get_transport_controllable_state()
void plugin_scan_timeout(int)
bool main_window_state_event_handler(GdkEventWindowState *, bool window_was_editor)
void transport_play_preroll()
void check_announcements()