13
0

Use new record-mode pref (2/2), GUI control

This commit is contained in:
Robin Gareus 2022-09-19 22:47:59 +02:00
parent e38cb08901
commit 5fb628d3ed
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
6 changed files with 40 additions and 25 deletions

View File

@ -204,6 +204,13 @@ ARDOUR_UI *ARDOUR_UI::theArdourUI = 0;
sigc::signal<void, timepos_t> ARDOUR_UI::Clock;
sigc::signal<void> ARDOUR_UI::CloseAllDialogs;
static const gchar *_record_mode_strings[] = {
N_("Layerered"),
N_("Non Layered"),
N_("Sound on Sound"),
0
};
static bool
ask_about_configuration_copy (string const & old_dir, string const & new_dir, int version)
{
@ -351,6 +358,8 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir)
UIConfiguration::instance().post_gui_init ();
record_mode_strings = I18N (_record_mode_strings);
if (ARDOUR::handle_old_configuration_files (boost::bind (ask_about_configuration_copy, _1, _2, _3))) {
{
/* "touch" the been-here-before path now that config has been migrated */
@ -2137,7 +2146,7 @@ void
ARDOUR_UI::map_transport_state ()
{
if (!_session) {
layered_button.set_sensitive (false);
record_mode_selector.set_sensitive (false);
if (UIConfiguration::instance().get_screen_saver_mode () == InhibitWhileRecording) {
inhibit_screensaver (false);
}
@ -2149,9 +2158,9 @@ ARDOUR_UI::map_transport_state ()
float sp = _session->transport_speed();
if (sp != 0.0f) {
layered_button.set_sensitive (!_session->actively_recording ());
record_mode_selector.set_sensitive (!_session->actively_recording ());
} else {
layered_button.set_sensitive (true);
record_mode_selector.set_sensitive (true);
update_disk_space ();
}
if (UIConfiguration::instance().get_screen_saver_mode () == InhibitWhileRecording) {

View File

@ -522,9 +522,9 @@ private:
TransportControlUI transport_ctrl;
ArdourWidgets::ArdourButton punch_in_button;
ArdourWidgets::ArdourButton punch_out_button;
ArdourWidgets::ArdourButton layered_button;
ArdourWidgets::ArdourButton punch_in_button;
ArdourWidgets::ArdourButton punch_out_button;
ArdourWidgets::ArdourDropdown record_mode_selector;
ArdourWidgets::ArdourVSpacer recpunch_spacer;
ArdourWidgets::ArdourVSpacer latency_spacer;
@ -604,7 +604,7 @@ private:
void audition_alert_clicked ();
bool error_alert_press (GdkEventButton *);
void layered_button_clicked ();
void set_record_mode (ARDOUR::RecordMode);
void big_clock_value_changed ();
void primary_clock_value_changed ();
@ -835,6 +835,7 @@ private:
void editor_realized ();
std::vector<std::string> positional_sync_strings;
std::vector<std::string> record_mode_strings;
void toggle_use_mmc ();
void toggle_send_mmc ();

View File

@ -91,7 +91,7 @@ ARDOUR_UI::setup_tooltips ()
ArdourCanvas::Canvas::set_tooltip_timeout (Gtk::Settings::get_default()->property_gtk_tooltip_timeout ());
set_tip (auto_return_button, _("Return to last playback start when stopped"));
set_tip (layered_button, _("<b>When active</b>, new recordings will be added as regions on a layer atop existing regions.\n<b>When disabled</b>, the underlying region will be spliced and replaced with the newly recorded region."));
set_tip (record_mode_selector, _("<b>Layered</b>, new recordings will be added as regions on a layer atop existing regions.\n<b>SoundOnSound</b>, behaves like <i>Layered</i>, except underlying regions will be audible.\n<b>Non Layered</b>, the underlying region will be spliced and replaced with the newly recorded region."));
set_tip (follow_edits_button, _("Playhead follows Range tool clicks, and Range selections"));
parameter_changed("click-gain");
set_tip (solo_alert_button, _("When active, something is soloed.\nClick to de-solo everything"));
@ -241,14 +241,14 @@ ARDOUR_UI::repack_transport_hbox ()
layered_label.show ();
punch_in_button.show ();
punch_out_button.show ();
layered_button.show ();
record_mode_selector.show ();
recpunch_spacer.show ();
} else {
punch_label.hide ();
layered_label.hide ();
punch_in_button.hide ();
punch_out_button.hide ();
layered_button.hide ();
record_mode_selector.hide ();
recpunch_spacer.hide ();
}
@ -336,8 +336,6 @@ ARDOUR_UI::setup_transport ()
error_alert_button.set_related_action(act);
error_alert_button.set_fallthrough_to_parent(true);
layered_button.signal_clicked.connect (sigc::mem_fun(*this,&ARDOUR_UI::layered_button_clicked));
editor_visibility_button.set_related_action (ActionManager::get_action (X_("Common"), X_("change-editor-visibility")));
mixer_visibility_button.set_related_action (ActionManager::get_action (X_("Common"), X_("change-mixer-visibility")));
prefs_visibility_button.set_related_action (ActionManager::get_action (X_("Common"), X_("change-preferences-visibility")));
@ -423,7 +421,7 @@ ARDOUR_UI::setup_transport ()
punch_in_button.set_name ("punch button");
punch_out_button.set_name ("punch button");
layered_button.set_name (("layered button"));
record_mode_selector.set_name (("record mode button"));
latency_disable_button.set_name ("latency button");
@ -446,7 +444,12 @@ ARDOUR_UI::setup_transport ()
follow_edits_button.set_text(_("Follow Range"));
punch_in_button.set_text (_("In"));
punch_out_button.set_text (_("Out"));
layered_button.set_text (_("Non-Layered"));
record_mode_selector.AddMenuElem (MenuElem (record_mode_strings[(int)RecLayered], sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::set_record_mode), RecLayered)));
record_mode_selector.AddMenuElem (MenuElem (record_mode_strings[(int)RecNonLayered], sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::set_record_mode), RecNonLayered)));
record_mode_selector.AddMenuElem (MenuElem (record_mode_strings[(int)RecSoundOnSound], sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::set_record_mode), RecSoundOnSound)));
set_size_request_to_display_given_text (record_mode_selector, record_mode_strings, /*COMBO_TRIANGLE_WIDTH*/ 5, 2);
latency_disable_button.set_text (_("Disable PDC"));
io_latency_label.set_text (_("I/O Latency:"));
@ -561,7 +564,7 @@ ARDOUR_UI::setup_transport ()
//punch section
button_height_size_group->add_widget (punch_in_button);
button_height_size_group->add_widget (punch_out_button);
button_height_size_group->add_widget (layered_button);
button_height_size_group->add_widget (record_mode_selector);
// PDC
button_height_size_group->add_widget (latency_disable_button);
@ -603,10 +606,10 @@ ARDOUR_UI::setup_transport ()
transport_table.attach (layered_label, TCOL, 1, 2 , FILL, SHRINK, 3, 0);
++col;
transport_table.attach (punch_in_button, col, col + 1, 0, 1 , FILL, SHRINK, hpadding, vpadding);
transport_table.attach (punch_space, col + 1, col + 2, 0, 1 , FILL, SHRINK, 0, vpadding);
transport_table.attach (punch_out_button, col + 2, col + 3, 0, 1 , FILL, SHRINK, hpadding, vpadding);
transport_table.attach (layered_button, col, col + 3, 1, 2 , FILL, SHRINK, hpadding, vpadding);
transport_table.attach (punch_in_button, col, col + 1, 0, 1 , FILL, SHRINK, hpadding, vpadding);
transport_table.attach (punch_space, col + 1, col + 2, 0, 1 , FILL, SHRINK, 0, vpadding);
transport_table.attach (punch_out_button, col + 2, col + 3, 0, 1 , FILL, SHRINK, hpadding, vpadding);
transport_table.attach (record_mode_selector, col, col + 3, 1, 2 , FILL, SHRINK, hpadding, vpadding);
col += 3;
transport_table.attach (recpunch_spacer, TCOL, 0, 2 , SHRINK, EXPAND|FILL, 3, 0);
@ -805,10 +808,10 @@ ARDOUR_UI::error_alert_press (GdkEventButton* ev)
}
void
ARDOUR_UI::layered_button_clicked ()
ARDOUR_UI::set_record_mode (RecordMode m)
{
if (_session) {
_session->config.set_layered_record_mode (!_session->config.get_layered_record_mode ());
_session->config.set_record_mode (m);
}
}

