audacia/src/commands/ImportExportCommands.cpp
Paul Licameli 77d0851a65 Remove class ImportXMLTagHandler...
... It became unused at d39590cf41

And remove some other complications in ProjectFileManager that were used only
in it
2020-09-01 09:03:43 -04:00

115 lines
3.0 KiB
C++

/**********************************************************************
Audacity - A Digital Audio Editor
Copyright 1999-2009 Audacity Team
File License: wxWidgets
Dan Horgan
James Crook
******************************************************************//**
\file ImportExportCommands.cpp
\brief Contains definitions for the ImportCommand and ExportCommand classes
*//*******************************************************************/
#include "../Audacity.h"
#include "ImportExportCommands.h"
#include "LoadCommands.h"
#include "../ProjectFileManager.h"
#include "../ViewInfo.h"
#include "../export/Export.h"
#include "../Shuttle.h"
#include "../ShuttleGui.h"
#include "../wxFileNameWrapper.h"
#include "CommandContext.h"
const ComponentInterfaceSymbol ImportCommand::Symbol
{ XO("Import2") };
namespace{ BuiltinCommandsModule::Registration< ImportCommand > reg; }
bool ImportCommand::DefineParams( ShuttleParams & S ){
S.Define( mFileName, wxT("Filename"), "" );
return true;
}
void ImportCommand::PopulateOrExchange(ShuttleGui & S)
{
S.AddSpace(0, 5);
S.StartMultiColumn(2, wxALIGN_CENTER);
{
S.TieTextBox(XXO("File Name:"),mFileName);
}
S.EndMultiColumn();
}
bool ImportCommand::Apply(const CommandContext & context){
return ProjectFileManager::Get( context.project )
.Import(mFileName, false);
}
bool ExportCommand::DefineParams( ShuttleParams & S ){
wxFileName fn = FileNames::FindDefaultPath(FileNames::Operation::Export);
fn.SetName("exported.wav");
S.Define(mFileName, wxT("Filename"), fn.GetFullPath());
S.Define( mnChannels, wxT("NumChannels"), 1 );
return true;
}
const ComponentInterfaceSymbol ExportCommand::Symbol
{ XO("Export2") };
namespace{ BuiltinCommandsModule::Registration< ExportCommand > reg2; }
void ExportCommand::PopulateOrExchange(ShuttleGui & S)
{
S.AddSpace(0, 5);
S.StartMultiColumn(2, wxALIGN_CENTER);
{
S.TieTextBox(XXO("File Name:"),mFileName);
S.TieTextBox(XXO("Number of Channels:"),mnChannels);
}
S.EndMultiColumn();
}
bool ExportCommand::Apply(const CommandContext & context)
{
double t0, t1;
auto &selectedRegion = ViewInfo::Get( context.project ).selectedRegion;
t0 = selectedRegion.t0();
t1 = selectedRegion.t1();
// Find the extension and check it's valid
int splitAt = mFileName.Find(wxUniChar('.'), true);
if (splitAt < 0)
{
context.Error(wxT("Export filename must have an extension!"));
return false;
}
wxString extension = mFileName.Mid(splitAt+1).MakeUpper();
Exporter exporter{ context.project };
bool exportSuccess = exporter.Process(std::max(0, mnChannels),
extension, mFileName,
true, t0, t1);
if (exportSuccess)
{
context.Status(wxString::Format(wxT("Exported to %s format: %s"),
extension, mFileName));
return true;
}
context.Error(wxString::Format(wxT("Could not export to %s format!"), extension));
return false;
}