Fix typos
[TortoiseGit.git] / src / TortoiseProc / Settings / SettingsColors.cpp
blobd7f8273f5dbfd879096029d6ed220d38e82bd277
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2003-2008 - TortoiseSVN
4 // Copyright (C) 2011-2013, 2016-2017, 2020 - TortoiseGit
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 "SettingsColors.h"
23 #include "Theme.h"
24 #include "DarkModeHelper.h"
25 #include "Settings\Settings.h"
27 IMPLEMENT_DYNAMIC(CSettingsColors, ISettingsPropPage)
28 CSettingsColors::CSettingsColors()
29 : ISettingsPropPage(CSettingsColors::IDD)
31 m_regRevGraphUseLocalForCur = CRegDWORD(L"Software\\TortoiseGit\\TortoiseProc\\Graph\\RevGraphUseLocalForCur");
34 CSettingsColors::~CSettingsColors()
38 void CSettingsColors::DoDataExchange(CDataExchange* pDX)
40 ISettingsPropPage::DoDataExchange(pDX);
41 DDX_Control(pDX, IDC_CONFLICTCOLOR, m_cConflict);
42 DDX_Control(pDX, IDC_ADDEDCOLOR, m_cAdded);
43 DDX_Control(pDX, IDC_DELETEDCOLOR, m_cDeleted);
44 DDX_Control(pDX, IDC_MERGEDCOLOR, m_cMerged);
45 DDX_Control(pDX, IDC_MODIFIEDCOLOR, m_cModified);
46 DDX_Control(pDX, IDC_NOTENODECOLOR, m_cNoteNode);
47 DDX_Control(pDX, IDC_OTHERREFSCOLOR, m_cOtherRefs);
48 DDX_Control(pDX, IDC_RENAMEDCOLOR, m_cRenamed);
49 DDX_Control(pDX, IDC_REVGRAPHUSELOCALFORCUR, m_RevGraphUseLocalForCur);
50 DDX_Control(pDX, IDC_DARKTHEME, m_chkUseDarkMode);
54 BEGIN_MESSAGE_MAP(CSettingsColors, ISettingsPropPage)
55 ON_BN_CLICKED(IDC_RESTORE, OnBnClickedRestore)
56 ON_BN_CLICKED(IDC_CONFLICTCOLOR, &CSettingsColors::OnBnClickedColor)
57 ON_BN_CLICKED(IDC_ADDEDCOLOR, &CSettingsColors::OnBnClickedColor)
58 ON_BN_CLICKED(IDC_DELETEDCOLOR, &CSettingsColors::OnBnClickedColor)
59 ON_BN_CLICKED(IDC_MERGEDCOLOR, &CSettingsColors::OnBnClickedColor)
60 ON_BN_CLICKED(IDC_MODIFIEDCOLOR, &CSettingsColors::OnBnClickedColor)
61 ON_BN_CLICKED(IDC_NOTENODECOLOR, &CSettingsColors::OnBnClickedColor)
62 ON_BN_CLICKED(IDC_RENAMEDCOLOR, &CSettingsColors::OnBnClickedColor)
63 ON_BN_CLICKED(IDC_REVGRAPHUSELOCALFORCUR, &CSettingsColors::OnBnClickedColor)
64 ON_BN_CLICKED(IDC_DARKTHEME, &CSettingsColors::OnBnClickedTheme)
65 END_MESSAGE_MAP()
67 BOOL CSettingsColors::OnInitDialog()
69 ISettingsPropPage::OnInitDialog();
71 m_chkUseDarkMode.EnableWindow(CTheme::Instance().IsDarkModeAllowed());
72 m_chkUseDarkMode.SetCheck(DWORD(m_regUseDarkMode) != 0 ? BST_CHECKED : BST_UNCHECKED);
73 m_tooltips.AddTool(IDC_DARKTHEME, IDS_DARKTHEME_TT);
75 m_cAdded.SetColor(m_Colors.GetColor(CColors::Added));
76 m_cDeleted.SetColor(m_Colors.GetColor(CColors::Deleted));
77 m_cMerged.SetColor(m_Colors.GetColor(CColors::Merged));
78 m_cModified.SetColor(m_Colors.GetColor(CColors::Modified));
79 m_cConflict.SetColor(m_Colors.GetColor(CColors::Conflict));
80 m_cNoteNode.SetColor(m_Colors.GetColor(CColors::NoteNode));
81 m_cOtherRefs.SetColor(m_Colors.GetColor(CColors::OtherRef));
82 m_cRenamed.SetColor(m_Colors.GetColor(CColors::Renamed));
83 DWORD revGraphUseLocalForCur = m_regRevGraphUseLocalForCur;
84 m_RevGraphUseLocalForCur.SetCheck(!!revGraphUseLocalForCur);
86 CString sDefaultText, sCustomText;
87 sDefaultText.LoadString(IDS_COLOURPICKER_DEFAULTTEXT);
88 sCustomText.LoadString(IDS_COLOURPICKER_CUSTOMTEXT);
89 m_cAdded.EnableAutomaticButton(sDefaultText, m_Colors.GetColor(CColors::Added, true));
90 m_cAdded.EnableOtherButton(sCustomText);
91 m_cDeleted.EnableAutomaticButton(sDefaultText, m_Colors.GetColor(CColors::Deleted, true));
92 m_cDeleted.EnableOtherButton(sCustomText);
93 m_cMerged.EnableAutomaticButton(sDefaultText, m_Colors.GetColor(CColors::Merged, true));
94 m_cMerged.EnableOtherButton(sCustomText);
95 m_cModified.EnableAutomaticButton(sDefaultText, m_Colors.GetColor(CColors::Modified, true));
96 m_cModified.EnableOtherButton(sCustomText);
97 m_cConflict.EnableAutomaticButton(sDefaultText, m_Colors.GetColor(CColors::Conflict, true));
98 m_cConflict.EnableOtherButton(sCustomText);
99 m_cNoteNode.EnableAutomaticButton(sDefaultText, m_Colors.GetColor(CColors::NoteNode, true));
100 m_cNoteNode.EnableOtherButton(sCustomText);
101 m_cOtherRefs.EnableAutomaticButton(sDefaultText, m_Colors.GetColor(CColors::OtherRef, true));
102 m_cOtherRefs.EnableOtherButton(sCustomText);
103 m_cRenamed.EnableAutomaticButton(sDefaultText, m_Colors.GetColor(CColors::Renamed, true));
104 m_cRenamed.EnableOtherButton(sCustomText);
106 return TRUE;
109 void CSettingsColors::OnBnClickedRestore()
111 m_cAdded.SetColor(m_Colors.GetColor(CColors::Added, true));
112 m_cDeleted.SetColor(m_Colors.GetColor(CColors::Deleted, true));
113 m_cMerged.SetColor(m_Colors.GetColor(CColors::Merged, true));
114 m_cModified.SetColor(m_Colors.GetColor(CColors::Modified, true));
115 m_cConflict.SetColor(m_Colors.GetColor(CColors::Conflict, true));
116 m_cNoteNode.SetColor(m_Colors.GetColor(CColors::NoteNode, true));
117 m_cOtherRefs.SetColor(m_Colors.GetColor(CColors::OtherRef, true));
118 m_cRenamed.SetColor(m_Colors.GetColor(CColors::Renamed, true));
119 m_RevGraphUseLocalForCur.SetCheck(FALSE);
120 SetModified(TRUE);
123 BOOL CSettingsColors::OnApply()
125 m_Colors.SetColor(CColors::Added, m_cAdded.GetColor() == -1 ? m_cAdded.GetAutomaticColor() : m_cAdded.GetColor());
126 m_Colors.SetColor(CColors::Deleted, m_cDeleted.GetColor() == -1 ? m_cDeleted.GetAutomaticColor() : m_cDeleted.GetColor());
127 m_Colors.SetColor(CColors::Merged, m_cMerged.GetColor() == -1 ? m_cMerged.GetAutomaticColor() : m_cMerged.GetColor());
128 m_Colors.SetColor(CColors::Modified, m_cModified.GetColor() == -1 ? m_cModified.GetAutomaticColor() : m_cModified.GetColor());
129 m_Colors.SetColor(CColors::Conflict, m_cConflict.GetColor() == -1 ? m_cConflict.GetAutomaticColor() : m_cConflict.GetColor());
130 m_Colors.SetColor(CColors::NoteNode, m_cNoteNode.GetColor() == -1 ? m_cNoteNode.GetAutomaticColor() : m_cNoteNode.GetColor());
131 m_Colors.SetColor(CColors::OtherRef, m_cOtherRefs.GetColor() == -1 ? m_cOtherRefs.GetAutomaticColor() : m_cOtherRefs.GetColor());
132 m_Colors.SetColor(CColors::Renamed, m_cRenamed.GetColor() == -1 ? m_cRenamed.GetAutomaticColor() : m_cRenamed.GetColor());
133 m_Colors.SetColor(CColors::PropertyChanged, m_cModified.GetColor() == -1 ? m_cModified.GetAutomaticColor() : m_cModified.GetColor());
134 DWORD revGraphUseLocalForCur = m_RevGraphUseLocalForCur.GetCheck();
135 m_regRevGraphUseLocalForCur = revGraphUseLocalForCur;
137 m_regUseDarkMode = ((m_chkUseDarkMode.GetCheck() == BST_CHECKED) && CTheme::Instance().IsDarkModeAllowed()) ? 1 : 0;
139 return ISettingsPropPage::OnApply();
142 void CSettingsColors::OnBnClickedColor()
144 SetModified();
147 void CSettingsColors::OnBnClickedTheme()
149 CTheme::Instance().SetDarkTheme(m_chkUseDarkMode.GetCheck() == BST_CHECKED);
150 m_chkUseDarkMode.SetCheck(CTheme::Instance().IsDarkTheme() ? BST_CHECKED : BST_UNCHECKED);
152 auto parentSheet = dynamic_cast<CSettings*>(GetParentSheet());
153 if (parentSheet)
155 DarkModeHelper::Instance().AllowDarkModeForApp(CTheme::Instance().IsDarkTheme());
156 parentSheet->SetTheme(CTheme::Instance().IsDarkTheme());
157 CTheme::Instance().SetThemeForDialog(parentSheet->GetSafeHwnd(), CTheme::Instance().IsDarkTheme());
160 SetModified();