View File

@ -466,8 +466,10 @@ ARDOUR_UI::parameter_changed (std::string p)
} else if (p == "cue-behavior") {
CueBehavior cb (_session->config.get_cue_behavior());
_cue_play_enable.set_active (cb & ARDOUR::FollowCues);
} else if (p == "layered-record-mode") {
layered_button.set_active (_session->config.get_layered_record_mode ());
} else if (p == "record-mode") {
size_t m = _session->config.get_record_mode ();
assert (m < record_mode_strings.size ());
record_mode_selector.set_active (record_mode_strings[m]);
} else if (p == "flat-buttons") {
bool flat = UIConfiguration::instance().get_flat_buttons();
if (ArdourButton::flat_buttons () != flat) {

View File

@ -2635,7 +2635,7 @@ Editor::insert_source_list_selection (float times)
playlist->clear_changes ();
playlist->clear_owned_changes ();
playlist->add_region ((RegionFactory::create (region, true)), get_preferred_edit_position(), times, _session->config.get_layered_record_mode()); //ToDo: insert_mode ?
playlist->add_region ((RegionFactory::create (region, true)), get_preferred_edit_position(), times, RecNonLayered == _session->config.get_record_mode()); //ToDo: insert_mode ?
if (should_ripple()) {
do_ripple (playlist, get_preferred_edit_position(), region->length().scale (times), boost::shared_ptr<Region>(), true);

View File

@ -2032,7 +2032,7 @@ RouteUI::parameter_changed (string const & p)
update_monitoring_display ();
} else if (p == "triggerbox-overrides-disk-monitoring") {
update_monitoring_display ();
} else if (p == "layered-record-mode") {
} else if (p == "record-mode") {
update_monitoring_display ();
} else if (p == "auto-input-does-talkback") {
update_monitoring_display ();