diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 3ec4c51fd1..9caf285197 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -504,11 +504,16 @@ private: ArdourWidgets::ArdourVSpacer recpunch_spacer; ArdourWidgets::ArdourVSpacer monitoring_spacer; ArdourWidgets::ArdourVSpacer latency_spacer; + ArdourWidgets::ArdourVSpacer monitor_spacer; ArdourWidgets::ArdourButton monitor_in_button; ArdourWidgets::ArdourButton monitor_disk_button; ArdourWidgets::ArdourButton auto_input_button; + ArdourWidgets::ArdourButton monitor_dim_button; + ArdourWidgets::ArdourButton monitor_mono_button; + ArdourWidgets::ArdourButton monitor_mute_button; + Gtk::Label punch_label; Gtk::Label layered_label; diff --git a/gtk2_ardour/ardour_ui2.cc b/gtk2_ardour/ardour_ui2.cc index adf21ec65a..16b8bea4be 100644 --- a/gtk2_ardour/ardour_ui2.cc +++ b/gtk2_ardour/ardour_ui2.cc @@ -250,6 +250,19 @@ ARDOUR_UI::repack_transport_hbox () io_latency_value.hide (); latency_spacer.hide (); } + + bool show_mnfo = UIConfiguration::instance().get_show_toolbar_monitor_info (); + if (show_mnfo) { + monitor_dim_button.show (); + monitor_mono_button.show (); + monitor_mute_button.show (); + monitor_spacer.show (); + } else { + monitor_dim_button.hide (); + monitor_mono_button.hide (); + monitor_mute_button.hide (); + monitor_spacer.hide (); + } } void @@ -319,6 +332,13 @@ ARDOUR_UI::setup_transport () act = ActionManager::get_action ("Transport", "SessionMonitorDisk"); monitor_disk_button.set_related_action (act); + act = ActionManager::get_action (X_("Monitor Section"), X_("monitor-dim-all")); + monitor_dim_button.set_related_action (act); + act = ActionManager::get_action (X_("Monitor Section"), X_("monitor-mono")); + monitor_mono_button.set_related_action (act); + act = ActionManager::get_action (X_("Monitor Section"), X_("monitor-cut-all")); + monitor_mute_button.set_related_action (act); + act = ActionManager::get_action ("Main", "ToggleLatencyCompensation"); latency_disable_button.set_related_action (act); @@ -375,6 +395,18 @@ ARDOUR_UI::setup_transport () latency_disable_button.set_name ("latency button"); + monitor_dim_button.set_name ("monitor section dim"); + monitor_mono_button.set_name ("monitor section mono"); + monitor_mute_button.set_name ("mute button"); + + monitor_dim_button.set_layout_font (UIConfiguration::instance().get_SmallerFont()); + monitor_mono_button.set_layout_font (UIConfiguration::instance().get_SmallerFont()); + monitor_mute_button.set_layout_font (UIConfiguration::instance().get_SmallerFont()); + + monitor_dim_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text)); + monitor_mono_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text)); + monitor_mute_button.set_elements (ArdourButton::Element(ArdourButton::Body|ArdourButton::Text)); + sync_button.set_name ("transport active option button"); /* and widget text */ @@ -391,6 +423,10 @@ ARDOUR_UI::setup_transport () latency_disable_button.set_text (_("Disable PDC")); io_latency_label.set_text (_("I/O Latency:")); + monitor_dim_button.set_text (_("Dim All")); + monitor_mono_button.set_text (_("Mono")); + monitor_mute_button.set_text (_("Mute All")); + punch_label.set_text (_("Punch:")); layered_label.set_text (_("Rec:")); @@ -414,15 +450,25 @@ ARDOUR_UI::setup_transport () Gtkmm2ext::UI::instance()->set_tip (monitor_in_button, _("Force all tracks to monitor Input, unless they are explicitly set to monitor Disk")); Gtkmm2ext::UI::instance()->set_tip (monitor_disk_button, _("Force all tracks to monitor Disk playback, unless they are explicitly set to Input")); + /* monitor section */ + Gtkmm2ext::UI::instance()->set_tip (monitor_dim_button, _("Monitor section dim output")); + Gtkmm2ext::UI::instance()->set_tip (monitor_mono_button, _("Monitor section mono output")); + Gtkmm2ext::UI::instance()->set_tip (monitor_mute_button, _("Monitor section mute output")); + /* transport control size-group */ Glib::RefPtr punch_button_size_group = SizeGroup::create (Gtk::SIZE_GROUP_HORIZONTAL); punch_button_size_group->add_widget (punch_in_button); punch_button_size_group->add_widget (punch_out_button); + Glib::RefPtr monitoring_button_size_group = SizeGroup::create (Gtk::SIZE_GROUP_HORIZONTAL); + monitoring_button_size_group->add_widget (monitor_in_button); + monitoring_button_size_group->add_widget (monitor_disk_button); + Glib::RefPtr monitor_button_size_group = SizeGroup::create (Gtk::SIZE_GROUP_HORIZONTAL); - monitor_button_size_group->add_widget (monitor_in_button); - monitor_button_size_group->add_widget (monitor_disk_button); + monitor_button_size_group->add_widget (monitor_dim_button); + monitor_button_size_group->add_widget (monitor_mono_button); + monitor_button_size_group->add_widget (monitor_mute_button); /* and now the layout... */ @@ -455,6 +501,15 @@ ARDOUR_UI::setup_transport () alert_box->pack_start (auditioning_alert_button, true, true); alert_box->pack_start (feedback_alert_button, true, true); + /* monitor section sub-group */ + VBox* monitor_box = manage (new VBox); + monitor_box->set_homogeneous (true); + monitor_box->set_spacing (1); + monitor_box->set_border_width (0); + monitor_box->pack_start (monitor_mono_button, true, true); + monitor_box->pack_start (monitor_dim_button, true, true); + monitor_box->pack_start (monitor_mute_button, true, true); + /* clock button size groups */ Glib::RefPtr button_height_size_group = SizeGroup::create (Gtk::SIZE_GROUP_VERTICAL); button_height_size_group->add_widget (follow_edits_button); @@ -585,6 +640,12 @@ ARDOUR_UI::setup_transport () transport_table.attach (*alert_box, TCOL, 0, 2, SHRINK, EXPAND|FILL, hpadding, 0); ++col; + transport_table.attach (monitor_spacer, TCOL, 0, 2 , SHRINK, EXPAND|FILL, 3, 0); + ++col; + + transport_table.attach (*monitor_box, TCOL, 0, 2 , SHRINK, EXPAND|FILL, 3, 0); + ++col; + /* editor-meter, mini-timeline and selection clock are options in the transport_hbox */ transport_hbox.set_spacing (3); transport_table.attach (transport_hbox, TCOL, 0, 2, EXPAND|FILL, EXPAND|FILL, hpadding, 0); diff --git a/gtk2_ardour/ardour_ui_options.cc b/gtk2_ardour/ardour_ui_options.cc index 7491c08975..b53eb63f52 100644 --- a/gtk2_ardour/ardour_ui_options.cc +++ b/gtk2_ardour/ardour_ui_options.cc @@ -440,6 +440,8 @@ ARDOUR_UI::parameter_changed (std::string p) repack_transport_hbox (); } else if (p == "show-toolbar-latency") { repack_transport_hbox (); + } else if (p == "show-toolbar-monitor-info") { + repack_transport_hbox (); } else if (p == "show-editor-meter") { repack_transport_hbox (); } else if (p == "show-secondary-clock") { diff --git a/gtk2_ardour/rc_option_editor.cc b/gtk2_ardour/rc_option_editor.cc index 0de7502a7f..e121730ed2 100644 --- a/gtk2_ardour/rc_option_editor.cc +++ b/gtk2_ardour/rc_option_editor.cc @@ -4122,7 +4122,7 @@ RCOptionEditor::RCOptionEditor () add_option (_("Appearance/Toolbar"), new BoolOption ( "show-toolbar-monitoring", - _("Display Monitor Options"), + _("Display Monitoring Options"), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_show_toolbar_monitoring), sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_toolbar_monitoring) )); @@ -4135,14 +4135,6 @@ RCOptionEditor::RCOptionEditor () sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_toolbar_latency) )); - add_option (_("Appearance/Toolbar"), - new BoolOption ( - "show-toolbar-selclock", - _("Display Selection Clock"), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_show_toolbar_selclock), - sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_toolbar_selclock) - )); - if (!ARDOUR::Profile->get_small_screen()) { add_option (_("Appearance/Toolbar"), new BoolOption ( @@ -4153,6 +4145,22 @@ RCOptionEditor::RCOptionEditor () )); } + add_option (_("Appearance/Toolbar"), + new BoolOption ( + "show-toolbar-selclock", + _("Display Selection Clock"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_show_toolbar_selclock), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_toolbar_selclock) + )); + + add_option (_("Appearance/Toolbar"), + new BoolOption ( + "show-toolbar-monitor-info", + _("Display Monitor Section Info"), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::get_show_toolbar_monitor_info), + sigc::mem_fun (UIConfiguration::instance(), &UIConfiguration::set_show_toolbar_monitor_info) + )); + add_option (_("Appearance/Toolbar"), new BoolOption ( "show-mini-timeline", diff --git a/gtk2_ardour/ui_config_vars.h b/gtk2_ardour/ui_config_vars.h index 7eec8a83c4..94a1e67c9b 100644 --- a/gtk2_ardour/ui_config_vars.h +++ b/gtk2_ardour/ui_config_vars.h @@ -90,6 +90,7 @@ UI_CONFIG_VARIABLE (bool, show_toolbar_recpunch, "show-toolbar-recpunch", true) UI_CONFIG_VARIABLE (bool, show_toolbar_monitoring, "show-toolbar-monitoring", false) UI_CONFIG_VARIABLE (bool, show_toolbar_selclock, "show-toolbar-selclock", false) UI_CONFIG_VARIABLE (bool, show_toolbar_latency, "show-toolbar-latency", false) +UI_CONFIG_VARIABLE (bool, show_toolbar_monitor_info, "show-toolbar-monitor-info", false) UI_CONFIG_VARIABLE (bool, show_mini_timeline, "show-mini-timeline", true) UI_CONFIG_VARIABLE (bool, show_secondary_clock, "show-secondary-clock", true) UI_CONFIG_VARIABLE (double, waveform_clip_level, "waveform-clip-level", -0.0933967) /* units of dB */