21 #include "gtk2ardour-config.h"
32 #include <glibmm/miscutils.h>
65 #include "control_protocol/control_protocol.h"
96 Glib::RefPtr<ActionGroup> main_actions = ActionGroup::create (
X_(
"Main"));
97 Glib::RefPtr<ActionGroup> main_menu_actions = ActionGroup::create (
X_(
"Main_menu"));
98 Glib::RefPtr<Action> act;
139 act->set_sensitive (
false);
191 common_actions = ActionGroup::create (
X_(
"Common"));
227 Glib::RefPtr<ActionGroup> transport_actions = ActionGroup::create (
X_(
"Transport"));
387 act->set_short_label (
_(
"In"));
391 act->set_short_label (
_(
"Out"));
395 act->set_short_label (
_(
"In/Out"));
422 for (
int i = 1; i <= 32; ++i) {
424 string const n =
string_compose (
_(
"Toggle Record Enable Track %1"), i);
429 Glib::RefPtr<ActionGroup> shuttle_actions = ActionGroup::create (
"ShuttleActions");
431 shuttle_actions->add (Action::create (
X_(
"SetShuttleUnitsPercentage"),
_(
"Percentage")), hide_return (sigc::bind (sigc::mem_fun (*
Config, &RCConfiguration::set_shuttle_units),
Percentage)));
432 shuttle_actions->add (Action::create (
X_(
"SetShuttleUnitsSemitones"),
_(
"Semitones")), hide_return (sigc::bind (sigc::mem_fun (*
Config, &RCConfiguration::set_shuttle_units),
Semitones)));
434 Glib::RefPtr<ActionGroup> option_actions = ActionGroup::create (
"options");
449 Glib::RefPtr<ActionGroup> midi_actions = ActionGroup::create (
X_(
"MIDI"));
465 menu_bar->set_name (
"MainMenuBar");
475 gtk_settings_set_long_property (gtk_settings_get_default(),
"gtk-can-change-accels", 1,
"Ardour:designers");
477 EventBox* ev = manage (
new EventBox);
480 hbox->set_name (
X_(
"StatusBarBox"));
482 hbox->set_border_width (3);
484 VBox* vbox = manage (
new VBox);
485 vbox->pack_start (*hbox,
true,
false);
490 wall_clock_label.set_name (
"WallClock");
491 wall_clock_label.set_use_markup ();
492 disk_space_label.set_name (
"WallClock");
493 disk_space_label.set_use_markup ();
494 timecode_format_label.set_name (
"WallClock");
495 timecode_format_label.set_use_markup ();
496 cpu_load_label.set_name (
"CPULoad");
497 cpu_load_label.set_use_markup ();
498 xrun_label.set_name (
"XrunLabel");
499 xrun_label.set_use_markup ();
500 buffer_load_label.set_name (
"BufferLoad");
501 buffer_load_label.set_use_markup ();
502 sample_rate_label.set_name (
"SampleRate");
503 sample_rate_label.set_use_markup ();
504 format_label.set_name (
"Format");
505 format_label.set_use_markup ();
508 menu_hbox.pack_start (*menu_bar,
false,
false);
510 use_menubar_as_top_menubar ();
513 bool wall_clock =
false;
514 bool disk_space =
false;
524 hbox->pack_end (error_alert_button,
false,
false, 2);
526 hbox->pack_end (wall_clock_label,
false,
false, 2);
527 hbox->pack_end (disk_space_label,
false,
false, 4);
528 hbox->pack_end (xrun_label,
false,
false, 4);
529 hbox->pack_end (cpu_load_label,
false,
false, 4);
530 hbox->pack_end (buffer_load_label,
false,
false, 4);
531 hbox->pack_end (sample_rate_label,
false,
false, 4);
532 hbox->pack_end (timecode_format_label,
false,
false, 4);
533 hbox->pack_end (format_label,
false,
false, 4);
535 menu_hbox.pack_end (*ev,
false,
false, 2);
537 menu_bar_base.set_name (
"MainMenuBar");
538 menu_bar_base.add (menu_hbox);
541 _status_bar_visibility.add (&wall_clock_label,
X_(
"WallClock"),
_(
"Wall Clock"), wall_clock);
543 _status_bar_visibility.add (&disk_space_label,
X_(
"Disk"),
_(
"Disk Space"), disk_space);
544 _status_bar_visibility.add (&cpu_load_label,
X_(
"DSP"),
_(
"DSP"),
true);
545 _status_bar_visibility.add (&xrun_label,
X_(
"XRun"),
_(
"X-run"),
false);
546 _status_bar_visibility.add (&buffer_load_label,
X_(
"Buffers"),
_(
"Buffers"),
true);
547 _status_bar_visibility.add (&sample_rate_label,
X_(
"Audio"),
_(
"Audio"),
true);
548 _status_bar_visibility.add (&timecode_format_label,
X_(
"TCFormat"),
_(
"Timecode Format"),
true);
549 _status_bar_visibility.add (&format_label,
X_(
"Format"),
_(
"File Format"),
true);
590 if (!keyboard || !mixer || !editor || !meterbridge) {
603 window_node->
add_property (_status_bar_visibility.get_state_name().c_str(), _status_bar_visibility.get_state_value ());
613 if (transport_tearoff) {
615 transport_tearoff->add_state (*t);
619 if (mixer->monitor_section()) {
621 mixer->monitor_section()->tearoff().add_state (*t);
625 if (editor->mouse_mode_tearoff()) {
627 editor->mouse_mode_tearoff ()->add_state (*t);
638 ui_config->save_state ();
640 XMLNode& enode (static_cast<Stateful*>(editor)->get_state());
641 XMLNode& mnode (mixer->get_state());
642 XMLNode& bnode (meterbridge->get_state());
645 _session->add_instant_xml (enode);
646 _session->add_instant_xml (mnode);
647 _session->add_instant_xml (bnode);
649 _session->add_instant_xml (location_ui->ui().get_state ());
660 Keyboard::save_keybindings ();
674 if (editor && primary_clock) {
676 primary_clock->focus ();
683 if (ev->button != 1 || !Keyboard::modifier_state_equals (ev->state, Keyboard::TertiaryModifier)) {
688 _session->reset_xrun_count ();
689 update_xrun_count ();
void toggle_mixer_window()
LIBGTKMM2EXT_API Gtk::Widget * get_widget(const char *name)
void transport_forward(int option)
LIBGTKMM2EXT_API void set_size_request_to_display_given_text(Gtk::Widget &w, const gchar *text, gint hpadding, gint vpadding)
int get_session_parameters(bool quit_on_cancel, bool should_be_new=false, std::string load_template="")
void transport_record(bool roll)
virtual void transition_to_rolling(bool fwd)=0
static ARDOUR_UI * instance()
static Manager & instance()
bool button_press_event(GdkEventButton *)
void export_video(bool range=false)
void toggle_roll(bool with_abort, bool roll_out_of_bounded_mode)
void transport_goto_start()
void toggle_external_sync()
void toggle_follow_edits()
void toggle_send_midi_clock()
void transport_play_selection()
void toggle_send_midi_feedback()
virtual void stem_export()=0
typedefG_BEGIN_DECLS struct _GtkApplicationMenuGroup GtkApplicationMenuGroup
void toggle_auto_return()
void reattach_all_tearoffs()
bool xrun_button_release(GdkEventButton *ev)
void transport_goto_zero()
void new_midi_tracer_window()
void launch_howto_report()
void save_state(const std::string &state_name="", bool switch_to_it=false)
LIBARDOUR_API RCConfiguration * Config
void add_app_menu_item(GtkApplicationMenuGroup *, Gtk::MenuItem *)
void toggle_meterbridge()
void use_menubar_as_top_menubar()
void toggle_record_enable(uint32_t)
std::vector< Glib::RefPtr< Gtk::Action > > write_sensitive_actions
std::vector< Glib::RefPtr< Gtk::Action > > session_sensitive_actions
void transport_numpad_decimal()
void toggle_editor_mixer()
LIBARDOUR_API RuntimeProfile * Profile
void transport_goto_end()
void launch_website_dev()
XMLProperty * add_property(const char *name, const std::string &value)
void add_child_nocopy(XMLNode &)
GtkApplicationMenuGroup * add_app_menu_group()
void transport_goto_wallclock()
void toggle_keep_tearoffs()
LIBGTKMM2EXT_API Glib::RefPtr< Gtk::Action > register_toggle_action(Glib::RefPtr< Gtk::ActionGroup > group, const char *name, const char *label, sigc::slot< void > sl, guint key, Gdk::ModifierType mods)
bool get_small_screen() const
void launch_cheat_sheet()
virtual void export_audio()=0
void toggle_time_master()
void transport_numpad_event(int num)
void transport_rewind(int option)
void toggle_editing_space()
void open_recent_session()
void resize_text_widgets()
void toggle_session_auto_loop()
void add_state(XMLNode &) const
void add_extra_xml(XMLNode &)
void snapshot_session(bool switch_to_it)
LIBGTKMM2EXT_API void add_action_group(Glib::RefPtr< Gtk::ActionGroup >)
void add_instant_xml(XMLNode &)
void set_menu_bar(Gtk::MenuShell &)
LIBGTKMM2EXT_API Glib::RefPtr< Gtk::Action > register_action(Glib::RefPtr< Gtk::ActionGroup > group, const char *name, const char *label)
void add_route(Gtk::Window *float_window)
void add_video(Gtk::Window *float_window)
std::vector< Glib::RefPtr< Gtk::Action > > transport_sensitive_actions
std::string string_compose(const std::string &fmt, const T1 &o1)
void toggle_mixer_space()
bool main_window_state_event_handler(GdkEventWindowState *, bool window_was_editor)
void transport_play_preroll()