1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-22 14:32:58 +02:00
Files
audacity/src/BatchCommands.h
Paul Licameli b84f5b66f0 CommandManager.cpp does not depend on EffectManager...
... some code lifted into BatchCommands.cpp to realize this.

It also doesn't depend on PluginManager, but that is not important for breaking
cycles.
2019-06-16 01:24:29 -04:00

132 lines
4.3 KiB
C++

/**********************************************************************
Audacity: A Digital Audio Editor
MacroCommands.h
Dominic Mazzoni
James Crook
**********************************************************************/
#ifndef __AUDACITY_BATCH_COMMANDS_DIALOG__
#define __AUDACITY_BATCH_COMMANDS_DIALOG__
#include <wx/defs.h>
#include "export/Export.h"
#include "commands/CommandFlag.h"
class wxArrayString;
class Effect;
class CommandContext;
class CommandManager;
class AudacityProject;
class wxArrayStringEx;
class MacroCommandsCatalog {
public:
// A triple of user-visible name, internal string identifier and type/help string.
struct Entry {
TranslatedInternalString name;
wxString category;
};
using Entries = std::vector<Entry>;
MacroCommandsCatalog( const AudacityProject *project );
// binary search
Entries::const_iterator ByFriendlyName( const wxString &friendlyName ) const;
// linear search
Entries::const_iterator ByCommandId( const CommandID &commandId ) const;
// Lookup by position as sorted by friendly name
const Entry &operator[] ( size_t index ) const { return mCommands[index]; }
Entries::const_iterator begin() const { return mCommands.begin(); }
Entries::const_iterator end() const { return mCommands.end(); }
private:
// Sorted by friendly name
Entries mCommands;
};
// Stores information for one macro
class MacroCommands final {
public:
// constructors and destructors
MacroCommands();
public:
bool ApplyMacro( const MacroCommandsCatalog &catalog,
const wxString & filename = {});
static bool HandleTextualCommand( CommandManager &commandManager,
const CommandID & Str,
const CommandContext & context, CommandFlag flags, bool alwaysEnabled);
bool ApplyCommand( const wxString &friendlyCommand,
const CommandID & command, const wxString & params,
CommandContext const * pContext=NULL );
bool ApplyCommandInBatchMode( const wxString &friendlyCommand,
const CommandID & command, const wxString &params,
CommandContext const * pContext = NULL);
bool ApplySpecialCommand(
int iCommand, const wxString &friendlyCommand,
const CommandID & command, const wxString & params);
bool ApplyEffectCommand(
const PluginID & ID, const wxString &friendlyCommand,
const CommandID & command,
const wxString & params, const CommandContext & Context);
bool ReportAndSkip( const wxString & friendlyCommand, const wxString & params );
void AbortBatch();
// Utility functions for the special commands.
static wxString BuildCleanFileName(const FilePath &fileName,
const FileExtension &extension);
bool WriteMp3File( const wxString & Name, int bitrate );
double GetEndTime();
static bool IsMono();
// These commands do not depend on the command list.
static void MigrateLegacyChains();
static wxArrayString GetNames();
static wxArrayStringEx GetNamesOfDefaultMacros();
static wxString GetCurrentParamsFor(const CommandID & command);
static wxString PromptForParamsFor(const CommandID & command, const wxString & params, wxWindow *parent);
static wxString PromptForPresetFor(const CommandID & command, const wxString & params, wxWindow *parent);
// These commands do depend on the command list.
void ResetMacro();
void RestoreMacro(const wxString & name);
bool ReadMacro(const wxString & macro);
bool WriteMacro(const wxString & macro);
bool AddMacro(const wxString & macro);
bool DeleteMacro(const wxString & name);
bool RenameMacro(const wxString & oldmacro, const wxString & newmacro);
void AddToMacro(const CommandID & command, int before = -1);
void AddToMacro(const CommandID & command, const wxString & params, int before = -1);
void DeleteFromMacro(int index);
CommandID GetCommand(int index);
wxString GetParams(int index);
int GetCount();
wxString GetMessage(){ return mMessage;};
void AddToMessage(const wxString & msgIn ){ mMessage += msgIn;};
bool IsFixed(const wxString & name);
void Split(const wxString & str, wxString & command, wxString & param);
wxString Join(const wxString & command, const wxString & param);
CommandIDs mCommandMacro;
wxArrayString mParamsMacro;
bool mAbort;
wxString mMessage;
Exporter mExporter;
wxString mFileName;
};
#endif