1{%mainunit appkit.pas}
2(*
3        NSMenu.h
4        Application Kit
5        Copyright (c) 1996-2005, Apple Computer, Inc.
6        All rights reserved.
7*)
8
9{$ifdef HEADER}
10{$ifndef NSMENU_PAS_H}
11{$define NSMENU_PAS_H}
12
13{$include AppKitDefines.inc}
14{$include NSMenuItem.inc}
15  {.$ifdef  MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3}
16  {.$endif}
17  {.$ifdef  MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3}
18  {.$endif}
19
20//APPKIT_EXTERN NSString *NSMenuWillSendActionNotification;
21//APPKIT_EXTERN NSString *NSMenuDidSendActionNotification;
22//APPKIT_EXTERN NSString *NSMenuDidAddItemNotification;
23//APPKIT_EXTERN NSString *NSMenuDidRemoveItemNotification;
24//APPKIT_EXTERN NSString *NSMenuDidChangeItemNotification;
25//APPKIT_EXTERN NSString *NSMenuDidEndTrackingNotification    AVAILABLE_MAC_OS_X_VERSION_10_3_AND_LATER;
26{$endif}
27{$endif}
28
29{$ifdef FORWARD}
30  NSMenu = class;
31
32{$endif}
33
34{$ifdef CLASSES}
35{$ifndef NSMENU_PAS_C}
36{$define NSMENU_PAS_C}
37
38{$include AppKitDefines.inc}
39{$include NSMenuItem.inc}
40
41  { NSMenu }
42
43  NSMenu = class(NSObject)
44  public
45    class function getClass: lobjc.id; override;
46    // All instance variables are private
47    class procedure setMenuZone(_aZone: NSZone);
48    class function menuZone: NSZone;
49    class procedure popUpContextMenu_withEvent_forView(_menu: lobjc.id {NSMenu}; _event: lobjc.id {NSEvent}; _view: lobjc.id {NSView});
50    {.$ifdef  MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3}
51    class procedure popUpContextMenu_withEvent_forView_withFont(_menu: lobjc.id {NSMenu}; _event: lobjc.id {NSEvent}; _view: lobjc.id {NSView}; _font: lobjc.id {NSFont});
52    {.$endif}
53    {.$ifdef  MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2}
54    class procedure setMenuBarVisible(_visible: LongBool);
55    class function menuBarVisible: LongBool;
56    {.$endif}
57    constructor initWithTitle(_aTitle: CFStringRef);
58    procedure setTitle(_aString: CFStringRef);
59    function title: CFStringRef;
60    procedure setSupermenu(_supermenu: lobjc.id {NSMenu});
61    function supermenu: lobjc.id;{NSMenu}
62    //  Never call the set method directly it is there only for subclassers.
63    procedure insertItem_atIndex(_newItem: lobjc.id; __index: Integer);
64    procedure addItem(_newItem: lobjc.id);
65    function insertItemWithTitle_action_keyEquivalent_atIndex(_aString: CFStringRef; _aSelector: SEL; _charCode: CFStringRef; __index: Integer): lobjc.id;
66    function addItemWithTitle_action_keyEquivalent(_aString: CFStringRef; _aSelector: SEL; _charCode: CFStringRef): lobjc.id;
67    procedure removeItemAtIndex(__index: Integer);
68    procedure removeItem(_item: lobjc.id);
69    procedure setSubmenu_forItem(_aMenu: lobjc.id {NSMenu}; _anItem: lobjc.id);
70    function itemArray: CFArrayRef;
71    function numberOfItems: Integer;
72    function indexOfItem(__index: lobjc.id): Integer;
73    function indexOfItemWithTitle(_aTitle: CFStringRef): Integer;
74    function indexOfItemWithTag(_aTag: Integer): Integer;
75    function indexOfItemWithRepresentedObject(__object: lobjc.id): Integer;
76    function indexOfItemWithSubmenu(_submenu: lobjc.id {NSMenu}): Integer;
77    function indexOfItemWithTarget_andAction(_target: lobjc.id; _actionSelector: SEL): Integer;
78    function itemAtIndex(__index: Integer): lobjc.id;
79    function itemWithTitle(_aTitle: CFStringRef): lobjc.id;
80    function itemWithTag(_tag: Integer): lobjc.id;
81    procedure setAutoenablesItems(_flag: LongBool);
82    function autoenablesItems: LongBool;
83    function performKeyEquivalent(_theEvent: lobjc.id {NSEvent}): LongBool;
84    procedure update;
85    procedure setMenuChangedMessagesEnabled(_flag: LongBool);
86    function menuChangedMessagesEnabled: LongBool;
87    procedure itemChanged(_item: lobjc.id);
88    procedure helpRequested(_eventPtr: lobjc.id {NSEvent});
89    procedure setMenuRepresentation(_menuRep: lobjc.id);
90    function menuRepresentation: lobjc.id;
91    procedure setContextMenuRepresentation(_menuRep: lobjc.id);
92    function contextMenuRepresentation: lobjc.id;
93    procedure setTearOffMenuRepresentation(_menuRep: lobjc.id);
94    function tearOffMenuRepresentation: lobjc.id;
95    function isTornOff: LongBool;
96    //  These methods are platform specific.  They really make little sense on Windows.
97    //  Their use is discouraged.
98    function attachedMenu: lobjc.id;{NSMenu}
99    function isAttached: LongBool;
100    procedure sizeToFit;
101    function locationForSubmenu(_aSubmenu: lobjc.id {NSMenu}): NSPoint;
102    procedure performActionForItemAtIndex(__index: Integer);
103    {.$ifdef  MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3}
104    procedure setDelegate(_anObject: lobjc.id);
105    function delegate: lobjc.id;
106    {.$endif}
107    {.$ifdef  MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4}
108    function menuBarHeight: Single;
109    {.$endif}
110    procedure submenuAction(_sender: lobjc.id);
111  end;
112
113    {.$ifdef  MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3}
114    {.$endif}
115{$endif}
116{$endif}
117
118{$ifdef IMPLEMENTATION}
119const
120  StrNSMenu_NSMenu = 'NSMenu';
121  StrNSMenu_setMenuZone = 'setMenuZone:';
122  StrNSMenu_menuZone = 'menuZone';
123  StrNSMenu_popUpContextMenu_withEvent_forView = 'popUpContextMenu:withEvent:forView:';
124  StrNSMenu_popUpContextMenu_withEvent_forView_withFont = 'popUpContextMenu:withEvent:forView:withFont:';
125  StrNSMenu_setMenuBarVisible = 'setMenuBarVisible:';
126  StrNSMenu_menuBarVisible = 'menuBarVisible';
127  StrNSMenu_initWithTitle = 'initWithTitle:';
128  StrNSMenu_setTitle = 'setTitle:';
129  StrNSMenu_title = 'title';
130  StrNSMenu_setSupermenu = 'setSupermenu:';
131  StrNSMenu_supermenu = 'supermenu';
132  StrNSMenu_insertItem_atIndex = 'insertItem:atIndex:';
133  StrNSMenu_addItem = 'addItem:';
134  StrNSMenu_insertItemWithTitle_action_keyEquivalent_atIndex = 'insertItemWithTitle:action:keyEquivalent:atIndex:';
135  StrNSMenu_addItemWithTitle_action_keyEquivalent = 'addItemWithTitle:action:keyEquivalent:';
136  StrNSMenu_removeItemAtIndex = 'removeItemAtIndex:';
137  StrNSMenu_removeItem = 'removeItem:';
138  StrNSMenu_setSubmenu_forItem = 'setSubmenu:forItem:';
139  StrNSMenu_itemArray = 'itemArray';
140  StrNSMenu_numberOfItems = 'numberOfItems';
141  StrNSMenu_indexOfItem = 'indexOfItem:';
142  StrNSMenu_indexOfItemWithTitle = 'indexOfItemWithTitle:';
143  StrNSMenu_indexOfItemWithTag = 'indexOfItemWithTag:';
144  StrNSMenu_indexOfItemWithRepresentedObject = 'indexOfItemWithRepresentedObject:';
145  StrNSMenu_indexOfItemWithSubmenu = 'indexOfItemWithSubmenu:';
146  StrNSMenu_indexOfItemWithTarget_andAction = 'indexOfItemWithTarget:andAction:';
147  StrNSMenu_itemAtIndex = 'itemAtIndex:';
148  StrNSMenu_itemWithTitle = 'itemWithTitle:';
149  StrNSMenu_itemWithTag = 'itemWithTag:';
150  StrNSMenu_setAutoenablesItems = 'setAutoenablesItems:';
151  StrNSMenu_autoenablesItems = 'autoenablesItems';
152  StrNSMenu_performKeyEquivalent = 'performKeyEquivalent:';
153  StrNSMenu_update = 'update';
154  StrNSMenu_setMenuChangedMessagesEnabled = 'setMenuChangedMessagesEnabled:';
155  StrNSMenu_menuChangedMessagesEnabled = 'menuChangedMessagesEnabled';
156  StrNSMenu_itemChanged = 'itemChanged:';
157  StrNSMenu_helpRequested = 'helpRequested:';
158  StrNSMenu_setMenuRepresentation = 'setMenuRepresentation:';
159  StrNSMenu_menuRepresentation = 'menuRepresentation';
160  StrNSMenu_setContextMenuRepresentation = 'setContextMenuRepresentation:';
161  StrNSMenu_contextMenuRepresentation = 'contextMenuRepresentation';
162  StrNSMenu_setTearOffMenuRepresentation = 'setTearOffMenuRepresentation:';
163  StrNSMenu_tearOffMenuRepresentation = 'tearOffMenuRepresentation';
164  StrNSMenu_isTornOff = 'isTornOff';
165  StrNSMenu_attachedMenu = 'attachedMenu';
166  StrNSMenu_isAttached = 'isAttached';
167  StrNSMenu_sizeToFit = 'sizeToFit';
168  StrNSMenu_locationForSubmenu = 'locationForSubmenu:';
169  StrNSMenu_performActionForItemAtIndex = 'performActionForItemAtIndex:';
170  StrNSMenu_setDelegate = 'setDelegate:';
171  StrNSMenu_delegate = 'delegate';
172  StrNSMenu_menuBarHeight = 'menuBarHeight';
173
174  StrNSMenu_submenuAction = 'submenuAction:';
175
176{ NSMenu }
177
178class function NSMenu.getClass: lobjc.id;
179begin
180  Result := objc_getClass(StrNSMenu_NSMenu);
181end;
182
183class procedure NSMenu.setMenuZone(_aZone: NSZone);
184type
185  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_aZone: NSZone); cdecl;
186var
187  vmethod: TmsgSendWrapper;
188begin
189  vmethod := TmsgSendWrapper(@objc_msgSend);
190  vmethod(getClass, sel_registerName(PChar(StrNSMenu_setMenuZone)), _aZone);
191end;
192
193class function NSMenu.menuZone: NSZone;
194begin
195  Result := NSZone(objc_msgSend(getClass, sel_registerName(PChar(StrNSMenu_menuZone)), []));
196end;
197
198class procedure NSMenu.popUpContextMenu_withEvent_forView(_menu: lobjc.id {NSMenu}; _event: lobjc.id {NSEvent}; _view: lobjc.id {NSView});
199type
200  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_menu: lobjc.id {NSMenu}; _event: lobjc.id {NSEvent}; _view: lobjc.id {NSView}); cdecl;
201var
202  vmethod: TmsgSendWrapper;
203begin
204  vmethod := TmsgSendWrapper(@objc_msgSend);
205  vmethod(getClass, sel_registerName(PChar(StrNSMenu_popUpContextMenu_withEvent_forView)), _menu, _event, _view);
206end;
207
208{.$ifdef  MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3}
209class procedure NSMenu.popUpContextMenu_withEvent_forView_withFont(_menu: lobjc.id {NSMenu}; _event: lobjc.id {NSEvent}; _view: lobjc.id {NSView}; _font: lobjc.id {NSFont});
210type
211  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_menu: lobjc.id {NSMenu}; _event: lobjc.id {NSEvent}; _view: lobjc.id {NSView}; _font: lobjc.id {NSFont}); cdecl;
212var
213  vmethod: TmsgSendWrapper;
214begin
215  vmethod := TmsgSendWrapper(@objc_msgSend);
216  vmethod(getClass, sel_registerName(PChar(StrNSMenu_popUpContextMenu_withEvent_forView_withFont)), _menu, _event, _view, _font);
217end;
218
219{.$endif}
220{.$ifdef  MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_2}
221class procedure NSMenu.setMenuBarVisible(_visible: LongBool);
222type
223  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_visible: LongBool); cdecl;
224var
225  vmethod: TmsgSendWrapper;
226begin
227  vmethod := TmsgSendWrapper(@objc_msgSend);
228  vmethod(getClass, sel_registerName(PChar(StrNSMenu_setMenuBarVisible)), _visible);
229end;
230
231class function NSMenu.menuBarVisible: LongBool;
232begin
233  Result := {%H-}LongBool(objc_msgSend(getClass, sel_registerName(PChar(StrNSMenu_menuBarVisible)), []));
234end;
235
236{.$endif}
237constructor NSMenu.initWithTitle(_aTitle: CFStringRef);
238type
239  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_aTitle: CFStringRef): lobjc.id; cdecl;
240var
241  vmethod: TmsgSendWrapper;
242begin
243  ClassID := getClass();
244  allocbuf := objc_msgSend(ClassID, sel_registerName(PChar(Str_alloc)), []);
245  vmethod := TmsgSendWrapper(@objc_msgSend);
246  Handle := vmethod(allocbuf, sel_registerName(PChar(StrNSMenu_initWithTitle)), _aTitle);
247end;
248
249procedure NSMenu.setTitle(_aString: CFStringRef);
250type
251  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_aString: CFStringRef); cdecl;
252var
253  vmethod: TmsgSendWrapper;
254begin
255  vmethod := TmsgSendWrapper(@objc_msgSend);
256  vmethod(Handle, sel_registerName(PChar(StrNSMenu_setTitle)), _aString);
257end;
258
259function NSMenu.title: CFStringRef;
260begin
261  Result := CFStringRef(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_title)), []));
262end;
263
264procedure NSMenu.setSupermenu(_supermenu: lobjc.id {NSMenu});
265type
266  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_supermenu: lobjc.id {NSMenu}); cdecl;
267var
268  vmethod: TmsgSendWrapper;
269begin
270  vmethod := TmsgSendWrapper(@objc_msgSend);
271  vmethod(Handle, sel_registerName(PChar(StrNSMenu_setSupermenu)), _supermenu);
272end;
273
274function NSMenu.supermenu: lobjc.id;
275begin
276  Result := lobjc.id(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_supermenu)), []));
277end;
278
279procedure NSMenu.insertItem_atIndex(_newItem: lobjc.id; __index: Integer);
280type
281  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_newItem: lobjc.id; __index: Integer); cdecl;
282var
283  vmethod: TmsgSendWrapper;
284begin
285  vmethod := TmsgSendWrapper(@objc_msgSend);
286  vmethod(Handle, sel_registerName(PChar(StrNSMenu_insertItem_atIndex)), _newItem, __index);
287end;
288
289procedure NSMenu.addItem(_newItem: lobjc.id);
290type
291  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_newItem: lobjc.id); cdecl;
292var
293  vmethod: TmsgSendWrapper;
294begin
295  vmethod := TmsgSendWrapper(@objc_msgSend);
296  vmethod(Handle, sel_registerName(PChar(StrNSMenu_addItem)), _newItem);
297end;
298
299function NSMenu.insertItemWithTitle_action_keyEquivalent_atIndex(_aString: CFStringRef; _aSelector: SEL; _charCode: CFStringRef; __index: Integer): lobjc.id;
300type
301  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_aString: CFStringRef; _aSelector: SEL; _charCode: CFStringRef; __index: Integer): lobjc.id; cdecl;
302var
303  vmethod: TmsgSendWrapper;
304begin
305  vmethod := TmsgSendWrapper(@objc_msgSend);
306  Result := lobjc.id(vmethod(Handle, sel_registerName(PChar(StrNSMenu_insertItemWithTitle_action_keyEquivalent_atIndex)), _aString, _aSelector, _charCode, __index));
307end;
308
309function NSMenu.addItemWithTitle_action_keyEquivalent(_aString: CFStringRef; _aSelector: SEL; _charCode: CFStringRef): lobjc.id;
310type
311  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_aString: CFStringRef; _aSelector: SEL; _charCode: CFStringRef): lobjc.id; cdecl;
312var
313  vmethod: TmsgSendWrapper;
314begin
315  vmethod := TmsgSendWrapper(@objc_msgSend);
316  Result := lobjc.id(vmethod(Handle, sel_registerName(PChar(StrNSMenu_addItemWithTitle_action_keyEquivalent)), _aString, _aSelector, _charCode));
317end;
318
319procedure NSMenu.removeItemAtIndex(__index: Integer);
320type
321  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;__index: Integer); cdecl;
322var
323  vmethod: TmsgSendWrapper;
324begin
325  vmethod := TmsgSendWrapper(@objc_msgSend);
326  vmethod(Handle, sel_registerName(PChar(StrNSMenu_removeItemAtIndex)), __index);
327end;
328
329procedure NSMenu.removeItem(_item: lobjc.id);
330type
331  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_item: lobjc.id); cdecl;
332var
333  vmethod: TmsgSendWrapper;
334begin
335  vmethod := TmsgSendWrapper(@objc_msgSend);
336  vmethod(Handle, sel_registerName(PChar(StrNSMenu_removeItem)), _item);
337end;
338
339procedure NSMenu.setSubmenu_forItem(_aMenu: lobjc.id {NSMenu}; _anItem: lobjc.id);
340type
341  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_aMenu: lobjc.id {NSMenu}; _anItem: lobjc.id); cdecl;
342var
343  vmethod: TmsgSendWrapper;
344begin
345  vmethod := TmsgSendWrapper(@objc_msgSend);
346  vmethod(Handle, sel_registerName(PChar(StrNSMenu_setSubmenu_forItem)), _aMenu, _anItem);
347end;
348
349function NSMenu.itemArray: CFArrayRef;
350begin
351  Result := CFArrayRef(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_itemArray)), []));
352end;
353
354function NSMenu.numberOfItems: Integer;
355begin
356  Result := {%H-}Integer(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_numberOfItems)), []));
357end;
358
359function NSMenu.indexOfItem(__index: lobjc.id): Integer;
360type
361  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;__index: lobjc.id): Integer; cdecl;
362var
363  vmethod: TmsgSendWrapper;
364begin
365  vmethod := TmsgSendWrapper(@objc_msgSend);
366  Result := Integer(vmethod(Handle, sel_registerName(PChar(StrNSMenu_indexOfItem)), __index));
367end;
368
369function NSMenu.indexOfItemWithTitle(_aTitle: CFStringRef): Integer;
370type
371  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_aTitle: CFStringRef): Integer; cdecl;
372var
373  vmethod: TmsgSendWrapper;
374begin
375  vmethod := TmsgSendWrapper(@objc_msgSend);
376  Result := Integer(vmethod(Handle, sel_registerName(PChar(StrNSMenu_indexOfItemWithTitle)), _aTitle));
377end;
378
379function NSMenu.indexOfItemWithTag(_aTag: Integer): Integer;
380type
381  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_aTag: Integer): Integer; cdecl;
382var
383  vmethod: TmsgSendWrapper;
384begin
385  vmethod := TmsgSendWrapper(@objc_msgSend);
386  Result := Integer(vmethod(Handle, sel_registerName(PChar(StrNSMenu_indexOfItemWithTag)), _aTag));
387end;
388
389function NSMenu.indexOfItemWithRepresentedObject(__object: lobjc.id): Integer;
390type
391  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;__object: lobjc.id): Integer; cdecl;
392var
393  vmethod: TmsgSendWrapper;
394begin
395  vmethod := TmsgSendWrapper(@objc_msgSend);
396  Result := Integer(vmethod(Handle, sel_registerName(PChar(StrNSMenu_indexOfItemWithRepresentedObject)), __object));
397end;
398
399function NSMenu.indexOfItemWithSubmenu(_submenu: lobjc.id {NSMenu}): Integer;
400type
401  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_submenu: lobjc.id {NSMenu}): Integer; cdecl;
402var
403  vmethod: TmsgSendWrapper;
404begin
405  vmethod := TmsgSendWrapper(@objc_msgSend);
406  Result := Integer(vmethod(Handle, sel_registerName(PChar(StrNSMenu_indexOfItemWithSubmenu)), _submenu));
407end;
408
409function NSMenu.indexOfItemWithTarget_andAction(_target: lobjc.id; _actionSelector: SEL): Integer;
410type
411  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_target: lobjc.id; _actionSelector: SEL): Integer; cdecl;
412var
413  vmethod: TmsgSendWrapper;
414begin
415  vmethod := TmsgSendWrapper(@objc_msgSend);
416  Result := Integer(vmethod(Handle, sel_registerName(PChar(StrNSMenu_indexOfItemWithTarget_andAction)), _target, _actionSelector));
417end;
418
419function NSMenu.itemAtIndex(__index: Integer): lobjc.id;
420type
421  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;__index: Integer): lobjc.id; cdecl;
422var
423  vmethod: TmsgSendWrapper;
424begin
425  vmethod := TmsgSendWrapper(@objc_msgSend);
426  Result := lobjc.id(vmethod(Handle, sel_registerName(PChar(StrNSMenu_itemAtIndex)), __index));
427end;
428
429function NSMenu.itemWithTitle(_aTitle: CFStringRef): lobjc.id;
430type
431  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_aTitle: CFStringRef): lobjc.id; cdecl;
432var
433  vmethod: TmsgSendWrapper;
434begin
435  vmethod := TmsgSendWrapper(@objc_msgSend);
436  Result := lobjc.id(vmethod(Handle, sel_registerName(PChar(StrNSMenu_itemWithTitle)), _aTitle));
437end;
438
439function NSMenu.itemWithTag(_tag: Integer): lobjc.id;
440type
441  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_tag: Integer): lobjc.id; cdecl;
442var
443  vmethod: TmsgSendWrapper;
444begin
445  vmethod := TmsgSendWrapper(@objc_msgSend);
446  Result := lobjc.id(vmethod(Handle, sel_registerName(PChar(StrNSMenu_itemWithTag)), _tag));
447end;
448
449procedure NSMenu.setAutoenablesItems(_flag: LongBool);
450type
451  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_flag: LongBool); cdecl;
452var
453  vmethod: TmsgSendWrapper;
454begin
455  vmethod := TmsgSendWrapper(@objc_msgSend);
456  vmethod(Handle, sel_registerName(PChar(StrNSMenu_setAutoenablesItems)), _flag);
457end;
458
459function NSMenu.autoenablesItems: LongBool;
460begin
461  Result := {%H-}LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_autoenablesItems)), []));
462end;
463
464function NSMenu.performKeyEquivalent(_theEvent: lobjc.id {NSEvent}): LongBool;
465type
466  TmsgSendWrapper = function (param1: lobjc.id; param2: SEL;_theEvent: lobjc.id {NSEvent}): LongBool; cdecl;
467var
468  vmethod: TmsgSendWrapper;
469begin
470  vmethod := TmsgSendWrapper(@objc_msgSend);
471  Result := LongBool(vmethod(Handle, sel_registerName(PChar(StrNSMenu_performKeyEquivalent)), _theEvent));
472end;
473
474procedure NSMenu.update;
475begin
476  objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_update)), []);
477end;
478
479procedure NSMenu.setMenuChangedMessagesEnabled(_flag: LongBool);
480type
481  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_flag: LongBool); cdecl;
482var
483  vmethod: TmsgSendWrapper;
484begin
485  vmethod := TmsgSendWrapper(@objc_msgSend);
486  vmethod(Handle, sel_registerName(PChar(StrNSMenu_setMenuChangedMessagesEnabled)), _flag);
487end;
488
489function NSMenu.menuChangedMessagesEnabled: LongBool;
490begin
491  Result := {%H-}LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_menuChangedMessagesEnabled)), []));
492end;
493
494procedure NSMenu.itemChanged(_item: lobjc.id);
495type
496  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_item: lobjc.id); cdecl;
497var
498  vmethod: TmsgSendWrapper;
499begin
500  vmethod := TmsgSendWrapper(@objc_msgSend);
501  vmethod(Handle, sel_registerName(PChar(StrNSMenu_itemChanged)), _item);
502end;
503
504procedure NSMenu.helpRequested(_eventPtr: lobjc.id {NSEvent});
505type
506  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_eventPtr: lobjc.id {NSEvent}); cdecl;
507var
508  vmethod: TmsgSendWrapper;
509begin
510  vmethod := TmsgSendWrapper(@objc_msgSend);
511  vmethod(Handle, sel_registerName(PChar(StrNSMenu_helpRequested)), _eventPtr);
512end;
513
514procedure NSMenu.setMenuRepresentation(_menuRep: lobjc.id);
515type
516  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_menuRep: lobjc.id); cdecl;
517var
518  vmethod: TmsgSendWrapper;
519begin
520  vmethod := TmsgSendWrapper(@objc_msgSend);
521  vmethod(Handle, sel_registerName(PChar(StrNSMenu_setMenuRepresentation)), _menuRep);
522end;
523
524function NSMenu.menuRepresentation: lobjc.id;
525begin
526  Result := lobjc.id(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_menuRepresentation)), []));
527end;
528
529procedure NSMenu.setContextMenuRepresentation(_menuRep: lobjc.id);
530type
531  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_menuRep: lobjc.id); cdecl;
532var
533  vmethod: TmsgSendWrapper;
534begin
535  vmethod := TmsgSendWrapper(@objc_msgSend);
536  vmethod(Handle, sel_registerName(PChar(StrNSMenu_setContextMenuRepresentation)), _menuRep);
537end;
538
539function NSMenu.contextMenuRepresentation: lobjc.id;
540begin
541  Result := lobjc.id(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_contextMenuRepresentation)), []));
542end;
543
544procedure NSMenu.setTearOffMenuRepresentation(_menuRep: lobjc.id);
545type
546  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_menuRep: lobjc.id); cdecl;
547var
548  vmethod: TmsgSendWrapper;
549begin
550  vmethod := TmsgSendWrapper(@objc_msgSend);
551  vmethod(Handle, sel_registerName(PChar(StrNSMenu_setTearOffMenuRepresentation)), _menuRep);
552end;
553
554function NSMenu.tearOffMenuRepresentation: lobjc.id;
555begin
556  Result := lobjc.id(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_tearOffMenuRepresentation)), []));
557end;
558
559function NSMenu.isTornOff: LongBool;
560begin
561  Result := {%H-}LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_isTornOff)), []));
562end;
563
564function NSMenu.attachedMenu: lobjc.id;
565begin
566  Result := lobjc.id(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_attachedMenu)), []));
567end;
568
569function NSMenu.isAttached: LongBool;
570begin
571  Result := {%H-}LongBool(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_isAttached)), []));
572end;
573
574procedure NSMenu.sizeToFit;
575begin
576  objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_sizeToFit)), []);
577end;
578
579function NSMenu.locationForSubmenu(_aSubmenu: lobjc.id {NSMenu}): NSPoint;
580type
581  TmsgSendWrapper = procedure (result_param: Pointer; param1: lobjc.id; param2: SEL;_aSubmenu: lobjc.id {NSMenu}); cdecl;
582var
583  vmethod: TmsgSendWrapper;
584begin
585  vmethod := TmsgSendWrapper(@objc_msgSend_fpret);
586  vmethod(@Result, Handle, sel_registerName(PChar(StrNSMenu_locationForSubmenu)), _aSubmenu);
587end;
588
589procedure NSMenu.performActionForItemAtIndex(__index: Integer);
590type
591  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;__index: Integer); cdecl;
592var
593  vmethod: TmsgSendWrapper;
594begin
595  vmethod := TmsgSendWrapper(@objc_msgSend);
596  vmethod(Handle, sel_registerName(PChar(StrNSMenu_performActionForItemAtIndex)), __index);
597end;
598
599{.$ifdef  MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_3}
600procedure NSMenu.setDelegate(_anObject: lobjc.id);
601type
602  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_anObject: lobjc.id); cdecl;
603var
604  vmethod: TmsgSendWrapper;
605begin
606  vmethod := TmsgSendWrapper(@objc_msgSend);
607  vmethod(Handle, sel_registerName(PChar(StrNSMenu_setDelegate)), _anObject);
608end;
609
610function NSMenu.delegate: lobjc.id;
611begin
612  Result := lobjc.id(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_delegate)), []));
613end;
614
615{.$endif}
616{.$ifdef  MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4}
617function NSMenu.menuBarHeight: Single;
618begin
619  Result := Single(objc_msgSend(Handle, sel_registerName(PChar(StrNSMenu_menuBarHeight)), []));
620end;
621
622{.$endif}
623procedure NSMenu.submenuAction(_sender: lobjc.id);
624type
625  TmsgSendWrapper = procedure (param1: lobjc.id; param2: SEL;_sender: lobjc.id); cdecl;
626var
627  vmethod: TmsgSendWrapper;
628begin
629  vmethod := TmsgSendWrapper(@objc_msgSend);
630  vmethod(Handle, sel_registerName(PChar(StrNSMenu_submenuAction)), _sender);
631end;
632
633{$endif}
634