|
dvander@790
|
1 |
/** |
|
dvander@790
|
2 |
* vim: set ts=4 : |
|
dvander@790
|
3 |
* =============================================================== |
|
dvander@790
|
4 |
* SourceMod (C)2004-2007 AlliedModders LLC. All rights reserved. |
|
dvander@790
|
5 |
* =============================================================== |
|
dvander@790
|
6 |
* |
|
dvander@790
|
7 |
* This file is part of the SourceMod/SourcePawn SDK. This file may only be used |
|
dvander@790
|
8 |
* or modified under the Terms and Conditions of its License Agreement, which is found |
|
dvander@790
|
9 |
* in LICENSE.txt. The Terms and Conditions for making SourceMod extensions/plugins |
|
dvander@790
|
10 |
* may change at any time. To view the latest information, see: |
|
dvander@790
|
11 |
* http://www.sourcemod.net/license.php |
|
dvander@790
|
12 |
* |
|
dvander@790
|
13 |
* Version: $Id$ |
|
dvander@790
|
14 |
*/ |
|
dvander@790
|
15 |
|
|
dvander@790
|
16 |
#if defined _menus_included |
|
dvander@790
|
17 |
#endinput |
|
dvander@790
|
18 |
#endif |
|
dvander@790
|
19 |
#define _menus_included |
|
dvander@790
|
20 |
|
|
dvander@790
|
21 |
/** |
|
dvander@790
|
22 |
* Low-level drawing style of the menu. |
|
dvander@790
|
23 |
*/ |
|
dvander@790
|
24 |
enum MenuStyle |
|
dvander@790
|
25 |
{ |
|
dvander@790
|
26 |
MenuStyle_Default = 0, /**< The "default" menu style for the mod */ |
|
dvander@790
|
27 |
MenuStyle_Valve = 1, /**< The Valve provided menu style (Used on HL2DM) */ |
|
dvander@790
|
28 |
MenuStyle_Radio = 2, /**< The simpler menu style commonly used on CS:S */ |
|
dvander@790
|
29 |
}; |
|
dvander@790
|
30 |
|
|
dvander@790
|
31 |
/** |
|
dvander@790
|
32 |
* Different actions for the menu "pump" callback |
|
dvander@790
|
33 |
*/ |
|
dvander@790
|
34 |
enum MenuAction |
|
dvander@790
|
35 |
{ |
|
dvander@790
|
36 |
MenuAction_Start = (1<<0), /**< A menu has been started (nothing passed) */ |
|
dvander@790
|
37 |
MenuAction_Display = (1<<1), /**< A menu is about to be displayed (param1=client, param2=MenuPanel Handle) */ |
|
dvander@790
|
38 |
MenuAction_Select = (1<<2), /**< An item was selected (param1=client, param2=item) */ |
|
dvander@796
|
39 |
MenuAction_Cancel = (1<<3), /**< The menu was cancelled (param1=client, param2=reason) */ |
|
dvander@790
|
40 |
MenuAction_End = (1<<4), /**< A menu's display/selection cycle is complete (nothing passed). */ |
|
dvander@790
|
41 |
MenuAction_VoteEnd = (1<<5), /**< (VOTE ONLY): A vote sequence has ended (param1=chosen item) */ |
|
dvander@790
|
42 |
}; |
|
dvander@790
|
43 |
|
|
dvander@790
|
44 |
/** Default menu actions */ |
|
dvander@790
|
45 |
#define MENU_ACTIONS_DEFAULT MenuAction_Select|MenuAction_Cancel|MenuAction_End |
|
dvander@790
|
46 |
/** All menu actions */ |
|
dvander@790
|
47 |
#define MENU_ACTIONS_ALL -1 |
|
dvander@790
|
48 |
|
|
dvander@790
|
49 |
#define MENU_NO_PAGINATION 0 /**< Menu should not be paginated (10 items max) */ |
|
dvander@790
|
50 |
#define MENU_TIME_FOREVER 0 /**< Menu should be displayed as long as possible */ |
|
dvander@790
|
51 |
|
|
dvander@790
|
52 |
#define ITEMDRAW_DEFAULT (0) /**< Item should be drawn normally */ |
|
dvander@790
|
53 |
#define ITEMDRAW_DISABLED (1<<0) /**< Item is drawn but not selectable */ |
|
dvander@790
|
54 |
#define ITEMDRAW_RAWLINE (1<<1) /**< Item should be a raw line, without a slot */ |
|
dvander@790
|
55 |
#define ITEMDRAW_NOTEXT (1<<2) /**< No text should be drawn */ |
|
dvander@790
|
56 |
#define ITEMDRAW_SPACER (1<<3) /**< Item should be drawn as a spacer, if possible */ |
|
dvander@790
|
57 |
#define ITEMDRAW_IGNORE ((1<<1)|(1<<2)) /**< Item should be completely ignored (rawline + notext) */ |
|
dvander@790
|
58 |
#define ITEMDRAW_CONTROL (1<<4) /**< Item is control text (back/next/exit) */ |
|
dvander@790
|
59 |
|
|
dvander@790
|
60 |
/** |
|
dvander@790
|
61 |
* Reasons a menu can be cancelled. |
|
dvander@790
|
62 |
*/ |
|
dvander@790
|
63 |
enum |
|
dvander@790
|
64 |
{ |
|
dvander@790
|
65 |
MenuCancel_Disconnect = -1, /**< Client dropped from the server */ |
|
dvander@790
|
66 |
MenuCancel_Interrupt = -2, /**< Client was interrupted with another menu */ |
|
dvander@790
|
67 |
MenuCancel_Exit = -3, /**< Client selected "exit" on a paginated menu */ |
|
dvander@790
|
68 |
MenuCancel_NoDisplay = -4, /**< Menu could not be displayed to the client */ |
|
dvander@790
|
69 |
}; |
|
dvander@790
|
70 |
|
|
dvander@790
|
71 |
/** |
|
dvander@790
|
72 |
* Describes a menu's source |
|
dvander@790
|
73 |
*/ |
|
dvander@790
|
74 |
enum MenuSource |
|
dvander@790
|
75 |
{ |
|
dvander@790
|
76 |
MenuSource_None = 0, /**< No menu is being displayed */ |
|
dvander@790
|
77 |
MenuSource_External = 1, /**< External menu */ |
|
dvander@790
|
78 |
MenuSource_Normal = 2, /**< A basic menu is being displayed */ |
|
dvander@790
|
79 |
MenuSource_RawPanel = 3, /**< A display is active, but it is not tied to a menu */ |
|
dvander@790
|
80 |
}; |
|
dvander@790
|
81 |
|
|
dvander@790
|
82 |
/** |
|
dvander@790
|
83 |
* Called when a menu action is completed. |
|
dvander@790
|
84 |
* |
|
dvander@790
|
85 |
* @param menu The menu being acted upon. |
|
dvander@790
|
86 |
* @param action The action of the menu. |
|
dvander@790
|
87 |
* @param param1 First action parameter (usually the client). |
|
dvander@790
|
88 |
* @param param2 Second action parameter (usually the item). |
|
dvander@790
|
89 |
* @noreturn |
|
dvander@790
|
90 |
*/ |
|
dvander@790
|
91 |
functag MenuHandler public(Handle:menu, MenuAction:action, param1, param2); |
|
dvander@790
|
92 |
|
|
dvander@790
|
93 |
/** |
|
dvander@790
|
94 |
* Creates a new, empty menu using the default style. |
|
dvander@790
|
95 |
* |
|
dvander@790
|
96 |
* @param handler Function which will receive menu actions. |
|
dvander@790
|
97 |
* @param actions Optionally set which actions to receive. Select, |
|
dvander@790
|
98 |
* Cancel, and End will always be received regardless |
|
dvander@790
|
99 |
* of whether they are set or not. They are also |
|
dvander@790
|
100 |
* the only default actions. |
|
dvander@790
|
101 |
* @return A new menu Handle. |
|
dvander@790
|
102 |
*/ |
|
dvander@790
|
103 |
native Handle:CreateMenu(MenuHandler:handler, MenuAction:actions=MENU_ACTIONS_DEFAULT); |
|
dvander@790
|
104 |
|
|
dvander@790
|
105 |
/** |
|
dvander@790
|
106 |
* Displays a menu to a client. |
|
dvander@790
|
107 |
* |
|
dvander@790
|
108 |
* @param menu Menu Handle. |
|
dvander@790
|
109 |
* @param client Client index. |
|
dvander@790
|
110 |
* @param time Maximum time to leave menu on the screen. |
|
dvander@790
|
111 |
* @return True on success, false on failure. |
|
dvander@790
|
112 |
* @error Invalid Handle or client not in game. |
|
dvander@790
|
113 |
*/ |
|
dvander@790
|
114 |
native bool:DisplayMenu(Handle:menu, client, time); |
|
dvander@790
|
115 |
|
|
dvander@790
|
116 |
/** |
|
dvander@790
|
117 |
* Appends a new item to the end of a menu. |
|
dvander@790
|
118 |
* |
|
dvander@790
|
119 |
* @param menu Menu Handle. |
|
dvander@790
|
120 |
* @param info Item information string. |
|
dvander@790
|
121 |
* @param display Default item display string. |
|
dvander@790
|
122 |
* @param style Drawing style flags. |
|
dvander@790
|
123 |
* @return True on success, false on failure. |
|
dvander@790
|
124 |
* @error Invalid Handle or item limit reached. |
|
dvander@790
|
125 |
*/ |
|
dvander@790
|
126 |
native AddMenuItem(Handle:menu, |
|
dvander@790
|
127 |
const String:info[], |
|
dvander@790
|
128 |
const String:display[], |
|
dvander@790
|
129 |
style=ITEMDRAW_DEFAULT); |
|
dvander@790
|
130 |
|
|
dvander@790
|
131 |
/** |
|
dvander@790
|
132 |
* Inserts an item into the menu before a certain position; the new item will |
|
dvander@790
|
133 |
* be at the given position and all next items pushed forward. |
|
dvander@790
|
134 |
* |
|
dvander@790
|
135 |
* @param menu Menu Handle. |
|
dvander@790
|
136 |
* @param position Position, starting from 0. |
|
dvander@790
|
137 |
* @param info Item information string. |
|
dvander@790
|
138 |
* @param display Default item display string. |
|
dvander@790
|
139 |
* @param style Drawing style flags. |
|
dvander@790
|
140 |
* @return True on success, false on failure. |
|
dvander@790
|
141 |
* @error Invalid Handle or menu position. |
|
dvander@790
|
142 |
*/ |
|
dvander@790
|
143 |
native bool:InsertMenuItem(Handle:menu, |
|
dvander@790
|
144 |
position, |
|
dvander@790
|
145 |
const String:info[], |
|
dvander@790
|
146 |
const String:display[], |
|
dvander@790
|
147 |
style=ITEMDRAW_DEFAULT); |
|
dvander@790
|
148 |
|
|
dvander@790
|
149 |
/** |
|
dvander@790
|
150 |
* Removes an item from the menu. |
|
dvander@790
|
151 |
* |
|
dvander@790
|
152 |
* @param menu Menu Handle. |
|
dvander@790
|
153 |
* @param position Position, starting from 0. |
|
dvander@790
|
154 |
* @return True on success, false on failure. |
|
dvander@790
|
155 |
* @error Invalid Handle or menu position. |
|
dvander@790
|
156 |
*/ |
|
dvander@790
|
157 |
native bool:RemoveMenuItem(Handle:menu, position); |
|
dvander@790
|
158 |
|
|
dvander@790
|
159 |
/** |
|
dvander@790
|
160 |
* Removes all items from a menu. |
|
dvander@790
|
161 |
* |
|
dvander@790
|
162 |
* @param menu Menu Handle. |
|
dvander@790
|
163 |
* @noreturn |
|
dvander@790
|
164 |
* @error Invalid Handle or menu position. |
|
dvander@790
|
165 |
*/ |
|
dvander@790
|
166 |
native RemoveAllMenuItems(Handle:menu); |
|
dvander@790
|
167 |
|
|
dvander@790
|
168 |
/** |
|
dvander@790
|
169 |
* Retrieves information about a menu item. |
|
dvander@790
|
170 |
* |
|
dvander@790
|
171 |
* @param menu Menu Handle. |
|
dvander@790
|
172 |
* @param position Position, starting from 0. |
|
dvander@790
|
173 |
* @param infoBuf Info buffer. |
|
dvander@790
|
174 |
* @param infoBufLen Maximum length of the info buffer. |
|
dvander@790
|
175 |
* @param style By-reference variable to store drawing flags. |
|
dvander@790
|
176 |
* @param dispBuf Display buffer. |
|
dvander@790
|
177 |
* @param dispBufLen Maximum length of the display buffer. |
|
dvander@790
|
178 |
* @return True on success, false if position is invalid. |
|
dvander@790
|
179 |
* @error Invalid Handle. |
|
dvander@790
|
180 |
*/ |
|
dvander@790
|
181 |
native bool:GetMenuItem(Handle:menu, position, String:infoBuf[], infoBufLen, &style=0, String:dispBuf[]="", dispBufLen=0); |
|
dvander@790
|
182 |
|
|
dvander@790
|
183 |
/** |
|
dvander@790
|
184 |
* Returns the number of items in a menu. |
|
dvander@790
|
185 |
* |
|
dvander@790
|
186 |
* @param menu Menu Handle. |
|
dvander@790
|
187 |
* @return Number of items in the menu. |
|
dvander@790
|
188 |
* @error Invalid Handle. |
|
dvander@790
|
189 |
*/ |
|
dvander@790
|
190 |
native GetMenuItemCount(Handle:menu); |
|
dvander@790
|
191 |
|
|
dvander@790
|
192 |
/** |
|
dvander@790
|
193 |
* Sets whether the menu should be paginated or not. |
|
dvander@790
|
194 |
* |
|
dvander@790
|
195 |
* @param menu Handle to the menu. |
|
dvander@790
|
196 |
* @param itemsPerPage Number of items per page, or MENU_NO_PAGINATION. |
|
dvander@790
|
197 |
* @return True on success, false if pagination is too high or low. |
|
dvander@790
|
198 |
* @error Invalid Handle. |
|
dvander@790
|
199 |
*/ |
|
dvander@790
|
200 |
native bool:SetMenuPagination(Handle:menu, itemsPerPage); |
|
dvander@790
|
201 |
|
|
dvander@790
|
202 |
/** |
|
dvander@790
|
203 |
* Returns a menu's pagination setting. |
|
dvander@790
|
204 |
* |
|
dvander@790
|
205 |
* @param menu Handle to the menu. |
|
dvander@790
|
206 |
* @return Pagination setting. |
|
dvander@790
|
207 |
* @error Invalid Handle. |
|
dvander@790
|
208 |
*/ |
|
dvander@790
|
209 |
native GetMenuPagination(Handle:menu); |
|
dvander@790
|
210 |
|
|
dvander@790
|
211 |
/** |
|
dvander@790
|
212 |
* Returns a menu's MenuStyle Handle. The Handle |
|
dvander@790
|
213 |
* is global and cannot be freed. |
|
dvander@790
|
214 |
* |
|
dvander@790
|
215 |
* @param menu Handle to the menu. |
|
dvander@790
|
216 |
* @return Handle to the menu's draw style. |
|
dvander@790
|
217 |
* @error Invalid Handle. |
|
dvander@790
|
218 |
*/ |
|
dvander@790
|
219 |
native Handle:GetMenuStyle(Handle:menu); |
|
dvander@790
|
220 |
|
|
dvander@790
|
221 |
/** |
|
dvander@790
|
222 |
* Sets the menu's default title/instruction message. |
|
dvander@790
|
223 |
* |
|
dvander@790
|
224 |
* @param menu Menu Handle. |
|
dvander@790
|
225 |
* @param fmt Message string format |
|
dvander@790
|
226 |
* @param ... Message string arguments. |
|
dvander@790
|
227 |
* @noreturn |
|
dvander@790
|
228 |
* @error Invalid Handle. |
|
dvander@790
|
229 |
*/ |
|
dvander@790
|
230 |
native SetMenuTitle(Handle:menu, const String:fmt[], any:...); |
|
dvander@790
|
231 |
|
|
dvander@790
|
232 |
/** |
|
dvander@790
|
233 |
* Creates a raw MenuPanel based off the menu's style. |
|
dvander@790
|
234 |
* The Handle must be freed with CloseHandle(). |
|
dvander@790
|
235 |
* |
|
dvander@790
|
236 |
* @return A new MenuPanel Handle. |
|
dvander@790
|
237 |
* @error Invalid Handle. |
|
dvander@790
|
238 |
*/ |
|
dvander@790
|
239 |
native Handle:CreatePanelFromMenu(Handle:menu); |
|
dvander@790
|
240 |
|
|
dvander@790
|
241 |
/** |
|
dvander@790
|
242 |
* Returns whether or not the menu has an exit button. |
|
dvander@790
|
243 |
* By default, menus have an exit button. |
|
dvander@790
|
244 |
* |
|
dvander@790
|
245 |
* @param menu Menu Handle. |
|
dvander@790
|
246 |
* @return True if the menu has an exit button; false otherwise. |
|
dvander@790
|
247 |
* @error Invalid Handle. |
|
dvander@790
|
248 |
*/ |
|
dvander@790
|
249 |
native bool:GetMenuExitButton(Handle:menu); |
|
dvander@790
|
250 |
|
|
dvander@790
|
251 |
/** |
|
dvander@790
|
252 |
* Sets whether or not the menu has an exit button. |
|
dvander@790
|
253 |
* By default, menus have an exit button. |
|
dvander@790
|
254 |
* |
|
dvander@790
|
255 |
* @param menu Menu Handle. |
|
dvander@790
|
256 |
* @param button True to enable the button, false to remove it. |
|
dvander@790
|
257 |
* @return True if allowed; false on failure. |
|
dvander@790
|
258 |
* @error Invalid Handle. |
|
dvander@790
|
259 |
*/ |
|
dvander@790
|
260 |
native bool:SetMenuExitButton(Handle:menu, bool:button); |
|
dvander@790
|
261 |
|
|
dvander@790
|
262 |
/** |
|
dvander@790
|
263 |
* Cancels a menu from displaying on all clients. While the |
|
dvander@790
|
264 |
* cancellation is in progress, this menu cannot be re-displayed |
|
dvander@790
|
265 |
* to any clients. |
|
dvander@790
|
266 |
* |
|
dvander@790
|
267 |
* The menu may still exist on the client's screen after this command. |
|
dvander@790
|
268 |
* This simply verifies that the menu is not being used anywhere. |
|
dvander@790
|
269 |
* |
|
dvander@790
|
270 |
* @param menu Menu Handle. |
|
dvander@790
|
271 |
* @noreturn |
|
dvander@790
|
272 |
* @error Invalid Handle. |
|
dvander@790
|
273 |
*/ |
|
dvander@790
|
274 |
native CancelMenu(Handle:menu); |
|
dvander@790
|
275 |
|
|
dvander@790
|
276 |
#if 0 |
|
dvander@790
|
277 |
/** |
|
dvander@790
|
278 |
* Broadcasts a menu to a list of clients. |
|
dvander@790
|
279 |
* |
|
dvander@790
|
280 |
* @param menu Menu Handle. |
|
dvander@790
|
281 |
* @param handler MenuHandler callback to receive actions. |
|
dvander@790
|
282 |
* @param players Array of players to broadcast to. |
|
dvander@790
|
283 |
* @param numPlayers Number of players in the array. |
|
dvander@790
|
284 |
* @param time Maximum time to leave menu on the screen. |
|
dvander@790
|
285 |
* @return Number of clients that broadcast will wait upon. |
|
dvander@790
|
286 |
* @error Invalid Handle. |
|
dvander@790
|
287 |
*/ |
|
dvander@790
|
288 |
native BroadcastMenu(Handle:menu, MenuHandler:handler, players[], numPlayers, time); |
|
dvander@790
|
289 |
|
|
dvander@790
|
290 |
/** |
|
dvander@790
|
291 |
* Broadcasts a menu to a list of clients. The most selected |
|
dvander@790
|
292 |
* item will be returned through MenuAction_End. On a tie, a random |
|
dvander@790
|
293 |
* item will be returned. |
|
dvander@790
|
294 |
* |
|
dvander@790
|
295 |
* @param menu Menu Handle. |
|
dvander@790
|
296 |
* @param handler MenuHandler callback to receive actions. |
|
dvander@790
|
297 |
* @param players Array of players to broadcast to. |
|
dvander@790
|
298 |
* @param numPlayers Number of players in the array. |
|
dvander@790
|
299 |
* @param time Maximum time to leave menu on the screen. |
|
dvander@790
|
300 |
* @return Number of clients that vote will wait upon. |
|
dvander@790
|
301 |
* @error Invalid Handle. |
|
dvander@790
|
302 |
*/ |
|
dvander@790
|
303 |
native VoteMenu(Handle:menu, MenuHandler:handler, players[], numPlayers, time); |
|
dvander@790
|
304 |
|
|
dvander@790
|
305 |
/** |
|
dvander@790
|
306 |
* Broadcasts a menu to all clients. |
|
dvander@790
|
307 |
* |
|
dvander@790
|
308 |
* @param menu Menu Handle. |
|
dvander@790
|
309 |
* @param handler MenuHandler callback to receive actions. |
|
dvander@790
|
310 |
* @param time Maximum time to leave menu on the screen. |
|
dvander@790
|
311 |
* @return Number of clients that broadcast will wait upon. |
|
dvander@790
|
312 |
* @error Invalid Handle. |
|
dvander@790
|
313 |
*/ |
|
dvander@790
|
314 |
stock BroadcastMenuToAll(Handle:menu, MenuHandler:handler, time) |
|
dvander@790
|
315 |
{ |
|
dvander@790
|
316 |
new num = GetMaxClients(); |
|
dvander@790
|
317 |
new total; |
|
dvander@790
|
318 |
decl players[num]; |
|
dvander@790
|
319 |
|
|
dvander@790
|
320 |
for (new i=1; i<=num; i++) |
|
dvander@790
|
321 |
{ |
|
dvander@790
|
322 |
if (!IsClientConnected(i)) |
|
dvander@790
|
323 |
{ |
|
dvander@790
|
324 |
continue; |
|
dvander@790
|
325 |
} |
|
dvander@790
|
326 |
players[total++] = i; |
|
dvander@790
|
327 |
} |
|
dvander@790
|
328 |
|
|
dvander@790
|
329 |
return BroadcastMenu(menu, handler, players, total, time); |
|
dvander@790
|
330 |
} |
|
dvander@790
|
331 |
|
|
dvander@790
|
332 |
/** |
|
dvander@790
|
333 |
* Broadcasts a menu to all clients. The most selected item will |
|
dvander@790
|
334 |
* be returned through MenuAction_End. On a tie, a random item |
|
dvander@790
|
335 |
* will be returned. |
|
dvander@790
|
336 |
* |
|
dvander@790
|
337 |
* @param menu Menu Handle. |
|
dvander@790
|
338 |
* @param handler MenuHandler callback to receive actions. |
|
dvander@790
|
339 |
* @param time Maximum time to leave menu on the screen. |
|
dvander@790
|
340 |
* @return Number of clients that the vote will wait upon. |
|
dvander@790
|
341 |
* @error Invalid Handle. |
|
dvander@790
|
342 |
*/ |
|
dvander@817
|
343 |
stock VoteMenuToAll(Handle:menu, MenuHandler:handler, time) |
|
dvander@790
|
344 |
{ |
|
dvander@790
|
345 |
new num = GetMaxClients(); |
|
dvander@790
|
346 |
new total; |
|
dvander@790
|
347 |
decl players[num]; |
|
dvander@790
|
348 |
|
|
dvander@790
|
349 |
for (new i=1; i<=num; i++) |
|
dvander@790
|
350 |
{ |
|
dvander@790
|
351 |
if (!IsClientConnected(i)) |
|
dvander@790
|
352 |
{ |
|
dvander@790
|
353 |
continue; |
|
dvander@790
|
354 |
} |
|
dvander@790
|
355 |
players[total++] = i; |
|
dvander@790
|
356 |
} |
|
dvander@790
|
357 |
|
|
dvander@790
|
358 |
return VoteMenu(menu, handler, players, total, time); |
|
dvander@790
|
359 |
} |
|
dvander@790
|
360 |
#endif |
|
dvander@790
|
361 |
|
|
dvander@790
|
362 |
/** |
|
dvander@790
|
363 |
* Returns a style's global Handle. |
|
dvander@790
|
364 |
* |
|
dvander@790
|
365 |
* @param style Menu Style. |
|
dvander@790
|
366 |
* @return A Handle, or INVALID_HANDLE if not found or unusable. |
|
dvander@790
|
367 |
*/ |
|
dvander@790
|
368 |
native Handle:GetMenuStyleHandle(MenuStyle:style); |
|
dvander@790
|
369 |
|
|
dvander@790
|
370 |
/** |
|
dvander@790
|
371 |
* Creates a MenuPanel from a MenuStyle. Panels are used for drawing raw |
|
dvander@790
|
372 |
* menus without any extra helper functions. The Handle must be closed |
|
dvander@790
|
373 |
* with CloseHandle(). |
|
dvander@790
|
374 |
* |
|
dvander@790
|
375 |
* @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. |
|
dvander@790
|
376 |
* @return A new MenuPanel Handle. |
|
dvander@790
|
377 |
* @error Invalid Handle other than INVALID_HANDLE. |
|
dvander@790
|
378 |
*/ |
|
dvander@790
|
379 |
native Handle:CreatePanel(Handle:hStyle=INVALID_HANDLE); |
|
dvander@790
|
380 |
|
|
dvander@790
|
381 |
/** |
|
dvander@790
|
382 |
* Creates a Menu from a MenuStyle. The Handle must be closed with |
|
dvander@790
|
383 |
* CloseHandle(). |
|
dvander@790
|
384 |
* |
|
dvander@790
|
385 |
* @parma hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. |
|
dvander@790
|
386 |
* @param handler Function which will receive menu actions. |
|
dvander@790
|
387 |
* @param actions Optionally set which actions to receive. Select, |
|
dvander@790
|
388 |
* Cancel, and End will always be received regardless |
|
dvander@790
|
389 |
* of whether they are set or not. They are also |
|
dvander@790
|
390 |
* the only default actions. |
|
dvander@790
|
391 |
* @return A new menu Handle. |
|
dvander@790
|
392 |
* @error Invalid Handle other than INVALID_HANDLE. |
|
dvander@790
|
393 |
*/ |
|
dvander@790
|
394 |
native Handle:CreateMenuEx(Handle:hStyle=INVALID_HANDLE, MenuHandler:handler, MenuAction:actions=MENU_ACTIONS_DEFAULT); |
|
dvander@790
|
395 |
|
|
dvander@790
|
396 |
/** |
|
dvander@790
|
397 |
* Returns whether a client is viewing a menu. If the menu source |
|
dvander@790
|
398 |
* is MenuSource_Normal, a menu Handle will also be returned. |
|
dvander@790
|
399 |
* |
|
dvander@790
|
400 |
* @param client Client index. |
|
dvander@790
|
401 |
* @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. |
|
dvander@790
|
402 |
* @return A MenuSource value. |
|
dvander@790
|
403 |
* @error Invalid Handle other than INVALID_HANDLE. |
|
dvander@790
|
404 |
*/ |
|
dvander@790
|
405 |
native MenuSource:GetClientMenu(client, Handle:hStyle=INVALID_HANDLE); |
|
dvander@790
|
406 |
|
|
dvander@790
|
407 |
/** |
|
dvander@790
|
408 |
* Cancels a menu on a client. This will only affect non-external menus. |
|
dvander@790
|
409 |
* |
|
dvander@790
|
410 |
* @param hstyle MenuStyle Handle, or INVALID_HANDLE to use the default style. |
|
dvander@790
|
411 |
* @param client Client index. |
|
dvander@790
|
412 |
* @param autoIgnore If true, no menus can be re-drawn on the client during |
|
dvander@790
|
413 |
* the cancellation process. |
|
dvander@790
|
414 |
* @return True if a menu was cancelled, false otherwise. |
|
dvander@790
|
415 |
*/ |
|
dvander@790
|
416 |
native bool:CancelClientMenu(client, bool:autoIgnore=false, Handle:hStyle=INVALID_HANDLE); |
|
dvander@790
|
417 |
|
|
dvander@790
|
418 |
/** |
|
dvander@790
|
419 |
* Returns a style's maximum items per page. |
|
dvander@790
|
420 |
* |
|
dvander@790
|
421 |
* @param hStyle MenuStyle Handle, or INVALID_HANDLE to use the default style. |
|
dvander@790
|
422 |
* @return Maximum items per page. |
|
dvander@790
|
423 |
* @error Invalid Handle other than INVALID_HANDLE. |
|
dvander@790
|
424 |
*/ |
|
dvander@790
|
425 |
native GetMaxPageItems(Handle:hStyle=INVALID_HANDLE); |
|
dvander@790
|
426 |
|
|
dvander@790
|
427 |
/** |
|
dvander@790
|
428 |
* Returns a MenuPanel's parent style. |
|
dvander@790
|
429 |
* |
|
dvander@790
|
430 |
* @param panel A MenuPanel Handle. |
|
dvander@790
|
431 |
* @return The MenuStyle Handle that created the panel. |
|
dvander@790
|
432 |
* @error Invalid Handle. |
|
dvander@790
|
433 |
*/ |
|
dvander@790
|
434 |
native Handle:GetPanelStyle(Handle:panel); |
|
dvander@790
|
435 |
|
|
dvander@790
|
436 |
/** |
|
dvander@790
|
437 |
* Sets the panel's title. |
|
dvander@790
|
438 |
* |
|
dvander@790
|
439 |
* @param panel A MenuPanel Handle. |
|
dvander@790
|
440 |
* @param title Text to set as the title. |
|
dvander@790
|
441 |
* @param onlyIfEmpty If true, the title will only be set if no title is set. |
|
dvander@790
|
442 |
* @noreturn |
|
dvander@790
|
443 |
* @error Invalid Handle. |
|
dvander@790
|
444 |
*/ |
|
dvander@790
|
445 |
native Handle:SetPanelTitle(Handle:panel, const String:text[], bool:onlyIfEmpty=false); |
|
dvander@790
|
446 |
|
|
dvander@790
|
447 |
/** |
|
dvander@790
|
448 |
* Draws an item on a panel. If the item takes up a slot, the position |
|
dvander@790
|
449 |
* is returned. |
|
dvander@790
|
450 |
* |
|
dvander@790
|
451 |
* @param panel A MenuPanel Handle. |
|
dvander@790
|
452 |
* @param text Display text to use. If not a raw line, |
|
dvander@790
|
453 |
* the style may automatically add color markup. |
|
dvander@790
|
454 |
* No numbering or newlines are needed. |
|
dvander@790
|
455 |
* @param style ITEMDRAW style flags. |
|
dvander@790
|
456 |
* @return A slot position, or 0 if item was a rawline or could not be drawn. |
|
dvander@790
|
457 |
* @error Invalid Handle. |
|
dvander@790
|
458 |
*/ |
|
dvander@790
|
459 |
native DrawPanelItem(Handle:panel, const String:text[], style=ITEMDRAW_DEFAULT); |
|
dvander@790
|
460 |
|
|
dvander@790
|
461 |
/** |
|
dvander@790
|
462 |
* Draws a raw line of text on a panel, without any markup other than a newline. |
|
dvander@790
|
463 |
* |
|
dvander@790
|
464 |
* @param panel A MenuPanel Handle. |
|
dvander@790
|
465 |
* @param text Display text to use. |
|
dvander@790
|
466 |
* @return True on success, false if raw lines are not supported. |
|
dvander@790
|
467 |
* @error Invalid Handle. |
|
dvander@790
|
468 |
*/ |
|
dvander@790
|
469 |
native DrawPanelText(Handle:panel, const String:text[]); |
|
dvander@790
|
470 |
|
|
dvander@790
|
471 |
/** |
|
dvander@790
|
472 |
* Returns whether or not the given drawing flags are supported by |
|
dvander@790
|
473 |
* the menu style. |
|
dvander@790
|
474 |
* |
|
dvander@790
|
475 |
* @param panel A MenuPanel Handle. |
|
dvander@790
|
476 |
* @param style ITEMDRAW style flags. |
|
dvander@790
|
477 |
* @return True if item is drawable, false otherwise. |
|
dvander@790
|
478 |
* @error Invalid Handle. |
|
dvander@790
|
479 |
*/ |
|
dvander@790
|
480 |
native CanPanelDrawFlags(Handle:panel, style); |
|
dvander@790
|
481 |
|
|
dvander@790
|
482 |
/** |
|
dvander@790
|
483 |
* Sends a panel to a client. Unlike full menus, the handler |
|
dvander@790
|
484 |
* function will only receive the following actions, both of |
|
dvander@790
|
485 |
* which will have INVALID_HANDLE for a menu, and the client |
|
dvander@790
|
486 |
* as param1. |
|
dvander@790
|
487 |
* |
|
dvander@790
|
488 |
* MenuAction_Select (param2 will be the key pressed) |
|
dvander@790
|
489 |
* MenuAction_Cancel (param2 will be the reason) |
|
dvander@790
|
490 |
* |
|
dvander@790
|
491 |
* Also, if the menu fails to display, no callbacks will be called. |
|
dvander@790
|
492 |
* |
|
dvander@790
|
493 |
* @param panel A MenuPanel Handle. |
|
dvander@790
|
494 |
* @param client A client to draw to. |
|
dvander@790
|
495 |
* @param handler The MenuHandler function to catch actions with. |
|
dvander@790
|
496 |
* @param time Time to hold the menu for. |
|
dvander@790
|
497 |
* @return True on success, false on failure. |
|
dvander@790
|
498 |
* @error Invalid Handle. |
|
dvander@790
|
499 |
*/ |
|
dvander@790
|
500 |
native bool:SendPanelToClient(Handle:panel, client, MenuHandler:handler, time); |