OSDN Git Service

8783bda801c8773e61d25404b8f46ab11bc815be
[tortoisegit/TortoiseGitJp.git] / TortoiseProc / Commands / Command.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 "Command.h"\r
21 \r
22 #include "AboutCommand.h"\r
23 #include "AddCommand.h"\r
24 #include "BlameCommand.h"\r
25 #include "CatCommand.h"\r
26 #include "CheckoutCommand.h"\r
27 #include "CleanupCommand.h"\r
28 #include "CommitCommand.h"\r
29 #include "ConflictEditorCommand.h"\r
30 #include "CopyCommand.h"\r
31 #include "CrashCommand.h"\r
32 #include "CreatePatchCommand.h"\r
33 #include "CreateRepositoryCommand.h"\r
34 #include "DelUnversionedCommand.h"\r
35 #include "DiffCommand.h"\r
36 #include "DropCopyAddCommand.h"\r
37 #include "DropCopyCommand.h"\r
38 #include "DropExportCommand.h"\r
39 #include "DropMoveCommand.h"\r
40 #include "ExportCommand.h"\r
41 #include "HelpCommand.h"\r
42 #include "IgnoreCommand.h"\r
43 #include "ImportCommand.h"\r
44 #include "LockCommand.h"\r
45 #include "LogCommand.h"\r
46 #include "MergeCommand.h"\r
47 #include "MergeAllCommand.h"\r
48 #include "PasteCopyCommand.h"\r
49 #include "PasteMoveCommand.h"\r
50 #include "PrevDiffCommand.h"\r
51 #include "PropertiesCommand.h"\r
52 #include "RebuildIconCacheCommand.h"\r
53 #include "RelocateCommand.h"\r
54 #include "RemoveCommand.h"\r
55 #include "RenameCommand.h"\r
56 #include "RepositoryBrowserCommand.h"\r
57 #include "RepoStatusCommand.h"\r
58 #include "ResolveCommand.h"\r
59 #include "RevertCommand.h"\r
60 #include "RevisiongraphCommand.h"\r
61 #include "RTFMCommand.h"\r
62 #include "SettingsCommand.h"\r
63 #include "ShowCompareCommand.h"\r
64 #include "SwitchCommand.h"\r
65 #include "UnIgnoreCommand.h"\r
66 #include "UnLockCommand.h"\r
67 #include "UpdateCheckCommand.h"\r
68 #include "UpdateCommand.h"\r
69 #include "UrlDiffCommand.h"\r
70 \r
71 typedef enum\r
72 {\r
73         cmdAbout,\r
74         cmdAdd,\r
75         cmdBlame,\r
76         cmdCat,\r
77         cmdCheckout,\r
78         cmdCleanup,\r
79         cmdCommit,\r
80         cmdConflictEditor,\r
81         cmdCopy,\r
82         cmdCrash,\r
83         cmdCreatePatch,\r
84         cmdDelUnversioned,\r
85         cmdDiff,\r
86         cmdDropCopy,\r
87         cmdDropCopyAdd,\r
88         cmdDropExport,\r
89         cmdDropMove,\r
90         cmdExport,\r
91         cmdHelp,\r
92         cmdIgnore,\r
93         cmdImport,\r
94         cmdLock,\r
95         cmdLog,\r
96         cmdMerge,\r
97         cmdMergeAll,\r
98         cmdPasteCopy,\r
99         cmdPasteMove,\r
100         cmdPrevDiff,\r
101         cmdProperties,\r
102         cmdRTFM,\r
103         cmdRebuildIconCache,\r
104         cmdRelocate,\r
105         cmdRemove,\r
106         cmdRename,\r
107         cmdRepoBrowser,\r
108         cmdRepoCreate,\r
109         cmdRepoStatus,\r
110         cmdResolve,\r
111         cmdRevert,\r
112         cmdRevisionGraph,\r
113         cmdSettings,\r
114         cmdShowCompare,\r
115         cmdSwitch,\r
116         cmdUnIgnore,\r
117         cmdUnlock,\r
118         cmdUpdate,\r
119         cmdUpdateCheck,\r
120         cmdUrlDiff,\r
121 } TSVNCommand;\r
122 \r
123 static const struct CommandInfo\r
124 {\r
125         TSVNCommand command;\r
126         LPCTSTR pCommandName;\r
127 } commandInfo[] = \r
128 {\r
129         {       cmdAbout,                       _T("about")                             },\r
130         {       cmdAdd,                         _T("add")                               },\r
131         {       cmdBlame,                       _T("blame")                             },\r
132         {       cmdCat,                         _T("cat")                               },\r
133         {       cmdCheckout,            _T("checkout")                  },\r
134         {       cmdCleanup,                     _T("cleanup")                   },\r
135         {       cmdCommit,                      _T("commit")                    },\r
136         {       cmdConflictEditor,      _T("conflicteditor")    },\r
137         {       cmdCopy,                        _T("copy")                              },\r
138         {       cmdCrash,                       _T("crash")                             },\r
139         {       cmdCreatePatch,         _T("createpatch")               },\r
140         {       cmdDelUnversioned,      _T("delunversioned")    },\r
141         {       cmdDiff,                        _T("diff")                              },\r
142         {       cmdDropCopy,            _T("dropcopy")                  },\r
143         {       cmdDropCopyAdd,         _T("dropcopyadd")               },\r
144         {       cmdDropExport,          _T("dropexport")                },\r
145         {       cmdDropMove,            _T("dropmove")                  },\r
146         {       cmdExport,                      _T("export")                    },\r
147         {       cmdHelp,                        _T("help")                              },\r
148         {       cmdIgnore,                      _T("ignore")                    },\r
149         {       cmdImport,                      _T("import")                    },\r
150         {       cmdLock,                        _T("lock")                              },\r
151         {       cmdLog,                         _T("log")                               },\r
152         {       cmdMerge,                       _T("merge")                             },\r
153         {       cmdMergeAll,            _T("mergeall")                  },\r
154         {       cmdPasteCopy,           _T("pastecopy")                 },\r
155         {       cmdPasteMove,           _T("pastemove")                 },\r
156         {       cmdPrevDiff,            _T("prevdiff")                  },\r
157         {       cmdProperties,          _T("properties")                },\r
158         {       cmdRTFM,                        _T("rtfm")                              },\r
159         {       cmdRebuildIconCache,_T("rebuildiconcache")      },\r
160         {       cmdRelocate,            _T("relocate")                  },\r
161         {       cmdRemove,                      _T("remove")                    },\r
162         {       cmdRename,                      _T("rename")                    },\r
163         {       cmdRepoBrowser,         _T("repobrowser")               },\r
164         {       cmdRepoCreate,          _T("repocreate")                },\r
165         {       cmdRepoStatus,          _T("repostatus")                },\r
166         {       cmdResolve,                     _T("resolve")                   },\r
167         {       cmdRevert,                      _T("revert")                    },\r
168         {       cmdRevisionGraph,       _T("revisiongraph")             },\r
169         {       cmdSettings,            _T("settings")                  },\r
170         {       cmdShowCompare,         _T("showcompare")               },\r
171         {       cmdSwitch,                      _T("switch")                    },\r
172         {       cmdUnIgnore,            _T("unignore")                  },\r
173         {       cmdUnlock,                      _T("unlock")                    },\r
174         {       cmdUpdate,                      _T("update")                    },\r
175         {       cmdUpdateCheck,         _T("updatecheck")               },\r
176         {       cmdUrlDiff,                     _T("urldiff")                   },\r
177 };\r
178 \r
179 \r
180 \r
181 \r
182 Command * CommandServer::GetCommand(const CString& sCmd)\r
183 {\r
184         // Look up the command\r
185         TSVNCommand command = cmdAbout;         // Something harmless as a default\r
186         for (int nCommand = 0; nCommand < (sizeof(commandInfo)/sizeof(commandInfo[0])); nCommand++)\r
187         {\r
188                 if (sCmd.Compare(commandInfo[nCommand].pCommandName) == 0)\r
189                 {\r
190                         // We've found the command\r
191                         command = commandInfo[nCommand].command;\r
192                         // If this fires, you've let the enum get out of sync with the commandInfo array\r
193                         ASSERT((int)command == nCommand);\r
194                         break;\r
195                 }\r
196         }\r
197 \r
198 \r
199 \r
200         switch (command)\r
201         {\r
202         case cmdAbout:\r
203                 return new AboutCommand;\r
204         case cmdAdd:\r
205                 return new AddCommand;\r
206         case cmdBlame:\r
207                 return new BlameCommand;\r
208         case cmdCat:\r
209                 return new CatCommand;\r
210         case cmdCheckout:\r
211                 return new CheckoutCommand;\r
212         case cmdCleanup:\r
213                 return new CleanupCommand;\r
214         case cmdCommit:\r
215                 return new CommitCommand;\r
216         case cmdConflictEditor:\r
217                 return new ConflictEditorCommand;\r
218         case cmdCopy:\r
219                 return new CopyCommand;\r
220         case cmdCrash:\r
221                 return new CrashCommand;\r
222         case cmdCreatePatch:\r
223                 return new CreatePatchCommand;\r
224         case cmdDelUnversioned:\r
225                 return new DelUnversionedCommand;\r
226         case cmdDiff:\r
227                 return new DiffCommand;\r
228         case cmdDropCopy:\r
229                 return new DropCopyCommand;\r
230         case cmdDropCopyAdd:\r
231                 return new DropCopyAddCommand;\r
232         case cmdDropExport:\r
233                 return new DropExportCommand;\r
234         case cmdDropMove:\r
235                 return new DropMoveCommand;\r
236         case cmdExport:\r
237                 return new ExportCommand;\r
238         case cmdHelp:\r
239                 return new HelpCommand;\r
240         case cmdIgnore:\r
241                 return new IgnoreCommand;\r
242         case cmdImport:\r
243                 return new ImportCommand;\r
244         case cmdLock:\r
245                 return new LockCommand;\r
246         case cmdLog:\r
247                 return new LogCommand;\r
248         case cmdMerge:\r
249                 return new MergeCommand;\r
250         case cmdMergeAll:\r
251                 return new MergeAllCommand;\r
252         case cmdPasteCopy:\r
253                 return new PasteCopyCommand;\r
254         case cmdPasteMove:\r
255                 return new PasteMoveCommand;\r
256         case cmdPrevDiff:\r
257                 return new PrevDiffCommand;\r
258         case cmdProperties:\r
259                 return new PropertiesCommand;\r
260         case cmdRTFM:\r
261                 return new RTFMCommand;\r
262         case cmdRebuildIconCache:\r
263                 return new RebuildIconCacheCommand;\r
264         case cmdRelocate:\r
265                 return new RelocateCommand;\r
266         case cmdRemove:\r
267                 return new RemoveCommand;\r
268         case cmdRename:\r
269                 return new RenameCommand;\r
270         case cmdRepoBrowser:\r
271                 return new RepositoryBrowserCommand;\r
272         case cmdRepoCreate:\r
273                 return new CreateRepositoryCommand;\r
274         case cmdRepoStatus:\r
275                 return new RepoStatusCommand;\r
276         case cmdResolve:\r
277                 return new ResolveCommand;\r
278         case cmdRevert:\r
279                 return new RevertCommand;\r
280         case cmdRevisionGraph:\r
281                 return new RevisionGraphCommand;\r
282         case cmdSettings:\r
283                 return new SettingsCommand;\r
284         case cmdShowCompare:\r
285                 return new ShowCompareCommand;\r
286         case cmdSwitch:\r
287                 return new SwitchCommand;\r
288         case cmdUnIgnore:\r
289                 return new UnIgnoreCommand;\r
290         case cmdUnlock:\r
291                 return new UnLockCommand;\r
292         case cmdUpdate:\r
293                 return new UpdateCommand;\r
294         case cmdUpdateCheck:\r
295                 return new UpdateCheckCommand;\r
296         case cmdUrlDiff:\r
297                 return new UrlDiffCommand;\r
298 \r
299         default:\r
300                 return new AboutCommand;\r
301         }\r
302 }\r