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.
21 #include "TortoiseProc.h"
22 #include "SettingsTUDiff.h"
24 // CSettingsUDiff dialog
26 IMPLEMENT_DYNAMIC(CSettingsUDiff
, ISettingsPropPage
)
28 CSettingsUDiff::CSettingsUDiff()
29 : ISettingsPropPage(CSettingsUDiff::IDD
)
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))
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
)
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
;
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
);
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
);
187 void CSettingsUDiff::OnChange()
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
);
211 BOOL
CSettingsUDiff::OnApply()
214 if (m_cFontNames
.GetSelFont())
215 m_sFontName
= m_cFontNames
.GetSelFont()->m_strName
;
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
);
238 return ISettingsPropPage::OnApply();
241 void CSettingsUDiff::OnBnClickedColor()