OSDN Git Service

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