From 80a7d32e07e72845dd082f05df8a4219b5ab819e Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Mon, 13 Jul 2020 15:51:25 -0500 Subject: [PATCH] Prompt user for name of Range and Region bounces (gtk part) --- gtk2_ardour/editor_export_audio.cc | 38 +++++++++++++++++++++-- gtk2_ardour/editor_ops.cc | 49 ++++++++++++++++++++++++++++-- 2 files changed, 83 insertions(+), 4 deletions(-) diff --git a/gtk2_ardour/editor_export_audio.cc b/gtk2_ardour/editor_export_audio.cc index ffc1d3808f..93588b6426 100644 --- a/gtk2_ardour/editor_export_audio.cc +++ b/gtk2_ardour/editor_export_audio.cc @@ -48,6 +48,9 @@ #include "ardour_ui.h" #include "ardour_message.h" + +#include "widgets/prompter.h" + #include "audio_region_view.h" #include "audio_time_axis.h" #include "editor.h" @@ -252,6 +255,37 @@ Editor::bounce_region_selection (bool with_processing) * its results back in the playlist (only in the region list). */ + /*prompt the user for a new name*/ + string bounce_name; + { + ArdourWidgets::Prompter dialog (true); + + dialog.set_prompt (_("Name for Bounced Region:")); + + dialog.set_name ("BounceNameWindow"); + dialog.set_size_request (400, -1); + dialog.set_position (Gtk::WIN_POS_MOUSE); + + dialog.add_button (_("Rename"), RESPONSE_ACCEPT); + dialog.set_initial_text (bounce_name); + + Label label; + label.set_text (_("Bounced Region will appear in the Source list.")); + dialog.get_vbox()->set_spacing (8); + dialog.get_vbox()->pack_start (label); + label.show(); + + dialog.show (); + + switch (dialog.run ()) { + case RESPONSE_ACCEPT: + break; + default: + return; + } + dialog.get_result(bounce_name); + } + for (RegionSelection::iterator i = selection->regions.begin(); i != selection->regions.end(); ++i) { boost::shared_ptr region ((*i)->region()); @@ -263,9 +297,9 @@ Editor::bounce_region_selection (bool with_processing) boost::shared_ptr r; if (with_processing) { - r = track->bounce_range (region->position(), region->position() + region->length(), itt, track->main_outs(), false); + r = track->bounce_range (region->position(), region->position() + region->length(), itt, track->main_outs(), false, bounce_name); } else { - r = track->bounce_range (region->position(), region->position() + region->length(), itt, boost::shared_ptr(), false); + r = track->bounce_range (region->position(), region->position() + region->length(), itt, boost::shared_ptr(), false, bounce_name); } } } diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc index 1aba26e0f5..bfea619dcb 100644 --- a/gtk2_ardour/editor_ops.cc +++ b/gtk2_ardour/editor_ops.cc @@ -4055,6 +4055,8 @@ Editor::bounce_range_selection (bool replace, bool enable_processing) return; } + string bounce_name; + TrackSelection views = selection->tracks; for (TrackViewList::iterator i = views.begin(); i != views.end(); ++i) { @@ -4074,6 +4076,49 @@ Editor::bounce_range_selection (bool replace, bool enable_processing) return; } } + + RouteTimeAxisView* rtv = dynamic_cast (*i); + if (rtv && rtv->track()) { + if (i!=views.begin()) + bounce_name.append("+"); + bounce_name.append(rtv->track()->name()); + } + } + + /*prompt the user for a new name*/ + { + ArdourWidgets::Prompter dialog (true); + + if (replace) { + dialog.set_prompt (_("Name for Consolidated Region:")); + } else { + dialog.set_prompt (_("Name for Bounced Region:")); + } + + dialog.set_name ("BounceNameWindow"); + dialog.set_size_request (400, -1); + dialog.set_position (Gtk::WIN_POS_MOUSE); + + dialog.add_button (_("Rename"), RESPONSE_ACCEPT); + dialog.set_initial_text (bounce_name); + + if (!replace) { + Label label; + label.set_text (_("Bounced Range will appear in the Source list.")); + dialog.get_vbox()->set_spacing (8); + dialog.get_vbox()->pack_start (label); + label.show(); + } + + dialog.show (); + + switch (dialog.run ()) { + case RESPONSE_ACCEPT: + break; + default: + return; + } + dialog.get_result(bounce_name); } samplepos_t start = selection->time[clicked_selection].start; @@ -4103,9 +4148,9 @@ Editor::bounce_range_selection (bool replace, bool enable_processing) boost::shared_ptr r; if (enable_processing) { - r = rtv->track()->bounce_range (start, start+cnt, itt, rtv->track()->main_outs(), false); + r = rtv->track()->bounce_range (start, start+cnt, itt, rtv->track()->main_outs(), false, bounce_name); } else { - r = rtv->track()->bounce_range (start, start+cnt, itt, boost::shared_ptr(), false); + r = rtv->track()->bounce_range (start, start+cnt, itt, boost::shared_ptr(), false, bounce_name); } if (!r) {