X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Feditor_timefx.cc;h=2efdc03f8fdca0c723997ea380732ed01ef2b7e8;hb=60b97472b1e99c75fe68dd20de59d105c09b6c4e;hp=278ab57ebde106c2f3b52c97a7c497ddd4c2a7b0;hpb=cc2767caf32486365a33814149e75c6e588e8603;p=ardour.git diff --git a/gtk2_ardour/editor_timefx.cc b/gtk2_ardour/editor_timefx.cc index 278ab57ebd..2efdc03f8f 100644 --- a/gtk2_ardour/editor_timefx.cc +++ b/gtk2_ardour/editor_timefx.cc @@ -15,7 +15,6 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - $Id$ */ #include @@ -25,10 +24,13 @@ #include #include +#include + +#include #include "editor.h" #include "audio_time_axis.h" -#include "regionview.h" +#include "audio_region_view.h" #include "region_selection.h" #include @@ -44,6 +46,7 @@ using namespace ARDOUR; using namespace PBD; using namespace sigc; using namespace Gtk; +using namespace Gtkmm2ext; Editor::TimeStretchDialog::TimeStretchDialog (Editor& e) : ArdourDialog ("time stretch dialog"), @@ -53,9 +56,12 @@ Editor::TimeStretchDialog::TimeStretchDialog (Editor& e) { set_modal (true); set_position (Gtk::WIN_POS_MOUSE); - set_title (_("ardour: timestretch")); set_name (N_("TimeStretchDialog")); + WindowTitle title(Glib::get_application_name()); + title += _("Timestretch"); + set_title(title.get_string()); + get_vbox()->set_spacing (5); get_vbox()->set_border_width (5); get_vbox()->pack_start (upper_button_box); @@ -100,7 +106,7 @@ Editor::TimeStretchDialog::delete_timestretch_in_progress (GdkEventAny* ev) } int -Editor::run_timestretch (AudioRegionSelection& regions, float fraction) +Editor::run_timestretch (RegionSelection& regions, float fraction) { pthread_t thread; @@ -157,39 +163,39 @@ Editor::run_timestretch (AudioRegionSelection& regions, float fraction) void Editor::do_timestretch (TimeStretchDialog& dialog) { - AudioTrack* at; - Playlist* playlist; - AudioRegion* new_region; - + Track* t; + boost::shared_ptr playlist; + boost::shared_ptr new_region; - for (AudioRegionSelection::iterator i = dialog.regions.begin(); i != dialog.regions.end(); ) { + for (RegionSelection::iterator i = dialog.regions.begin(); i != dialog.regions.end(); ) { + AudioRegionView* arv = dynamic_cast(*i); + if (!arv) + continue; - AudioRegion& aregion ((*i)->region); - TimeAxisView* tv = &(*i)->get_time_axis_view(); - AudioTimeAxisView* atv; - AudioRegionSelection::iterator tmp; + boost::shared_ptr region (arv->audio_region()); + TimeAxisView* tv = &(arv->get_time_axis_view()); + RouteTimeAxisView* rtv; + RegionSelection::iterator tmp; - cerr << "stretch " << aregion.name() << endl; - tmp = i; ++tmp; - if ((atv = dynamic_cast (tv)) == 0) { + if ((rtv = dynamic_cast (tv)) == 0) { i = tmp; continue; } - if ((at = atv->audio_track()) == 0) { + if ((t = dynamic_cast (rtv->route().get())) == 0) { i = tmp; continue; } - if ((playlist = at->disk_stream().playlist()) == 0) { + if ((playlist = t->diskstream()->playlist()) == 0) { i = tmp; continue; } - dialog.request.region = &aregion; + dialog.request.region = region; if (!dialog.request.running) { /* we were cancelled */ @@ -203,15 +209,17 @@ Editor::do_timestretch (TimeStretchDialog& dialog) return; } - session->add_undo (playlist->get_memento()); - playlist->replace_region (aregion, *new_region, aregion.position()); - session->add_redo_no_execute (playlist->get_memento()); + XMLNode &before = playlist->get_state(); + playlist->replace_region (region, new_region, region->position()); + XMLNode &after = playlist->get_state(); + session->add_command (new MementoCommand(*playlist, &before, &after)); i = tmp; } dialog.status = 0; dialog.request.running = false; + dialog.request.region.reset (); } void*