NSMenu.odin 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563
  1. package objc_Foundation
  2. import "base:builtin"
  3. import "base:intrinsics"
  4. import "core:c"
  5. MenuSelectionMode :: enum c.long {
  6. Automatic = 0,
  7. SelectOne = 1,
  8. SelectAny = 2,
  9. }
  10. MenuPresentationStyle :: enum c.long {
  11. Regular = 0,
  12. Palette = 1,
  13. }
  14. UserInterfaceLayoutDirection :: enum c.long {
  15. LeftToRight = 0,
  16. RightToLeft = 1,
  17. }
  18. MenuPropertyItem :: enum c.ulong {
  19. Title = 0,
  20. AttributedTitle = 1,
  21. KeyEquivalent = 2,
  22. Image = 3,
  23. Enabled = 4,
  24. AccessibilityDescription = 5,
  25. }
  26. MenuProperties :: distinct bit_set[MenuPropertyItem; c.ulong]
  27. @(objc_class="NSMenu")
  28. Menu :: struct {using _: Object}
  29. @(objc_type=Menu, objc_name="init")
  30. Menu_init :: proc "c" (self: ^Menu) -> ^Menu {
  31. return msgSend(^Menu, self, "init")
  32. }
  33. @(objc_type=Menu, objc_name="initWithTitle")
  34. Menu_initWithTitle :: #force_inline proc "c" (self: ^Menu, title: ^String) -> ^Menu {
  35. return msgSend(^Menu, self, "initWithTitle:", title)
  36. }
  37. @(objc_type=Menu, objc_name="initWithCoder")
  38. Menu_initWithCoder :: #force_inline proc "c" (self: ^Menu, coder: ^Coder) -> ^Menu {
  39. return msgSend(^Menu, self, "initWithCoder:", coder)
  40. }
  41. @(objc_type=Menu, objc_name="popUpContextMenu_withEvent_forView", objc_is_class_method=true)
  42. Menu_popUpContextMenu_withEvent_forView :: #force_inline proc "c" (menu: ^Menu, event: ^Event, view: ^View) {
  43. msgSend(nil, Menu, "popUpContextMenu:withEvent:forView:", menu, event, view)
  44. }
  45. // @(objc_type=Menu, objc_name="popUpContextMenu_withEvent_forView_withFont", objc_is_class_method=true)
  46. // Menu_popUpContextMenu_withEvent_forView_withFont :: #force_inline proc "c" (menu: ^Menu, event: ^Event, view: ^View, font: ^Font) {
  47. // msgSend(nil, Menu, "popUpContextMenu:withEvent:forView:withFont:", menu, event, view, font)
  48. // }
  49. @(objc_type=Menu, objc_name="popUpMenuPositioningItem")
  50. Menu_popUpMenuPositioningItem :: #force_inline proc "c" (self: ^Menu, item: ^MenuItem, location: Point, view: ^View) -> bool {
  51. return msgSend(bool, self, "popUpMenuPositioningItem:atLocation:inView:", item, location, view)
  52. }
  53. @(objc_type=Menu, objc_name="setMenuBarVisible", objc_is_class_method=true)
  54. Menu_setMenuBarVisible :: #force_inline proc "c" (visible: bool) {
  55. msgSend(nil, Menu, "setMenuBarVisible:", visible)
  56. }
  57. @(objc_type=Menu, objc_name="menuBarVisible", objc_is_class_method=true)
  58. Menu_menuBarVisible :: #force_inline proc "c" () -> bool {
  59. return msgSend(bool, Menu, "menuBarVisible")
  60. }
  61. @(objc_type=Menu, objc_name="insertItem")
  62. Menu_insertItem :: #force_inline proc "c" (self: ^Menu, newItem: ^MenuItem, index: Integer) {
  63. msgSend(nil, self, "insertItem:atIndex:", newItem, index)
  64. }
  65. @(objc_type=Menu, objc_name="addItem")
  66. Menu_addItem :: #force_inline proc "c" (self: ^Menu, newItem: ^MenuItem) {
  67. msgSend(nil, self, "addItem:", newItem)
  68. }
  69. @(objc_type=Menu, objc_name="insertItemWithTitle")
  70. Menu_insertItemWithTitle :: #force_inline proc "c" (self: ^Menu, string: ^String, selector: SEL, charCode: ^String, index: Integer) -> ^MenuItem {
  71. return msgSend(^MenuItem, self, "insertItemWithTitle:action:keyEquivalent:atIndex:", string, selector, charCode, index)
  72. }
  73. @(objc_type=Menu, objc_name="addItemWithTitle")
  74. Menu_addItemWithTitle :: #force_inline proc "c" (self: ^Menu, string: ^String, selector: SEL, charCode: ^String) -> ^MenuItem {
  75. return msgSend(^MenuItem, self, "addItemWithTitle:action:keyEquivalent:", string, selector, charCode)
  76. }
  77. @(objc_type=Menu, objc_name="removeItemAtIndex")
  78. Menu_removeItemAtIndex :: #force_inline proc "c" (self: ^Menu, index: Integer) {
  79. msgSend(nil, self, "removeItemAtIndex:", index)
  80. }
  81. @(objc_type=Menu, objc_name="removeItem")
  82. Menu_removeItem :: #force_inline proc "c" (self: ^Menu, item: ^MenuItem) {
  83. msgSend(nil, self, "removeItem:", item)
  84. }
  85. @(objc_type=Menu, objc_name="setSubmenu")
  86. Menu_setSubmenu :: #force_inline proc "c" (self: ^Menu, menu: ^Menu, item: ^MenuItem) {
  87. msgSend(nil, self, "setSubmenu:forItem:", menu, item)
  88. }
  89. @(objc_type=Menu, objc_name="removeAllItems")
  90. Menu_removeAllItems :: #force_inline proc "c" (self: ^Menu) {
  91. msgSend(nil, self, "removeAllItems")
  92. }
  93. @(objc_type=Menu, objc_name="itemAtIndex")
  94. Menu_itemAtIndex :: #force_inline proc "c" (self: ^Menu, index: Integer) -> ^MenuItem {
  95. return msgSend(^MenuItem, self, "itemAtIndex:", index)
  96. }
  97. @(objc_type=Menu, objc_name="indexOfItem")
  98. Menu_indexOfItem :: #force_inline proc "c" (self: ^Menu, item: ^MenuItem) -> Integer {
  99. return msgSend(Integer, self, "indexOfItem:", item)
  100. }
  101. @(objc_type=Menu, objc_name="indexOfItemWithTitle")
  102. Menu_indexOfItemWithTitle :: #force_inline proc "c" (self: ^Menu, title: ^String) -> Integer {
  103. return msgSend(Integer, self, "indexOfItemWithTitle:", title)
  104. }
  105. @(objc_type=Menu, objc_name="indexOfItemWithTag")
  106. Menu_indexOfItemWithTag :: #force_inline proc "c" (self: ^Menu, tag: Integer) -> Integer {
  107. return msgSend(Integer, self, "indexOfItemWithTag:", tag)
  108. }
  109. @(objc_type=Menu, objc_name="indexOfItemWithRepresentedObject")
  110. Menu_indexOfItemWithRepresentedObject :: #force_inline proc "c" (self: ^Menu, object: id) -> Integer {
  111. return msgSend(Integer, self, "indexOfItemWithRepresentedObject:", object)
  112. }
  113. @(objc_type=Menu, objc_name="indexOfItemWithSubmenu")
  114. Menu_indexOfItemWithSubmenu :: #force_inline proc "c" (self: ^Menu, submenu: ^Menu) -> Integer {
  115. return msgSend(Integer, self, "indexOfItemWithSubmenu:", submenu)
  116. }
  117. @(objc_type=Menu, objc_name="indexOfItemWithTarget")
  118. Menu_indexOfItemWithTarget :: #force_inline proc "c" (self: ^Menu, target: id, actionSelector: SEL) -> Integer {
  119. return msgSend(Integer, self, "indexOfItemWithTarget:andAction:", target, actionSelector)
  120. }
  121. @(objc_type=Menu, objc_name="itemWithTitle")
  122. Menu_itemWithTitle :: #force_inline proc "c" (self: ^Menu, title: ^String) -> ^MenuItem {
  123. return msgSend(^MenuItem, self, "itemWithTitle:", title)
  124. }
  125. @(objc_type=Menu, objc_name="itemWithTag")
  126. Menu_itemWithTag :: #force_inline proc "c" (self: ^Menu, tag: Integer) -> ^MenuItem {
  127. return msgSend(^MenuItem, self, "itemWithTag:", tag)
  128. }
  129. @(objc_type=Menu, objc_name="update")
  130. Menu_update :: #force_inline proc "c" (self: ^Menu) {
  131. msgSend(nil, self, "update")
  132. }
  133. @(objc_type=Menu, objc_name="performKeyEquivalent")
  134. Menu_performKeyEquivalent :: #force_inline proc "c" (self: ^Menu, event: ^Event) -> bool {
  135. return msgSend(bool, self, "performKeyEquivalent:", event)
  136. }
  137. @(objc_type=Menu, objc_name="itemChanged")
  138. Menu_itemChanged :: #force_inline proc "c" (self: ^Menu, item: ^MenuItem) {
  139. msgSend(nil, self, "itemChanged:", item)
  140. }
  141. @(objc_type=Menu, objc_name="performActionForItemAtIndex")
  142. Menu_performActionForItemAtIndex :: #force_inline proc "c" (self: ^Menu, index: Integer) {
  143. msgSend(nil, self, "performActionForItemAtIndex:", index)
  144. }
  145. @(objc_type=Menu, objc_name="cancelTracking")
  146. Menu_cancelTracking :: #force_inline proc "c" (self: ^Menu) {
  147. msgSend(nil, self, "cancelTracking")
  148. }
  149. @(objc_type=Menu, objc_name="cancelTrackingWithoutAnimation")
  150. Menu_cancelTrackingWithoutAnimation :: #force_inline proc "c" (self: ^Menu) {
  151. msgSend(nil, self, "cancelTrackingWithoutAnimation")
  152. }
  153. @(objc_type=Menu, objc_name="title")
  154. Menu_title :: #force_inline proc "c" (self: ^Menu) -> ^String {
  155. return msgSend(^String, self, "title")
  156. }
  157. @(objc_type=Menu, objc_name="setTitle")
  158. Menu_setTitle :: #force_inline proc "c" (self: ^Menu, title: ^String) {
  159. msgSend(nil, self, "setTitle:", title)
  160. }
  161. @(objc_type=Menu, objc_name="supermenu")
  162. Menu_supermenu :: #force_inline proc "c" (self: ^Menu) -> ^Menu {
  163. return msgSend(^Menu, self, "supermenu")
  164. }
  165. @(objc_type=Menu, objc_name="setSupermenu")
  166. Menu_setSupermenu :: #force_inline proc "c" (self: ^Menu, supermenu: ^Menu) {
  167. msgSend(nil, self, "setSupermenu:", supermenu)
  168. }
  169. @(objc_type=Menu, objc_name="itemArray")
  170. Menu_itemArray :: #force_inline proc "c" (self: ^Menu) -> ^Array {
  171. return msgSend(^Array, self, "itemArray")
  172. }
  173. @(objc_type=Menu, objc_name="setItemArray")
  174. Menu_setItemArray :: #force_inline proc "c" (self: ^Menu, itemArray: ^Array) {
  175. msgSend(nil, self, "setItemArray:", itemArray)
  176. }
  177. @(objc_type=Menu, objc_name="numberOfItems")
  178. Menu_numberOfItems :: #force_inline proc "c" (self: ^Menu) -> Integer {
  179. return msgSend(Integer, self, "numberOfItems")
  180. }
  181. @(objc_type=Menu, objc_name="autoenablesItems")
  182. Menu_autoenablesItems :: #force_inline proc "c" (self: ^Menu) -> bool {
  183. return msgSend(bool, self, "autoenablesItems")
  184. }
  185. @(objc_type=Menu, objc_name="setAutoenablesItems")
  186. Menu_setAutoenablesItems :: #force_inline proc "c" (self: ^Menu, autoenablesItems: bool) {
  187. msgSend(nil, self, "setAutoenablesItems:", autoenablesItems)
  188. }
  189. @(objc_type=Menu, objc_name="delegate")
  190. Menu_delegate :: #force_inline proc "c" (self: ^Menu) -> ^MenuDelegate {
  191. return msgSend(^MenuDelegate, self, "delegate")
  192. }
  193. @(objc_type=Menu, objc_name="setDelegate")
  194. Menu_setDelegate :: #force_inline proc "c" (self: ^Menu, delegate: ^MenuDelegate) {
  195. msgSend(nil, self, "setDelegate:", delegate)
  196. }
  197. @(objc_type=Menu, objc_name="menuBarHeight")
  198. Menu_menuBarHeight :: #force_inline proc "c" (self: ^Menu) -> Float {
  199. return msgSend(Float, self, "menuBarHeight")
  200. }
  201. @(objc_type=Menu, objc_name="highlightedItem")
  202. Menu_highlightedItem :: #force_inline proc "c" (self: ^Menu) -> ^MenuItem {
  203. return msgSend(^MenuItem, self, "highlightedItem")
  204. }
  205. @(objc_type=Menu, objc_name="minimumWidth")
  206. Menu_minimumWidth :: #force_inline proc "c" (self: ^Menu) -> Float {
  207. return msgSend(Float, self, "minimumWidth")
  208. }
  209. @(objc_type=Menu, objc_name="setMinimumWidth")
  210. Menu_setMinimumWidth :: #force_inline proc "c" (self: ^Menu, minimumWidth: Float) {
  211. msgSend(nil, self, "setMinimumWidth:", minimumWidth)
  212. }
  213. @(objc_type=Menu, objc_name="size")
  214. Menu_size :: #force_inline proc "c" (self: ^Menu) -> Size {
  215. return msgSend(Size, self, "size")
  216. }
  217. // @(objc_type=Menu, objc_name="font")
  218. // Menu_font :: #force_inline proc "c" (self: ^Menu) -> ^Font {
  219. // return msgSend(^Font, self, "font")
  220. // }
  221. // @(objc_type=Menu, objc_name="setFont")
  222. // Menu_setFont :: #force_inline proc "c" (self: ^Menu, font: ^Font) {
  223. // msgSend(nil, self, "setFont:", font)
  224. // }
  225. @(objc_type=Menu, objc_name="allowsContextMenuPlugIns")
  226. Menu_allowsContextMenuPlugIns :: #force_inline proc "c" (self: ^Menu) -> bool {
  227. return msgSend(bool, self, "allowsContextMenuPlugIns")
  228. }
  229. @(objc_type=Menu, objc_name="setAllowsContextMenuPlugIns")
  230. Menu_setAllowsContextMenuPlugIns :: #force_inline proc "c" (self: ^Menu, allowsContextMenuPlugIns: bool) {
  231. msgSend(nil, self, "setAllowsContextMenuPlugIns:", allowsContextMenuPlugIns)
  232. }
  233. @(objc_type=Menu, objc_name="showsStateColumn")
  234. Menu_showsStateColumn :: #force_inline proc "c" (self: ^Menu) -> bool {
  235. return msgSend(bool, self, "showsStateColumn")
  236. }
  237. @(objc_type=Menu, objc_name="setShowsStateColumn")
  238. Menu_setShowsStateColumn :: #force_inline proc "c" (self: ^Menu, showsStateColumn: bool) {
  239. msgSend(nil, self, "setShowsStateColumn:", showsStateColumn)
  240. }
  241. @(objc_type=Menu, objc_name="userInterfaceLayoutDirection")
  242. Menu_userInterfaceLayoutDirection :: #force_inline proc "c" (self: ^Menu) -> UserInterfaceLayoutDirection {
  243. return msgSend(UserInterfaceLayoutDirection, self, "userInterfaceLayoutDirection")
  244. }
  245. @(objc_type=Menu, objc_name="setUserInterfaceLayoutDirection")
  246. Menu_setUserInterfaceLayoutDirection :: #force_inline proc "c" (self: ^Menu, userInterfaceLayoutDirection: UserInterfaceLayoutDirection) {
  247. msgSend(nil, self, "setUserInterfaceLayoutDirection:", userInterfaceLayoutDirection)
  248. }
  249. @(objc_type=Menu, objc_name="paletteMenuWithColors_titles_selectionHandler", objc_is_class_method=true)
  250. Menu_paletteMenuWithColors_titles_selectionHandler :: #force_inline proc "c" (colors: ^Array, itemTitles: ^Array, onSelectionChange: proc "c" (_arg_0: ^Menu)) -> ^Menu {
  251. return msgSend(^Menu, Menu, "paletteMenuWithColors:titles:selectionHandler:", colors, itemTitles, onSelectionChange)
  252. }
  253. // @(objc_type=Menu, objc_name="paletteMenuWithColors_titles_templateImage_selectionHandler", objc_is_class_method=true)
  254. // Menu_paletteMenuWithColors_titles_templateImage_selectionHandler :: #force_inline proc "c" (colors: ^Array, itemTitles: ^Array, image: ^Image, onSelectionChange: proc "c" (_arg_0: ^Menu)) -> ^Menu {
  255. // return msgSend(^Menu, Menu, "paletteMenuWithColors:titles:templateImage:selectionHandler:", colors, itemTitles, image, onSelectionChange)
  256. // }
  257. @(objc_type=Menu, objc_name="presentationStyle")
  258. Menu_presentationStyle :: #force_inline proc "c" (self: ^Menu) -> MenuPresentationStyle {
  259. return msgSend(MenuPresentationStyle, self, "presentationStyle")
  260. }
  261. @(objc_type=Menu, objc_name="setPresentationStyle")
  262. Menu_setPresentationStyle :: #force_inline proc "c" (self: ^Menu, presentationStyle: MenuPresentationStyle) {
  263. msgSend(nil, self, "setPresentationStyle:", presentationStyle)
  264. }
  265. @(objc_type=Menu, objc_name="selectionMode")
  266. Menu_selectionMode :: #force_inline proc "c" (self: ^Menu) -> MenuSelectionMode {
  267. return msgSend(MenuSelectionMode, self, "selectionMode")
  268. }
  269. @(objc_type=Menu, objc_name="setSelectionMode")
  270. Menu_setSelectionMode :: #force_inline proc "c" (self: ^Menu, selectionMode: MenuSelectionMode) {
  271. msgSend(nil, self, "setSelectionMode:", selectionMode)
  272. }
  273. @(objc_type=Menu, objc_name="selectedItems")
  274. Menu_selectedItems :: #force_inline proc "c" (self: ^Menu) -> ^Array {
  275. return msgSend(^Array, self, "selectedItems")
  276. }
  277. @(objc_type=Menu, objc_name="setSelectedItems")
  278. Menu_setSelectedItems :: #force_inline proc "c" (self: ^Menu, selectedItems: ^Array) {
  279. msgSend(nil, self, "setSelectedItems:", selectedItems)
  280. }
  281. @(objc_type=Menu, objc_name="submenuAction")
  282. Menu_submenuAction :: #force_inline proc "c" (self: ^Menu, sender: id) {
  283. msgSend(nil, self, "submenuAction:", sender)
  284. }
  285. @(objc_type=Menu, objc_name="propertiesToUpdate")
  286. Menu_propertiesToUpdate :: #force_inline proc "c" (self: ^Menu) -> MenuProperties {
  287. return msgSend(MenuProperties, self, "propertiesToUpdate")
  288. }
  289. @(objc_type=Menu, objc_name="setMenuRepresentation")
  290. Menu_setMenuRepresentation :: #force_inline proc "c" (self: ^Menu, menuRep: id) {
  291. msgSend(nil, self, "setMenuRepresentation:", menuRep)
  292. }
  293. @(objc_type=Menu, objc_name="menuRepresentation")
  294. Menu_menuRepresentation :: #force_inline proc "c" (self: ^Menu) -> id {
  295. return msgSend(id, self, "menuRepresentation")
  296. }
  297. @(objc_type=Menu, objc_name="setContextMenuRepresentation")
  298. Menu_setContextMenuRepresentation :: #force_inline proc "c" (self: ^Menu, menuRep: id) {
  299. msgSend(nil, self, "setContextMenuRepresentation:", menuRep)
  300. }
  301. @(objc_type=Menu, objc_name="contextMenuRepresentation")
  302. Menu_contextMenuRepresentation :: #force_inline proc "c" (self: ^Menu) -> id {
  303. return msgSend(id, self, "contextMenuRepresentation")
  304. }
  305. @(objc_type=Menu, objc_name="setTearOffMenuRepresentation")
  306. Menu_setTearOffMenuRepresentation :: #force_inline proc "c" (self: ^Menu, menuRep: id) {
  307. msgSend(nil, self, "setTearOffMenuRepresentation:", menuRep)
  308. }
  309. @(objc_type=Menu, objc_name="tearOffMenuRepresentation")
  310. Menu_tearOffMenuRepresentation :: #force_inline proc "c" (self: ^Menu) -> id {
  311. return msgSend(id, self, "tearOffMenuRepresentation")
  312. }
  313. @(objc_type=Menu, objc_name="menuZone", objc_is_class_method=true)
  314. Menu_menuZone :: #force_inline proc "c" () -> ^Zone {
  315. return msgSend(^Zone, Menu, "menuZone")
  316. }
  317. @(objc_type=Menu, objc_name="setMenuZone", objc_is_class_method=true)
  318. Menu_setMenuZone :: #force_inline proc "c" (zone: ^Zone) {
  319. msgSend(nil, Menu, "setMenuZone:", zone)
  320. }
  321. @(objc_type=Menu, objc_name="attachedMenu")
  322. Menu_attachedMenu :: #force_inline proc "c" (self: ^Menu) -> ^Menu {
  323. return msgSend(^Menu, self, "attachedMenu")
  324. }
  325. @(objc_type=Menu, objc_name="isAttached")
  326. Menu_isAttached :: #force_inline proc "c" (self: ^Menu) -> bool {
  327. return msgSend(bool, self, "isAttached")
  328. }
  329. @(objc_type=Menu, objc_name="sizeToFit")
  330. Menu_sizeToFit :: #force_inline proc "c" (self: ^Menu) {
  331. msgSend(nil, self, "sizeToFit")
  332. }
  333. @(objc_type=Menu, objc_name="locationForSubmenu")
  334. Menu_locationForSubmenu :: #force_inline proc "c" (self: ^Menu, submenu: ^Menu) -> Point {
  335. return msgSend(Point, self, "locationForSubmenu:", submenu)
  336. }
  337. @(objc_type=Menu, objc_name="helpRequested")
  338. Menu_helpRequested :: #force_inline proc "c" (self: ^Menu, eventPtr: ^Event) {
  339. msgSend(nil, self, "helpRequested:", eventPtr)
  340. }
  341. @(objc_type=Menu, objc_name="menuChangedMessagesEnabled")
  342. Menu_menuChangedMessagesEnabled :: #force_inline proc "c" (self: ^Menu) -> bool {
  343. return msgSend(bool, self, "menuChangedMessagesEnabled")
  344. }
  345. @(objc_type=Menu, objc_name="setMenuChangedMessagesEnabled")
  346. Menu_setMenuChangedMessagesEnabled :: #force_inline proc "c" (self: ^Menu, menuChangedMessagesEnabled: bool) {
  347. msgSend(nil, self, "setMenuChangedMessagesEnabled:", menuChangedMessagesEnabled)
  348. }
  349. @(objc_type=Menu, objc_name="isTornOff")
  350. Menu_isTornOff :: #force_inline proc "c" (self: ^Menu) -> bool {
  351. return msgSend(bool, self, "isTornOff")
  352. }
  353. @(objc_type=Menu, objc_name="load", objc_is_class_method=true)
  354. Menu_load :: #force_inline proc "c" () {
  355. msgSend(nil, Menu, "load")
  356. }
  357. @(objc_type=Menu, objc_name="initialize", objc_is_class_method=true)
  358. Menu_initialize :: #force_inline proc "c" () {
  359. msgSend(nil, Menu, "initialize")
  360. }
  361. @(objc_type=Menu, objc_name="new", objc_is_class_method=true)
  362. Menu_new :: #force_inline proc "c" () -> ^Menu {
  363. return msgSend(^Menu, Menu, "new")
  364. }
  365. @(objc_type=Menu, objc_name="allocWithZone", objc_is_class_method=true)
  366. Menu_allocWithZone :: #force_inline proc "c" (zone: ^Zone) -> ^Menu {
  367. return msgSend(^Menu, Menu, "allocWithZone:", zone)
  368. }
  369. @(objc_type=Menu, objc_name="alloc", objc_is_class_method=true)
  370. Menu_alloc :: #force_inline proc "c" () -> ^Menu {
  371. return msgSend(^Menu, Menu, "alloc")
  372. }
  373. @(objc_type=Menu, objc_name="copyWithZone", objc_is_class_method=true)
  374. Menu_copyWithZone :: #force_inline proc "c" (zone: ^Zone) -> id {
  375. return msgSend(id, Menu, "copyWithZone:", zone)
  376. }
  377. @(objc_type=Menu, objc_name="mutableCopyWithZone", objc_is_class_method=true)
  378. Menu_mutableCopyWithZone :: #force_inline proc "c" (zone: ^Zone) -> id {
  379. return msgSend(id, Menu, "mutableCopyWithZone:", zone)
  380. }
  381. @(objc_type=Menu, objc_name="instancesRespondToSelector", objc_is_class_method=true)
  382. Menu_instancesRespondToSelector :: #force_inline proc "c" (aSelector: SEL) -> bool {
  383. return msgSend(bool, Menu, "instancesRespondToSelector:", aSelector)
  384. }
  385. @(objc_type=Menu, objc_name="conformsToProtocol", objc_is_class_method=true)
  386. Menu_conformsToProtocol :: #force_inline proc "c" (protocol: ^Protocol) -> bool {
  387. return msgSend(bool, Menu, "conformsToProtocol:", protocol)
  388. }
  389. @(objc_type=Menu, objc_name="instanceMethodForSelector", objc_is_class_method=true)
  390. Menu_instanceMethodForSelector :: #force_inline proc "c" (aSelector: SEL) -> IMP {
  391. return msgSend(IMP, Menu, "instanceMethodForSelector:", aSelector)
  392. }
  393. // @(objc_type=Menu, objc_name="instanceMethodSignatureForSelector", objc_is_class_method=true)
  394. // Menu_instanceMethodSignatureForSelector :: #force_inline proc "c" (aSelector: SEL) -> ^MethodSignature {
  395. // return msgSend(^MethodSignature, Menu, "instanceMethodSignatureForSelector:", aSelector)
  396. // }
  397. @(objc_type=Menu, objc_name="isSubclassOfClass", objc_is_class_method=true)
  398. Menu_isSubclassOfClass :: #force_inline proc "c" (aClass: Class) -> bool {
  399. return msgSend(bool, Menu, "isSubclassOfClass:", aClass)
  400. }
  401. @(objc_type=Menu, objc_name="resolveClassMethod", objc_is_class_method=true)
  402. Menu_resolveClassMethod :: #force_inline proc "c" (sel: SEL) -> bool {
  403. return msgSend(bool, Menu, "resolveClassMethod:", sel)
  404. }
  405. @(objc_type=Menu, objc_name="resolveInstanceMethod", objc_is_class_method=true)
  406. Menu_resolveInstanceMethod :: #force_inline proc "c" (sel: SEL) -> bool {
  407. return msgSend(bool, Menu, "resolveInstanceMethod:", sel)
  408. }
  409. @(objc_type=Menu, objc_name="hash", objc_is_class_method=true)
  410. Menu_hash :: #force_inline proc "c" () -> UInteger {
  411. return msgSend(UInteger, Menu, "hash")
  412. }
  413. @(objc_type=Menu, objc_name="superclass", objc_is_class_method=true)
  414. Menu_superclass :: #force_inline proc "c" () -> Class {
  415. return msgSend(Class, Menu, "superclass")
  416. }
  417. @(objc_type=Menu, objc_name="class", objc_is_class_method=true)
  418. Menu_class :: #force_inline proc "c" () -> Class {
  419. return msgSend(Class, Menu, "class")
  420. }
  421. @(objc_type=Menu, objc_name="description", objc_is_class_method=true)
  422. Menu_description :: #force_inline proc "c" () -> ^String {
  423. return msgSend(^String, Menu, "description")
  424. }
  425. @(objc_type=Menu, objc_name="debugDescription", objc_is_class_method=true)
  426. Menu_debugDescription :: #force_inline proc "c" () -> ^String {
  427. return msgSend(^String, Menu, "debugDescription")
  428. }
  429. @(objc_type=Menu, objc_name="version", objc_is_class_method=true)
  430. Menu_version :: #force_inline proc "c" () -> Integer {
  431. return msgSend(Integer, Menu, "version")
  432. }
  433. @(objc_type=Menu, objc_name="setVersion", objc_is_class_method=true)
  434. Menu_setVersion :: #force_inline proc "c" (aVersion: Integer) {
  435. msgSend(nil, Menu, "setVersion:", aVersion)
  436. }
  437. @(objc_type=Menu, objc_name="poseAsClass", objc_is_class_method=true)
  438. Menu_poseAsClass :: #force_inline proc "c" (aClass: Class) {
  439. msgSend(nil, Menu, "poseAsClass:", aClass)
  440. }
  441. @(objc_type=Menu, objc_name="cancelPreviousPerformRequestsWithTarget_selector_object", objc_is_class_method=true)
  442. Menu_cancelPreviousPerformRequestsWithTarget_selector_object :: #force_inline proc "c" (aTarget: id, aSelector: SEL, anArgument: id) {
  443. msgSend(nil, Menu, "cancelPreviousPerformRequestsWithTarget:selector:object:", aTarget, aSelector, anArgument)
  444. }
  445. @(objc_type=Menu, objc_name="cancelPreviousPerformRequestsWithTarget_", objc_is_class_method=true)
  446. Menu_cancelPreviousPerformRequestsWithTarget_ :: #force_inline proc "c" (aTarget: id) {
  447. msgSend(nil, Menu, "cancelPreviousPerformRequestsWithTarget:", aTarget)
  448. }
  449. @(objc_type=Menu, objc_name="accessInstanceVariablesDirectly", objc_is_class_method=true)
  450. Menu_accessInstanceVariablesDirectly :: #force_inline proc "c" () -> bool {
  451. return msgSend(bool, Menu, "accessInstanceVariablesDirectly")
  452. }
  453. @(objc_type=Menu, objc_name="useStoredAccessor", objc_is_class_method=true)
  454. Menu_useStoredAccessor :: #force_inline proc "c" () -> bool {
  455. return msgSend(bool, Menu, "useStoredAccessor")
  456. }
  457. @(objc_type=Menu, objc_name="keyPathsForValuesAffectingValueForKey", objc_is_class_method=true)
  458. Menu_keyPathsForValuesAffectingValueForKey :: #force_inline proc "c" (key: ^String) -> ^Set {
  459. return msgSend(^Set, Menu, "keyPathsForValuesAffectingValueForKey:", key)
  460. }
  461. @(objc_type=Menu, objc_name="automaticallyNotifiesObserversForKey", objc_is_class_method=true)
  462. Menu_automaticallyNotifiesObserversForKey :: #force_inline proc "c" (key: ^String) -> bool {
  463. return msgSend(bool, Menu, "automaticallyNotifiesObserversForKey:", key)
  464. }
  465. @(objc_type=Menu, objc_name="setKeys", objc_is_class_method=true)
  466. Menu_setKeys :: #force_inline proc "c" (keys: ^Array, dependentKey: ^String) {
  467. msgSend(nil, Menu, "setKeys:triggerChangeNotificationsForDependentKey:", keys, dependentKey)
  468. }
  469. @(objc_type=Menu, objc_name="classFallbacksForKeyedArchiver", objc_is_class_method=true)
  470. Menu_classFallbacksForKeyedArchiver :: #force_inline proc "c" () -> ^Array {
  471. return msgSend(^Array, Menu, "classFallbacksForKeyedArchiver")
  472. }
  473. @(objc_type=Menu, objc_name="classForKeyedUnarchiver", objc_is_class_method=true)
  474. Menu_classForKeyedUnarchiver :: #force_inline proc "c" () -> Class {
  475. return msgSend(Class, Menu, "classForKeyedUnarchiver")
  476. }
  477. @(objc_type=Menu, objc_name="exposeBinding", objc_is_class_method=true)
  478. Menu_exposeBinding :: #force_inline proc "c" (binding: ^String) {
  479. msgSend(nil, Menu, "exposeBinding:", binding)
  480. }
  481. @(objc_type=Menu, objc_name="setDefaultPlaceholder", objc_is_class_method=true)
  482. Menu_setDefaultPlaceholder :: #force_inline proc "c" (placeholder: id, marker: id, binding: ^String) {
  483. msgSend(nil, Menu, "setDefaultPlaceholder:forMarker:withBinding:", placeholder, marker, binding)
  484. }
  485. @(objc_type=Menu, objc_name="defaultPlaceholderForMarker", objc_is_class_method=true)
  486. Menu_defaultPlaceholderForMarker :: #force_inline proc "c" (marker: id, binding: ^String) -> id {
  487. return msgSend(id, Menu, "defaultPlaceholderForMarker:withBinding:", marker, binding)
  488. }
  489. @(objc_type=Menu, objc_name="popUpContextMenu")
  490. Menu_popUpContextMenu :: proc {
  491. Menu_popUpContextMenu_withEvent_forView,
  492. // Menu_popUpContextMenu_withEvent_forView_withFont,
  493. }
  494. @(objc_type=Menu, objc_name="paletteMenuWithColors")
  495. Menu_paletteMenuWithColors :: proc {
  496. Menu_paletteMenuWithColors_titles_selectionHandler,
  497. // Menu_paletteMenuWithColors_titles_templateImage_selectionHandler,
  498. }
  499. @(objc_type=Menu, objc_name="cancelPreviousPerformRequestsWithTarget")
  500. Menu_cancelPreviousPerformRequestsWithTarget :: proc {
  501. Menu_cancelPreviousPerformRequestsWithTarget_selector_object,
  502. Menu_cancelPreviousPerformRequestsWithTarget_,
  503. }
  504. @(objc_class="NSMenuDelegate")
  505. MenuDelegate :: struct {using _: Object, using _: ObjectProtocol}
  506. @(objc_type=MenuDelegate, objc_name="menuNeedsUpdate")
  507. MenuDelegate_menuNeedsUpdate :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu) {
  508. msgSend(nil, self, "menuNeedsUpdate:", menu)
  509. }
  510. @(objc_type=MenuDelegate, objc_name="numberOfItemsInMenu")
  511. MenuDelegate_numberOfItemsInMenu :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu) -> Integer {
  512. return msgSend(Integer, self, "numberOfItemsInMenu:", menu)
  513. }
  514. @(objc_type=MenuDelegate, objc_name="menu_updateItem_atIndex_shouldCancel")
  515. MenuDelegate_menu_updateItem_atIndex_shouldCancel :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu, item: ^MenuItem, index: Integer, shouldCancel: bool) -> bool {
  516. return msgSend(bool, self, "menu:updateItem:atIndex:shouldCancel:", menu, item, index, shouldCancel)
  517. }
  518. @(objc_type=MenuDelegate, objc_name="menuHasKeyEquivalent")
  519. MenuDelegate_menuHasKeyEquivalent :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu, event: ^Event, target: ^id, action: ^SEL) -> bool {
  520. return msgSend(bool, self, "menuHasKeyEquivalent:forEvent:target:action:", menu, event, target, action)
  521. }
  522. @(objc_type=MenuDelegate, objc_name="menuWillOpen")
  523. MenuDelegate_menuWillOpen :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu) {
  524. msgSend(nil, self, "menuWillOpen:", menu)
  525. }
  526. @(objc_type=MenuDelegate, objc_name="menuDidClose")
  527. MenuDelegate_menuDidClose :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu) {
  528. msgSend(nil, self, "menuDidClose:", menu)
  529. }
  530. @(objc_type=MenuDelegate, objc_name="menu_willHighlightItem")
  531. MenuDelegate_menu_willHighlightItem :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu, item: ^MenuItem) {
  532. msgSend(nil, self, "menu:willHighlightItem:", menu, item)
  533. }
  534. @(objc_type=MenuDelegate, objc_name="confinementRectForMenu")
  535. MenuDelegate_confinementRectForMenu :: #force_inline proc "c" (self: ^MenuDelegate, menu: ^Menu, screen: ^Screen) -> Rect {
  536. return msgSend(Rect, self, "confinementRectForMenu:onScreen:", menu, screen)
  537. }
  538. @(objc_type=MenuDelegate, objc_name="menu")
  539. MenuDelegate_menu :: proc {
  540. MenuDelegate_menu_updateItem_atIndex_shouldCancel,
  541. MenuDelegate_menu_willHighlightItem,
  542. }