/********************************************************************** Audacity: A Digital Audio Editor ShuttlePrefs.cpp Dominic Mazzoni James Crook Implements ShuttlePrefs ********************************************************************//*! \class ShuttlePrefs \brief A kind of Shuttle to exchange data with preferences e.g. the registry This class may be used by ShuttleGui to do the two step exchange, \verbatim Gui -- Data -- Prefs \endverbatim *//*******************************************************************/ #include "ShuttlePrefs.h" #include #include "WrappedType.h" #include "Prefs.h" bool ShuttlePrefs::TransferBool( const wxString & Name, bool & bValue, const bool & bDefault ) { if( mbStoreInClient ) { bValue = bDefault; gPrefs->Read( Name, &bValue ); } else { return gPrefs->Write( Name, bValue ); } return true; } bool ShuttlePrefs::TransferDouble( const wxString & Name, double & dValue, const double &dDefault ) { if( mbStoreInClient ) { dValue = dDefault; gPrefs->Read( Name, &dValue ); } else { return gPrefs->Write( Name, dValue ); } return true; } bool ShuttlePrefs::TransferInt( const wxString & Name, int & iValue, const int &iDefault ) { if( mbStoreInClient ) { iValue = iDefault; gPrefs->Read( Name, &iValue ); } else { return gPrefs->Write( Name, iValue ); } return true; } bool ShuttlePrefs::TransferString( const wxString & Name, wxString & strValue, const wxString &strDefault ) { if( mbStoreInClient ) { strValue = strDefault; gPrefs->Read( Name, &strValue ); } else { return gPrefs->Write( Name, strValue ); } return true; } bool ShuttlePrefs::TransferWrappedType( const wxString & Name, WrappedType & W ) { switch( W.eWrappedType ) { case eWrappedString: return TransferString( Name, *W.mpStr, *W.mpStr ); break; case eWrappedInt: return TransferInt( Name, *W.mpInt, *W.mpInt ); break; case eWrappedDouble: return TransferDouble( Name, *W.mpDouble, *W.mpDouble ); break; case eWrappedBool: return TransferBool( Name, *W.mpBool, *W.mpBool ); break; case eWrappedEnum: wxASSERT( false ); break; default: wxASSERT( false ); break; } return false; } bool ShuttlePrefs::ExchangeWithMaster(const wxString & WXUNUSED(Name)) { // ShuttlePrefs is unusual in that it overloads ALL the Transfer functions // which it supports. It doesn't do any string conversion, because wxConv will // do so if it is required. // So, ExchangeWithMaster should never get called... Hence the ASSERT here. wxASSERT( false ); return false; }