OSDN Git Service

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