Mercurial > projects > dstep
view dstep/appkit/NSMenu.d @ 16:19885b43130e
Huge update, the bridge actually works now
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sun, 03 Jan 2010 22:06:11 +0100 |
parents | |
children | b9de51448c6b |
line wrap: on
line source
/** * Copyright: Copyright (c) 2009 Jacob Carlborg. * Authors: Jacob Carlborg * Version: Initial created: Sep 24, 2009 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) */ module dstep.appkit.NSMenu; import dstep.appkit.AppKitDefines; import dstep.appkit.NSEvent; import dstep.appkit.NSFont; import dstep.appkit.NSMenuItem; import dstep.appkit.NSView; import dstep.applicationservices.coregraphics.CGBase; import dstep.foundation.NSArray; import dstep.foundation.NSCoder; import dstep.foundation.NSGeometry; import dstep.foundation.NSObjCRuntime; import dstep.foundation.NSObject; import dstep.foundation.NSString; import dstep.foundation.NSZone; import dstep.objc.bridge.Bridge; import dstep.objc.objc; import bindings = dstep.appkit.NSMenu_bindings; private { NSString NSMenuWillSendActionNotification_; NSString NSMenuDidSendActionNotification_; NSString NSMenuDidAddItemNotification_; NSString NSMenuDidRemoveItemNotification_; NSString NSMenuDidChangeItemNotification_; NSString NSMenuDidBeginTrackingNotification_; NSString NSMenuDidEndTrackingNotification_; } NSString NSMenuWillSendActionNotification () { if (NSMenuWillSendActionNotification_) return NSMenuWillSendActionNotification_; return NSMenuWillSendActionNotification_ = new NSString(bindings.NSMenuWillSendActionNotification); } NSString NSMenuDidSendActionNotification () { if (NSMenuDidSendActionNotification_) return NSMenuDidSendActionNotification_; return NSMenuDidSendActionNotification_ = new NSString(bindings.NSMenuDidSendActionNotification); } NSString NSMenuDidAddItemNotification () { if (NSMenuDidAddItemNotification_) return NSMenuDidAddItemNotification_; return NSMenuDidAddItemNotification_ = new NSString(bindings.NSMenuDidAddItemNotification); } NSString NSMenuDidRemoveItemNotification () { if (NSMenuDidRemoveItemNotification_) return NSMenuDidRemoveItemNotification_; return NSMenuDidRemoveItemNotification_ = new NSString(bindings.NSMenuDidRemoveItemNotification); } NSString NSMenuDidChangeItemNotification () { if (NSMenuDidChangeItemNotification_) return NSMenuDidChangeItemNotification_; return NSMenuDidChangeItemNotification_ = new NSString(bindings.NSMenuDidChangeItemNotification); } NSString NSMenuDidBeginTrackingNotification () { if (NSMenuDidBeginTrackingNotification_) return NSMenuDidBeginTrackingNotification_; return NSMenuDidBeginTrackingNotification_ = new NSString(bindings.NSMenuDidBeginTrackingNotification); } NSString NSMenuDidEndTrackingNotification () { if (NSMenuDidEndTrackingNotification_) return NSMenuDidEndTrackingNotification_; return NSMenuDidEndTrackingNotification_ = new NSString(bindings.NSMenuDidEndTrackingNotification); } const TNSMenuDelegate = ` void menuNeedsUpdate (NSMenu menu) { return invokeObjcSelf!(void, "menuNeedsUpdate:", NSMenu)(menu); } NSInteger numberOfItemsInMenu (NSMenu menu) { return invokeObjcSelf!(NSInteger, "numberOfItemsInMenu:", NSMenu)(menu); } bool menu (NSMenu menu, NSMenuItem item, NSInteger index, bool shouldCancel) { return invokeObjcSelf!(bool, "menu:updateItem:atIndex:shouldCancel:", NSMenu, NSMenuItem, NSInteger, bool)(menu, item, index, shouldCancel); } bool menuHasKeyEquivalent (NSMenu menu, NSEvent event, id* target, SEL* action) { return invokeObjcSelf!(bool, "menuHasKeyEquivalent:forEvent:target:action:", NSMenu, NSEvent, id*, SEL*)(menu, event, target, action); } void menuWillOpen (NSMenu menu) { return invokeObjcSelf!(void, "menuWillOpen:", NSMenu)(menu); } void menuDidClose (NSMenu menu) { return invokeObjcSelf!(void, "menuDidClose:", NSMenu)(menu); } void menu (NSMenu menu, NSMenuItem item) { return invokeObjcSelf!(void, "menu:willHighlightItem:", NSMenu, NSMenuItem)(menu, item); } //mixin ObjcBindMethod!(menuNeedsUpdate, "menuNeedsUpdate:"); //mixin ObjcBindMethod!(numberOfItemsInMenu, "numberOfItemsInMenu:"); //mixin ObjcBindMethod!(menu, "menu:updateItem:atIndex:shouldCancel:"); //mixin ObjcBindMethod!(menuHasKeyEquivalent, "menuHasKeyEquivalent:forEvent:target:action:"); //mixin ObjcBindMethod!(menuWillOpen, "menuWillOpen:"); //mixin ObjcBindMethod!(menuDidClose, "menuDidClose:"); //mixin ObjcBindMethod!(menu, "menu:willHighlightItem:"); `; const TNSSubmenuAction = ` void submenuAction (Object sender) { return invokeObjcSelf!(void, "submenuAction:", Object)(sender); } //mixin ObjcBindMethod!(submenuAction, "submenuAction:"); `; const TNSMenuValidation = ` bool validateMenuItem (NSMenuItem menuItem) { return invokeObjcSelf!(bool, "validateMenuItem:", NSMenuItem)(menuItem); } //mixin ObjcBindMethod!(validateMenuItem, "validateMenuItem:"); `; class NSMenu : NSObject, INSCopying, INSCoding { mixin (ObjcWrap); this (NSCoder aDecoder) { super(typeof(this).alloc.initWithCoder(aDecoder).objcObject); } void encodeWithCoder (NSCoder aCoder) { return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder); } typeof(this) initWithCoder (NSCoder aDecoder) { return invokeObjcSelf!(typeof(this), "initWithCoder:", NSCoder)(aDecoder); } typeof(this) copyWithZone (NSZone* zone) { return invokeObjcSelf!(typeof(this), "copyWithZone:", NSZone*)(zone); } static void setMenuZone (NSZone* aZone) { return invokeObjcSelfClass!(void, "setMenuZone:", NSZone*)(aZone); } static NSZone* menuZone () { return invokeObjcSelfClass!(NSZone*, "menuZone"); } static void popUpContextMenu (NSMenu menu, NSEvent event, NSView view) { return invokeObjcSelfClass!(void, "popUpContextMenu:withEvent:forView:", NSMenu, NSEvent, NSView)(menu, event, view); } static void popUpContextMenu (NSMenu menu, NSEvent event, NSView view, NSFont font) { return invokeObjcSelfClass!(void, "popUpContextMenu:withEvent:forView:withFont:", NSMenu, NSEvent, NSView, NSFont)(menu, event, view, font); } static void setMenuBarVisible (bool visible) { return invokeObjcSelfClass!(void, "setMenuBarVisible:", bool)(visible); } static bool menuBarVisible () { return invokeObjcSelfClass!(bool, "menuBarVisible"); } NSMenu initWithTitle (NSString aTitle) { id result = invokeObjcSelf!(id, "initWithTitle:", NSString)(aTitle); return result is this.objcObject ? this : (result !is null ? new NSMenu(result) : null); } this (NSString aTitle) { super(NSMenu.alloc.initWithTitle(aTitle).objcObject); } void setTitle (NSString aString) { return invokeObjcSelf!(void, "setTitle:", NSString)(aString); } NSString title () { return invokeObjcSelf!(NSString, "title"); } void setSupermenu (NSMenu supermenu) { return invokeObjcSelf!(void, "setSupermenu:", NSMenu)(supermenu); } NSMenu supermenu () { id result = invokeObjcSelf!(id, "supermenu"); return result is this.objcObject ? this : (result !is null ? new NSMenu(result) : null); } void insertItem (NSMenuItem newItem, NSInteger index) { return invokeObjcSelf!(void, "insertItem:atIndex:", NSMenuItem, NSInteger)(newItem, index); } void addItem (NSMenuItem newItem) { return invokeObjcSelf!(void, "addItem:", NSMenuItem)(newItem); } NSMenuItem insertItemWithTitle (NSString aString, SEL aSelector, NSString charCode, NSInteger index) { return invokeObjcSelf!(NSMenuItem, "insertItemWithTitle:action:keyEquivalent:atIndex:", NSString, SEL, NSString, NSInteger)(aString, aSelector, charCode, index); } NSMenuItem addItemWithTitle (NSString aString, SEL aSelector, NSString charCode) { return invokeObjcSelf!(NSMenuItem, "addItemWithTitle:action:keyEquivalent:", NSString, SEL, NSString)(aString, aSelector, charCode); } void removeItemAtIndex (NSInteger index) { return invokeObjcSelf!(void, "removeItemAtIndex:", NSInteger)(index); } void removeItem (NSMenuItem item) { return invokeObjcSelf!(void, "removeItem:", NSMenuItem)(item); } void setSubmenu (NSMenu aMenu, NSMenuItem anItem) { return invokeObjcSelf!(void, "setSubmenu:forItem:", NSMenu, NSMenuItem)(aMenu, anItem); } NSArray itemArray () { return invokeObjcSelf!(NSArray, "itemArray"); } NSInteger numberOfItems () { return invokeObjcSelf!(NSInteger, "numberOfItems"); } NSInteger indexOfItem (NSMenuItem index) { return invokeObjcSelf!(NSInteger, "indexOfItem:", NSMenuItem)(index); } NSInteger indexOfItemWithTitle (NSString aTitle) { return invokeObjcSelf!(NSInteger, "indexOfItemWithTitle:", NSString)(aTitle); } NSInteger indexOfItemWithTag (NSInteger aTag) { return invokeObjcSelf!(NSInteger, "indexOfItemWithTag:", NSInteger)(aTag); } NSInteger indexOfItemWithRepresentedObject (Object object) { return invokeObjcSelf!(NSInteger, "indexOfItemWithRepresentedObject:", Object)(object); } NSInteger indexOfItemWithSubmenu (NSMenu submenu) { return invokeObjcSelf!(NSInteger, "indexOfItemWithSubmenu:", NSMenu)(submenu); } NSInteger indexOfItemWithTarget (Object target, SEL actionSelector) { return invokeObjcSelf!(NSInteger, "indexOfItemWithTarget:andAction:", Object, SEL)(target, actionSelector); } NSMenuItem itemAtIndex (NSInteger index) { return invokeObjcSelf!(NSMenuItem, "itemAtIndex:", NSInteger)(index); } NSMenuItem itemWithTitle (NSString aTitle) { return invokeObjcSelf!(NSMenuItem, "itemWithTitle:", NSString)(aTitle); } NSMenuItem itemWithTag (NSInteger tag) { return invokeObjcSelf!(NSMenuItem, "itemWithTag:", NSInteger)(tag); } void setAutoenablesItems (bool flag) { return invokeObjcSelf!(void, "setAutoenablesItems:", bool)(flag); } bool autoenablesItems () { return invokeObjcSelf!(bool, "autoenablesItems"); } bool performKeyEquivalent (NSEvent theEvent) { return invokeObjcSelf!(bool, "performKeyEquivalent:", NSEvent)(theEvent); } void update () { return invokeObjcSelf!(void, "update"); } void setMenuChangedMessagesEnabled (bool flag) { return invokeObjcSelf!(void, "setMenuChangedMessagesEnabled:", bool)(flag); } bool menuChangedMessagesEnabled () { return invokeObjcSelf!(bool, "menuChangedMessagesEnabled"); } void itemChanged (NSMenuItem item) { return invokeObjcSelf!(void, "itemChanged:", NSMenuItem)(item); } void helpRequested (NSEvent eventPtr) { return invokeObjcSelf!(void, "helpRequested:", NSEvent)(eventPtr); } void setMenuRepresentation (Object menuRep) { return invokeObjcSelf!(void, "setMenuRepresentation:", Object)(menuRep); } Object menuRepresentation () { return invokeObjcSelf!(Object, "menuRepresentation"); } void setContextMenuRepresentation (Object menuRep) { return invokeObjcSelf!(void, "setContextMenuRepresentation:", Object)(menuRep); } Object contextMenuRepresentation () { return invokeObjcSelf!(Object, "contextMenuRepresentation"); } void setTearOffMenuRepresentation (Object menuRep) { return invokeObjcSelf!(void, "setTearOffMenuRepresentation:", Object)(menuRep); } Object tearOffMenuRepresentation () { return invokeObjcSelf!(Object, "tearOffMenuRepresentation"); } bool isTornOff () { return invokeObjcSelf!(bool, "isTornOff"); } NSMenu attachedMenu () { id result = invokeObjcSelf!(id, "attachedMenu"); return result is this.objcObject ? this : (result !is null ? new NSMenu(result) : null); } bool isAttached () { return invokeObjcSelf!(bool, "isAttached"); } void sizeToFit () { return invokeObjcSelf!(void, "sizeToFit"); } NSPoint locationForSubmenu (NSMenu aSubmenu) { return invokeObjcSelf!(NSPoint, "locationForSubmenu:", NSMenu)(aSubmenu); } void performActionForItemAtIndex (NSInteger index) { return invokeObjcSelf!(void, "performActionForItemAtIndex:", NSInteger)(index); } void setDelegate (Object anObject) { return invokeObjcSelf!(void, "setDelegate:", Object)(anObject); } Object delegate_ () { return invokeObjcSelf!(Object, "delegate"); } CGFloat menuBarHeight () { return invokeObjcSelf!(CGFloat, "menuBarHeight"); } void cancelTracking () { return invokeObjcSelf!(void, "cancelTracking"); } NSMenuItem highlightedItem () { return invokeObjcSelf!(NSMenuItem, "highlightedItem"); } void setShowsStateColumn (bool showsState) { return invokeObjcSelf!(void, "setShowsStateColumn:", bool)(showsState); } bool showsStateColumn () { return invokeObjcSelf!(bool, "showsStateColumn"); } // NSSubmenuAction void submenuAction (Object sender) { return invokeObjcSelf!(void, "submenuAction:", Object)(sender); } }