1 // TortoiseMerge - a Diff/Patch program
\r
3 // Copyright (C) 2006-2008 - TortoiseSVN
\r
5 // This program is free software; you can redistribute it and/or
\r
6 // modify it under the terms of the GNU General Public License
\r
7 // as published by the Free Software Foundation; either version 2
\r
8 // of the License, or (at your option) any later version.
\r
10 // This program is distributed in the hope that it will be useful,
\r
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
13 // GNU General Public License for more details.
\r
15 // You should have received a copy of the GNU General Public License
\r
16 // along with this program; if not, write to the Free Software Foundation,
\r
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
\r
20 #include "TortoiseMerge.h"
\r
21 #include "SetColorPage.h"
\r
22 #include "DiffColors.h"
\r
25 // CSetColorPage dialog
\r
26 #define INLINEADDED_COLOR RGB(255, 255, 150)
\r
27 #define INLINEREMOVED_COLOR RGB(200, 100, 100)
\r
28 #define MODIFIED_COLOR RGB(220, 220, 255)
\r
30 IMPLEMENT_DYNAMIC(CSetColorPage, CPropertyPage)
\r
31 CSetColorPage::CSetColorPage()
\r
32 : CPropertyPage(CSetColorPage::IDD)
\r
33 , m_bReloadNeeded(FALSE)
\r
34 , m_regInlineAdded(_T("Software\\TortoiseMerge\\InlineAdded"), INLINEADDED_COLOR)
\r
35 , m_regInlineRemoved(_T("Software\\TortoiseMerge\\InlineRemoved"), INLINEREMOVED_COLOR)
\r
36 , m_regModifiedBackground(_T("Software\\TortoiseMerge\\Colors\\ColorModifiedB"), MODIFIED_COLOR)
\r
40 CSetColorPage::~CSetColorPage()
\r
45 void CSetColorPage::SaveData()
\r
52 cFg = ::GetSysColor(COLOR_WINDOWTEXT);
\r
54 cBk = m_cBkNormal.GetColor();
\r
56 cBk = m_cBkNormal.GetAutomaticColor();
\r
57 CDiffColors::GetInstance().SetColors(DIFFSTATE_NORMAL, cBk, cFg);
\r
58 CDiffColors::GetInstance().SetColors(DIFFSTATE_UNKNOWN, cBk, cFg);
\r
60 cBk = m_cBkRemoved.GetColor();
\r
62 cBk = m_cBkRemoved.GetAutomaticColor();
\r
63 CDiffColors::GetInstance().SetColors(DIFFSTATE_REMOVED, cBk, cFg);
\r
64 CDiffColors::GetInstance().SetColors(DIFFSTATE_IDENTICALREMOVED, cBk, cFg);
\r
65 CDiffColors::GetInstance().SetColors(DIFFSTATE_THEIRSREMOVED, cBk, cFg);
\r
66 CDiffColors::GetInstance().SetColors(DIFFSTATE_YOURSREMOVED, cBk, cFg);
\r
68 cBk = m_cBkAdded.GetColor();
\r
70 cBk = m_cBkAdded.GetAutomaticColor();
\r
71 CDiffColors::GetInstance().SetColors(DIFFSTATE_ADDED, cBk, cFg);
\r
72 CDiffColors::GetInstance().SetColors(DIFFSTATE_IDENTICALADDED, cBk, cFg);
\r
73 CDiffColors::GetInstance().SetColors(DIFFSTATE_THEIRSADDED, cBk, cFg);
\r
74 CDiffColors::GetInstance().SetColors(DIFFSTATE_YOURSADDED, cBk, cFg);
\r
76 if ((DWORD)m_regInlineAdded != (DWORD)m_cBkInlineAdded.GetColor())
\r
77 m_bReloadNeeded = true;
\r
78 m_regInlineAdded = (m_cBkInlineAdded.GetColor() == -1 ? m_cBkInlineAdded.GetAutomaticColor() : m_cBkInlineAdded.GetColor());
\r
79 if ((DWORD)m_regInlineRemoved != (DWORD)m_cBkInlineRemoved.GetColor())
\r
80 m_bReloadNeeded = true;
\r
81 m_regInlineRemoved = (m_cBkInlineRemoved.GetColor() == -1 ? m_cBkInlineRemoved.GetAutomaticColor() : m_cBkInlineRemoved.GetColor());
\r
82 if ((DWORD)m_regModifiedBackground != (DWORD)m_cBkModified.GetColor())
\r
83 m_bReloadNeeded = true;
\r
84 m_regModifiedBackground = (m_cBkModified.GetColor() == -1 ? m_cBkModified.GetAutomaticColor() : m_cBkModified.GetColor());
\r
86 cBk = m_cBkEmpty.GetColor();
\r
88 cBk = m_cBkEmpty.GetAutomaticColor();
\r
89 CDiffColors::GetInstance().SetColors(DIFFSTATE_EMPTY, cBk, cFg);
\r
91 COLORREF adjustedcolor;
\r
92 cBk = m_cBkConflict.GetColor();
\r
94 cBk = m_cBkConflict.GetAutomaticColor();
\r
95 CDiffColors::GetInstance().SetColors(DIFFSTATE_CONFLICTED, cBk, cFg);
\r
96 CDiffColors::GetInstance().SetColors(DIFFSTATE_CONFLICTED_IGNORED, cBk, cFg);
\r
97 CDiffColors::GetInstance().SetColors(DIFFSTATE_CONFLICTADDED, cBk, cFg);
\r
98 CDiffColors::GetInstance().SetColors(DIFFSTATE_CONFLICTEMPTY, adjustedcolor, cFg);
\r
100 cBk = m_cBkConflictResolved.GetColor();
\r
102 cBk = m_cBkConflictResolved.GetAutomaticColor();
\r
103 CDiffColors::GetInstance().SetColors(DIFFSTATE_CONFLICTRESOLVED, cBk, cFg);
\r
105 cFg = m_cFgWhitespaces.GetColor();
\r
107 cFg = m_cFgWhitespaces.GetAutomaticColor();
\r
108 CRegDWORD regWhitespaceColor(_T("Software\\TortoiseMerge\\Colors\\Whitespace"), GetSysColor(COLOR_GRAYTEXT));
\r
109 regWhitespaceColor = cFg;
\r
113 void CSetColorPage::DoDataExchange(CDataExchange* pDX)
\r
115 CPropertyPage::DoDataExchange(pDX);
\r
116 DDX_Control(pDX, IDC_BKNORMAL, m_cBkNormal);
\r
117 DDX_Control(pDX, IDC_BKREMOVED, m_cBkRemoved);
\r
118 DDX_Control(pDX, IDC_BKADDED, m_cBkAdded);
\r
119 DDX_Control(pDX, IDC_BKWHITESPACES, m_cBkInlineAdded);
\r
120 DDX_Control(pDX, IDC_BKWHITESPACEDIFF, m_cBkInlineRemoved);
\r
121 DDX_Control(pDX, IDC_BKMODIFIED, m_cBkModified);
\r
122 DDX_Control(pDX, IDC_BKEMPTY, m_cBkEmpty);
\r
123 DDX_Control(pDX, IDC_BKCONFLICTED, m_cBkConflict);
\r
124 DDX_Control(pDX, IDC_BKCONFLICTRESOLVED, m_cBkConflictResolved);
\r
125 DDX_Control(pDX, IDC_FGWHITESPACES, m_cFgWhitespaces);
\r
129 BEGIN_MESSAGE_MAP(CSetColorPage, CPropertyPage)
\r
130 ON_BN_CLICKED(IDC_BKNORMAL, &CSetColorPage::OnBnClickedColor)
\r
131 ON_BN_CLICKED(IDC_BKREMOVED, &CSetColorPage::OnBnClickedColor)
\r
132 ON_BN_CLICKED(IDC_BKADDED, &CSetColorPage::OnBnClickedColor)
\r
133 ON_BN_CLICKED(IDC_BKWHITESPACES, &CSetColorPage::OnBnClickedColor)
\r
134 ON_BN_CLICKED(IDC_BKWHITESPACEDIFF, &CSetColorPage::OnBnClickedColor)
\r
135 ON_BN_CLICKED(IDC_BKMODIFIED, &CSetColorPage::OnBnClickedColor)
\r
136 ON_BN_CLICKED(IDC_BKEMPTY, &CSetColorPage::OnBnClickedColor)
\r
137 ON_BN_CLICKED(IDC_BKCONFLICTED, &CSetColorPage::OnBnClickedColor)
\r
138 ON_BN_CLICKED(IDC_BKCONFLICTRESOLVED, &CSetColorPage::OnBnClickedColor)
\r
139 ON_BN_CLICKED(IDC_FGWHITESPACES, &CSetColorPage::OnBnClickedColor)
\r
143 // CSetColorPage message handlers
\r
145 BOOL CSetColorPage::OnInitDialog()
\r
147 CPropertyPage::OnInitDialog();
\r
152 CString sDefaultText, sCustomText;
\r
153 sDefaultText.LoadString(IDS_COLOURPICKER_DEFAULTTEXT);
\r
154 sCustomText.LoadString(IDS_COLOURPICKER_CUSTOMTEXT);
\r
156 CDiffColors::GetInstance().GetColors(DIFFSTATE_NORMAL, cBk, cFg);
\r
157 m_cBkNormal.SetColor(cBk);
\r
158 m_cBkNormal.EnableAutomaticButton(sDefaultText, DIFFSTATE_NORMAL_DEFAULT_BG);
\r
159 m_cBkNormal.EnableOtherButton(sCustomText);
\r
161 CDiffColors::GetInstance().GetColors(DIFFSTATE_REMOVED, cBk, cFg);
\r
162 m_cBkRemoved.SetColor(cBk);
\r
163 m_cBkRemoved.EnableAutomaticButton(sDefaultText, DIFFSTATE_REMOVED_DEFAULT_BG);
\r
164 m_cBkRemoved.EnableOtherButton(sCustomText);
\r
166 CDiffColors::GetInstance().GetColors(DIFFSTATE_ADDED, cBk, cFg);
\r
167 m_cBkAdded.SetColor(cBk);
\r
168 m_cBkAdded.EnableAutomaticButton(sDefaultText, DIFFSTATE_ADDED_DEFAULT_BG);
\r
169 m_cBkAdded.EnableOtherButton(sCustomText);
\r
171 m_cBkInlineAdded.SetColor((DWORD)m_regInlineAdded);
\r
172 m_cBkInlineAdded.EnableAutomaticButton(sDefaultText, INLINEADDED_COLOR);
\r
173 m_cBkInlineAdded.EnableOtherButton(sCustomText);
\r
175 m_cBkInlineRemoved.SetColor((DWORD)m_regInlineRemoved);
\r
176 m_cBkInlineRemoved.EnableAutomaticButton(sDefaultText, INLINEREMOVED_COLOR);
\r
177 m_cBkInlineRemoved.EnableOtherButton(sCustomText);
\r
179 m_cBkModified.SetColor((DWORD)m_regModifiedBackground);
\r
180 m_cBkModified.EnableAutomaticButton(sDefaultText, MODIFIED_COLOR);
\r
181 m_cBkModified.EnableOtherButton(sCustomText);
\r
183 CDiffColors::GetInstance().GetColors(DIFFSTATE_EMPTY, cBk, cFg);
\r
184 m_cBkEmpty.SetColor(cBk);
\r
185 m_cBkEmpty.EnableAutomaticButton(sDefaultText, DIFFSTATE_EMPTY_DEFAULT_BG);
\r
186 m_cBkEmpty.EnableOtherButton(sCustomText);
\r
188 CDiffColors::GetInstance().GetColors(DIFFSTATE_CONFLICTED, cBk, cFg);
\r
189 m_cBkConflict.SetColor(cBk);
\r
190 m_cBkConflict.EnableAutomaticButton(sDefaultText, DIFFSTATE_CONFLICTED_DEFAULT_BG);
\r
191 m_cBkConflict.EnableOtherButton(sCustomText);
\r
193 CDiffColors::GetInstance().GetColors(DIFFSTATE_CONFLICTRESOLVED, cBk, cFg);
\r
194 m_cBkConflictResolved.SetColor(cBk);
\r
195 m_cBkConflictResolved.EnableAutomaticButton(sDefaultText, DIFFSTATE_CONFLICTRESOLVED_DEFAULT_BG);
\r
196 m_cBkConflictResolved.EnableOtherButton(sCustomText);
\r
199 CRegDWORD regWhitespaceColor(_T("Software\\TortoiseMerge\\Colors\\Whitespace"), GetSysColor(COLOR_GRAYTEXT));
\r
200 m_cFgWhitespaces.SetColor((COLORREF)(DWORD)regWhitespaceColor);
\r
201 m_cFgWhitespaces.EnableAutomaticButton(sDefaultText, GetSysColor(COLOR_GRAYTEXT));
\r
202 m_cFgWhitespaces.EnableOtherButton(sCustomText);
\r
207 return TRUE; // return TRUE unless you set the focus to a control
\r
208 // EXCEPTION: OCX Property Pages should return FALSE
\r
211 BOOL CSetColorPage::OnApply()
\r
215 SetModified(FALSE);
\r
216 return CPropertyPage::OnApply();
\r
219 void CSetColorPage::OnBnClickedColor()
\r