61 lines
1.7 KiB
C++

/**
* @author Edouard DUPIN
*
* @copyright 2011, Edouard DUPIN, all right reserved
*
* @license BSD v3 (see license file)
*/
#ifndef __EWOL_MENU_H__
#define __EWOL_MENU_H__
#include <etk/types.h>
#include <etk/types.h>
#include <ewol/debug.h>
#include <ewol/widget/Widget.h>
#include <ewol/widget/Sizer.h>
#include <ewol/widget/ContextMenu.h>
namespace ewol {
namespace widget {
class MenuElement {
public :
MenuElement(void) : m_widgetPointer(NULL) { };
int32_t m_localId;
int32_t m_parentId;
ewol::Object* m_widgetPointer;
std::string m_label;
std::string m_image;
const char *m_generateEvent;
std::string m_message;
};
/**
* @ingroup ewolWidgetGroup
*/
class Menu :public ewol::widget::Sizer {
public:
Menu(void);
virtual ~Menu(void);
private:
virtual void subWidgetRemoveAll(void);
virtual int32_t subWidgetAdd(ewol::Widget* _newWidget);
virtual void subWidgetRemove(ewol::Widget* _newWidget);
virtual void subWidgetUnLink(ewol::Widget* _newWidget);
private:
std::vector<ewol::widget::MenuElement*> m_listElement;
int32_t m_staticId; // unique ID for every element of the menu ...
ewol::widget::ContextMenu* m_widgetContextMenu;
public:
void clear(void);
int32_t addTitle(std::string _label, std::string _image="", const char * _generateEvent = NULL, const std::string _message = "");
int32_t add(int32_t parent, std::string _label, std::string _image="", const char * _generateEvent = NULL, const std::string _message = "");
void addSpacer(void);
// Derived function
virtual void onReceiveMessage(const ewol::object::Message& _msg);
virtual void onObjectRemove(ewol::Object * _removeObject);
};
};
};
#endif