Apply backgroundcolors.patch
[TortoiseGit.git] / src / TortoiseShell / MenuInfo.h
blob587fb73b393714f55b61cc7f256269c5f115a988
1 // TortoiseGit - a Windows shell extension for easy version control
3 // Copyright (C) 2010-2022 - TortoiseGit
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 2
8 // of the License, or (at your option) any later version.
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software Foundation,
17 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19 #pragma once
21 enum GitCommands
23 ShellSeparator = 0,
24 ShellSubMenu = 1,
25 ShellSubMenuFolder,
26 ShellSubMenuFile,
27 ShellSubMenuLink,
28 ShellSubMenuMultiple,
29 ShellMenuCommit,
30 ShellMenuAdd,
31 ShellMenuRevert,
32 ShellMenuCleanup,
33 ShellMenuResolve,
34 ShellMenuSwitch,
35 ShellMenuExport,
36 ShellMenuAbout,
37 ShellMenuCreateRepos,
38 ShellMenuCopy,
39 ShellMenuMerge,
40 ShellMenuSettings,
41 ShellMenuRemove,
42 ShellMenuRemoveKeep,
43 ShellMenuRename,
44 ShellMenuUpdateExt,
45 ShellMenuDiff,
46 ShellMenuPrevDiff,
47 ShellMenuDiffTwo,
48 ShellMenuDropCopyAdd,
49 ShellMenuDropMoveAdd,
50 ShellMenuDropMove,
51 ShellMenuDropMoveRename,
52 ShellMenuDropCopy,
53 ShellMenuDropCopyRename,
54 ShellMenuDropExport,
55 ShellMenuDropExportExtended,
56 ShellMenuLog,
57 ShellMenuConflictEditor,
58 ShellMenuHelp,
59 ShellMenuShowChanged,
60 ShellMenuIgnoreSub,
61 ShellMenuDeleteIgnoreSub,
62 ShellMenuIgnore,
63 ShellMenuDeleteIgnore,
64 ShellMenuIgnoreCaseSensitive,
65 ShellMenuDeleteIgnoreCaseSensitive,
66 ShellMenuRefLog,
67 ShellMenuRefBrowse,
68 ShellMenuBlame,
69 ShellMenuApplyPatch,
70 ShellMenuRevisionGraph,
71 ShellMenuUnIgnoreSub,
72 ShellMenuUnIgnoreCaseSensitive,
73 ShellMenuUnIgnore,
74 ShellMenuClipPaste,
75 ShellMenuPull,
76 ShellMenuPush,
77 ShellMenuClone,
78 ShellMenuBranch,
79 ShellMenuTag,
80 ShellMenuFormatPatch,
81 ShellMenuImportPatch,
82 ShellMenuFetch,
83 ShellMenuRebase,
84 ShellMenuStashSave,
85 ShellMenuStashApply,
86 ShellMenuStashList,
87 ShellMenuStashPop,
88 ShellMenuSubAdd,
89 ShellMenuSubSync,
90 ShellMenuSendMail,
91 ShellMenuGitSVNRebase,
92 ShellMenuGitSVNDCommit,
93 ShellMenuGitSVNDFetch,
94 ShellMenuGitSVNIgnore, //import svn ignore
95 ShellMenuSync,
96 ShellMenuBisectStart,
97 ShellMenuBisectGood,
98 ShellMenuBisectBad,
99 ShellMenuBisectReset,
100 ShellMenuRepoBrowse,
101 ShellMenuLogSubmoduleFolder,
102 ShellMenuDaemon,
103 ShellMenuMergeAbort,
104 ShellMenuDiffLater,
105 ShellMenuImportPatchDrop,
106 ShellMenuBisectSkip,
107 ShellMenuLFSMenu,
108 ShellMenuLFSLocks,
109 ShellMenuLFSLock,
110 ShellMenuLFSUnlock,
111 ShellMenuWorktree,
112 ShellMenuDropNewWorktree,
113 ShellMenuLastEntry // used to mark the menu array end
116 // helper struct for context menu entries
117 struct YesNoPair
119 DWORD yes;
120 DWORD no;
122 struct MenuInfo
124 GitCommands command; ///< the command which gets executed for this menu entry
125 unsigned __int64 menuID; ///< the menu ID to recognize the entry. NULL if it shouldn't be added to the context menu automatically
126 UINT iconID; ///< the icon to show for the menu entry
127 UINT menuTextID; ///< the text of the menu entry
128 UINT menuDescID; ///< the description text for the menu entry
129 /// the following 8 params are for checking whether the menu entry should
130 /// be added automatically, based on states of the selected item(s).
131 /// The 'yes' states must be set, the 'no' states must not be set
132 /// the four pairs are OR'ed together, the 'yes'/'no' states are AND'ed together.
133 YesNoPair first;
134 YesNoPair second;
135 YesNoPair third;
136 YesNoPair fourth;