OSDN Git Service

Fixed issue #155: Fix SVN Rebase sets upstream as remotes/trunk
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Commands / DelUnversionedCommand.cpp
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2007-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 "DelUnversionedCommand.h"\r
21 \r
22 #include "DeleteUnversionedDlg.h"\r
23 \r
24 bool DelUnversionedCommand::Execute()\r
25 {\r
26         bool bRet = false;\r
27         CDeleteUnversionedDlg dlg;\r
28         dlg.m_pathList = pathList;\r
29         if (dlg.DoModal() == IDOK)\r
30         {\r
31                 if (dlg.m_pathList.GetCount() == 0)\r
32                         return FALSE;\r
33                 // now remove all items by moving them to the trash bin\r
34                 dlg.m_pathList.RemoveChildren();\r
35                 CString filelist;\r
36                 for (INT_PTR i=0; i<dlg.m_pathList.GetCount(); ++i)\r
37                 {\r
38                         filelist += dlg.m_pathList[i].GetWinPathString();\r
39                         filelist += _T("|");\r
40                 }\r
41                 filelist += _T("|");\r
42                 int len = filelist.GetLength();\r
43                 TCHAR * buf = new TCHAR[len+2];\r
44                 _tcscpy_s(buf, len+2, filelist);\r
45                 for (int i=0; i<len; ++i)\r
46                         if (buf[i] == '|')\r
47                                 buf[i] = 0;\r
48                 SHFILEOPSTRUCT fileop;\r
49                 fileop.hwnd = hwndExplorer;\r
50                 fileop.wFunc = FO_DELETE;\r
51                 fileop.pFrom = buf;\r
52                 fileop.pTo = NULL;\r
53                 fileop.fFlags = FOF_NO_CONNECTED_ELEMENTS | FOF_ALLOWUNDO;\r
54                 fileop.lpszProgressTitle = _T("deleting file");\r
55                 bRet = (SHFileOperation(&fileop) == 0);\r
56                 delete [] buf;\r
57         }\r
58         return true;\r
59 }\r