2 * @file PropSyntaxColors.cpp
4 * @brief Implementation of CPropSyntaxColors propertysheet
6 // RCS ID line follows -- this is updated by CVS
11 #include "SyntaxColors.h"
12 #include "PropSyntaxColors.h"
18 static char THIS_FILE[] = __FILE__;
22 // CPropEditorColor dialog
24 IMPLEMENT_DYNAMIC(CPropSyntaxColors, CPropertyPage)
26 CPropSyntaxColors::CPropSyntaxColors(COptionsMgr *optionsMgr, SyntaxColors *pColors)
27 : CPropertyPage(CPropSyntaxColors::IDD)
28 , m_pOptionsMgr(optionsMgr)
35 , m_nPreProcessorBold(0)
39 m_pTempColors = pColors;
41 // Set colors for buttons, do NOT invalidate
42 m_btnKeywordsText.SetColor(m_pTempColors->GetColor(COLORINDEX_KEYWORD), FALSE);
43 m_btnFunctionsText.SetColor(m_pTempColors->GetColor(COLORINDEX_FUNCNAME), FALSE);
44 m_btnCommentsText.SetColor(m_pTempColors->GetColor(COLORINDEX_COMMENT), FALSE);
45 m_btnNumbersText.SetColor(m_pTempColors->GetColor(COLORINDEX_NUMBER), FALSE);
46 m_btnOperatorsText.SetColor(m_pTempColors->GetColor(COLORINDEX_OPERATOR), FALSE);
47 m_btnStringsText.SetColor(m_pTempColors->GetColor(COLORINDEX_STRING), FALSE);
48 m_btnPreprocessorText.SetColor(m_pTempColors->GetColor(COLORINDEX_PREPROCESSOR), FALSE);
49 m_btnUser1Text.SetColor(m_pTempColors->GetColor(COLORINDEX_USER1), FALSE);
50 m_btnUser2Text.SetColor(m_pTempColors->GetColor(COLORINDEX_USER2), FALSE);
52 m_nKeywordsBold = GetCheckVal(COLORINDEX_KEYWORD);
53 m_nFunctionsBold = GetCheckVal(COLORINDEX_FUNCNAME);
54 m_nCommentsBold = GetCheckVal(COLORINDEX_COMMENT);
55 m_nNumbersBold = GetCheckVal(COLORINDEX_NUMBER);
56 m_nOperatorsBold = GetCheckVal(COLORINDEX_OPERATOR);
57 m_nStringsBold = GetCheckVal(COLORINDEX_STRING);
58 m_nPreProcessorBold = GetCheckVal(COLORINDEX_PREPROCESSOR);
59 m_nUser1Bold = GetCheckVal(COLORINDEX_USER1);
60 m_nUser2Bold = GetCheckVal(COLORINDEX_USER2);
63 CPropSyntaxColors::~CPropSyntaxColors()
67 void CPropSyntaxColors::DoDataExchange(CDataExchange* pDX)
69 CPropertyPage::DoDataExchange(pDX);
70 DDX_Control(pDX, IDC_SCOLOR_KEYWORDS, m_btnKeywordsText);
71 DDX_Control(pDX, IDC_SCOLOR_FUNCTIONS, m_btnFunctionsText);
72 DDX_Control(pDX, IDC_SCOLOR_COMMENTS, m_btnCommentsText);
73 DDX_Control(pDX, IDC_SCOLOR_NUMBERS, m_btnNumbersText);
74 DDX_Control(pDX, IDC_SCOLOR_OPERATORS, m_btnOperatorsText);
75 DDX_Control(pDX, IDC_SCOLOR_STRINGS, m_btnStringsText);
76 DDX_Control(pDX, IDC_SCOLOR_PREPROCESSOR, m_btnPreprocessorText);
77 DDX_Control(pDX, IDC_SCOLOR_USER1, m_btnUser1Text);
78 DDX_Control(pDX, IDC_SCOLOR_USER2, m_btnUser2Text);
79 DDX_Control(pDX, IDC_SCOLOR_KEYWORDS_BOLD, m_btnKeywordsBold);
80 DDX_Control(pDX, IDC_SCOLOR_FUNCTIONS_BOLD, m_btnFunctionsBold);
81 DDX_Control(pDX, IDC_SCOLOR_COMMENTS_BOLD, m_btnCommentsBold);
82 DDX_Control(pDX, IDC_SCOLOR_NUMBERS_BOLD, m_btnNumbersBold);
83 DDX_Control(pDX, IDC_SCOLOR_OPERATORS_BOLD, m_btnOperatorsBold);
84 DDX_Control(pDX, IDC_SCOLOR_STRINGS_BOLD, m_btnStringsBold);
85 DDX_Control(pDX, IDC_SCOLOR_PREPROCESSOR_BOLD, m_btnPreProcessorBold);
86 DDX_Control(pDX, IDC_SCOLOR_USER1_BOLD, m_btnUser1Bold);
87 DDX_Control(pDX, IDC_SCOLOR_USER2_BOLD, m_btnUser2Bold);
88 DDX_Check(pDX, IDC_SCOLOR_KEYWORDS_BOLD, m_nKeywordsBold);
89 DDX_Check(pDX, IDC_SCOLOR_FUNCTIONS_BOLD, m_nFunctionsBold);
90 DDX_Check(pDX, IDC_SCOLOR_COMMENTS_BOLD, m_nCommentsBold);
91 DDX_Check(pDX, IDC_SCOLOR_NUMBERS_BOLD, m_nNumbersBold);
92 DDX_Check(pDX, IDC_SCOLOR_OPERATORS_BOLD, m_nOperatorsBold);
93 DDX_Check(pDX, IDC_SCOLOR_STRINGS_BOLD, m_nStringsBold);
94 DDX_Check(pDX, IDC_SCOLOR_PREPROCESSOR_BOLD, m_nPreProcessorBold);
95 DDX_Check(pDX, IDC_SCOLOR_USER1_BOLD, m_nUser1Bold);
96 DDX_Check(pDX, IDC_SCOLOR_USER2_BOLD, m_nUser2Bold);
100 BEGIN_MESSAGE_MAP(CPropSyntaxColors, CPropertyPage)
101 ON_BN_CLICKED(IDC_SCOLOR_KEYWORDS, OnBnClickedEcolorKeywords)
102 ON_BN_CLICKED(IDC_SCOLOR_FUNCTIONS, OnBnClickedEcolorFunctions)
103 ON_BN_CLICKED(IDC_SCOLOR_COMMENTS, OnBnClickedEcolorComments)
104 ON_BN_CLICKED(IDC_SCOLOR_NUMBERS, OnBnClickedEcolorNumbers)
105 ON_BN_CLICKED(IDC_SCOLOR_OPERATORS, OnBnClickedEcolorOperators)
106 ON_BN_CLICKED(IDC_SCOLOR_STRINGS, OnBnClickedEcolorStrings)
107 ON_BN_CLICKED(IDC_SCOLOR_PREPROCESSOR, OnBnClickedEcolorPreprocessor)
108 ON_BN_CLICKED(IDC_SCOLOR_USER1, OnBnClickedEcolorUser1)
109 ON_BN_CLICKED(IDC_SCOLOR_USER2, OnBnClickedEcolorUser2)
110 ON_BN_CLICKED(IDC_SCOLORS_BDEFAULTS, OnBnClickedEcolorsBdefaults)
111 ON_BN_CLICKED(IDC_SCOLOR_KEYWORDS_BOLD, OnBnClickedEcolorKeywordsBold)
112 ON_BN_CLICKED(IDC_SCOLOR_FUNCTIONS_BOLD, OnBnClickedEcolorFunctionsBold)
113 ON_BN_CLICKED(IDC_SCOLOR_COMMENTS_BOLD, OnBnClickedEcolorCommentsBold)
114 ON_BN_CLICKED(IDC_SCOLOR_NUMBERS_BOLD, OnBnClickedEcolorNumbersBold)
115 ON_BN_CLICKED(IDC_SCOLOR_OPERATORS_BOLD, OnBnClickedEcolorOperatorsBold)
116 ON_BN_CLICKED(IDC_SCOLOR_STRINGS_BOLD, OnBnClickedEcolorStringsBold)
117 ON_BN_CLICKED(IDC_SCOLOR_PREPROCESSOR_BOLD, OnBnClickedEcolorPreprocessorBold)
118 ON_BN_CLICKED(IDC_SCOLOR_USER1_BOLD, OnBnClickedEcolorUser1Bold)
119 ON_BN_CLICKED(IDC_SCOLOR_USER2_BOLD, OnBnClickedEcolorUser2Bold)
122 // CPropSyntaxColor message handlers
125 * @brief Called before propertysheet is drawn.
127 BOOL CPropSyntaxColors::OnInitDialog()
129 theApp.TranslateDialog(m_hWnd);
130 return CPropertyPage::OnInitDialog();
134 * @brief Reads options values from storage to UI.
135 * (Property sheet calls this before displaying all property pages)
137 void CPropSyntaxColors::ReadOptions()
142 * @brief Writes options values from UI to storage.
143 * (Property sheet calls this after displaying all property pages)
145 void CPropSyntaxColors::WriteOptions()
147 // User can only change colors via BrowseColorAndSave,
148 // which writes to m_pTempColors
149 // so user's latest choices are in m_pTempColors
150 // (we don't have to read them from screen)
151 m_pTempColors->SaveToRegistry();
155 * @brief Let user browse common color dialog, and select a color & save to registry
157 void CPropSyntaxColors::BrowseColorAndSave(CColorButton & colorButton, int colorIndex)
159 COLORREF currentColor = m_pTempColors->GetColor(colorIndex);
160 CColorDialog dialog(currentColor);
162 dialog.m_cc.lpCustColors = m_cCustColors;
164 if (dialog.DoModal() == IDOK)
166 currentColor = dialog.GetColor();
167 colorButton.SetColor(currentColor);
168 m_pTempColors->SetColor(colorIndex, currentColor);
173 void CPropSyntaxColors::OnBnClickedEcolorKeywords()
175 BrowseColorAndSave(m_btnKeywordsText, COLORINDEX_KEYWORD);
178 void CPropSyntaxColors::OnBnClickedEcolorFunctions()
180 BrowseColorAndSave(m_btnFunctionsText, COLORINDEX_FUNCNAME);
183 void CPropSyntaxColors::OnBnClickedEcolorComments()
185 BrowseColorAndSave(m_btnCommentsText, COLORINDEX_COMMENT);
188 void CPropSyntaxColors::OnBnClickedEcolorNumbers()
190 BrowseColorAndSave(m_btnNumbersText, COLORINDEX_NUMBER);
193 void CPropSyntaxColors::OnBnClickedEcolorOperators()
195 BrowseColorAndSave(m_btnOperatorsText, COLORINDEX_OPERATOR);
198 void CPropSyntaxColors::OnBnClickedEcolorStrings()
200 BrowseColorAndSave(m_btnStringsText, COLORINDEX_STRING);
203 void CPropSyntaxColors::OnBnClickedEcolorPreprocessor()
205 BrowseColorAndSave(m_btnPreprocessorText, COLORINDEX_PREPROCESSOR);
208 void CPropSyntaxColors::OnBnClickedEcolorUser1()
210 BrowseColorAndSave(m_btnUser1Text, COLORINDEX_USER1);
213 void CPropSyntaxColors::OnBnClickedEcolorUser2()
215 BrowseColorAndSave(m_btnUser2Text, COLORINDEX_USER2);
218 void CPropSyntaxColors::OnBnClickedEcolorsBdefaults()
220 m_pTempColors->SetDefaults();
221 m_btnKeywordsText.SetColor(m_pTempColors->GetColor(COLORINDEX_KEYWORD));
222 m_btnFunctionsText.SetColor(m_pTempColors->GetColor(COLORINDEX_FUNCNAME));
223 m_btnCommentsText.SetColor(m_pTempColors->GetColor(COLORINDEX_COMMENT));
224 m_btnNumbersText.SetColor(m_pTempColors->GetColor(COLORINDEX_NUMBER));
225 m_btnOperatorsText.SetColor(m_pTempColors->GetColor(COLORINDEX_OPERATOR));
226 m_btnStringsText.SetColor(m_pTempColors->GetColor(COLORINDEX_STRING));
227 m_btnPreprocessorText.SetColor(m_pTempColors->GetColor(COLORINDEX_PREPROCESSOR));
228 m_btnUser1Text.SetColor(m_pTempColors->GetColor(COLORINDEX_USER1));
229 m_btnUser2Text.SetColor(m_pTempColors->GetColor(COLORINDEX_USER2));
231 m_nKeywordsBold = GetCheckVal(COLORINDEX_KEYWORD);
232 m_nFunctionsBold = GetCheckVal(COLORINDEX_FUNCNAME);
233 m_nCommentsBold = GetCheckVal(COLORINDEX_COMMENT);
234 m_nNumbersBold = GetCheckVal(COLORINDEX_NUMBER);
235 m_nOperatorsBold = GetCheckVal(COLORINDEX_OPERATOR);
236 m_nStringsBold = GetCheckVal(COLORINDEX_STRING);
237 m_nPreProcessorBold = GetCheckVal(COLORINDEX_PREPROCESSOR);
238 m_nUser1Bold = GetCheckVal(COLORINDEX_USER1);
239 m_nUser2Bold = GetCheckVal(COLORINDEX_USER2);
245 * @brief Loads color selection dialog's custom colors from registry
247 void CPropSyntaxColors::LoadCustomColors()
249 SyntaxColors_Load(m_cCustColors, sizeof(m_cCustColors)/sizeof(m_cCustColors[0]));
253 * @brief Saves color selection dialog's custom colors to registry
255 void CPropSyntaxColors::SaveCustomColors()
257 SyntaxColors_Save(m_cCustColors, sizeof(m_cCustColors)/sizeof(m_cCustColors[0]));
260 void CPropSyntaxColors::OnBnClickedEcolorKeywordsBold()
262 UpdateBoldStatus(m_btnKeywordsBold, COLORINDEX_KEYWORD);
265 void CPropSyntaxColors::OnBnClickedEcolorFunctionsBold()
267 UpdateBoldStatus(m_btnFunctionsBold, COLORINDEX_FUNCNAME);
270 void CPropSyntaxColors::OnBnClickedEcolorCommentsBold()
272 UpdateBoldStatus(m_btnCommentsBold, COLORINDEX_COMMENT);
275 void CPropSyntaxColors::OnBnClickedEcolorNumbersBold()
277 UpdateBoldStatus(m_btnNumbersBold, COLORINDEX_NUMBER);
280 void CPropSyntaxColors::OnBnClickedEcolorOperatorsBold()
282 UpdateBoldStatus(m_btnOperatorsBold, COLORINDEX_OPERATOR);
285 void CPropSyntaxColors::OnBnClickedEcolorStringsBold()
287 UpdateBoldStatus(m_btnStringsBold, COLORINDEX_STRING);
290 void CPropSyntaxColors::OnBnClickedEcolorPreprocessorBold()
292 UpdateBoldStatus(m_btnPreProcessorBold, COLORINDEX_PREPROCESSOR);
295 void CPropSyntaxColors::OnBnClickedEcolorUser1Bold()
297 UpdateBoldStatus(m_btnUser1Bold, COLORINDEX_USER1);
300 void CPropSyntaxColors::OnBnClickedEcolorUser2Bold()
302 UpdateBoldStatus(m_btnUser2Bold, COLORINDEX_USER2);
305 int CPropSyntaxColors::GetCheckVal(UINT nColorIndex)
307 if (m_pTempColors->GetBold(nColorIndex))
310 return BST_UNCHECKED;
313 void CPropSyntaxColors::UpdateBoldStatus(CButton &btn, UINT colorIndex)
315 int state = btn.GetCheck();
316 if (state == BST_CHECKED)
317 m_pTempColors->SetBold(colorIndex, TRUE);
319 m_pTempColors->SetBold(colorIndex, FALSE);