00001
00015 #ifndef CUI_MENU_H
00016 #define CUI_MENU_H
00017
00018 #include "UI_Lib.h"
00019 #include "UI_types.h"
00020 #include "CUI_ListBox.h"
00021 #include "CUI_MenuItem.h"
00022
00024
00039 class GLGUI_ENTRY CUI_Menu : public CUI_ListBox
00040 {
00041 public:
00042 CUI_Menu(
00043 CUI_UI *ui = NULL, float x = 0, float y = 0, float x2 = 1, float y2 = 1,
00044 CUI_Frame *parent = NULL, IUI_Shader *shader = NULL,
00045 IUI_Shader *cursor = NULL, CUI_CoordSys *coordsys = NULL,
00046
00047 IUI_Shader *itemshader = NULL, IUI_Shader *hovershader = NULL,
00048 IUI_Shader *selectedshader = NULL, IUI_Border *itemborder = NULL,
00049 IUI_Font *font = NULL,
00050
00051 IUI_Shader *submenuicon = NULL
00052 );
00053
00055 virtual ~CUI_Menu();
00056
00058 virtual bool AddItem( char *text = NULL, unsigned int itemID = 0, IUI_Shader *icon = NULL,
00059 unsigned short flags = UI_ITEM_BUTTON, void *sublist = NULL );
00060
00062 virtual bool AddItem( CUI_MenuItem *item );
00063
00065 virtual bool RemoveItem( unsigned int itemID );
00066
00068 virtual bool ProcessKey( unsigned long key );
00069
00071
00074 virtual bool Render( double dtime, IUI_Renderer *renderer );
00075
00077
00080 virtual bool CallbackFunc( int id, int numparam, void *param );
00081
00083 virtual bool Select( CUI_Frame *frame );
00084
00086
00089 virtual bool ActivateSubMenu( bool select );
00090
00092 virtual bool DeactivateSubMenu( bool updateselect );
00093
00095 virtual bool GetSubMenuPosition( float &x, float &y );
00096
00098
00099 virtual bool UpdateView( );
00100
00102 virtual bool SetSubMenuIcon( IUI_Shader *icon )
00103 { m_subMenuIcon = icon; return false; }
00104
00106 virtual bool SetParentMenu( CUI_Menu *parent )
00107 { m_parentMenu = parent; return false; }
00108
00110 virtual CUI_Menu *GetParentMenu( )
00111 { return m_parentMenu; }
00112
00114
00115 virtual bool SetFlag( unsigned long flag, bool set );
00116
00117 protected:
00119 virtual CUI_MenuItem *FindItem( unsigned int itemID );
00120
00122
00123 virtual bool SelectNext( bool open );
00124
00126
00127 virtual bool SelectPrevious( bool open );
00128
00130 CUI_MenuItem *m_selected;
00131
00133 typedef std::list<CUI_MenuItem*> MENUITEMLIST;
00134
00136 MENUITEMLIST m_itemList;
00137
00139 IUI_Shader *m_subMenuIcon;
00140
00142 CUI_Menu *m_parentMenu;
00143
00145 CUI_Menu *m_subMenu;
00146
00147 };
00148
00149 #endif