OSDN Git Service

Add SYNC dialog
[tortoisegit/TortoiseGitJp.git] / src / TortoiseProc / Commands / Command.h
1 // TortoiseSVN - a Windows shell extension for easy version control\r
2 \r
3 // Copyright (C) 2007 - 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 #pragma once\r
20 #include "TortoiseProc.h"\r
21 #include "CmdLineParser.h"\r
22 #include "TGitPath.h"\r
23 #include "git.h"\r
24 \r
25 \r
26 \r
27 /**\r
28  * \ingroup TortoiseProc\r
29  * Interface for all command line commands TortoiseProc can execute.\r
30  */\r
31 class Command\r
32 {\r
33 public:\r
34         /**\r
35          * Executes the command.\r
36          */\r
37         virtual bool                    Execute() = 0;\r
38 \r
39         void                                    SetParser(const CCmdLineParser& p) {parser = p;}\r
40         void                                    SetPaths(const CTGitPathList& plist, const CTGitPath path) \r
41                                                         {       \r
42                                                                 orgCmdLinePath = path;\r
43                                                                 CString WinPath=path.GetWinPath();\r
44                                                                 if(WinPath.Left(g_Git.m_CurrentDir.GetLength())==g_Git.m_CurrentDir)\r
45                                                                 {\r
46                                                                         if(g_Git.m_CurrentDir[g_Git.m_CurrentDir.GetLength()-1] == _T('\\'))\r
47                                                                         {\r
48                                                                                 cmdLinePath.SetFromWin( WinPath.Right(WinPath.GetLength()-g_Git.m_CurrentDir.GetLength()));\r
49                                                                         }else\r
50                                                                         {\r
51                                                                                 cmdLinePath.SetFromWin( WinPath.Right(WinPath.GetLength()-g_Git.m_CurrentDir.GetLength()-1));\r
52                                                                         }\r
53                                                                 }\r
54                                                                 orgPathList = plist; \r
55                                                                 for(int i=0;i<plist.GetCount();i++)\r
56                                                                 {\r
57                                                                         WinPath=plist[i].GetWinPath();\r
58                                                                         CTGitPath p;\r
59                                                                         if(WinPath.Left(g_Git.m_CurrentDir.GetLength())==g_Git.m_CurrentDir)\r
60                                                                         {\r
61                                                                                 if(g_Git.m_CurrentDir[g_Git.m_CurrentDir.GetLength()-1] == _T('\\'))\r
62                                                                                 {\r
63                                                                                         p.SetFromWin( WinPath.Right(WinPath.GetLength()-g_Git.m_CurrentDir.GetLength()));\r
64                                                                                 }else\r
65                                                                                 {\r
66                                                                                         p.SetFromWin( WinPath.Right(WinPath.GetLength()-g_Git.m_CurrentDir.GetLength()-1));\r
67                                                                                 }\r
68                                                                         }else\r
69                                                                                 p=plist[i];\r
70                                                                         pathList.AddPath(p);\r
71 \r
72                                                                 }\r
73                                                         }\r
74         void                                    SetExplorerHwnd(HWND hWnd) {hwndExplorer = hWnd;}\r
75 protected:\r
76         CCmdLineParser                  parser;\r
77         CTGitPathList                   pathList;\r
78         CTGitPathList                   orgPathList;\r
79         CTGitPath                               cmdLinePath;\r
80         CTGitPath                               orgCmdLinePath;\r
81         HWND                                    hwndExplorer;\r
82 };\r
83 \r
84 /**\r
85  * \ingroup TortoiseProc\r
86  * Factory for the different commands which TortoiseProc executes from the\r
87  * command line.\r
88  */\r
89 class CommandServer\r
90 {\r
91 public:\r
92 \r
93         Command *                               GetCommand(const CString& sCmd);\r
94 };