No need to explicitly initialize CString and use Empty() for clearing CString
[TortoiseGit.git] / src / TortoiseProc / Settings / SettingsTUDiff.cpp
blobe641b2e9052ffcc817cddf225c53379ab1947c76
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2014-2015 - TortoiseGit
4 // Copyright (C) 2014 - TortoiseSVN
6 // This program is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU General Public License
8 // as published by the Free Software Foundation; either version 2
9 // of the License, or (at your option) any later version.
11 // This program is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License
17 // along with this program; if not, write to the Free Software Foundation,
18 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20 #include "stdafx.h"
21 #include "TortoiseProc.h"
22 #include "SettingsTUDiff.h"
24 // CSettingsUDiff dialog
26 IMPLEMENT_DYNAMIC(CSettingsUDiff, ISettingsPropPage)
28 CSettingsUDiff::CSettingsUDiff()
29 : ISettingsPropPage(CSettingsUDiff::IDD)
30 , m_dwFontSize(0)
31 , m_dwTabSize(4)
33 m_regForeCommandColor = CRegDWORD(L"Software\\TortoiseGit\\UDiffForeCommandColor", UDIFF_COLORFORECOMMAND);
34 m_regForePositionColor = CRegDWORD(L"Software\\TortoiseGit\\UDiffForePositionColor", UDIFF_COLORFOREPOSITION);
35 m_regForeHeaderColor = CRegDWORD(L"Software\\TortoiseGit\\UDiffForeHeaderColor", UDIFF_COLORFOREHEADER);
36 m_regForeCommentColor = CRegDWORD(L"Software\\TortoiseGit\\UDiffForeCommentColor", UDIFF_COLORFORECOMMENT);
37 m_regForeAddedColor = CRegDWORD(L"Software\\TortoiseGit\\UDiffForeAddedColor", UDIFF_COLORFOREADDED);
38 m_regForeRemovedColor = CRegDWORD(L"Software\\TortoiseGit\\UDiffForeRemovedColor", UDIFF_COLORFOREREMOVED);
40 m_regBackCommandColor = CRegDWORD(L"Software\\TortoiseGit\\UDiffBackCommandColor", UDIFF_COLORBACKCOMMAND);
41 m_regBackPositionColor = CRegDWORD(L"Software\\TortoiseGit\\UDiffBackPositionColor", UDIFF_COLORBACKPOSITION);
42 m_regBackHeaderColor = CRegDWORD(L"Software\\TortoiseGit\\UDiffBackHeaderColor", UDIFF_COLORBACKHEADER);
43 m_regBackCommentColor = CRegDWORD(L"Software\\TortoiseGit\\UDiffBackCommentColor", UDIFF_COLORBACKCOMMENT);
44 m_regBackAddedColor = CRegDWORD(L"Software\\TortoiseGit\\UDiffBackAddedColor", UDIFF_COLORBACKADDED);
45 m_regBackRemovedColor = CRegDWORD(L"Software\\TortoiseGit\\UDiffBackRemovedColor", UDIFF_COLORBACKREMOVED);
47 m_regFontName = CRegString(L"Software\\TortoiseGit\\UDiffFontName", L"Courier New");
48 m_regFontSize = CRegDWORD(L"Software\\TortoiseGit\\UDiffFontSize", 10);
49 m_regTabSize = CRegDWORD(L"Software\\TortoiseGit\\UDiffTabSize", 4);
52 CSettingsUDiff::~CSettingsUDiff()
56 void CSettingsUDiff::DoDataExchange(CDataExchange* pDX)
58 ISettingsPropPage::DoDataExchange(pDX);
59 DDX_Control(pDX, IDC_FORECOMMANDCOLOR, m_cForeCommandColor);
60 DDX_Control(pDX, IDC_FOREPOSITIONCOLOR, m_cForePositionColor);
61 DDX_Control(pDX, IDC_FOREHEADERCOLOR, m_cForeHeaderColor);
62 DDX_Control(pDX, IDC_FORECOMMENTCOLOR, m_cForeCommentColor);
63 DDX_Control(pDX, IDC_FOREADDEDCOLOR, m_cForeAddedColor);
64 DDX_Control(pDX, IDC_FOREREMOVEDCOLOR, m_cForeRemovedColor);
66 DDX_Control(pDX, IDC_BACKCOMMANDCOLOR, m_cBackCommandColor);
67 DDX_Control(pDX, IDC_BACKPOSITIONCOLOR, m_cBackPositionColor);
68 DDX_Control(pDX, IDC_BACKHEADERCOLOR, m_cBackHeaderColor);
69 DDX_Control(pDX, IDC_BACKCOMMENTCOLOR, m_cBackCommentColor);
70 DDX_Control(pDX, IDC_BACKADDEDCOLOR, m_cBackAddedColor);
71 DDX_Control(pDX, IDC_BACKREMOVEDCOLOR, m_cBackRemovedColor);
73 DDX_Control(pDX, IDC_FONTSIZES, m_cFontSizes);
74 m_dwFontSize = (DWORD)m_cFontSizes.GetItemData(m_cFontSizes.GetCurSel());
75 if ((m_dwFontSize == 0) || (m_dwFontSize == -1))
77 CString t;
78 m_cFontSizes.GetWindowText(t);
79 m_dwFontSize = _wtoi(t);
81 DDX_Control(pDX, IDC_FONTNAMES, m_cFontNames);
82 DDX_Text(pDX, IDC_TABSIZE, m_dwTabSize);
85 BEGIN_MESSAGE_MAP(CSettingsUDiff, ISettingsPropPage)
86 ON_BN_CLICKED(IDC_RESTORE, &CSettingsUDiff::OnBnClickedRestore)
87 ON_CBN_SELCHANGE(IDC_FONTSIZES, &CSettingsUDiff::OnChange)
88 ON_CBN_SELCHANGE(IDC_FONTNAMES, &CSettingsUDiff::OnChange)
89 ON_EN_CHANGE(IDC_TABSIZE, &CSettingsUDiff::OnChange)
90 ON_BN_CLICKED(IDC_FORECOMMANDCOLOR, &CSettingsUDiff::OnBnClickedColor)
91 ON_BN_CLICKED(IDC_FOREPOSITIONCOLOR, &CSettingsUDiff::OnBnClickedColor)
92 ON_BN_CLICKED(IDC_FOREHEADERCOLOR, &CSettingsUDiff::OnBnClickedColor)
93 ON_BN_CLICKED(IDC_FORECOMMENTCOLOR, &CSettingsUDiff::OnBnClickedColor)
94 ON_BN_CLICKED(IDC_FOREADDEDCOLOR, &CSettingsUDiff::OnBnClickedColor)
95 ON_BN_CLICKED(IDC_FOREREMOVEDCOLOR, &CSettingsUDiff::OnBnClickedColor)
96 ON_BN_CLICKED(IDC_BACKCOMMANDCOLOR, &CSettingsUDiff::OnBnClickedColor)
97 ON_BN_CLICKED(IDC_BACKPOSITIONCOLOR, &CSettingsUDiff::OnBnClickedColor)
98 ON_BN_CLICKED(IDC_BACKHEADERCOLOR, &CSettingsUDiff::OnBnClickedColor)
99 ON_BN_CLICKED(IDC_BACKCOMMENTCOLOR, &CSettingsUDiff::OnBnClickedColor)
100 ON_BN_CLICKED(IDC_BACKADDEDCOLOR, &CSettingsUDiff::OnBnClickedColor)
101 ON_BN_CLICKED(IDC_BACKREMOVEDCOLOR, &CSettingsUDiff::OnBnClickedColor)
102 END_MESSAGE_MAP()
104 // CSettingsUDiff message handlers
106 BOOL CSettingsUDiff::OnInitDialog()
108 CMFCFontComboBox::m_bDrawUsingFont = true;
110 ISettingsPropPage::OnInitDialog();
112 m_cForeCommandColor.SetColor((DWORD)m_regForeCommandColor);
113 m_cForePositionColor.SetColor((DWORD)m_regForePositionColor);
114 m_cForeHeaderColor.SetColor((DWORD)m_regForeHeaderColor);
115 m_cForeCommentColor.SetColor((DWORD)m_regForeCommentColor);
116 m_cForeAddedColor.SetColor((DWORD)m_regForeAddedColor);
117 m_cForeRemovedColor.SetColor((DWORD)m_regForeRemovedColor);
119 m_cBackCommandColor.SetColor((DWORD)m_regBackCommandColor);
120 m_cBackPositionColor.SetColor((DWORD)m_regBackPositionColor);
121 m_cBackHeaderColor.SetColor((DWORD)m_regBackHeaderColor);
122 m_cBackCommentColor.SetColor((DWORD)m_regBackCommentColor);
123 m_cBackAddedColor.SetColor((DWORD)m_regBackAddedColor);
124 m_cBackRemovedColor.SetColor((DWORD)m_regBackRemovedColor);
126 CString sDefaultText, sCustomText;
127 sDefaultText.LoadString(IDS_COLOURPICKER_DEFAULTTEXT);
128 sCustomText.LoadString(IDS_COLOURPICKER_CUSTOMTEXT);
129 m_cForeCommandColor.EnableAutomaticButton(sDefaultText, UDIFF_COLORFORECOMMAND);
130 m_cForeCommandColor.EnableOtherButton(sCustomText);
131 m_cForePositionColor.EnableAutomaticButton(sDefaultText, UDIFF_COLORFOREPOSITION);
132 m_cForePositionColor.EnableOtherButton(sCustomText);
133 m_cForeHeaderColor.EnableAutomaticButton(sDefaultText, UDIFF_COLORFOREHEADER);
134 m_cForeHeaderColor.EnableOtherButton(sCustomText);
135 m_cForeCommentColor.EnableAutomaticButton(sDefaultText, UDIFF_COLORFORECOMMENT);
136 m_cForeCommentColor.EnableOtherButton(sCustomText);
137 m_cForeAddedColor.EnableAutomaticButton(sDefaultText, UDIFF_COLORFOREADDED);
138 m_cForeAddedColor.EnableOtherButton(sCustomText);
139 m_cForeRemovedColor.EnableAutomaticButton(sDefaultText, UDIFF_COLORFOREREMOVED);
140 m_cForeRemovedColor.EnableOtherButton(sCustomText);
142 m_cBackCommandColor.EnableAutomaticButton(sDefaultText, UDIFF_COLORBACKCOMMAND);
143 m_cBackCommandColor.EnableOtherButton(sCustomText);
144 m_cBackPositionColor.EnableAutomaticButton(sDefaultText, UDIFF_COLORBACKPOSITION);
145 m_cBackPositionColor.EnableOtherButton(sCustomText);
146 m_cBackHeaderColor.EnableAutomaticButton(sDefaultText, UDIFF_COLORBACKHEADER);
147 m_cBackHeaderColor.EnableOtherButton(sCustomText);
148 m_cBackCommentColor.EnableAutomaticButton(sDefaultText, UDIFF_COLORBACKCOMMENT);
149 m_cBackCommentColor.EnableOtherButton(sCustomText);
150 m_cBackAddedColor.EnableAutomaticButton(sDefaultText, UDIFF_COLORBACKADDED);
151 m_cBackAddedColor.EnableOtherButton(sCustomText);
152 m_cBackRemovedColor.EnableAutomaticButton(sDefaultText, UDIFF_COLORBACKREMOVED);
153 m_cBackRemovedColor.EnableOtherButton(sCustomText);
155 m_dwTabSize = m_regTabSize;
156 m_sFontName = m_regFontName;
157 m_dwFontSize = m_regFontSize;
158 int count = 0;
159 CString temp;
160 for (int i = 6; i<32; i = i + 2)
162 temp.Format(L"%d", i);
163 m_cFontSizes.AddString(temp);
164 m_cFontSizes.SetItemData(count++, i);
166 BOOL foundfont = FALSE;
167 for (int i = 0; i<m_cFontSizes.GetCount(); i++)
169 if (m_cFontSizes.GetItemData(i) == m_dwFontSize)
171 m_cFontSizes.SetCurSel(i);
172 foundfont = TRUE;
175 if (!foundfont)
177 temp.Format(L"%lu", m_dwFontSize);
178 m_cFontSizes.SetWindowText(temp);
180 m_cFontNames.Setup(DEVICE_FONTTYPE | RASTER_FONTTYPE | TRUETYPE_FONTTYPE, 1, FIXED_PITCH);
181 m_cFontNames.SelectFont(m_sFontName);
183 UpdateData(FALSE);
184 return TRUE;
187 void CSettingsUDiff::OnChange()
189 SetModified();
192 void CSettingsUDiff::OnBnClickedRestore()
194 m_cForeCommandColor.SetColor(UDIFF_COLORFORECOMMAND);
195 m_cForePositionColor.SetColor(UDIFF_COLORFOREPOSITION);
196 m_cForeHeaderColor.SetColor(UDIFF_COLORFOREHEADER);
197 m_cForeCommentColor.SetColor(UDIFF_COLORFORECOMMENT);
198 m_cForeAddedColor.SetColor(UDIFF_COLORFOREADDED);
199 m_cForeRemovedColor.SetColor(UDIFF_COLORFOREREMOVED);
201 m_cBackCommandColor.SetColor(UDIFF_COLORBACKCOMMAND);
202 m_cBackPositionColor.SetColor(UDIFF_COLORBACKPOSITION);
203 m_cBackHeaderColor.SetColor(UDIFF_COLORBACKHEADER);
204 m_cBackCommentColor.SetColor(UDIFF_COLORBACKCOMMENT);
205 m_cBackAddedColor.SetColor(UDIFF_COLORBACKADDED);
206 m_cBackRemovedColor.SetColor(UDIFF_COLORBACKREMOVED);
208 SetModified(TRUE);
211 BOOL CSettingsUDiff::OnApply()
213 UpdateData();
214 if (m_cFontNames.GetSelFont())
215 m_sFontName = m_cFontNames.GetSelFont()->m_strName;
216 else
217 m_sFontName = m_regFontName;
219 Store((m_cForeCommandColor.GetColor() == -1 ? m_cForeCommandColor.GetAutomaticColor() : m_cForeCommandColor.GetColor()), m_regForeCommandColor);
220 Store((m_cForePositionColor.GetColor() == -1 ? m_cForePositionColor.GetAutomaticColor() : m_cForePositionColor.GetColor()), m_regForePositionColor);
221 Store((m_cForeHeaderColor.GetColor() == -1 ? m_cForeHeaderColor.GetAutomaticColor() : m_cForeHeaderColor.GetColor()), m_regForeHeaderColor);
222 Store((m_cForeCommentColor.GetColor() == -1 ? m_cForeCommentColor.GetAutomaticColor() : m_cForeCommentColor.GetColor()), m_regForeCommentColor);
223 Store((m_cForeAddedColor.GetColor() == -1 ? m_cForeAddedColor.GetAutomaticColor() : m_cForeAddedColor.GetColor()), m_regForeAddedColor);
224 Store((m_cForeRemovedColor.GetColor() == -1 ? m_cForeRemovedColor.GetAutomaticColor() : m_cForeRemovedColor.GetColor()), m_regForeRemovedColor);
226 Store((m_cBackCommandColor.GetColor() == -1 ? m_cBackCommandColor.GetAutomaticColor() : m_cBackCommandColor.GetColor()), m_regBackCommandColor);
227 Store((m_cBackPositionColor.GetColor() == -1 ? m_cBackPositionColor.GetAutomaticColor() : m_cBackPositionColor.GetColor()), m_regBackPositionColor);
228 Store((m_cBackHeaderColor.GetColor() == -1 ? m_cBackHeaderColor.GetAutomaticColor() : m_cBackHeaderColor.GetColor()), m_regBackHeaderColor);
229 Store((m_cBackCommentColor.GetColor() == -1 ? m_cBackCommentColor.GetAutomaticColor() : m_cBackCommentColor.GetColor()), m_regBackCommentColor);
230 Store((m_cBackAddedColor.GetColor() == -1 ? m_cBackAddedColor.GetAutomaticColor() : m_cBackAddedColor.GetColor()), m_regBackAddedColor);
231 Store((m_cBackRemovedColor.GetColor() == -1 ? m_cBackRemovedColor.GetAutomaticColor() : m_cBackRemovedColor.GetColor()), m_regBackRemovedColor);
233 Store((LPCTSTR)m_sFontName, m_regFontName);
234 Store(m_dwFontSize, m_regFontSize);
235 Store(m_dwTabSize, m_regTabSize);
237 SetModified(FALSE);
238 return ISettingsPropPage::OnApply();
241 void CSettingsUDiff::OnBnClickedColor()
243 SetModified();