2 * @file PropSyntaxColors.cpp
4 * @brief Implementation of PropSyntaxColors propertysheet
6 // ID line follows -- this is updated by SVN
11 #include "SyntaxColorsUtil.h"
12 #include "PropSyntaxColors.h"
14 #include "OptionsPanel.h"
19 static char THIS_FILE[] = __FILE__;
22 IMPLEMENT_DYNAMIC(PropSyntaxColors, CPropertyPage)
24 PropSyntaxColors::PropSyntaxColors(COptionsMgr *optionsMgr, SyntaxColors *pColors)
25 : OptionsPanel(optionsMgr, PropSyntaxColors::IDD)
32 , m_nPreProcessorBold(0)
36 m_pTempColors = pColors;
38 // Set colors for buttons, do NOT invalidate
39 m_btnKeywordsText.SetColor(m_pTempColors->GetColor(COLORINDEX_KEYWORD), FALSE);
40 m_btnFunctionsText.SetColor(m_pTempColors->GetColor(COLORINDEX_FUNCNAME), FALSE);
41 m_btnCommentsText.SetColor(m_pTempColors->GetColor(COLORINDEX_COMMENT), FALSE);
42 m_btnNumbersText.SetColor(m_pTempColors->GetColor(COLORINDEX_NUMBER), FALSE);
43 m_btnOperatorsText.SetColor(m_pTempColors->GetColor(COLORINDEX_OPERATOR), FALSE);
44 m_btnStringsText.SetColor(m_pTempColors->GetColor(COLORINDEX_STRING), FALSE);
45 m_btnPreprocessorText.SetColor(m_pTempColors->GetColor(COLORINDEX_PREPROCESSOR), FALSE);
46 m_btnUser1Text.SetColor(m_pTempColors->GetColor(COLORINDEX_USER1), FALSE);
47 m_btnUser2Text.SetColor(m_pTempColors->GetColor(COLORINDEX_USER2), FALSE);
49 m_nKeywordsBold = GetCheckVal(COLORINDEX_KEYWORD);
50 m_nFunctionsBold = GetCheckVal(COLORINDEX_FUNCNAME);
51 m_nCommentsBold = GetCheckVal(COLORINDEX_COMMENT);
52 m_nNumbersBold = GetCheckVal(COLORINDEX_NUMBER);
53 m_nOperatorsBold = GetCheckVal(COLORINDEX_OPERATOR);
54 m_nStringsBold = GetCheckVal(COLORINDEX_STRING);
55 m_nPreProcessorBold = GetCheckVal(COLORINDEX_PREPROCESSOR);
56 m_nUser1Bold = GetCheckVal(COLORINDEX_USER1);
57 m_nUser2Bold = GetCheckVal(COLORINDEX_USER2);
60 void PropSyntaxColors::DoDataExchange(CDataExchange* pDX)
62 CPropertyPage::DoDataExchange(pDX);
63 DDX_Control(pDX, IDC_SCOLOR_KEYWORDS, m_btnKeywordsText);
64 DDX_Control(pDX, IDC_SCOLOR_FUNCTIONS, m_btnFunctionsText);
65 DDX_Control(pDX, IDC_SCOLOR_COMMENTS, m_btnCommentsText);
66 DDX_Control(pDX, IDC_SCOLOR_NUMBERS, m_btnNumbersText);
67 DDX_Control(pDX, IDC_SCOLOR_OPERATORS, m_btnOperatorsText);
68 DDX_Control(pDX, IDC_SCOLOR_STRINGS, m_btnStringsText);
69 DDX_Control(pDX, IDC_SCOLOR_PREPROCESSOR, m_btnPreprocessorText);
70 DDX_Control(pDX, IDC_SCOLOR_USER1, m_btnUser1Text);
71 DDX_Control(pDX, IDC_SCOLOR_USER2, m_btnUser2Text);
72 DDX_Control(pDX, IDC_SCOLOR_KEYWORDS_BOLD, m_btnKeywordsBold);
73 DDX_Control(pDX, IDC_SCOLOR_FUNCTIONS_BOLD, m_btnFunctionsBold);
74 DDX_Control(pDX, IDC_SCOLOR_COMMENTS_BOLD, m_btnCommentsBold);
75 DDX_Control(pDX, IDC_SCOLOR_NUMBERS_BOLD, m_btnNumbersBold);
76 DDX_Control(pDX, IDC_SCOLOR_OPERATORS_BOLD, m_btnOperatorsBold);
77 DDX_Control(pDX, IDC_SCOLOR_STRINGS_BOLD, m_btnStringsBold);
78 DDX_Control(pDX, IDC_SCOLOR_PREPROCESSOR_BOLD, m_btnPreProcessorBold);
79 DDX_Control(pDX, IDC_SCOLOR_USER1_BOLD, m_btnUser1Bold);
80 DDX_Control(pDX, IDC_SCOLOR_USER2_BOLD, m_btnUser2Bold);
81 DDX_Check(pDX, IDC_SCOLOR_KEYWORDS_BOLD, m_nKeywordsBold);
82 DDX_Check(pDX, IDC_SCOLOR_FUNCTIONS_BOLD, m_nFunctionsBold);
83 DDX_Check(pDX, IDC_SCOLOR_COMMENTS_BOLD, m_nCommentsBold);
84 DDX_Check(pDX, IDC_SCOLOR_NUMBERS_BOLD, m_nNumbersBold);
85 DDX_Check(pDX, IDC_SCOLOR_OPERATORS_BOLD, m_nOperatorsBold);
86 DDX_Check(pDX, IDC_SCOLOR_STRINGS_BOLD, m_nStringsBold);
87 DDX_Check(pDX, IDC_SCOLOR_PREPROCESSOR_BOLD, m_nPreProcessorBold);
88 DDX_Check(pDX, IDC_SCOLOR_USER1_BOLD, m_nUser1Bold);
89 DDX_Check(pDX, IDC_SCOLOR_USER2_BOLD, m_nUser2Bold);
93 BEGIN_MESSAGE_MAP(PropSyntaxColors, CPropertyPage)
94 ON_BN_CLICKED(IDC_SCOLOR_KEYWORDS, OnBnClickedEcolorKeywords)
95 ON_BN_CLICKED(IDC_SCOLOR_FUNCTIONS, OnBnClickedEcolorFunctions)
96 ON_BN_CLICKED(IDC_SCOLOR_COMMENTS, OnBnClickedEcolorComments)
97 ON_BN_CLICKED(IDC_SCOLOR_NUMBERS, OnBnClickedEcolorNumbers)
98 ON_BN_CLICKED(IDC_SCOLOR_OPERATORS, OnBnClickedEcolorOperators)
99 ON_BN_CLICKED(IDC_SCOLOR_STRINGS, OnBnClickedEcolorStrings)
100 ON_BN_CLICKED(IDC_SCOLOR_PREPROCESSOR, OnBnClickedEcolorPreprocessor)
101 ON_BN_CLICKED(IDC_SCOLOR_USER1, OnBnClickedEcolorUser1)
102 ON_BN_CLICKED(IDC_SCOLOR_USER2, OnBnClickedEcolorUser2)
103 ON_BN_CLICKED(IDC_SCOLORS_BDEFAULTS, OnBnClickedEcolorsBdefaults)
104 ON_BN_CLICKED(IDC_SCOLOR_KEYWORDS_BOLD, OnBnClickedEcolorKeywordsBold)
105 ON_BN_CLICKED(IDC_SCOLOR_FUNCTIONS_BOLD, OnBnClickedEcolorFunctionsBold)
106 ON_BN_CLICKED(IDC_SCOLOR_COMMENTS_BOLD, OnBnClickedEcolorCommentsBold)
107 ON_BN_CLICKED(IDC_SCOLOR_NUMBERS_BOLD, OnBnClickedEcolorNumbersBold)
108 ON_BN_CLICKED(IDC_SCOLOR_OPERATORS_BOLD, OnBnClickedEcolorOperatorsBold)
109 ON_BN_CLICKED(IDC_SCOLOR_STRINGS_BOLD, OnBnClickedEcolorStringsBold)
110 ON_BN_CLICKED(IDC_SCOLOR_PREPROCESSOR_BOLD, OnBnClickedEcolorPreprocessorBold)
111 ON_BN_CLICKED(IDC_SCOLOR_USER1_BOLD, OnBnClickedEcolorUser1Bold)
112 ON_BN_CLICKED(IDC_SCOLOR_USER2_BOLD, OnBnClickedEcolorUser2Bold)
116 * @brief Called before propertysheet is drawn.
118 BOOL PropSyntaxColors::OnInitDialog()
120 theApp.TranslateDialog(m_hWnd);
121 return CPropertyPage::OnInitDialog();
125 * @brief Reads options values from storage to UI.
126 * (Property sheet calls this before displaying all property pages)
128 void PropSyntaxColors::ReadOptions()
133 * @brief Writes options values from UI to storage.
134 * (Property sheet calls this after displaying all property pages)
136 void PropSyntaxColors::WriteOptions()
138 // User can only change colors via BrowseColorAndSave,
139 // which writes to m_pTempColors
140 // so user's latest choices are in m_pTempColors
141 // (we don't have to read them from screen)
142 SyntaxColors_SaveToRegistry(m_pTempColors);
146 * @brief Let user browse common color dialog, and select a color & save to registry
148 void PropSyntaxColors::BrowseColorAndSave(CColorButton & colorButton, int colorIndex)
150 COLORREF currentColor = m_pTempColors->GetColor(colorIndex);
151 CColorDialog dialog(currentColor);
153 dialog.m_cc.lpCustColors = m_cCustColors;
155 if (dialog.DoModal() == IDOK)
157 currentColor = dialog.GetColor();
158 colorButton.SetColor(currentColor);
159 m_pTempColors->SetColor(colorIndex, currentColor);
164 void PropSyntaxColors::OnBnClickedEcolorKeywords()
166 BrowseColorAndSave(m_btnKeywordsText, COLORINDEX_KEYWORD);
169 void PropSyntaxColors::OnBnClickedEcolorFunctions()
171 BrowseColorAndSave(m_btnFunctionsText, COLORINDEX_FUNCNAME);
174 void PropSyntaxColors::OnBnClickedEcolorComments()
176 BrowseColorAndSave(m_btnCommentsText, COLORINDEX_COMMENT);
179 void PropSyntaxColors::OnBnClickedEcolorNumbers()
181 BrowseColorAndSave(m_btnNumbersText, COLORINDEX_NUMBER);
184 void PropSyntaxColors::OnBnClickedEcolorOperators()
186 BrowseColorAndSave(m_btnOperatorsText, COLORINDEX_OPERATOR);
189 void PropSyntaxColors::OnBnClickedEcolorStrings()
191 BrowseColorAndSave(m_btnStringsText, COLORINDEX_STRING);
194 void PropSyntaxColors::OnBnClickedEcolorPreprocessor()
196 BrowseColorAndSave(m_btnPreprocessorText, COLORINDEX_PREPROCESSOR);
199 void PropSyntaxColors::OnBnClickedEcolorUser1()
201 BrowseColorAndSave(m_btnUser1Text, COLORINDEX_USER1);
204 void PropSyntaxColors::OnBnClickedEcolorUser2()
206 BrowseColorAndSave(m_btnUser2Text, COLORINDEX_USER2);
209 void PropSyntaxColors::OnBnClickedEcolorsBdefaults()
211 m_pTempColors->SetDefaults();
212 m_btnKeywordsText.SetColor(m_pTempColors->GetColor(COLORINDEX_KEYWORD));
213 m_btnFunctionsText.SetColor(m_pTempColors->GetColor(COLORINDEX_FUNCNAME));
214 m_btnCommentsText.SetColor(m_pTempColors->GetColor(COLORINDEX_COMMENT));
215 m_btnNumbersText.SetColor(m_pTempColors->GetColor(COLORINDEX_NUMBER));
216 m_btnOperatorsText.SetColor(m_pTempColors->GetColor(COLORINDEX_OPERATOR));
217 m_btnStringsText.SetColor(m_pTempColors->GetColor(COLORINDEX_STRING));
218 m_btnPreprocessorText.SetColor(m_pTempColors->GetColor(COLORINDEX_PREPROCESSOR));
219 m_btnUser1Text.SetColor(m_pTempColors->GetColor(COLORINDEX_USER1));
220 m_btnUser2Text.SetColor(m_pTempColors->GetColor(COLORINDEX_USER2));
222 m_nKeywordsBold = GetCheckVal(COLORINDEX_KEYWORD);
223 m_nFunctionsBold = GetCheckVal(COLORINDEX_FUNCNAME);
224 m_nCommentsBold = GetCheckVal(COLORINDEX_COMMENT);
225 m_nNumbersBold = GetCheckVal(COLORINDEX_NUMBER);
226 m_nOperatorsBold = GetCheckVal(COLORINDEX_OPERATOR);
227 m_nStringsBold = GetCheckVal(COLORINDEX_STRING);
228 m_nPreProcessorBold = GetCheckVal(COLORINDEX_PREPROCESSOR);
229 m_nUser1Bold = GetCheckVal(COLORINDEX_USER1);
230 m_nUser2Bold = GetCheckVal(COLORINDEX_USER2);
236 * @brief Loads color selection dialog's custom colors from registry
238 void PropSyntaxColors::LoadCustomColors()
240 SyntaxColors_LoadCustomColors(m_cCustColors, sizeof(m_cCustColors)/sizeof(m_cCustColors[0]));
244 * @brief Saves color selection dialog's custom colors to registry
246 void PropSyntaxColors::SaveCustomColors()
248 SyntaxColors_SaveCustomColors(m_cCustColors, sizeof(m_cCustColors)/sizeof(m_cCustColors[0]));
251 void PropSyntaxColors::OnBnClickedEcolorKeywordsBold()
253 UpdateBoldStatus(m_btnKeywordsBold, COLORINDEX_KEYWORD);
256 void PropSyntaxColors::OnBnClickedEcolorFunctionsBold()
258 UpdateBoldStatus(m_btnFunctionsBold, COLORINDEX_FUNCNAME);
261 void PropSyntaxColors::OnBnClickedEcolorCommentsBold()
263 UpdateBoldStatus(m_btnCommentsBold, COLORINDEX_COMMENT);
266 void PropSyntaxColors::OnBnClickedEcolorNumbersBold()
268 UpdateBoldStatus(m_btnNumbersBold, COLORINDEX_NUMBER);
271 void PropSyntaxColors::OnBnClickedEcolorOperatorsBold()
273 UpdateBoldStatus(m_btnOperatorsBold, COLORINDEX_OPERATOR);
276 void PropSyntaxColors::OnBnClickedEcolorStringsBold()
278 UpdateBoldStatus(m_btnStringsBold, COLORINDEX_STRING);
281 void PropSyntaxColors::OnBnClickedEcolorPreprocessorBold()
283 UpdateBoldStatus(m_btnPreProcessorBold, COLORINDEX_PREPROCESSOR);
286 void PropSyntaxColors::OnBnClickedEcolorUser1Bold()
288 UpdateBoldStatus(m_btnUser1Bold, COLORINDEX_USER1);
291 void PropSyntaxColors::OnBnClickedEcolorUser2Bold()
293 UpdateBoldStatus(m_btnUser2Bold, COLORINDEX_USER2);
296 int PropSyntaxColors::GetCheckVal(UINT nColorIndex)
298 if (m_pTempColors->GetBold(nColorIndex))
301 return BST_UNCHECKED;
304 void PropSyntaxColors::UpdateBoldStatus(CButton &btn, UINT colorIndex)
306 int state = btn.GetCheck();
307 if (state == BST_CHECKED)
308 m_pTempColors->SetBold(colorIndex, TRUE);
310 m_pTempColors->SetBold(colorIndex, FALSE);