Fixed typo introduced in last commit
[TortoiseGit.git] / src / TortoiseMerge / SetColorPage.cpp
blobb745be056315fff9a930d3fa1fd63a092dedc5ac
1 // TortoiseGitMerge - a Diff/Patch program
3 // Copyright (C) 2006-2008, 2012 - TortoiseSVN
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 #include "stdafx.h"
20 #include "TortoiseMerge.h"
21 #include "SetColorPage.h"
22 #include "DiffColors.h"
25 // CSetColorPage dialog
26 #define INLINEADDED_COLOR RGB(255, 255, 150)
27 #define INLINEREMOVED_COLOR RGB(200, 100, 100)
28 #define MODIFIED_COLOR RGB(220, 220, 255)
30 IMPLEMENT_DYNAMIC(CSetColorPage, CPropertyPage)
31 CSetColorPage::CSetColorPage()
32 : CPropertyPage(CSetColorPage::IDD)
33 , m_bReloadNeeded(FALSE)
34 , m_regInlineAdded(_T("Software\\TortoiseGitMerge\\InlineAdded"), INLINEADDED_COLOR)
35 , m_regInlineRemoved(_T("Software\\TortoiseGitMerge\\InlineRemoved"), INLINEREMOVED_COLOR)
36 , m_regModifiedBackground(_T("Software\\TortoiseGitMerge\\Colors\\ColorModifiedB"), MODIFIED_COLOR)
37 , m_bInit(false)
41 CSetColorPage::~CSetColorPage()
43 m_bInit = FALSE;
46 void CSetColorPage::SaveData()
48 if (!m_bInit)
49 return;
51 COLORREF cFg = ::GetSysColor(COLOR_WINDOWTEXT);
53 COLORREF cBk = m_cBkNormal.GetColor();
54 if (cBk == -1)
55 cBk = m_cBkNormal.GetAutomaticColor();
56 CDiffColors::GetInstance().SetColors(DIFFSTATE_NORMAL, cBk, cFg);
57 CDiffColors::GetInstance().SetColors(DIFFSTATE_UNKNOWN, cBk, cFg);
59 cBk = m_cBkRemoved.GetColor();
60 if (cBk == -1)
61 cBk = m_cBkRemoved.GetAutomaticColor();
62 CDiffColors::GetInstance().SetColors(DIFFSTATE_REMOVED, cBk, cFg);
63 CDiffColors::GetInstance().SetColors(DIFFSTATE_IDENTICALREMOVED, cBk, cFg);
64 CDiffColors::GetInstance().SetColors(DIFFSTATE_THEIRSREMOVED, cBk, cFg);
65 CDiffColors::GetInstance().SetColors(DIFFSTATE_YOURSREMOVED, cBk, cFg);
67 cBk = m_cBkAdded.GetColor();
68 if (cBk == -1)
69 cBk = m_cBkAdded.GetAutomaticColor();
70 CDiffColors::GetInstance().SetColors(DIFFSTATE_ADDED, cBk, cFg);
71 CDiffColors::GetInstance().SetColors(DIFFSTATE_IDENTICALADDED, cBk, cFg);
72 CDiffColors::GetInstance().SetColors(DIFFSTATE_THEIRSADDED, cBk, cFg);
73 CDiffColors::GetInstance().SetColors(DIFFSTATE_YOURSADDED, cBk, cFg);
74 CDiffColors::GetInstance().SetColors(DIFFSTATE_MOVED_TO, cBk, cFg);
76 if ((DWORD)m_regInlineAdded != (DWORD)m_cBkInlineAdded.GetColor())
77 m_bReloadNeeded = true;
78 m_regInlineAdded = (m_cBkInlineAdded.GetColor() == -1 ? m_cBkInlineAdded.GetAutomaticColor() : m_cBkInlineAdded.GetColor());
79 if ((DWORD)m_regInlineRemoved != (DWORD)m_cBkInlineRemoved.GetColor())
80 m_bReloadNeeded = true;
81 m_regInlineRemoved = (m_cBkInlineRemoved.GetColor() == -1 ? m_cBkInlineRemoved.GetAutomaticColor() : m_cBkInlineRemoved.GetColor());
82 if ((DWORD)m_regModifiedBackground != (DWORD)m_cBkModified.GetColor())
83 m_bReloadNeeded = true;
84 m_regModifiedBackground = (m_cBkModified.GetColor() == -1 ? m_cBkModified.GetAutomaticColor() : m_cBkModified.GetColor());
86 cBk = m_cBkEmpty.GetColor();
87 if (cBk == -1)
88 cBk = m_cBkEmpty.GetAutomaticColor();
89 CDiffColors::GetInstance().SetColors(DIFFSTATE_EMPTY, cBk, cFg);
91 COLORREF adjustedcolor = cBk;
92 cBk = m_cBkConflict.GetColor();
93 if (cBk == -1)
94 cBk = m_cBkConflict.GetAutomaticColor();
95 CDiffColors::GetInstance().SetColors(DIFFSTATE_CONFLICTED, cBk, cFg);
96 CDiffColors::GetInstance().SetColors(DIFFSTATE_CONFLICTED_IGNORED, cBk, cFg);
97 CDiffColors::GetInstance().SetColors(DIFFSTATE_CONFLICTADDED, cBk, cFg);
98 CDiffColors::GetInstance().SetColors(DIFFSTATE_CONFLICTEMPTY, adjustedcolor, cFg);
100 cBk = m_cBkConflictResolved.GetColor();
101 if (cBk == -1)
102 cBk = m_cBkConflictResolved.GetAutomaticColor();
103 CDiffColors::GetInstance().SetColors(DIFFSTATE_CONFLICTRESOLVED, cBk, cFg);
105 cBk = m_cBkMovedFrom.GetColor();
106 if (cBk == -1)
107 cBk = m_cBkMovedFrom.GetAutomaticColor();
108 CDiffColors::GetInstance().SetColors(DIFFSTATE_MOVED_FROM, cBk, cFg);
110 cBk = m_cBkMovedTo.GetColor();
111 if (cBk == -1)
112 cBk = m_cBkMovedTo.GetAutomaticColor();
113 CDiffColors::GetInstance().SetColors(DIFFSTATE_MOVED_TO, cBk, cFg);
115 cFg = m_cFgWhitespaces.GetColor();
116 if (cFg == -1)
117 cFg = m_cFgWhitespaces.GetAutomaticColor();
118 CRegDWORD regWhitespaceColor(_T("Software\\TortoiseGitMerge\\Colors\\Whitespace"), GetSysColor(COLOR_GRAYTEXT));
119 regWhitespaceColor = cFg;
122 void CSetColorPage::DoDataExchange(CDataExchange* pDX)
124 CPropertyPage::DoDataExchange(pDX);
125 DDX_Control(pDX, IDC_BKNORMAL, m_cBkNormal);
126 DDX_Control(pDX, IDC_BKREMOVED, m_cBkRemoved);
127 DDX_Control(pDX, IDC_BKADDED, m_cBkAdded);
128 DDX_Control(pDX, IDC_BKWHITESPACES, m_cBkInlineAdded);
129 DDX_Control(pDX, IDC_BKWHITESPACEDIFF, m_cBkInlineRemoved);
130 DDX_Control(pDX, IDC_BKMODIFIED, m_cBkModified);
131 DDX_Control(pDX, IDC_BKEMPTY, m_cBkEmpty);
132 DDX_Control(pDX, IDC_BKCONFLICTED, m_cBkConflict);
133 DDX_Control(pDX, IDC_BKCONFLICTRESOLVED, m_cBkConflictResolved);
134 DDX_Control(pDX, IDC_BKMOVEDFROM, m_cBkMovedFrom);
135 DDX_Control(pDX, IDC_BKMOVEDTO, m_cBkMovedTo);
136 DDX_Control(pDX, IDC_FGWHITESPACES, m_cFgWhitespaces);
140 BEGIN_MESSAGE_MAP(CSetColorPage, CPropertyPage)
141 ON_BN_CLICKED(IDC_BKNORMAL, &CSetColorPage::OnBnClickedColor)
142 ON_BN_CLICKED(IDC_BKREMOVED, &CSetColorPage::OnBnClickedColor)
143 ON_BN_CLICKED(IDC_BKADDED, &CSetColorPage::OnBnClickedColor)
144 ON_BN_CLICKED(IDC_BKWHITESPACES, &CSetColorPage::OnBnClickedColor)
145 ON_BN_CLICKED(IDC_BKWHITESPACEDIFF, &CSetColorPage::OnBnClickedColor)
146 ON_BN_CLICKED(IDC_BKMODIFIED, &CSetColorPage::OnBnClickedColor)
147 ON_BN_CLICKED(IDC_BKEMPTY, &CSetColorPage::OnBnClickedColor)
148 ON_BN_CLICKED(IDC_BKCONFLICTED, &CSetColorPage::OnBnClickedColor)
149 ON_BN_CLICKED(IDC_BKCONFLICTRESOLVED, &CSetColorPage::OnBnClickedColor)
150 ON_BN_CLICKED(IDC_BKMOVEDFROM, &CSetColorPage::OnBnClickedColor)
151 ON_BN_CLICKED(IDC_BKMOVEDTO, &CSetColorPage::OnBnClickedColor)
152 ON_BN_CLICKED(IDC_FGWHITESPACES, &CSetColorPage::OnBnClickedColor)
153 END_MESSAGE_MAP()
156 // CSetColorPage message handlers
158 BOOL CSetColorPage::OnInitDialog()
160 CPropertyPage::OnInitDialog();
162 COLORREF cBk;
163 COLORREF cFg;
165 CString sDefaultText, sCustomText;
166 sDefaultText.LoadString(IDS_COLOURPICKER_DEFAULTTEXT);
167 sCustomText.LoadString(IDS_COLOURPICKER_CUSTOMTEXT);
169 CDiffColors::GetInstance().GetColors(DIFFSTATE_NORMAL, cBk, cFg);
170 m_cBkNormal.SetColor(cBk);
171 m_cBkNormal.EnableAutomaticButton(sDefaultText, DIFFSTATE_NORMAL_DEFAULT_BG);
172 m_cBkNormal.EnableOtherButton(sCustomText);
174 CDiffColors::GetInstance().GetColors(DIFFSTATE_REMOVED, cBk, cFg);
175 m_cBkRemoved.SetColor(cBk);
176 m_cBkRemoved.EnableAutomaticButton(sDefaultText, DIFFSTATE_REMOVED_DEFAULT_BG);
177 m_cBkRemoved.EnableOtherButton(sCustomText);
179 CDiffColors::GetInstance().GetColors(DIFFSTATE_ADDED, cBk, cFg);
180 m_cBkAdded.SetColor(cBk);
181 m_cBkAdded.EnableAutomaticButton(sDefaultText, DIFFSTATE_ADDED_DEFAULT_BG);
182 m_cBkAdded.EnableOtherButton(sCustomText);
184 m_cBkInlineAdded.SetColor((DWORD)m_regInlineAdded);
185 m_cBkInlineAdded.EnableAutomaticButton(sDefaultText, INLINEADDED_COLOR);
186 m_cBkInlineAdded.EnableOtherButton(sCustomText);
188 m_cBkInlineRemoved.SetColor((DWORD)m_regInlineRemoved);
189 m_cBkInlineRemoved.EnableAutomaticButton(sDefaultText, INLINEREMOVED_COLOR);
190 m_cBkInlineRemoved.EnableOtherButton(sCustomText);
192 m_cBkModified.SetColor((DWORD)m_regModifiedBackground);
193 m_cBkModified.EnableAutomaticButton(sDefaultText, MODIFIED_COLOR);
194 m_cBkModified.EnableOtherButton(sCustomText);
196 CDiffColors::GetInstance().GetColors(DIFFSTATE_EMPTY, cBk, cFg);
197 m_cBkEmpty.SetColor(cBk);
198 m_cBkEmpty.EnableAutomaticButton(sDefaultText, DIFFSTATE_EMPTY_DEFAULT_BG);
199 m_cBkEmpty.EnableOtherButton(sCustomText);
201 CDiffColors::GetInstance().GetColors(DIFFSTATE_CONFLICTED, cBk, cFg);
202 m_cBkConflict.SetColor(cBk);
203 m_cBkConflict.EnableAutomaticButton(sDefaultText, DIFFSTATE_CONFLICTED_DEFAULT_BG);
204 m_cBkConflict.EnableOtherButton(sCustomText);
206 CDiffColors::GetInstance().GetColors(DIFFSTATE_MOVED_FROM, cBk, cFg);
207 m_cBkMovedFrom.SetColor(cBk);
208 m_cBkMovedFrom.EnableAutomaticButton(sDefaultText, DIFFSTATE_MOVEDFROM_DEFAULT_BG);
209 m_cBkMovedFrom.EnableOtherButton(sCustomText);
211 CDiffColors::GetInstance().GetColors(DIFFSTATE_MOVED_TO, cBk, cFg);
212 m_cBkMovedTo.SetColor(cBk);
213 m_cBkMovedTo.EnableAutomaticButton(sDefaultText, DIFFSTATE_MOVEDTO_DEFAULT_BG);
214 m_cBkMovedTo.EnableOtherButton(sCustomText);
216 CDiffColors::GetInstance().GetColors(DIFFSTATE_CONFLICTRESOLVED, cBk, cFg);
217 m_cBkConflictResolved.SetColor(cBk);
218 m_cBkConflictResolved.EnableAutomaticButton(sDefaultText, DIFFSTATE_CONFLICTRESOLVED_DEFAULT_BG);
219 m_cBkConflictResolved.EnableOtherButton(sCustomText);
222 CRegDWORD regWhitespaceColor(_T("Software\\TortoiseGitMerge\\Colors\\Whitespace"), GetSysColor(COLOR_GRAYTEXT));
223 m_cFgWhitespaces.SetColor((COLORREF)(DWORD)regWhitespaceColor);
224 m_cFgWhitespaces.EnableAutomaticButton(sDefaultText, GetSysColor(COLOR_GRAYTEXT));
225 m_cFgWhitespaces.EnableOtherButton(sCustomText);
228 m_bInit = TRUE;
230 return TRUE; // return TRUE unless you set the focus to a control
231 // EXCEPTION: OCX Property Pages should return FALSE
234 BOOL CSetColorPage::OnApply()
236 UpdateData();
237 SaveData();
238 SetModified(FALSE);
239 return CPropertyPage::OnApply();
242 void CSetColorPage::OnBnClickedColor()
244 SetModified();