mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-17 16:40:07 +02:00
This is a squash of 50 commits. This merges the capabilities of BatchCommands and Effects using a new AudacityCommand class. AudacityCommand provides one function to specify the parameters, and then we leverage that one function in automation, whether by chains, mod-script-pipe or (future) Nyquist. - Now have AudacityCommand which is using the same mechanism as Effect - Has configurable parameters - Has data-entry GUI (built using shuttle GUI) - Registers with PluginManager. - Menu commands now provided in chains, and to python batch. - Tested with Zoom Toggle. - ShuttleParams now can set, get, set defaults, validate and specify the parameters. - Bugfix: Don't overwrite values with defaults first time out. - Add DefineParams function for all built-in effects. - Extend CommandContext to carry output channels for results. We abuse EffectsManager. It handles both Effects and AudacityCommands now. In time an Effect should become a special case of AudacityCommand and we'll split and rename the EffectManager class. - Don't use 'default' as a parameter name. - Massive renaming for CommandDefinitionInterface - EffectIdentInterface becomes EffectDefinitionInterface - EffectAutomationParameters becomes CommandAutomationParameters - PluginType is now a bit field. This way we can search for related types at the same time. - Most old batch commands made into AudacityCommands. The ones that weren't are for a reason. They are used by mod-script-pipe to carry commands and responses across from a non-GUI thread to the GUI thread. - Major tidy up of ScreenshotCommand - Reworking of SelectCommand - GetPreferenceCommand and SetPreferenceCommand - GetTrackInfo and SetTrackInfo - GetInfoCommand - Help, Open, Save, Import and Export commands. - Removed obsolete commands ExecMenu, GetProjectInfo and SetProjectInfo which are now better handled by other commands. - JSONify "GetInfo: Commands" output, i.e. commas in the right places. - General work on better Doxygen. - Lyrics -> LyricsPanel - Meter -> MeterPanel - Updated Linux makefile. - Scripting commands added into Extra menu. - Distinct names for previously duplicated find-clipping parameters. - Fixed longstanding error with erroneous status field number which previously caused an ASSERT in debug. - Sensible formatting of numbers in Chains, 0.1 not 0.1000000000137
92 lines
3.0 KiB
C++
92 lines
3.0 KiB
C++
/**********************************************************************
|
|
|
|
Audacity: A Digital Audio Editor
|
|
|
|
BatchCommands.h
|
|
|
|
Dominic Mazzoni
|
|
James Crook
|
|
|
|
**********************************************************************/
|
|
|
|
#ifndef __AUDACITY_BATCH_COMMANDS_DIALOG__
|
|
#define __AUDACITY_BATCH_COMMANDS_DIALOG__
|
|
|
|
#include <wx/defs.h>
|
|
#include <wx/string.h>
|
|
|
|
#include "export/Export.h"
|
|
|
|
class Effect;
|
|
class CommandContext;
|
|
|
|
class BatchCommands final {
|
|
public:
|
|
// constructors and destructors
|
|
BatchCommands();
|
|
public:
|
|
bool ApplyChain(const wxString & filename = wxT(""));
|
|
bool ApplyCommand( const wxString & command, const wxString & params, CommandContext const * pContext=NULL );
|
|
bool ApplyCommandInBatchMode(const wxString & command, const wxString ¶ms);
|
|
bool ApplySpecialCommand(int iCommand, const wxString & command,const wxString & params);
|
|
bool ApplyEffectCommand(const PluginID & ID, const wxString & command, const wxString & params, const CommandContext & Context);
|
|
bool ReportAndSkip( const wxString & command, const wxString & params );
|
|
void AbortBatch();
|
|
|
|
// Utility functions for the special commands.
|
|
wxString BuildCleanFileName(const wxString &fileName, const wxString &extension);
|
|
bool WriteMp3File( const wxString & Name, int bitrate );
|
|
double GetEndTime();
|
|
bool IsMono();
|
|
|
|
// These commands do not depend on the command list.
|
|
static wxArrayString GetNames();
|
|
|
|
// A pair of user-visible name, and internal string identifier
|
|
using CommandName = std::pair<wxString, wxString>;
|
|
using CommandNameVector = std::vector<CommandName>;
|
|
// Result is sorted by user-visible name
|
|
static CommandNameVector GetAllCommands();
|
|
|
|
static wxString GetCurrentParamsFor(const wxString & command);
|
|
static wxString PromptForParamsFor(const wxString & command, const wxString & params, wxWindow *parent);
|
|
static wxString PromptForPresetFor(const wxString & command, const wxString & params, wxWindow *parent);
|
|
|
|
// These commands do depend on the command list.
|
|
void ResetChain();
|
|
|
|
bool ReadChain(const wxString & chain);
|
|
bool WriteChain(const wxString & chain);
|
|
bool AddChain(const wxString & chain);
|
|
bool DeleteChain(const wxString & name);
|
|
bool RenameChain(const wxString & oldchain, const wxString & newchain);
|
|
|
|
void AddToChain(const wxString & command, int before = -1);
|
|
void AddToChain(const wxString & command, const wxString & params, int before = -1);
|
|
void DeleteFromChain(int index);
|
|
wxString GetCommand(int index);
|
|
wxString GetParams(int index);
|
|
int GetCount();
|
|
wxString GetMessage(){ return mMessage;};
|
|
void AddToMessage(const wxString & msgIn ){ mMessage += msgIn;};
|
|
|
|
void SetWavToMp3Chain();
|
|
|
|
bool IsFixed(const wxString & name);
|
|
|
|
void RestoreChain(const wxString & name);
|
|
|
|
void Split(const wxString & str, wxString & command, wxString & param);
|
|
wxString Join(const wxString & command, const wxString & param);
|
|
|
|
wxArrayString mCommandChain;
|
|
wxArrayString mParamsChain;
|
|
bool mAbort;
|
|
wxString mMessage;
|
|
|
|
Exporter mExporter;
|
|
wxString mFileName;
|
|
};
|
|
|
|
#endif
|