PageRenderTime 22ms CodeModel.GetById 10ms RepoModel.GetById 0ms app.codeStats 0ms

/src/TortoiseShell/MenuInfo.cpp

https://gitlab.com/cfuji/tortoisegit
C++ | 247 lines | 145 code | 72 blank | 30 comment | 0 complexity | a4627e4f2c9ae2d0d241c871069dce56 MD5 | raw file
  1. // TortoiseGit - a Windows shell extension for easy version control
  2. // Copyright (C) 2008-2014 - TortoiseGit
  3. // Copyright (C) 2003-2008 - TortoiseSVN
  4. // This program is free software; you can redistribute it and/or
  5. // modify it under the terms of the GNU General Public License
  6. // as published by the Free Software Foundation; either version 2
  7. // of the License, or (at your option) any later version.
  8. // This program is distributed in the hope that it will be useful,
  9. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. // GNU General Public License for more details.
  12. // You should have received a copy of the GNU General Public License
  13. // along with this program; if not, write to the Free Software Foundation,
  14. // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  15. //
  16. #include "stdafx.h"
  17. #include "menuinfo.h"
  18. #include "resource.h"
  19. #include "Globals.h"
  20. // defaults are specified in ShellCache.h
  21. MenuInfo menuInfo[] =
  22. {
  23. { ShellMenuClone, MENUCLONE, IDI_CLONE, IDS_MENUCLONE, IDS_MENUDESCCLONE,
  24. {ITEMIS_FOLDER, ITEMIS_INGIT|ITEMIS_FOLDERINGIT|ITEMIS_BAREREPO}, {ITEMIS_FOLDER|ITEMIS_IGNORED, 0}, {0, 0}, {0, 0} },
  25. { ShellMenuPull, MENUPULL, IDI_PULL, IDS_MENUPULL, IDS_MENUDESCPULL,
  26. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, ITEMIS_BISECT|ITEMIS_MERGEACTIVE}, {0, 0}, {0, 0}, {0, 0} },
  27. { ShellMenuFetch, MENUFETCH, IDI_PULL, IDS_MENUFETCH, IDS_MENUDESCFETCH,
  28. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, 0}, {ITEMIS_BAREREPO, 0}, {0, 0}, {0, 0} },
  29. { ShellMenuPush, MENUPUSH, IDI_PUSH, IDS_MENUPUSH, IDS_MENUDESCPUSH,
  30. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, 0}, {ITEMIS_BAREREPO, 0}, {0, 0}, {0, 0} },
  31. { ShellMenuSync, MENUSYNC, IDI_RELOCATE, IDS_MENUSYNC, IDS_MENUDESCSYNC,
  32. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, ITEMIS_BISECT|ITEMIS_MERGEACTIVE}, {0, 0}, {0, 0}, {0, 0} },
  33. { ShellSeparator, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  34. { ShellMenuCommit, MENUCOMMIT, IDI_COMMIT, IDS_MENUCOMMIT, IDS_MENUDESCCOMMIT,
  35. {ITEMIS_INGIT, 0}, {ITEMIS_FOLDERINGIT, 0}, {0, 0}, {0, 0} },
  36. { ShellMenuGitSVNDCommit, MENUSVNDCOMMIT, IDI_COMMIT, IDS_MENUSVNDCOMMIT, IDS_MENUSVNDCOMMIT_DESC,
  37. {ITEMIS_INGIT|ITEMIS_GITSVN, ITEMIS_BISECT|ITEMIS_MERGEACTIVE}, {ITEMIS_FOLDERINGIT|ITEMIS_GITSVN, ITEMIS_BISECT|ITEMIS_MERGEACTIVE}, {0, 0}, {0, 0} },
  38. { ShellMenuGitSVNRebase, MENUSVNREBASE, IDI_REBASE, IDS_MENUSVNREBASE, IDS_MENUSVNREBASE_DESC,
  39. {ITEMIS_FOLDERINGIT|ITEMIS_GITSVN|ITEMIS_ONLYONE, ITEMIS_BISECT|ITEMIS_MERGEACTIVE}, {0, 0}, {0, 0}, {0, 0} },
  40. { ShellMenuGitSVNDFetch, MENUSVNFETCH, IDI_PULL, IDS_MENUSVNFETCH, IDS_MENUDESCSVNFETCH,
  41. {ITEMIS_FOLDERINGIT|ITEMIS_GITSVN|ITEMIS_ONLYONE, 0}, {0, 0}, {0, 0}, {0, 0} },
  42. { ShellMenuGitSVNIgnore, MENUSVNIGNORE, IDI_IGNORE, IDS_MENUSVNIGNORE, IDS_MENUSVNIGNORE_DESC,
  43. {ITEMIS_FOLDERINGIT|ITEMIS_GITSVN|ITEMIS_ONLYONE, 0}, {0, 0}, {0, 0}, {0, 0} },
  44. { ShellSeparator, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  45. { ShellMenuDiff, MENUDIFF, IDI_DIFF, IDS_MENUDIFF, IDS_MENUDESCDIFF,
  46. {ITEMIS_INGIT|ITEMIS_ONLYONE, 0}, {ITEMIS_TWO, ITEMIS_FOLDER}, {0, 0}, {0, 0} },
  47. { ShellMenuDiffLater, MENUDIFFLATER, IDI_DIFF, IDS_MENUDIFFLATER, IDS_MENUDESCDIFFLATER,
  48. {ITEMIS_ONLYONE, ITEMIS_FOLDER}, {0, 0}, {0, 0}, {0, 0} },
  49. { ShellMenuPrevDiff, MENUPREVDIFF, IDI_DIFF, IDS_MENUPREVDIFF, IDS_MENUDESCPREVDIFF,
  50. {ITEMIS_INGIT|ITEMIS_ONLYONE, ITEMIS_ADDED}, {0, 0}, {0, 0}, {0, 0} },
  51. { ShellSeparator, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  52. { ShellMenuLog, MENULOG, IDI_LOG, IDS_MENULOG, IDS_MENUDESCLOG,
  53. {ITEMIS_INGIT|ITEMIS_ONLYONE, ITEMIS_ADDED}, {ITEMIS_FOLDER|ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, ITEMIS_ADDED}, {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, ITEMIS_ADDED}, {ITEMIS_BAREREPO, 0} },
  54. { ShellMenuLogSubmoduleFolder, MENULOGSUBMODULE, IDI_LOG, IDS_MENULOGSUBMODULE, IDS_MENUDESCLOG,
  55. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE|ITEMIS_WCROOT|ITEMIS_SUBMODULE, 0}, {0, 0}, {0, 0}, {0, 0} },
  56. { ShellMenuRefLog, MENUREFLOG, IDI_LOG, IDS_MENUREFLOG, IDS_MENUDESCREFLOG,
  57. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, 0}, {ITEMIS_BAREREPO, 0}, {0, 0}, {0, 0} },
  58. { ShellMenuRefBrowse, MENUREFBROWSE, IDI_REPOBROWSE, IDS_MENUREFBROWSE, IDS_MENUDESCREFBROWSE,
  59. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, 0}, {ITEMIS_BAREREPO, 0}, {0, 0}, {0, 0} },
  60. { ShellMenuDaemon, MENUDAEMON, IDI_DAEMON, IDS_MENUDAEMON, IDS_MENUDESCDAEMON,
  61. {ITEMIS_INGIT|ITEMIS_ONLYONE, ITEMIS_ADDED}, {ITEMIS_FOLDER|ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, ITEMIS_ADDED}, {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, ITEMIS_ADDED}, {ITEMIS_BAREREPO, 0} },
  62. { ShellMenuRevisionGraph, MENUREVISIONGRAPH, IDI_REVISIONGRAPH, IDS_MENUREVISIONGRAPH, IDS_MENUDESCREVISIONGRAPH,
  63. {ITEMIS_INGIT|ITEMIS_ONLYONE, ITEMIS_ADDED}, {ITEMIS_FOLDER|ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, ITEMIS_ADDED}, {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, ITEMIS_ADDED}, {ITEMIS_BAREREPO, 0} },
  64. { ShellMenuRepoBrowse, MENUREPOBROWSE, IDI_REPOBROWSE, IDS_MENUREPOBROWSE, IDS_MENUDESCREPOBROWSE,
  65. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, 0}, {ITEMIS_BAREREPO|ITEMIS_ONLYONE, 0}, {0, 0}, {0, 0} },
  66. { ShellMenuShowChanged, MENUSHOWCHANGED, IDI_SHOWCHANGED, IDS_MENUSHOWCHANGED, IDS_MENUDESCSHOWCHANGED,
  67. {ITEMIS_INGIT, 0}, {ITEMIS_FOLDER|ITEMIS_FOLDERINGIT, 0}, {0, 0}, {0, 0} },
  68. { ShellMenuRebase, MENUREBASE, IDI_REBASE, IDS_MENUREBASE, IDS_MENUREBASE,
  69. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, ITEMIS_BISECT|ITEMIS_MERGEACTIVE}, {0, 0}, {0, 0}, {0, 0} },
  70. { ShellMenuStashSave, MENUSTASHSAVE, IDI_COMMIT, IDS_MENUSTASHSAVE, IDS_MENUSTASHSAVE,
  71. {ITEMIS_INGIT|ITEMIS_ONLYONE, ITEMIS_MERGEACTIVE}, {0, 0}, {0, 0}, {0, 0} },
  72. { ShellMenuStashApply, MENUSTASHAPPLY, IDI_RELOCATE, IDS_MENUSTASHAPPLY, IDS_MENUSTASHAPPLY,
  73. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE|ITEMIS_STASH, 0}, {0, 0}, {0, 0}, {0, 0} },
  74. { ShellMenuStashPop, MENUSTASHPOP, IDI_RELOCATE, IDS_MENUSTASHPOP, IDS_MENUSTASHPOP,
  75. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE|ITEMIS_STASH, 0}, {0, 0}, {0, 0}, {0, 0} },
  76. { ShellMenuStashList, MENUSTASHLIST, IDI_LOG, IDS_MENUSTASHLIST, IDS_MENUSTASHLIST,
  77. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE|ITEMIS_STASH, 0}, {0, 0}, {0, 0}, {0, 0} },
  78. { ShellSeparator, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  79. { ShellMenuBisectStart, MENUBISECT, IDI_BISECT, IDS_MENUBISECTSTART, IDS_MENUDESCBISECTSTART,
  80. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, ITEMIS_BISECT|ITEMIS_MERGEACTIVE}, {0, 0}, {0, 0}, {0, 0} },
  81. { ShellMenuBisectGood, MENUBISECT, IDI_THUMB_UP, IDS_MENUBISECTGOOD, IDS_MENUDESCBISECTGOOD,
  82. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE|ITEMIS_BISECT, 0}, {0, 0}, {0, 0}, {0, 0} },
  83. { ShellMenuBisectBad, MENUBISECT, IDI_THUMB_DOWN, IDS_MENUBISECTBAD, IDS_MENUDESCBISECTBAD,
  84. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE|ITEMIS_BISECT, 0}, {0, 0}, {0, 0}, {0, 0} },
  85. { ShellMenuBisectReset, MENUBISECT, IDI_BISECT_RESET, IDS_MENUBISECTRESET, IDS_MENUDESCBISECTRESET,
  86. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE|ITEMIS_BISECT, 0}, {0, 0}, {0, 0}, {0, 0} },
  87. { ShellSeparator, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  88. { ShellMenuConflictEditor, MENUCONFLICTEDITOR, IDI_CONFLICT, IDS_MENUCONFLICT, IDS_MENUDESCCONFLICT,
  89. {ITEMIS_INGIT|ITEMIS_CONFLICTED, ITEMIS_FOLDER}, {0, 0}, {0, 0}, {0, 0} },
  90. { ShellMenuResolve, MENURESOLVE, IDI_RESOLVE, IDS_MENURESOLVE, IDS_MENUDESCRESOLVE,
  91. {ITEMIS_INGIT|ITEMIS_CONFLICTED, 0}, {ITEMIS_INGIT|ITEMIS_FOLDER, 0}, {ITEMIS_FOLDERINGIT, 0}, {0, 0} },
  92. { ShellMenuMergeAbort, MENUMERGE, IDI_MERGEABORT, IDS_MENUMERGEABORT, IDS_MENUDESCMERGEABORT,
  93. {ITEMIS_INGIT|ITEMIS_MERGEACTIVE, 0}, {ITEMIS_FOLDERINGIT|ITEMIS_MERGEACTIVE, 0}, {0, 0}, {0, 0} },
  94. { ShellMenuRename, MENURENAME, IDI_RENAME, IDS_MENURENAME, IDS_MENUDESCRENAME,
  95. {ITEMIS_INGIT|ITEMIS_ONLYONE|ITEMIS_INVERSIONEDFOLDER, ITEMIS_ADDED|ITEMIS_WCROOT}, {0, 0}, {0, 0}, {0, 0} },
  96. { ShellMenuRemove, MENUREMOVE, IDI_DELETE, IDS_MENUREMOVE, IDS_MENUDESCREMOVE,
  97. {ITEMIS_INGIT|ITEMIS_INVERSIONEDFOLDER, ITEMIS_ADDED|ITEMIS_WCROOT}, {0, 0}, {0, 0}, {0, 0} },
  98. { ShellMenuRemoveKeep, MENUREMOVEKEEP, IDI_DELETE, IDS_MENUREMOVEKEEP, IDS_MENUDESCREMOVEKEEP,
  99. {ITEMIS_INGIT|ITEMIS_INVERSIONEDFOLDER, ITEMIS_ADDED|ITEMIS_WCROOT}, {0, 0}, {0, 0}, {0, 0} },
  100. { ShellMenuRevert, MENUREVERT, IDI_REVERT, IDS_MENUREVERT, IDS_MENUDESCREVERT,
  101. {ITEMIS_INGIT, ITEMIS_NORMAL}, {ITEMIS_FOLDERINGIT, 0}, {0, 0}, {0, 0} },
  102. { ShellMenuCleanup, MENUCLEANUP, IDI_CLEANUP, IDS_MENUCLEANUP, IDS_MENUDESCCLEANUP,
  103. {ITEMIS_FOLDERINGIT|ITEMIS_FOLDER, 0}, {0, 0}, {0, 0}, {0, 0} },
  104. { ShellSeparator, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  105. // { ShellMenuCopy, MENUCOPY, IDI_COPY, IDS_MENUBRANCH, IDS_MENUDESCCOPY,
  106. // ITEMIS_INGIT|ITEMIS_ONLYONE, ITEMIS_ADDED }, {ITEMIS_FOLDER|ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, 0}, {0, 0}, {0, 0} },
  107. { ShellMenuSwitch, MENUSWITCH, IDI_SWITCH, IDS_MENUSWITCH, IDS_MENUDESCSWITCH,
  108. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, 0}, {0, 0}, {0, 0}, {0, 0} },
  109. { ShellMenuMerge, MENUMERGE, IDI_MERGE, IDS_MENUMERGE, IDS_MENUDESCMERGE,
  110. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, ITEMIS_BISECT|ITEMIS_MERGEACTIVE}, {0, 0}, {0, 0}, {0, 0} },
  111. { ShellMenuBranch, MENUCOPY, IDI_COPY, IDS_MENUBRANCH, IDS_MENUDESCCOPY,
  112. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, 0}, {0, 0}, {0, 0}, {0, 0} },
  113. { ShellMenuTag, MENUTAG, IDI_TAG, IDS_MENUTAG, IDS_MENUDESCCOPY,
  114. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, 0}, {0, 0}, {0, 0}, {0, 0} },
  115. { ShellMenuExport, MENUEXPORT, IDI_EXPORT, IDS_MENUEXPORT, IDS_MENUDESCEXPORT,
  116. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, 0}, {0, 0}, {0, 0}, {0, 0} },
  117. { ShellSeparator, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  118. { ShellMenuCreateRepos, MENUCREATEREPOS, IDI_CREATEREPOS, IDS_MENUCREATEREPOS, IDS_MENUDESCCREATEREPOS,
  119. {ITEMIS_FOLDER, ITEMIS_INGIT|ITEMIS_FOLDERINGIT|ITEMIS_BAREREPO}, {ITEMIS_FOLDER|ITEMIS_IGNORED, 0}, {0, 0}, {0, 0} },
  120. { ShellMenuAdd, MENUADD, IDI_ADD, IDS_MENUADD, IDS_MENUDESCADD,
  121. {ITEMIS_INVERSIONEDFOLDER, ITEMIS_INGIT}, {ITEMIS_INGIT|ITEMIS_FOLDER, 0}, {ITEMIS_IGNORED, 0}, {ITEMIS_DELETED, ITEMIS_FOLDER|ITEMIS_ONLYONE} },
  122. { ShellMenuBlame, MENUBLAME, IDI_BLAME, IDS_MENUBLAME, IDS_MENUDESCBLAME,
  123. {ITEMIS_INGIT|ITEMIS_ONLYONE, ITEMIS_FOLDER|ITEMIS_ADDED}, {0, 0}, {0, 0}, {0, 0} },
  124. { ShellMenuIgnoreSub, MENUIGNORE, IDI_IGNORE, IDS_MENUIGNORE, IDS_MENUDESCIGNORE,
  125. {ITEMIS_INVERSIONEDFOLDER, ITEMIS_IGNORED|ITEMIS_INGIT|ITEMIS_WCROOT}, {0, 0}, {0, 0}, {0, 0} },
  126. { ShellMenuDeleteIgnoreSub, MENUIGNORE, IDI_IGNORE, IDS_MENUDELETEIGNORE, IDS_MENUDESCDELETEIGNORE,
  127. {ITEMIS_INVERSIONEDFOLDER|ITEMIS_INGIT, ITEMIS_IGNORED|ITEMIS_WCROOT}, {0, 0}, {0, 0}, {0, 0} },
  128. // no support for this atm since we do not use "ignoredprops"-vector in ContextMenu.cpp
  129. // { ShellMenuUnIgnoreSub, MENUIGNORE, IDI_IGNORE, IDS_MENUUNIGNORE, IDS_MENUDESCUNIGNORE,
  130. // {ITEMIS_IGNORED, 0}, {0, 0}, {0, 0}, {0, 0} },
  131. { ShellSeparator, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  132. { ShellMenuSubAdd, MENUSUBADD, IDI_ADD, IDS_MENUSUBADD, IDS_MENUSUBADD,
  133. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, 0}, {0, 0}, {0, 0}, {0, 0} },
  134. { ShellMenuUpdateExt, MENUUPDATEEXT, IDI_UPDATE, IDS_MENUUPDATEEXT, IDS_MENUDESCUPDATEEXT,
  135. {ITEMIS_FOLDERINGIT|ITEMIS_SUBMODULECONTAINER, 0}, {0, 0}, {0, 0}, {0, 0} },
  136. { ShellMenuSubSync, MENUSUBSYNC, IDI_MENUSYNC, IDS_MENUSUBSYNC, IDS_MENUSUBSYNC,
  137. {ITEMIS_FOLDERINGIT|ITEMIS_SUBMODULECONTAINER, 0}, {0, 0}, {0, 0}, {0, 0} },
  138. { ShellSeparator, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  139. { ShellMenuFormatPatch, MENUFORMATPATCH, IDI_CREATEPATCH, IDS_MENUFORMATPATCH, IDS_MENUDESCCREATEPATCH,
  140. {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, 0}, {0, 0}, {0, 0}, {0, 0} },
  141. // Really apply patch
  142. { ShellMenuImportPatch, MENUIMPORTPATCH, IDI_PATCH, IDS_MENUIMPORTPATCH, IDS_MENUDESCIMPORTPATCH,
  143. {ITEMIS_PATCHFILE, 0}, {ITEMIS_FOLDERINGIT|ITEMIS_ONLYONE, 0}, {0, 0}, {0, 0} },
  144. // Review Patch
  145. { ShellMenuApplyPatch, MENUAPPLYPATCH, IDI_PATCH, IDS_MENUAPPLYPATCH, IDS_MENUDESCAPPLYPATCH,
  146. {ITEMIS_PATCHFILE|ITEMIS_ONLYONE, 0}, {ITEMIS_EXTENDED|ITEMIS_ONLYONE, ITEMIS_FOLDER}, {0, 0}, {0, 0} },
  147. { ShellMenuSendMail, MENUSENDMAIL, IDI_MENUSENDMAIL, IDS_MENUSENDMAIL, IDS_MENUDESSENDMAIL,
  148. {ITEMIS_PATCHFILE, 0}, {ITEMIS_EXTENDED, ITEMIS_FOLDER}, {0, 0}, {0, 0} },
  149. // we do not support paste atm
  150. // { ShellSeparator, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  151. // { ShellMenuClipPaste, MENUCLIPPASTE, IDI_CLIPPASTE, IDS_MENUCLIPPASTE, IDS_MENUDESCCLIPPASTE,
  152. // {ITEMIS_INGIT|ITEMIS_FOLDER|ITEMIS_PATHINCLIPBOARD, 0}, {0, 0}, {0, 0}, {0, 0} },
  153. { ShellSeparator, 0, 0, 0, 0, {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  154. { ShellMenuSettings, MENUSETTINGS, IDI_SETTINGS, IDS_MENUSETTINGS, IDS_MENUDESCSETTINGS,
  155. {ITEMIS_FOLDER, 0}, {0, ITEMIS_FOLDER}, {0, 0}, {0, 0} },
  156. { ShellMenuHelp, MENUHELP, IDI_HELP, IDS_MENUHELP, IDS_MENUDESCHELP,
  157. {ITEMIS_FOLDER, 0}, {0, ITEMIS_FOLDER}, {0, 0}, {0, 0} },
  158. { ShellMenuAbout, MENUABOUT, IDI_ABOUT, IDS_MENUABOUT, IDS_MENUDESCABOUT,
  159. {ITEMIS_FOLDER, 0}, {0, ITEMIS_FOLDER}, {0, 0}, {0, 0} },
  160. // the sub menus - they're not added like the the commands, therefore the menu ID is zero
  161. // but they still need to be in here, because we use the icon and string information anyway.
  162. { ShellSubMenu, NULL, IDI_APP, IDS_MENUSUBMENU, 0,
  163. {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  164. { ShellSubMenuFile, NULL, IDI_MENUFILE, IDS_MENUSUBMENU, 0,
  165. {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  166. { ShellSubMenuFolder, NULL, IDI_MENUFOLDER, IDS_MENUSUBMENU, 0,
  167. {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  168. { ShellSubMenuLink, NULL, IDI_MENULINK, IDS_MENUSUBMENU, 0,
  169. {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  170. { ShellSubMenuMultiple, NULL, IDI_MENUMULTIPLE, IDS_MENUSUBMENU, 0,
  171. {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  172. // mark the last entry to tell the loop where to stop iterating over this array
  173. { ShellMenuLastEntry, 0, 0, 0, 0,
  174. {0, 0}, {0, 0}, {0, 0}, {0, 0} },
  175. };