void ExportMultiple::OnExport(wxCommandEvent& event) { ShuttleGui S(this, eIsSavingToPrefs); PopulateOrExchange(S); // Make sure the output directory is in good shape if (!DirOk()) { return; } mFormatIndex = mFormat->GetSelection(); bool overwrite = mOverwrite->GetValue(); if (mPlugins[mFormatIndex]->GetCanMetaData()) { Tags *tags = mProject->GetTags(); if (tags->IsEmpty()) { wxString saveTitle = tags->GetTitle(); int saveTrackNumber = tags->GetTrackNumber(); tags->SetTitle(wxT("(automatic)")); tags->SetTrackNumber(0); tags->AllowEditTitle(false); tags->AllowEditTrackNumber(false); bool rval = tags->ShowEditDialog(mProject, _("Edit the ID3 tags for all MP3 files"), true); tags->AllowEditTitle(true); tags->AllowEditTrackNumber(true); if (!rval) { tags->SetTitle(saveTitle); tags->SetTrackNumber(saveTrackNumber); return; } } } bool ok; if (mLabel->GetValue()) { ok = ExportMultipleByLabel(mByName->GetValue(), mPrefix->GetValue()); } else { ok = ExportMultipleByTrack(mByName->GetValue(), mPrefix->GetValue()); } if (!ok) { return; } EndModal(1); }
bool ExportMultiple::DoExport(bool stereo, wxString name, bool selectedOnly, double t0, double t1, int trackNumber) { wxFileName fn(mDir->GetValue(), name, mPlugins[mFormatIndex]->GetExtension()); // Generate a unique name if we're not allowed to overwrite if (!mOverwrite->GetValue()) { int i = 2; while (fn.FileExists()) { fn.SetName(wxString::Format(wxT("%s-%d"), name.c_str(), i++)); } } // If the format supports tags, then set the name and track number if (mPlugins[mFormatIndex]->GetCanMetaData()) { Tags *tags = mProject->GetTags(); tags->SetTitle(name); tags->SetTrackNumber(trackNumber); } // Call the format export routine return mPlugins[mFormatIndex]->Export(mProject, stereo ? 2 : 1, fn.GetFullPath(), selectedOnly, t0, t1); }