forked from Sneeds-Feed-and-Seed/sneedacity
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathShuttlePrefs.cpp
125 lines (105 loc) · 2.72 KB
/
ShuttlePrefs.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/**********************************************************************
Sneedacity: 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 <wx/defs.h>
#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;
}