Kiln » TortoiseHg » TortoiseHg
Clone URL:  
Pushed to one repository · View In Graph Contained in tip

fogcreek shellext: warn before deleting .kbf directory

Changeset 218eb60d7e2e

Parent b2bbf1aee6bb

by David Golub

Changes to 3 files · Browse files at 218eb60d7e2e Showing diff from parent b2bbf1aee6bb Diff from another changeset...

 
210
211
212
213
214
215
216
217
218
219
 
 
 
 
 
 
 
 
 
 
 
 
 
 
210
211
212
 
 
 
 
 
 
 
213
214
215
216
217
218
219
220
221
222
223
224
225
@@ -210,10 +210,16 @@
 const int KeyShortcutListCount = sizeof(KeyShortcutList) / sizeof(CKeyShortcut);    // Message displayed if the user tries to delete the internal .hg directory -const LPCTSTR DeleteHgMessage = "The folder you are attempting to delete, .hg, is used " - "internally by Mercurial to store the history of this repository. If you delete " - "this folder, your code will no longer be treated as a source code control " - "repository by Mercurial. If you do no have a backup copy of the repository " - "elsewhere, its history will be lost permanently. Are you sure that you want to " - "delete the .hg folder?"; -const LPCTSTR DeleteHgTitle = "TortoiseHg Warning"; +const LPCWSTR DeleteHgMessage = L"The folder you are attempting to delete, .hg, is used " + L"internally by Mercurial to store the history of this repository. If you delete " + L"this folder, your code will no longer be treated as a source code control " + L"repository by Mercurial. If you do no have a backup copy of the repository " + L"elsewhere, its history will be lost permanently. Are you sure that you want to " + L"delete the .hg folder?"; +const LPCWSTR DeleteHgTitle = L"TortoiseHg Warning"; + +// Message displayed if the user tries to delete the internal .kbf directory +const LPCWSTR DeleteKbfMessage = L"The folder you are attempting to delete, .kbf, is " + L"used internally by the kbfiles extension to Mercurial. Deleting it will corrupt " + L"your repository. Are you sure that you want to delete the .kbf folder?"; +const LPCWSTR DeleteKbfTitle = L"TortoiseHg Warning";
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
 
55
56
57
58
 // Copyright (C) 2011 Fog Creek Software  //  // This program is free software: you can redistribute it and/or modify  // it under the terms of the GNU General Public License as published by  // the Free Software Foundation, either version 2 of the License, or  // (at your option) any later version.  //  // This program is distributed in the hope that it will be useful,  // but WITHOUT ANY WARRANTY; without even the implied warranty of  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  // GNU General Public License for more details.  //  // You should have received a copy of the GNU General Public License  // along with this program. If not, see <http://www.gnu.org/licenses/>.    #pragma once    struct CMenuDescription  {   CString strName;   CStringW strMenuText;   CStringW strHelpText;   CString strIconName;   UINT idCmd;  };    // Context menu data  extern const CMenuDescription MenuDescList[];  extern const int MenuDescListCount;  extern const LPCTSTR RepoNoFilesMenu[];  extern const int RepoNoFilesMenuCount;  extern const LPCTSTR RepoFilesMenu[];  extern const int RepoFilesMenuCount;  extern const LPCTSTR NoRepoMenu[];  extern const int NoRepoMenuCount;  extern const LPCTSTR DefaultPromotedString;    // Keyboard shortcut flags  #define KSF_ALT 0x0001  #define KSF_CONTROL 0x0002  #define KSF_SHIFT 0x0004    struct CKeyShortcut  {   CString strName;   WORD wKey;   WORD wFlags;  };    // Keyboard shortcut data  extern const CKeyShortcut KeyShortcutList[];  extern const int KeyShortcutListCount;    // Warning messages displayed by the copy hook -extern const LPCTSTR DeleteHgMessage; -extern const LPCTSTR DeleteHgTitle; +extern const LPCWSTR DeleteHgMessage; +extern const LPCWSTR DeleteHgTitle; +extern const LPCWSTR DeleteKbfMessage; +extern const LPCWSTR DeleteKbfTitle;
 
30
31
32
33
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
35
36
 
37
38
39
 
42
43
44
45
 
46
47
48
 
30
31
32
 
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
 
54
55
56
57
 
60
61
62
 
63
64
65
66
@@ -30,10 +30,28 @@
  if (wFunc != FO_DELETE || !(dwSrcAttribs & FILE_ATTRIBUTE_DIRECTORY)) return IDYES;     CString strDirName = pszSrcFile; - if (strDirName.Right(4) != "\\.hg") return IDYES; + LPCTSTR lpszMsgName = NULL; + CStringW strMenuText; + CStringW strHelpText; + if (strDirName.Right(4) == "\\.hg") + { + lpszMsgName = "hgwarning"; + strMenuText = DeleteHgTitle; + strHelpText = DeleteHgMessage; + } + else if (strDirName.Right(5) == "\\.kbf") + { + strDirName.Truncate(strDirName.GetLength() - 5); + strDirName += "\\.hg\\kilnbfiles\\dirstate"; + if (::PathFileExists(strDirName)) + { + lpszMsgName = "kbfwarning"; + strMenuText = DeleteKbfTitle; + strHelpText = DeleteKbfMessage; + } + }   - CStringW strMenuText = DeleteHgTitle; - CStringW strHelpText = DeleteHgMessage; + if (lpszMsgName == NULL) return IDYES;     // Attempt to load localized message and title strings if they exist.   CString strLang; @@ -42,7 +60,7 @@
  {   CStringW strMenuText2;   CStringW strHelpText2; - GetCMenuTranslation(strLang, "hgwarning", strMenuText, strHelpText); + GetCMenuTranslation(strLang, lpszMsgName, strMenuText, strHelpText);   if (!strMenuText2.IsEmpty()) strMenuText = strMenuText2;   if (!strHelpText2.IsEmpty()) strHelpText = strHelpText2;   }