mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-07 07:12:34 +02:00
136 lines
3.8 KiB
C++
136 lines
3.8 KiB
C++
/**********************************************************************
|
|
|
|
Audacity: A Digital Audio Editor
|
|
|
|
ShuttleGetDefinition.cpp
|
|
|
|
Paul Licameli split this out of Shuttle.cpp
|
|
|
|
**********************************************************************/
|
|
|
|
#include "ShuttleGetDefinition.h"
|
|
|
|
bool ShuttleGetDefinition::IsOptional(){
|
|
bool result = pOptionalFlag !=NULL;
|
|
pOptionalFlag = NULL;
|
|
return result;
|
|
}
|
|
|
|
// Definition distinguishes optional from not.
|
|
ShuttleParams & ShuttleGetDefinition::Optional( bool & var ){
|
|
pOptionalFlag = &var;
|
|
return *this;
|
|
};
|
|
|
|
ShuttleGetDefinition::ShuttleGetDefinition( CommandMessageTarget & target ) : CommandMessageTargetDecorator( target )
|
|
{
|
|
}
|
|
|
|
// JSON definitions.
|
|
void ShuttleGetDefinition::Define( bool & var, const wxChar * key, const bool vdefault, const bool vmin, const bool vmax, const bool vscl )
|
|
{
|
|
StartStruct();
|
|
AddItem( wxString(key), "key" );
|
|
AddItem( "bool", "type" );
|
|
if( IsOptional() )
|
|
AddItem( "unchanged", "default" );
|
|
else
|
|
AddItem( vdefault ? "True" : "False", "default" );
|
|
EndStruct();
|
|
}
|
|
|
|
void ShuttleGetDefinition::Define( int & var, const wxChar * key, const int vdefault, const int vmin, const int vmax, const int vscl )
|
|
{
|
|
StartStruct();
|
|
AddItem( wxString(key), "key" );
|
|
AddItem( "int", "type" );
|
|
if( IsOptional() )
|
|
AddItem( "unchanged", "default" );
|
|
else
|
|
AddItem( (double)vdefault, "default" );
|
|
EndStruct();
|
|
}
|
|
|
|
void ShuttleGetDefinition::Define( size_t & var, const wxChar * key, const int vdefault, const int vmin, const int vmax, const int vscl )
|
|
{
|
|
StartStruct();
|
|
AddItem( wxString(key), "key" );
|
|
AddItem( "size_t", "type" );
|
|
if( IsOptional() )
|
|
AddItem( "unchanged", "default" );
|
|
else
|
|
AddItem( (double)vdefault, "default" );
|
|
EndStruct();
|
|
|
|
}
|
|
|
|
void ShuttleGetDefinition::Define( float & var, const wxChar * key, const float vdefault, const float vmin, const float vmax, const float vscl )
|
|
{
|
|
StartStruct();
|
|
AddItem( wxString(key), "key" );
|
|
AddItem( "float", "type" );
|
|
if( IsOptional() )
|
|
AddItem( "unchanged", "default" );
|
|
else
|
|
AddItem( (double)vdefault, "default" );
|
|
EndStruct();
|
|
}
|
|
|
|
void ShuttleGetDefinition::Define( double & var, const wxChar * key, const float vdefault, const float vmin, const float vmax, const float vscl )
|
|
{
|
|
StartStruct();
|
|
AddItem( wxString(key), "key" );
|
|
AddItem( "float", "type" );
|
|
if( IsOptional() )
|
|
AddItem( "unchanged", "default" );
|
|
else
|
|
AddItem( (double)vdefault, "default" );
|
|
EndStruct();
|
|
}
|
|
|
|
void ShuttleGetDefinition::Define( double & var, const wxChar * key, const double vdefault, const double vmin, const double vmax, const double vscl )
|
|
{
|
|
StartStruct();
|
|
AddItem( wxString(key), "key" );
|
|
AddItem( "double", "type" );
|
|
if( IsOptional() )
|
|
AddItem( "unchanged", "default" );
|
|
else
|
|
AddItem( (double)vdefault, "default" );
|
|
EndStruct();
|
|
}
|
|
|
|
|
|
void ShuttleGetDefinition::Define( wxString &var, const wxChar * key, const wxString vdefault, const wxString vmin, const wxString vmax, const wxString vscl )
|
|
{
|
|
StartStruct();
|
|
AddItem( wxString(key), "key" );
|
|
AddItem( "string", "type" );
|
|
if( IsOptional() )
|
|
AddItem( "unchanged", "default" );
|
|
else
|
|
AddItem( vdefault, "default" );
|
|
EndStruct();
|
|
}
|
|
|
|
|
|
void ShuttleGetDefinition::DefineEnum( int &var,
|
|
const wxChar * key, const int vdefault,
|
|
const EnumValueSymbol strings[], size_t nStrings )
|
|
{
|
|
StartStruct();
|
|
AddItem( wxString(key), "key" );
|
|
AddItem( "enum", "type" );
|
|
if( IsOptional() )
|
|
AddItem( "unchanged", "default" );
|
|
else
|
|
AddItem( strings[vdefault].Internal(), "default" );
|
|
StartField( "enum" );
|
|
StartArray();
|
|
for( size_t i = 0; i < nStrings; i++ )
|
|
AddItem( strings[i].Internal() );
|
|
EndArray();
|
|
EndField();
|
|
EndStruct();
|
|
}
|