# HG changeset patch # User Chris Cannam # Date 1159869997 0 # Node ID 5c20bb3e6c94af85386aac7287ef78a148458248 # Parent 8cd725696138824025d392cf6bdf1b654004add5 * Restructure WavFileWriter a bit to permit writing from raw data as well as from an existing model diff -r 8cd725696138 -r 5c20bb3e6c94 main/MainWindow.cpp --- a/main/MainWindow.cpp Mon Sep 25 12:05:41 2006 +0000 +++ b/main/MainWindow.cpp Tue Oct 03 10:06:37 2006 +0000 @@ -1667,18 +1667,14 @@ bool ok = false; QString error; - WavFileWriter *writer = 0; MultiSelection ms = m_viewManager->getSelection(); MultiSelection::SelectionList selections = m_viewManager->getSelections(); bool multiple = false; - if (selections.empty()) { - - writer = new WavFileWriter(path, getMainModel()->getSampleRate(), - getMainModel(), 0); - - } else if (selections.size() == 1) { + MultiSelection *selectionToWrite = 0; + + if (selections.size() == 1) { QStringList items; items << tr("Export the selected region only") @@ -1692,24 +1688,15 @@ if (!ok || item.isEmpty()) return; - if (item == items[0]) { - - writer = new WavFileWriter(path, getMainModel()->getSampleRate(), - getMainModel(), &ms); - - } else { - - writer = new WavFileWriter(path, getMainModel()->getSampleRate(), - getMainModel(), 0); - } - } else { + if (item == items[0]) selectionToWrite = &ms; + + } else if (selections.size() > 1) { QStringList items; items << tr("Export the selected regions into a single audio file") << tr("Export the selected regions into separate files") << tr("Export the whole audio file"); - bool ok = false; QString item = ListInputDialog::getItem (this, tr("Select region to export"), tr("Multiple regions of the original audio file are selected.\nWhat do you want to export?"), @@ -1719,15 +1706,9 @@ if (item == items[0]) { - writer = new WavFileWriter(path, getMainModel()->getSampleRate(), - getMainModel(), &ms); - - } else if (item == items[2]) { - - writer = new WavFileWriter(path, getMainModel()->getSampleRate(), - getMainModel(), 0); - - } else { + selectionToWrite = &ms; + + } else if (item == items[1]) { multiple = true; @@ -1749,9 +1730,10 @@ break; } - WavFileWriter subwriter(subpath, getMainModel()->getSampleRate(), - getMainModel(), &subms); - subwriter.write(); + WavFileWriter subwriter(subpath, + getMainModel()->getSampleRate(), + getMainModel()->getChannelCount()); + subwriter.writeModel(getMainModel(), &subms); ok = subwriter.isOK(); if (!ok) { @@ -1762,11 +1744,13 @@ } } - if (writer) { - writer->write(); - ok = writer->isOK(); - error = writer->getError(); - delete writer; + if (!multiple) { + WavFileWriter writer(path, + getMainModel()->getSampleRate(), + getMainModel()->getChannelCount()); + writer.writeModel(getMainModel(), selectionToWrite); + ok = writer.isOK(); + error = writer.getError(); } if (ok) {