00001
00015 #ifndef CUI_LISTBOX_H
00016 #define CUI_LISTBOX_H
00017
00018 #include "UI_Lib.h"
00019 #include "UI_types.h"
00020 #include "CUI_Control.h"
00021 #include "CUI_ListItem.h"
00022
00024
00039 class GLGUI_ENTRY CUI_ListBox : public CUI_Control
00040 {
00041
00042 public:
00044 CUI_ListBox(
00045 CUI_UI *ui = NULL, float x = 0, float y = 0, float x2 = 1, float y2 = 1,
00046 CUI_Frame *parent = NULL, IUI_Shader *shader = NULL,
00047 IUI_Shader *cursor = NULL, CUI_CoordSys *coordsys = NULL,
00048
00049 IUI_Shader *itemshader = NULL, IUI_Shader *hovershader = NULL,
00050 IUI_Shader *selectedshader = NULL, IUI_Border *itemborder = NULL,
00051 IUI_Font *font = NULL
00052 );
00053
00055 virtual ~CUI_ListBox();
00056
00058 virtual bool AddItem( char *text = NULL, unsigned int itemID = 0, IUI_Shader *icon = NULL,
00059 unsigned short flags = UI_ITEM_BUTTON );
00060
00062 virtual bool AddItem( CUI_ListItem *item );
00063
00065 virtual bool RemoveItem( unsigned int itemID );
00066
00068 virtual bool EnableItem( unsigned int itemID, bool enable = true );
00069
00071 virtual bool ProcessKey( unsigned long key );
00072
00074 virtual bool Render( double dtime, IUI_Renderer *renderer );
00075
00077
00080 bool CallbackFunc( int id, int numparam, void *param );
00081
00083 virtual bool Select( CUI_Frame *frame );
00084
00086 virtual bool Select( unsigned int id )
00087 { m_selected = FindItem(id); return false; }
00088
00090 virtual bool SetItemSize( float size )
00091 { m_itemSize = size; return false; }
00092
00094 virtual bool SetItemFlag( unsigned int itemID, unsigned short flag, bool enable = true );
00095
00097 virtual bool SetItemIcon( unsigned int itemID, IUI_Shader *icon );
00098
00100 virtual bool SetHoverShader( IUI_Shader *shader )
00101 { m_hoverShader = shader; return false; }
00102
00104 virtual bool SetSelectedShader( IUI_Shader *shader )
00105 { m_selectedShader = shader; return false; }
00106
00108 virtual bool SetItemShader( IUI_Shader *shader )
00109 { m_itemShader = shader; return false; }
00110
00112 virtual bool SetItemBorder( IUI_Border *border )
00113 { m_itemBorder = border; return false; }
00114
00116
00117 virtual bool UpdateView( );
00118
00120 virtual int GetActiveItems()
00121 { return m_activeItems; }
00122
00124 virtual char *GetSelectedText()
00125 { if( m_selected ) return m_selected->GetText(); else return NULL; }
00126
00128 virtual int GetSelectedID()
00129 { if( m_selected ) return m_selected->GetItemID(); else return 0; }
00130
00132 virtual IUI_Shader *GetSelectedIconShader()
00133 { if( m_selected ) return m_selected->GetIconShader(); else return NULL; }
00134
00136 virtual bool SetToggleIcons( IUI_Shader *off, IUI_Shader *on )
00137 { m_toggleOnIcon = on; m_toggleOffIcon = off; return false; }
00138
00139 protected:
00140
00142 CUI_ListItem *FindItem( unsigned int itemID );
00143
00145 bool SelectNext();
00146
00148 bool SelectPrevious();
00149
00151
00152 float m_itemSize;
00153
00155 CUI_ListItem *m_selected;
00156
00158 IUI_Shader *m_itemShader;
00159
00161 IUI_Border *m_itemBorder;
00162
00164 IUI_Shader *m_selectedShader;
00165
00167 typedef std::list<CUI_ListItem*> LISTITEMLIST;
00168
00170 LISTITEMLIST m_itemList;
00171
00173 int m_activeItems;
00174
00176 IUI_Shader *m_hoverShader;
00177
00179 IUI_Shader *m_toggleOnIcon;
00180
00182 IUI_Shader *m_toggleOffIcon;
00183
00184 };
00185
00186
00187 #endif