2 * @file OptionsSyntaxColors.cpp
4 * @brief Implementation for OptionsSyntaxColors class.
8 #include "OptionsSyntaxColors.h"
10 #include "SyntaxColors.h"
11 #include "UnicodeString.h"
12 #include "OptionsDef.h"
13 #include "OptionsMgr.h"
17 /** @brief Setting name for default colors. */
18 static const TCHAR DefColorsPath[] =_T("DefaultSyntaxColors");
20 namespace Options { namespace SyntaxColors {
22 void Init(COptionsMgr *pOptionsMgr, ::SyntaxColors *pSyntaxColors)
24 String valuename(DefColorsPath);
26 int count = COLORINDEX_COUNT;
27 valuename += _T("/Values");
28 pOptionsMgr->InitOption(valuename, count);
30 for (unsigned i = COLORINDEX_NONE; i < COLORINDEX_LAST; i++)
32 // Since we want to initialize with default colors (already
33 // set to array, we must first call OptionsMrg->InitOption()
34 // with default value. And since InitOption() reads stored value
35 // from storage we must set that valu1Ge to array we use.
37 ::SyntaxColors::COLORREF ref;
38 color = pSyntaxColors->GetColor(i);
40 // Special handling for themable colors
41 // These are text colors which by default follow the current system colors
42 // unless the user has overridden this behavior to specify them explicitly
43 bool serializable = true;
44 if (pSyntaxColors->IsThemeableColorIndex(i))
46 if (pOptionsMgr->GetBool(OPT_CLR_DEFAULT_TEXT_COLORING))
49 valuename = strutils::format(_T("%s/Color%02u"), DefColorsPath, i);
50 pOptionsMgr->InitOption(valuename, color, serializable);
51 color = pOptionsMgr->GetInt(valuename);
53 pSyntaxColors->SetColor(i, ref);
55 valuename = strutils::format(_T("%s/Bold%02u"), DefColorsPath, i);
56 pOptionsMgr->InitOption(valuename, pSyntaxColors->GetBold(i));
57 pSyntaxColors->SetBold(i, pOptionsMgr->GetBool(valuename));
62 * @brief Load color values from storage
63 * @param [out] pSyntaxColors pointer to SyntaxColors
65 void Load(COptionsMgr *pOptionsMgr, ::SyntaxColors *pSyntaxColors)
67 for (unsigned i = COLORINDEX_NONE; i < COLORINDEX_LAST; i++)
69 String valuename = strutils::format(_T("%s/Color%02u"), DefColorsPath, i);
70 int color = pOptionsMgr->GetInt(valuename);
71 ::SyntaxColors::COLORREF ref = color;
72 pSyntaxColors->SetColor(i, ref);
74 valuename = strutils::format(_T("%s/Bold%02u"), DefColorsPath, i);
75 pSyntaxColors->SetBold(i, pOptionsMgr->GetBool(valuename));
80 * @brief Save color values to storage
81 * @param [in] pSyntaxColors pointer to SyntaxColors
83 void Save(COptionsMgr *pOptionsMgr, const ::SyntaxColors *pSyntaxColors)
85 String valuename(DefColorsPath);
87 int count = COLORINDEX_COUNT;
88 valuename += _T("/Values");
89 pOptionsMgr->SaveOption(valuename, count);
91 for (unsigned i = COLORINDEX_NONE; i < COLORINDEX_LAST; i++)
93 int color = pSyntaxColors->GetColor(i);
94 pOptionsMgr->SaveOption(strutils::format(_T("%s/Color%02u"), DefColorsPath, i), color);
95 bool bold = pSyntaxColors->GetBold(i);
96 pOptionsMgr->SaveOption(strutils::format(_T("%s/Bold%02u"), DefColorsPath, i), bold);