OSDN Git Service

Update debug register_recover.reg
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Settings / SetOverlayPage.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2003-2008 - TortoiseSVN\r
4 \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
9 \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
14 \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
18 //\r
19 #include "stdafx.h"\r
20 #include "TortoiseProc.h"\r
21 #include "SetOverlayPage.h"\r
22 #include "SetOverlayIcons.h"\r
23 #include "Globals.h"\r
24 #include "ShellUpdater.h"\r
25 #include "..\TGitCache\CacheInterface.h"\r
26 #include ".\setoverlaypage.h"\r
27 #include "MessageBox.h"\r
28 \r
29 \r
30 IMPLEMENT_DYNAMIC(CSetOverlayPage, ISettingsPropPage)\r
31 CSetOverlayPage::CSetOverlayPage()\r
32         : ISettingsPropPage(CSetOverlayPage::IDD)\r
33         , m_bRemovable(FALSE)\r
34         , m_bNetwork(FALSE)\r
35         , m_bFixed(FALSE)\r
36         , m_bCDROM(FALSE)\r
37         , m_bRAM(FALSE)\r
38         , m_bUnknown(FALSE)\r
39         , m_bOnlyExplorer(FALSE)\r
40         , m_sExcludePaths(_T(""))\r
41         , m_sIncludePaths(_T(""))\r
42         , m_bUnversionedAsModified(FALSE)\r
43         , m_bFloppy(FALSE)\r
44         , m_bShowExcludedAsNormal(TRUE)\r
45         , m_bShowIgnoredOverlay(FALSE)\r
46         , m_bShowUnversionedOverlay(FALSE)\r
47 {\r
48         m_regOnlyExplorer = CRegDWORD(_T("Software\\TortoiseGit\\LoadDllOnlyInExplorer"), FALSE);\r
49         m_regDriveMaskRemovable = CRegDWORD(_T("Software\\TortoiseGit\\DriveMaskRemovable"));\r
50         m_regDriveMaskFloppy = CRegDWORD(_T("Software\\TortoiseGit\\DriveMaskFloppy"));\r
51         m_regDriveMaskRemote = CRegDWORD(_T("Software\\TortoiseGit\\DriveMaskRemote"));\r
52         m_regDriveMaskFixed = CRegDWORD(_T("Software\\TortoiseGit\\DriveMaskFixed"), TRUE);\r
53         m_regDriveMaskCDROM = CRegDWORD(_T("Software\\TortoiseGit\\DriveMaskCDROM"));\r
54         m_regDriveMaskRAM = CRegDWORD(_T("Software\\TortoiseGit\\DriveMaskRAM"));\r
55         m_regDriveMaskUnknown = CRegDWORD(_T("Software\\TortoiseGit\\DriveMaskUnknown"));\r
56         m_regExcludePaths = CRegString(_T("Software\\TortoiseGit\\OverlayExcludeList"));\r
57         m_regIncludePaths = CRegString(_T("Software\\TortoiseGit\\OverlayIncludeList"));\r
58         m_regCacheType = CRegDWORD(_T("Software\\TortoiseGit\\CacheType"), GetSystemMetrics(SM_REMOTESESSION) ? 2 : 1);\r
59         m_regUnversionedAsModified = CRegDWORD(_T("Software\\TortoiseGit\\UnversionedAsModified"), FALSE);\r
60         m_regShowExcludedAsNormal = CRegDWORD(_T("Software\\TortoiseGit\\ShowExcludedAsNormal"), TRUE);\r
61         m_regShowIgnoredOverlay = CRegDWORD(_T("Software\\TortoiseGit\\ShowIgnoredOverlay"), TRUE);\r
62         m_regShowUnversionedOverlay = CRegDWORD(_T("Software\\TortoiseGit\\ShowUnversionedOverlay"), TRUE);\r
63 \r
64         m_bOnlyExplorer = m_regOnlyExplorer;\r
65         m_bRemovable = m_regDriveMaskRemovable;\r
66         m_bFloppy = m_regDriveMaskFloppy;\r
67         m_bNetwork = m_regDriveMaskRemote;\r
68         m_bFixed = m_regDriveMaskFixed;\r
69         m_bCDROM = m_regDriveMaskCDROM;\r
70         m_bRAM = m_regDriveMaskRAM;\r
71         m_bUnknown = m_regDriveMaskUnknown;\r
72         m_bUnversionedAsModified = m_regUnversionedAsModified;\r
73         m_bShowIgnoredOverlay = m_regShowIgnoredOverlay;\r
74         m_bShowUnversionedOverlay = m_regShowUnversionedOverlay;\r
75         m_bShowExcludedAsNormal = m_regShowExcludedAsNormal;\r
76         m_sExcludePaths = m_regExcludePaths;\r
77         m_sExcludePaths.Replace(_T("\n"), _T("\r\n"));\r
78         m_sIncludePaths = m_regIncludePaths;\r
79         m_sIncludePaths.Replace(_T("\n"), _T("\r\n"));\r
80         m_dwCacheType = m_regCacheType;\r
81 }\r
82 \r
83 CSetOverlayPage::~CSetOverlayPage()\r
84 {\r
85 }\r
86 \r
87 void CSetOverlayPage::DoDataExchange(CDataExchange* pDX)\r
88 {\r
89         ISettingsPropPage::DoDataExchange(pDX);\r
90         DDX_Check(pDX, IDC_REMOVABLE, m_bRemovable);\r
91         DDX_Check(pDX, IDC_NETWORK, m_bNetwork);\r
92         DDX_Check(pDX, IDC_FIXED, m_bFixed);\r
93         DDX_Check(pDX, IDC_CDROM, m_bCDROM);\r
94         DDX_Check(pDX, IDC_RAM, m_bRAM);\r
95         DDX_Check(pDX, IDC_UNKNOWN, m_bUnknown);\r
96         DDX_Check(pDX, IDC_ONLYEXPLORER, m_bOnlyExplorer);\r
97         DDX_Text(pDX, IDC_EXCLUDEPATHS, m_sExcludePaths);\r
98         DDX_Text(pDX, IDC_INCLUDEPATHS, m_sIncludePaths);\r
99         DDX_Check(pDX, IDC_UNVERSIONEDASMODIFIED, m_bUnversionedAsModified);\r
100         DDX_Check(pDX, IDC_FLOPPY, m_bFloppy);\r
101         DDX_Check(pDX, IDC_SHOWEXCLUDEDASNORMAL, m_bShowExcludedAsNormal);\r
102         DDX_Check(pDX, IDC_SHOWIGNOREDOVERLAY, m_bShowIgnoredOverlay);\r
103         DDX_Check(pDX, IDC_SHOWUNVERSIONEDOVERLAY, m_bShowUnversionedOverlay);\r
104 }\r
105 \r
106 BEGIN_MESSAGE_MAP(CSetOverlayPage, ISettingsPropPage)\r
107         ON_BN_CLICKED(IDC_REMOVABLE, OnChange)\r
108         ON_BN_CLICKED(IDC_FLOPPY, &CSetOverlayPage::OnChange)\r
109         ON_BN_CLICKED(IDC_NETWORK, OnChange)\r
110         ON_BN_CLICKED(IDC_FIXED, OnChange)\r
111         ON_BN_CLICKED(IDC_CDROM, OnChange)\r
112         ON_BN_CLICKED(IDC_UNKNOWN, OnChange)\r
113         ON_BN_CLICKED(IDC_RAM, OnChange)\r
114         ON_BN_CLICKED(IDC_ONLYEXPLORER, OnChange)\r
115         ON_EN_CHANGE(IDC_EXCLUDEPATHS, OnChange)\r
116         ON_EN_CHANGE(IDC_INCLUDEPATHS, OnChange)\r
117         ON_BN_CLICKED(IDC_CACHEDEFAULT, &CSetOverlayPage::OnChange)\r
118         ON_BN_CLICKED(IDC_CACHESHELL, &CSetOverlayPage::OnChange)\r
119         ON_BN_CLICKED(IDC_CACHESHELL2, &CSetOverlayPage::OnChange)\r
120         ON_BN_CLICKED(IDC_CACHENONE, &CSetOverlayPage::OnChange)\r
121         ON_BN_CLICKED(IDC_UNVERSIONEDASMODIFIED, &CSetOverlayPage::OnChange)\r
122         ON_BN_CLICKED(IDC_SHOWEXCLUDEDASNORMAL, &CSetOverlayPage::OnChange)\r
123         ON_BN_CLICKED(IDC_SHOWIGNOREDOVERLAY, &CSetOverlayPage::OnChange)\r
124         ON_BN_CLICKED(IDC_SHOWUNVERSIONEDOVERLAY, &CSetOverlayPage::OnChange)\r
125 END_MESSAGE_MAP()\r
126 \r
127 BOOL CSetOverlayPage::OnInitDialog()\r
128 {\r
129         ISettingsPropPage::OnInitDialog();\r
130 \r
131         switch (m_dwCacheType)\r
132         {\r
133         case 0:\r
134                 CheckRadioButton(IDC_CACHEDEFAULT, IDC_CACHENONE, IDC_CACHENONE);\r
135                 break;\r
136         default:\r
137         case 1:\r
138                 CheckRadioButton(IDC_CACHEDEFAULT, IDC_CACHENONE, IDC_CACHEDEFAULT);\r
139                 break;\r
140         case 2:\r
141                 CheckRadioButton(IDC_CACHEDEFAULT, IDC_CACHENONE, IDC_CACHESHELL);\r
142                 break;\r
143         case 3:\r
144                 CheckRadioButton(IDC_CACHEDEFAULT, IDC_CACHENONE, IDC_CACHESHELL2);\r
145                 break;\r
146         }\r
147         GetDlgItem(IDC_UNVERSIONEDASMODIFIED)->EnableWindow(m_dwCacheType == 1);\r
148         GetDlgItem(IDC_FLOPPY)->EnableWindow(m_bRemovable);\r
149 \r
150         m_tooltips.Create(this);\r
151         m_tooltips.AddTool(IDC_ONLYEXPLORER, IDS_SETTINGS_ONLYEXPLORER_TT);\r
152         m_tooltips.AddTool(IDC_EXCLUDEPATHS, IDS_SETTINGS_EXCLUDELIST_TT);      \r
153         m_tooltips.AddTool(IDC_INCLUDEPATHS, IDS_SETTINGS_INCLUDELIST_TT);\r
154         m_tooltips.AddTool(IDC_CACHEDEFAULT, IDS_SETTINGS_CACHEDEFAULT_TT);\r
155         m_tooltips.AddTool(IDC_CACHESHELL, IDS_SETTINGS_CACHESHELL_TT);\r
156         m_tooltips.AddTool(IDC_CACHESHELL2, IDS_SETTINGS_CACHESHELL_TT);//TODO: separate tooltip text\r
157         m_tooltips.AddTool(IDC_CACHENONE, IDS_SETTINGS_CACHENONE_TT);\r
158         m_tooltips.AddTool(IDC_UNVERSIONEDASMODIFIED, IDS_SETTINGS_UNVERSIONEDASMODIFIED_TT);\r
159         m_tooltips.AddTool(IDC_SHOWEXCLUDEDASNORMAL, IDS_SETTINGS_SHOWEXCLUDEDASNORMAL_TT);\r
160 \r
161         UpdateData(FALSE);\r
162 \r
163         return TRUE;\r
164 }\r
165 \r
166 BOOL CSetOverlayPage::PreTranslateMessage(MSG* pMsg)\r
167 {\r
168         m_tooltips.RelayEvent(pMsg);\r
169         return ISettingsPropPage::PreTranslateMessage(pMsg);\r
170 }\r
171 \r
172 void CSetOverlayPage::OnChange()\r
173 {\r
174         UpdateData();\r
175         int id = GetCheckedRadioButton(IDC_CACHEDEFAULT, IDC_CACHENONE);\r
176         switch (id)\r
177         {\r
178         default:\r
179         case IDC_CACHEDEFAULT:\r
180                 m_dwCacheType = 1;\r
181                 break;\r
182         case IDC_CACHESHELL:\r
183                 m_dwCacheType = 2;\r
184                 break;\r
185         case IDC_CACHESHELL2:\r
186                 m_dwCacheType = 3;\r
187                 break;\r
188         case IDC_CACHENONE:\r
189                 m_dwCacheType = 0;\r
190                 break;\r
191         }\r
192         GetDlgItem(IDC_UNVERSIONEDASMODIFIED)->EnableWindow(m_dwCacheType == 1);\r
193         GetDlgItem(IDC_FLOPPY)->EnableWindow(m_bRemovable);\r
194         SetModified();\r
195 }\r
196 \r
197 BOOL CSetOverlayPage::OnApply()\r
198 {\r
199         UpdateData();\r
200         Store (m_bOnlyExplorer, m_regOnlyExplorer);\r
201         if (DWORD(m_regDriveMaskRemovable) != DWORD(m_bRemovable))\r
202                 m_restart = Restart_Cache;\r
203         Store (m_bRemovable, m_regDriveMaskRemovable);\r
204 \r
205         if (DWORD(m_regDriveMaskFloppy) != DWORD(m_bFloppy))\r
206                 m_restart = Restart_Cache;\r
207         Store (m_bFloppy, m_regDriveMaskFloppy);\r
208 \r
209         if (DWORD(m_regDriveMaskRemote) != DWORD(m_bNetwork))\r
210                 m_restart = Restart_Cache;\r
211         Store (m_bNetwork, m_regDriveMaskRemote);\r
212 \r
213         if (DWORD(m_regDriveMaskFixed) != DWORD(m_bFixed))\r
214                 m_restart = Restart_Cache;\r
215         Store (m_bFixed, m_regDriveMaskFixed);\r
216 \r
217         if (DWORD(m_regDriveMaskCDROM) != DWORD(m_bCDROM))\r
218                 m_restart = Restart_Cache;\r
219         Store (m_bCDROM, m_regDriveMaskCDROM);\r
220 \r
221         if (DWORD(m_regDriveMaskRAM) != DWORD(m_bRAM))\r
222                 m_restart = Restart_Cache;\r
223         Store (m_bRAM, m_regDriveMaskRAM);\r
224 \r
225         if (DWORD(m_regDriveMaskUnknown) != DWORD(m_bUnknown))\r
226                 m_restart = Restart_Cache;\r
227         Store (m_bUnknown, m_regDriveMaskUnknown);\r
228 \r
229         if (m_sExcludePaths.Compare(CString(m_regExcludePaths)))\r
230                 m_restart = Restart_Cache;\r
231         m_sExcludePaths.Replace(_T("\r"), _T(""));\r
232         if (m_sExcludePaths.Right(1).Compare(_T("\n"))!=0)\r
233                 m_sExcludePaths += _T("\n");\r
234         Store (m_sExcludePaths, m_regExcludePaths);\r
235         m_sExcludePaths.Replace(_T("\n"), _T("\r\n"));\r
236         m_sIncludePaths.Replace(_T("\r"), _T(""));\r
237         if (m_sIncludePaths.Right(1).Compare(_T("\n"))!=0)\r
238                 m_sIncludePaths += _T("\n");\r
239         if (m_sIncludePaths.Compare(CString(m_regIncludePaths)))\r
240                 m_restart = Restart_Cache;\r
241         Store (m_sIncludePaths, m_regIncludePaths);\r
242         m_sIncludePaths.Replace(_T("\n"), _T("\r\n"));\r
243 \r
244         if (DWORD(m_regUnversionedAsModified) != DWORD(m_bUnversionedAsModified))\r
245                 m_restart = Restart_Cache;\r
246         Store (m_bUnversionedAsModified, m_regUnversionedAsModified);\r
247         Store (m_bShowIgnoredOverlay, m_regShowIgnoredOverlay);\r
248         Store (m_bShowUnversionedOverlay, m_regShowUnversionedOverlay);\r
249         if (DWORD(m_regShowExcludedAsNormal) != DWORD(m_bShowExcludedAsNormal))\r
250                 m_restart = Restart_Cache;\r
251         Store (m_bShowExcludedAsNormal, m_regShowExcludedAsNormal);\r
252 \r
253         Store (m_dwCacheType, m_regCacheType);\r
254         if (m_dwCacheType != 1)\r
255         {\r
256                 // close the possible running cache process\r
257                 HWND hWnd = ::FindWindow(TSVN_CACHE_WINDOW_NAME, TSVN_CACHE_WINDOW_NAME);\r
258                 if (hWnd)\r
259                 {\r
260                         ::PostMessage(hWnd, WM_CLOSE, NULL, NULL);\r
261                 }\r
262                 m_restart = Restart_None;\r
263         }\r
264         SetModified(FALSE);\r
265         return ISettingsPropPage::OnApply();\r
266 }\r
267 \r
268 \r
269 \r
270 \r