mirror of
https://github.com/cookiengineer/audacity
synced 2025-12-16 17:41:14 +01:00
Automation: AudacityCommand
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
This commit is contained in:
committed by
Paul Licameli
parent
b7b01d48e0
commit
1c988b4e3a
131
src/Shuttle.h
131
src/Shuttle.h
@@ -4,7 +4,6 @@
|
||||
|
||||
Shuttle.h
|
||||
|
||||
Dominic Mazzoni
|
||||
James Crook
|
||||
|
||||
**********************************************************************/
|
||||
@@ -59,4 +58,134 @@ public:
|
||||
bool ExchangeWithMaster(const wxString & Name) override;
|
||||
};
|
||||
|
||||
class CommandAutomationParameters;
|
||||
/**************************************************************************//**
|
||||
\brief Shuttle that deals with parameters. This is a base class with lots of
|
||||
pure virtual functions.
|
||||
********************************************************************************/
|
||||
class ShuttleParams : public Shuttle
|
||||
{
|
||||
public:
|
||||
wxString mParams;
|
||||
CommandAutomationParameters * mpEap;
|
||||
ShuttleParams(){ mParams = wxT("") ;mpEap=NULL;}
|
||||
virtual ~ShuttleParams() {}
|
||||
bool ExchangeWithMaster(const wxString & Name) override;
|
||||
ShuttleParams & Optional( bool & var ){ var = true;return *this;};
|
||||
virtual void Define( bool & var, const wxChar * key, const bool vdefault, const bool vmin=false, const bool vmax=false, const bool vscl=false )=0;
|
||||
virtual void Define( size_t & var, const wxChar * key, const int vdefault, const int vmin=0, const int vmax=100000, const int vscl=1 )=0;
|
||||
virtual void Define( int & var, const wxChar * key, const int vdefault, const int vmin=0, const int vmax=100000, const int vscl=1 )=0;
|
||||
virtual void Define( float & var, const wxChar * key, const float vdefault, const float vmin, const float vmax, const float vscl=1.0f )=0;
|
||||
virtual void Define( double & var, const wxChar * key, const float vdefault, const float vmin, const float vmax, const float vscl=1.0f )=0;
|
||||
virtual void Define( double & var, const wxChar * key, const double vdefault, const double vmin, const double vmax, const double vscl=1.0f )=0;
|
||||
virtual void Define( wxString &var, const wxChar * key, const wxString vdefault, const wxString vmin="", const wxString vmax="", const wxString vscl="" )=0;
|
||||
virtual void DefineEnum( wxString &var, const wxChar * key, const wxString vdefault, wxArrayString strings )=0;
|
||||
virtual void DefineEnum( int &var, const wxChar * key, const int vdefault, wxArrayString strings )=0;
|
||||
};
|
||||
|
||||
/**************************************************************************//**
|
||||
\brief Shuttle that gets parameter values into a string.
|
||||
********************************************************************************/
|
||||
class ShuttleGetAutomation : public ShuttleParams
|
||||
{
|
||||
public:
|
||||
void Define( bool & var, const wxChar * key, const bool vdefault, const bool vmin, const bool vmax, const bool vscl ) override;
|
||||
void Define( int & var, const wxChar * key, const int vdefault, const int vmin, const int vmax, const int vscl ) override;
|
||||
void Define( size_t & var, const wxChar * key, const int vdefault, const int vmin, const int vmax, const int vscl ) override;
|
||||
void Define( float & var, const wxChar * key, const float vdefault, const float vmin, const float vmax, const float vscl ) override;
|
||||
void Define( double & var, const wxChar * key, const float vdefault, const float vmin, const float vmax, const float vscl ) override;
|
||||
void Define( double & var, const wxChar * key, const double vdefault, const double vmin, const double vmax, const double vscl ) override;
|
||||
void Define( wxString &var, const wxChar * key, const wxString vdefault, const wxString vmin, const wxString vmax, const wxString vscl ) override;
|
||||
void DefineEnum( wxString &var, const wxChar * key, const wxString vdefault, wxArrayString strings )override;
|
||||
void DefineEnum( int &var, const wxChar * key, const int vdefault, wxArrayString strings )override;
|
||||
};
|
||||
|
||||
/**************************************************************************//**
|
||||
\brief Shuttle that sets parameters to a value (from a string)
|
||||
********************************************************************************/
|
||||
class ShuttleSetAutomation : public ShuttleParams
|
||||
{
|
||||
public:
|
||||
ShuttleSetAutomation(){ bWrite = false; bOK = false;};
|
||||
bool bOK;
|
||||
bool bWrite;
|
||||
void SetForValidating( CommandAutomationParameters * pEap){ mpEap=pEap; bOK=true;bWrite=false;};
|
||||
void SetForWriting(CommandAutomationParameters * pEap){ mpEap=pEap;bOK=true;bWrite=true;};
|
||||
void Define( bool & var, const wxChar * key, const bool vdefault, const bool vmin, const bool vmax, const bool vscl ) override;
|
||||
void Define( int & var, const wxChar * key, const int vdefault, const int vmin, const int vmax, const int vscl ) override;
|
||||
void Define( size_t & var, const wxChar * key, const int vdefault, const int vmin, const int vmax, const int vscl ) override;
|
||||
void Define( float & var, const wxChar * key, const float vdefault, const float vmin, const float vmax, const float vscl ) override;
|
||||
void Define( double & var, const wxChar * key, const float vdefault, const float vmin, const float vmax, const float vscl ) override;
|
||||
void Define( double & var, const wxChar * key, const double vdefault, const double vmin, const double vmax, const double vscl ) override;
|
||||
void Define( wxString &var, const wxChar * key, const wxString vdefault, const wxString vmin, const wxString vmax, const wxString vscl ) override;
|
||||
void DefineEnum( wxString &var, const wxChar * key, const wxString vdefault, wxArrayString strings )override;
|
||||
void DefineEnum( int &var, const wxChar * key, const int vdefault, wxArrayString strings )override;
|
||||
};
|
||||
|
||||
/**************************************************************************//**
|
||||
\brief Shuttle that retrieves a JSON format definition of a command's parameters.
|
||||
********************************************************************************/
|
||||
class ShuttleGetDefinition : public ShuttleParams
|
||||
{
|
||||
public:
|
||||
wxString Result;
|
||||
void Define( bool & var, const wxChar * key, const bool vdefault, const bool vmin, const bool vmax, const bool vscl ) override;
|
||||
void Define( int & var, const wxChar * key, const int vdefault, const int vmin, const int vmax, const int vscl ) override;
|
||||
void Define( size_t & var, const wxChar * key, const int vdefault, const int vmin, const int vmax, const int vscl ) override;
|
||||
void Define( float & var, const wxChar * key, const float vdefault, const float vmin, const float vmax, const float vscl ) override;
|
||||
void Define( double & var, const wxChar * key, const float vdefault, const float vmin, const float vmax, const float vscl ) override;
|
||||
void Define( double & var, const wxChar * key, const double vdefault, const double vmin, const double vmax, const double vscl ) override;
|
||||
void Define( wxString &var, const wxChar * key, const wxString vdefault, const wxString vmin, const wxString vmax, const wxString vscl ) override;
|
||||
void DefineEnum( wxString &var, const wxChar * key, const wxString vdefault, wxArrayString strings )override;
|
||||
void DefineEnum( int &var, const wxChar * key, const int vdefault, wxArrayString strings )override;
|
||||
};
|
||||
|
||||
|
||||
/**************************************************************************//**
|
||||
\brief Shuttle that sets parameters to their default values.
|
||||
********************************************************************************/
|
||||
class ShuttleDefaults : public ShuttleParams
|
||||
{
|
||||
public:
|
||||
wxString Result;
|
||||
void Define( bool & var, const wxChar * WXUNUSED(key), const bool vdefault,
|
||||
const bool WXUNUSED(vmin), const bool WXUNUSED(vmax), const bool WXUNUSED(vscl) )
|
||||
override { var = vdefault;};
|
||||
void Define( int & var, const wxChar * WXUNUSED(key), const int vdefault,
|
||||
const int WXUNUSED(vmin), const int WXUNUSED(vmax), const int WXUNUSED(vscl) )
|
||||
override { var = vdefault;};
|
||||
void Define( size_t & var, const wxChar * WXUNUSED(key), const int vdefault,
|
||||
const int WXUNUSED(vmin), const int WXUNUSED(vmax), const int WXUNUSED(vscl) )
|
||||
override{ var = vdefault;};
|
||||
void Define( float & var, const wxChar * WXUNUSED(key), const float vdefault,
|
||||
const float WXUNUSED(vmin), const float WXUNUSED(vmax), const float WXUNUSED(vscl) )
|
||||
override { var = vdefault;};
|
||||
void Define( double & var, const wxChar * WXUNUSED(key), const float vdefault,
|
||||
const float WXUNUSED(vmin), const float WXUNUSED(vmax), const float WXUNUSED(vscl) )
|
||||
override { var = vdefault;};
|
||||
void Define( double & var, const wxChar * WXUNUSED(key), const double vdefault,
|
||||
const double WXUNUSED(vmin), const double WXUNUSED(vmax), const double WXUNUSED(vscl) )
|
||||
override { var = vdefault;};
|
||||
void Define( wxString &var, const wxChar * WXUNUSED(key), const wxString vdefault,
|
||||
const wxString WXUNUSED(vmin), const wxString WXUNUSED(vmax), const wxString WXUNUSED(vscl) )
|
||||
override { var = vdefault;};
|
||||
void DefineEnum( wxString &var, const wxChar * WXUNUSED(key), const wxString vdefault,
|
||||
wxArrayString WXUNUSED(strings) )
|
||||
override { var = vdefault;};
|
||||
void DefineEnum( int &var, const wxChar * WXUNUSED(key), const int vdefault,
|
||||
wxArrayString WXUNUSED(strings) )
|
||||
override { var = vdefault;};
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#define SHUTTLE_PARAM( var, name ) \
|
||||
Define( var, KEY_ ## name, DEF_ ## name, MIN_ ## name, MAX_ ## name, SCL_ ## name )
|
||||
|
||||
#define SHUTTLE_ENUM_PARAM( var, name, strings ) \
|
||||
DefineEnum( var, KEY_ ## name, DEF_ ## name, strings )
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user