#include "wx/cocoa/ObjcPose.h"
#include "wx/cocoa/autorelease.h"
+#include "wx/cocoa/string.h"
#import <AppKit/NSMenuItem.h>
#import <AppKit/NSMenu.h>
}
- (void)wxMenuItemAction: (id)sender;
+- (BOOL)validateMenuItem: (id)menuItem;
@end //interface wxNSMenuItemTarget
@implementation wxNSMenuItemTarget : NSObject
- (void)wxMenuItemAction: (id)sender
{
- wxLogDebug("wxMenuItemAction");
+ wxLogTrace(wxTRACE_COCOA,wxT("wxMenuItemAction"));
wxMenuItem *item = wxMenuItem::GetFromCocoa(sender);
- wxCHECK_RET(item,"wxMenuItemAction received but no wxMenuItem exists!");
+ wxCHECK_RET(item,wxT("wxMenuItemAction received but no wxMenuItem exists!"));
wxMenu *menu = item->GetMenu();
- wxCHECK_RET(menu,"wxMenuItemAction received but wxMenuItem is not in a wxMenu");
+ wxCHECK_RET(menu,wxT("wxMenuItemAction received but wxMenuItem is not in a wxMenu"));
wxMenuBar *menubar = menu->GetMenuBar();
if(menubar)
{
wxFrame *frame = menubar->GetFrame();
- wxCHECK_RET(frame, "wxMenuBar MUST be attached to a wxFrame!");
- frame->Command(item->GetId());
+ wxCHECK_RET(frame, wxT("wxMenuBar MUST be attached to a wxFrame!"));
+ frame->ProcessCommand(item->GetId());
}
}
+- (BOOL)validateMenuItem: (id)menuItem
+{
+ // TODO: Do wxWindows validation here and avoid sending during idle time
+ wxLogTrace(wxTRACE_COCOA,wxT("wxMenuItemAction"));
+ wxMenuItem *item = wxMenuItem::GetFromCocoa(menuItem);
+ wxCHECK_MSG(item,NO,wxT("validateMenuItem received but no wxMenuItem exists!"));
+ return item->IsEnabled();
+}
+
@end //implementation wxNSMenuItemTarget
// ============================================================================
: wxMenuItemBase(pParentMenu, itemid, strName, strHelp, kind, pSubMenu)
{
wxAutoNSAutoreleasePool pool;
- NSString *menuTitle = [[NSString alloc] initWithCString: wxStripMenuCodes(strName).c_str()];
+ NSString *menuTitle = wxInitNSStringWithWxString([NSString alloc],wxStripMenuCodes(strName));
m_cocoaNSMenuItem = [[NSMenuItem alloc] initWithTitle:menuTitle action:@selector(wxMenuItemAction:) keyEquivalent:@""];
sm_cocoaHash.insert(wxMenuItemCocoaHash::value_type(m_cocoaNSMenuItem,this));
[m_cocoaNSMenuItem setTarget:sm_cocoaTarget];
void wxMenuItem::Check(bool bDoCheck)
{
- wxCHECK_RET( IsCheckable(), "only checkable items may be checked" );
+ wxCHECK_RET( IsCheckable(), wxT("only checkable items may be checked") );
wxMenuItemBase::Check(bDoCheck);
}