OSDN Git Service

Add SendMail Dialog
[tortoisegit/TortoiseGitJp.git] / src / 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 "CommitCommand.h"\r
24 #include "LogCommand.h"\r
25 \r
26 #include "CreateRepositoryCommand.h"\r
27 #include "CloneCommand.h"\r
28 #include "PrevDiffCommand.h"\r
29 #include "DiffCommand.h"\r
30 \r
31 #include "RenameCommand.h"\r
32 #include "RepoStatusCommand.h"\r
33 \r
34 #include "RevertCommand.h"\r
35 #include "RemoveCommand.h"\r
36 #include "PullCommand.h"\r
37 #include "FetchCommand.h"\r
38 #include "PushCommand.h"\r
39 #include "BranchCommand.h"\r
40 #include "TagCommand.h"\r
41 #include "MergeCommand.h"\r
42 #include "SwitchCommand.h"\r
43 #include "ExportCommand.h"\r
44 #include "AddCommand.h"\r
45 #include "IgnoreCommand.h"\r
46 #include "FormatPatchCommand.h"\r
47 #include "ImportPatchCommand.h"\r
48 #include "BlameCommand.h"\r
49 #include "SettingsCommand.h"\r
50 #include "ConflictEditorCommand.h"\r
51 #include "CleanupCommand.h"\r
52 #include "RebaseCommand.h"\r
53 #include "ResolveCommand.h"\r
54 #include "DropMoveCommand.h"\r
55 #include "DropCopyAddCommand.h"\r
56 #include "DropCopyCommand.h"\r
57 #include "DropExportCommand.h"\r
58 #include "HelpCommand.h"\r
59 #include "StashCommand.h"\r
60 #include "SubmoduleCommand.h"\r
61 #include "ReflogCommand.h"\r
62 #include "SendMailCommand.h"\r
63 \r
64 #if 0\r
65 \r
66 \r
67 #include "CatCommand.h"\r
68 #include "CheckoutCommand.h"\r
69 \r
70 \r
71 \r
72 #include "CopyCommand.h"\r
73 #include "CrashCommand.h"\r
74 #include "CreatePatchCommand.h"\r
75 \r
76 #include "DelUnversionedCommand.h"\r
77 \r
78 \r
79 \r
80 \r
81 \r
82 \r
83 #include "ImportCommand.h"\r
84 #include "LockCommand.h"\r
85 \r
86 \r
87 #include "MergeAllCommand.h"\r
88 #include "PasteCopyCommand.h"\r
89 #include "PasteMoveCommand.h"\r
90 \r
91 #include "PropertiesCommand.h"\r
92 #include "RebuildIconCacheCommand.h"\r
93 #include "RelocateCommand.h"\r
94 #include "RemoveCommand.h"\r
95 \r
96 #include "RepositoryBrowserCommand.h"\r
97 \r
98 \r
99 #include "RevertCommand.h"\r
100 #include "RevisiongraphCommand.h"\r
101 #include "RTFMCommand.h"\r
102 \r
103 #include "ShowCompareCommand.h"\r
104 \r
105 #include "UnIgnoreCommand.h"\r
106 #include "UnLockCommand.h"\r
107 #include "UpdateCheckCommand.h"\r
108 #include "UpdateCommand.h"\r
109 #include "UrlDiffCommand.h"\r
110 #endif\r
111 typedef enum\r
112 {\r
113         cmdAbout,\r
114         cmdAdd,\r
115         cmdBlame,\r
116         cmdBranch,\r
117         cmdCat,\r
118         cmdCheckout,\r
119         cmdCleanup,\r
120         cmdClone,\r
121         cmdCommit,\r
122         cmdConflictEditor,\r
123         cmdCopy,\r
124         cmdCrash,\r
125         cmdCreatePatch,\r
126         cmdDelUnversioned,\r
127         cmdDiff,\r
128         cmdDropCopy,\r
129         cmdDropCopyAdd,\r
130         cmdDropExport,\r
131         cmdDropMove,\r
132         cmdFetch,\r
133         cmdFormatPatch,\r
134         cmdExport,\r
135         cmdHelp,\r
136         cmdIgnore,\r
137         cmdImport,\r
138         cmdImportPatch,\r
139         cmdLock,\r
140         cmdLog,\r
141         cmdMerge,\r
142         cmdMergeAll,\r
143         cmdPasteCopy,\r
144         cmdPasteMove,\r
145         cmdPrevDiff,\r
146         cmdProperties,\r
147         cmdPull,\r
148         cmdPush,\r
149         cmdRTFM,\r
150         cmdRebuildIconCache,\r
151         cmdRelocate,\r
152         cmdRemove,\r
153         cmdRebase,\r
154         cmdRename,\r
155         cmdRepoBrowser,\r
156         cmdRepoCreate,\r
157         cmdRepoStatus,\r
158         cmdResolve,\r
159         cmdRevert,\r
160         cmdRevisionGraph,\r
161         cmdSendMail,\r
162         cmdSettings,\r
163         cmdShowCompare,\r
164         cmdSwitch,\r
165         cmdTag,\r
166         cmdUnIgnore,\r
167         cmdUnlock,\r
168         cmdUpdate,\r
169         cmdUpdateCheck,\r
170         cmdUrlDiff,     \r
171         cmdStashSave,   \r
172         cmdStashApply,\r
173         cmdStashList,\r
174         cmdSubAdd,              \r
175         cmdSubUpdate,\r
176         cmdSubSync,\r
177         cmdRefLog,\r
178         \r
179 } TGitCommand;\r
180 \r
181 static const struct CommandInfo\r
182 {\r
183         TGitCommand command;\r
184         LPCTSTR pCommandName;\r
185 } commandInfo[] = \r
186 {\r
187         {       cmdAbout,                       _T("about")                             },\r
188         {       cmdAdd,                         _T("add")                               },\r
189         {       cmdBlame,                       _T("blame")                             },\r
190         {       cmdBranch,                      _T("branch")                    },\r
191         {       cmdCat,                         _T("cat")                               },\r
192         {       cmdCheckout,            _T("checkout")                  },\r
193         {       cmdCleanup,                     _T("cleanup")                   },\r
194         {       cmdClone,                       _T("clone")                             },\r
195         {       cmdCommit,                      _T("commit")                    },\r
196         {       cmdConflictEditor,      _T("conflicteditor")    },\r
197         {       cmdCopy,                        _T("copy")                              },\r
198         {       cmdCrash,                       _T("crash")                             },\r
199         {       cmdCreatePatch,         _T("createpatch")               },\r
200         {       cmdDelUnversioned,      _T("delunversioned")    },\r
201         {       cmdDiff,                        _T("diff")                              },\r
202         {       cmdDropCopy,            _T("dropcopy")                  },\r
203         {       cmdDropCopyAdd,         _T("dropcopyadd")               },\r
204         {       cmdDropExport,          _T("dropexport")                },\r
205         {       cmdDropMove,            _T("dropmove")                  },\r
206         {       cmdFetch,                       _T("fetch")                             },\r
207         {       cmdFormatPatch,         _T("formatpatch")               },\r
208         {       cmdExport,                      _T("export")                    },\r
209         {       cmdHelp,                        _T("help")                              },\r
210         {       cmdIgnore,                      _T("ignore")                    },\r
211         {       cmdImport,                      _T("import")                    },\r
212         {       cmdImportPatch,         _T("importpatch")               },\r
213         {       cmdLock,                        _T("lock")                              },\r
214         {       cmdLog,                         _T("log")                               },\r
215         {       cmdMerge,                       _T("merge")                             },\r
216         {       cmdMergeAll,            _T("mergeall")                  },\r
217         {       cmdPasteCopy,           _T("pastecopy")                 },\r
218         {       cmdPasteMove,           _T("pastemove")                 },\r
219         {       cmdPrevDiff,            _T("prevdiff")                  },\r
220         {       cmdProperties,          _T("properties")                },\r
221         {       cmdPull,                        _T("pull")                              },\r
222         {       cmdPush,                        _T("push")                              },\r
223         {       cmdRTFM,                        _T("rtfm")                              },\r
224         {       cmdRebuildIconCache,_T("rebuildiconcache")      },\r
225         {       cmdRelocate,            _T("relocate")                  },\r
226         {       cmdRemove,                      _T("remove")                    },\r
227         {       cmdRebase,                      _T("rebase")                    },\r
228         {       cmdRename,                      _T("rename")                    },\r
229         {       cmdRepoBrowser,         _T("repobrowser")               },\r
230         {       cmdRepoCreate,          _T("repocreate")                },\r
231         {       cmdRepoStatus,          _T("repostatus")                },\r
232         {       cmdResolve,                     _T("resolve")                   },\r
233         {       cmdRevert,                      _T("revert")                    },\r
234         {       cmdRevisionGraph,       _T("revisiongraph")             },\r
235         {       cmdSendMail,            _T("sendmail")                  },\r
236         {       cmdSettings,            _T("settings")                  },\r
237         {       cmdShowCompare,         _T("showcompare")               },\r
238         {       cmdSwitch,                      _T("switch")                    },\r
239         {       cmdTag,                         _T("tag")                               },\r
240         {       cmdUnIgnore,            _T("unignore")                  },\r
241         {       cmdUnlock,                      _T("unlock")                    },\r
242         {       cmdUpdate,                      _T("update")                    },\r
243         {       cmdUpdateCheck,         _T("updatecheck")               },\r
244         {       cmdUrlDiff,                     _T("urldiff")                   },\r
245         {       cmdStashSave,           _T("stashsave")                 },\r
246         {       cmdStashApply,          _T("stashapply")                },\r
247         {       cmdStashList,           _T("stashlist")                 },\r
248         {       cmdSubAdd,                      _T("subadd")                    },\r
249         {       cmdSubUpdate,           _T("subupdate")                 },\r
250         {       cmdSubSync,                     _T("subsync")                   },\r
251         {       cmdRefLog,                      _T("reflog")                    }\r
252 };\r
253 \r
254 \r
255 \r
256 \r
257 Command * CommandServer::GetCommand(const CString& sCmd)\r
258 {\r
259         // Look up the command\r
260         TGitCommand command = cmdAbout;         // Something harmless as a default\r
261         for (int nCommand = 0; nCommand < (sizeof(commandInfo)/sizeof(commandInfo[0])); nCommand++)\r
262         {\r
263                 if (sCmd.Compare(commandInfo[nCommand].pCommandName) == 0)\r
264                 {\r
265                         // We've found the command\r
266                         command = commandInfo[nCommand].command;\r
267                         // If this fires, you've let the enum get out of sync with the commandInfo array\r
268                         ASSERT((int)command == nCommand);\r
269                         break;\r
270                 }\r
271         }\r
272 \r
273 \r
274 \r
275         switch (command)\r
276         {\r
277         case cmdAbout:\r
278                 return new AboutCommand;        \r
279         case cmdCommit:\r
280                 return new CommitCommand;\r
281         case cmdLog:\r
282                 return new LogCommand;\r
283         case cmdRepoCreate:\r
284                 return new CreateRepositoryCommand;\r
285         case cmdClone:\r
286                 return new CloneCommand;\r
287         case cmdPrevDiff:\r
288                 return new PrevDiffCommand;\r
289         case cmdDiff:\r
290                 return new DiffCommand;\r
291         case cmdRename:\r
292                 return new RenameCommand;\r
293         case cmdRepoStatus:\r
294                 return new RepoStatusCommand;\r
295         case cmdRemove:\r
296                 return new RemoveCommand;\r
297         case cmdRevert:\r
298                 return new RevertCommand;\r
299         case cmdPull:\r
300                 return new PullCommand;\r
301         case cmdFetch:\r
302                 return new FetchCommand;\r
303         case cmdPush:\r
304                 return new PushCommand;\r
305         case cmdBranch:\r
306                 return new BranchCommand;\r
307         case cmdTag:\r
308                 return new TagCommand;\r
309         case cmdMerge:\r
310                 return new MergeCommand;\r
311         case cmdSwitch:\r
312                 return new SwitchCommand;\r
313         case cmdExport:\r
314                 return new ExportCommand;\r
315         case cmdAdd:\r
316                 return new AddCommand;\r
317         case cmdIgnore:\r
318                 return new IgnoreCommand;\r
319         case cmdFormatPatch:\r
320                 return new FormatPatchCommand;\r
321         case cmdImportPatch:\r
322                 return new ImportPatchCommand;\r
323         case cmdBlame:\r
324                 return new BlameCommand;\r
325         case cmdSettings:\r
326                 return new SettingsCommand;\r
327         case cmdConflictEditor:\r
328                 return new ConflictEditorCommand;\r
329         case cmdCleanup:\r
330                 return new CleanupCommand;\r
331         case cmdRebase:\r
332                 return new RebaseCommand;\r
333         case cmdResolve:\r
334                 return new ResolveCommand;\r
335         case cmdDropMove:\r
336                 return new DropMoveCommand;\r
337 //      case cmdDropCopy:\r
338 //              return new DropCopyCommand;\r
339 //      case cmdDropCopyAdd:\r
340 //              return new DropCopyAddCommand;\r
341 //      case cmdDropExport:\r
342 //              return new DropExportCommand;\r
343         case cmdHelp:\r
344                 return new HelpCommand;\r
345         case cmdStashSave:\r
346                 return new StashSaveCommand;\r
347         case cmdStashApply:\r
348                 return new StashApplyCommand;\r
349         case cmdSubAdd:\r
350                 return new SubmoduleAddCommand;\r
351         case cmdSubUpdate:\r
352                 return new SubmoduleUpdateCommand;\r
353         case cmdRefLog:\r
354                 return new RefLogCommand;\r
355         case cmdSubSync:\r
356                 return new SubmoduleSyncCommand;\r
357         case cmdSendMail:\r
358                 return new SendMailCommand;\r
359 \r
360 #if 0\r
361 \r
362         case cmdCat:\r
363                 return new CatCommand;\r
364         case cmdCheckout:\r
365                 return new CheckoutCommand;\r
366 \r
367 \r
368         \r
369         case cmdCopy:\r
370                 return new CopyCommand;\r
371         case cmdCrash:\r
372                 return new CrashCommand;\r
373         case cmdCreatePatch:\r
374                 return new CreatePatchCommand;\r
375         case cmdDelUnversioned:\r
376                 return new DelUnversionedCommand;\r
377 \r
378 \r
379 \r
380         case cmdImport:\r
381                 return new ImportCommand;\r
382         case cmdLock:\r
383                 return new LockCommand;\r
384         case cmdMergeAll:\r
385                 return new MergeAllCommand;\r
386         case cmdPasteCopy:\r
387                 return new PasteCopyCommand;\r
388         case cmdPasteMove:\r
389                 return new PasteMoveCommand;\r
390         case cmdPrevDiff:\r
391                 return new PrevDiffCommand;\r
392         case cmdProperties:\r
393                 return new PropertiesCommand;\r
394         case cmdRTFM:\r
395                 return new RTFMCommand;\r
396         case cmdRebuildIconCache:\r
397                 return new RebuildIconCacheCommand;\r
398         case cmdRelocate:\r
399                 return new RelocateCommand;\r
400         case cmdRepoBrowser:\r
401                 return new RepositoryBrowserCommand;\r
402         case cmdRevisionGraph:\r
403                 return new RevisionGraphCommand;\r
404         case cmdShowCompare:\r
405                 return new ShowCompareCommand;\r
406         case cmdUnIgnore:\r
407                 return new UnIgnoreCommand;\r
408         case cmdUnlock:\r
409                 return new UnLockCommand;\r
410         case cmdUpdate:\r
411                 return new UpdateCommand;\r
412         case cmdUpdateCheck:\r
413                 return new UpdateCheckCommand;\r
414         case cmdUrlDiff:\r
415                 return new UrlDiffCommand;\r
416 #endif\r
417         default:\r
418                 CMessageBox::Show(hWndExplorer, _T("Have not implemented"), _T("TortoiseGit"), MB_ICONERROR);\r
419                 return new AboutCommand;\r
420         }\r
421 }\r