//------------------------------------------------------------------------------------
// irr::gui::IGUIContextMenu wrappers
// do not delete a pointer to this
//------------------------------------------------------------------------------------

extern "C" 
{

	u32 IrrGUI_IGUIContextMenu_addItem(IGUIContextMenu* menu,const c8* text,s32 commandId=-1,bool enabled=true,bool hasSubMenu=false,bool checked=false, bool autoChecking=false)
	{
		if (menu)
			return menu->addItem(stringw(text).c_str(),commandId,enabled,hasSubMenu,checked,autoChecking);
		else return 0;
	}

	u32 IrrGUI_IGUIContextMenu_insertItem(IGUIContextMenu* menu, u32 idx, const c8* text, s32 commandId=-1, bool enabled=true,
		bool hasSubMenu=false, bool checked=false, bool autoChecking=false)
	{
		if (menu)
			return menu->insertItem(idx, stringw(text).c_str(), commandId, enabled, hasSubMenu, checked, autoChecking);
		else return 0;
	}

	s32 IrrGUI_IGUIContextMenu_findItemWithCommandId(IGUIContextMenu* menu, s32 commandId, u32 idxStartSearch=0)
	{
		if (menu)
			return menu->findItemWithCommandId(commandId, idxStartSearch);
		else return -1;
	}

	void IrrGUI_IGUIContextMenu_addSeparator(IGUIContextMenu* menu)
	{
		if (menu)
			menu->addSeparator();
	}
	
	s32 IrrGUI_IGUIContextMenu_getItemCommandId(IGUIContextMenu* menu,u32 idx)
	{
		if (menu)
			return menu->getItemCommandId(idx);
		else return -1;
	}
	
	u32 IrrGUI_IGUIContextMenu_getItemCount(IGUIContextMenu* menu)
	{
		if (menu)
			return menu->getItemCount();
		else return 0;
	}
	
	const c8* IrrGUI_IGUIContextMenu_getItemText(IGUIContextMenu* menu,u32 idx)
	{
		if (menu) {
			stringc* text=new stringc(menu->getItemText(idx));
			return text->c_str();
		} else return 0;
	}
	
	s32 IrrGUI_IGUIContextMenu_getSelectedItem(IGUIContextMenu* menu)
	{
		if (menu)
			return menu->getSelectedItem();
		else return -1;
	}
	
	IGUIContextMenu* IrrGUI_IGUIContextMenu_getSubMenu(IGUIContextMenu* menu,u32 idx)
	{
		if (menu)
			return menu->getSubMenu(idx);
		else return 0;
	}
	
	bool IrrGUI_IGUIContextMenu_isItemEnabled(IGUIContextMenu* menu,u32 idx)
	{
		if (menu)
			return menu->isItemEnabled(idx);
		else return false;
	}
	
	void IrrGUI_IGUIContextMenu_removeAllItems(IGUIContextMenu* menu)
	{
		if (menu)
			menu->removeAllItems();
	}
	
	void IrrGUI_IGUIContextMenu_removeItem(IGUIContextMenu* menu,u32 idx)
	{
		if (menu)
			menu->removeItem(idx);
	}
	
	void IrrGUI_IGUIContextMenu_setItemCommandId(IGUIContextMenu* menu,u32 idx,s32 id)
	{
		if (menu)
			menu->setItemCommandId(idx,id);
	}
	
	void IrrGUI_IGUIContextMenu_setItemEnabled(IGUIContextMenu* menu,u32 idx,bool enabled)
	{
		if (menu)
			menu->setItemEnabled(idx,enabled);
	}
	
	void IrrGUI_IGUIContextMenu_setItemChecked(IGUIContextMenu* menu,u32 idx,bool enabled)
	{
		if (menu)
			menu->setItemChecked(idx,enabled);
	}

	bool IrrGUI_IGUIContextMenu_isItemChecked(IGUIContextMenu* menu,u32 idx)
	{
		if (menu)
			return menu->isItemChecked(idx);
		else return false;
	}

	void IrrGUI_IGUIContextMenu_setItemText(IGUIContextMenu* menu,u32 idx,const c8* text)
	{
		if (menu)
			menu->setItemText(idx,stringw(text).c_str());
	}

	void IrrGUI_IGUIContextMenu_setCloseHandling(IGUIContextMenu* menu, ECONTEXT_MENU_CLOSE onClose)
	{
		if (menu)
			menu->setCloseHandling(onClose);
	}

	s32 IrrGUI_IGUIContextMenu_getCloseHandling(IGUIContextMenu* menu)
	{
		if (menu)
			return menu->getCloseHandling();
		else return -1;
	}

	void IrrGUI_IGUIContextMenu_setItemAutoChecking(IGUIContextMenu* menu, u32 idx, bool autoChecking)
	{
		if (menu) 
			menu->setItemAutoChecking(idx, autoChecking);
	}

	bool IrrGUI_IGUIContextMenu_getItemAutoChecking(IGUIContextMenu* menu, u32 idx)
	{
		if (menu)
			return menu->getItemAutoChecking(idx);
		else return false;
	}

	void IrrGUI_IGUIContextMenu_setEventParent(IGUIContextMenu* menu, IGUIElement *parent)
	{
		if (menu)
			menu->setEventParent(parent);
	}
	
}