ISXMr/libs/isxdk/include/ISUI/LGUIListBox.h

146 lines
3.4 KiB
C++

#pragma once
enum eListBoxSort
{
LBSORT_NONE=0,
LBSORT_USER=1,
LBSORT_TEXT=2,
LBSORT_VALUE=3,
LBSORT_CUSTOM=4,
LBSORT_TEXTREVERSE=5,
LBSORT_VALUEREVERSE=6,
};
class ListBoxItem
{
public:
ListBoxItem(class LGUIListBox *p_pListBox, const char *p_Text, unsigned int p_Color, const char *p_Value, unsigned int p_ID)
{
pListBox=p_pListBox;
Text=strdup(p_Text);
Color=p_Color;
if (p_Value)
Value=p_Value;
ID=p_ID;
Order=0;
}
~ListBoxItem()
{
free(Text);
Text="Error";
}
unsigned int ID;
char *Text;
unsigned int Color;
std::string Value;
unsigned int Order;
class LGUIListBox *pListBox;
};
struct _CreateListBox : public _CreateElement
{
// unsigned int FontSize;
// unsigned int TextColor;
_CreateFont Font;
unsigned int BackgroundColor;
unsigned int Border;
unsigned int BorderColor;
unsigned int SelectionColor;
eListBoxSort SortType;
bool bSelectMultiple;
char *ScrollBarTemplate;
};
class LGUIListBox :
public LGUIElement
{
public:
LGUI_API LGUIListBox(const char *p_Factory, LGUIElement *p_pParent, const char *p_Name);
LGUI_API ~LGUIListBox(void);
LGUI_API class LSTypeDefinition *GetLSType();
LGUI_API void Create(_CreateListBox &CreateInfo, class XMLNode *pTemplate=0);
LGUI_API void Render();
LGUI_API bool FromXML(class XMLNode *pXML, class XMLNode *pTemplate=0);
LGUI_API bool IsTypeOf(char *TestFactory);
LGUI_API void RecalculateSize(bool RecalculateChildren);
LGUI_API void OnNotify(LGUIElement *pElement, unsigned int Notification, UINT_PTR Value);
LGUI_API bool OnLMouseDown(POINT2I &pt);
LGUI_API bool OnLMouseUp(POINT2I &pt);
LGUI_API bool OnLMouseDoubleClick(POINT2I &pt);
LGUI_API bool OnMouseMove(POINT2I &pt);
LGUI_API bool OnMouseWheel(int Offset);
LGUI_API virtual void DeselectItem(unsigned int ID);
LGUI_API virtual void SelectItem(unsigned int ID);
LGUI_API virtual void ItemToggleSelect(unsigned int ID);
LGUI_API virtual void ClearSelection();
LGUI_API virtual unsigned int AddItem(const char *Text, const char *Value, unsigned int Color=0);
LGUI_API virtual void RemoveItem(unsigned int ID);
LGUI_API virtual void ClearItems();
LGUI_API virtual bool GetItemValue(unsigned int ID, unsigned int &Value);
LGUI_API virtual void SetItemText(unsigned int ID, const char *Text);
LGUI_API virtual void SetItemColor(unsigned int ID, unsigned int Color);
LGUI_API virtual unsigned int FindItemByText(const char *Text, unsigned int BeginInclusive=1);
LGUI_API virtual unsigned int FindItemByValue(const char *Value, unsigned int BeginInclusive=1);
LGUI_API virtual unsigned int GetItemFromPoint(POINT2I &pt);
LGUI_API virtual unsigned int GetOrderFromPoint(POINT2I &pt);
LGUI_API virtual void ApplySort();
LGUI_API ListBoxItem *RetrieveItem(unsigned int ID);
void Sort(int (__cdecl* customCompare)(const void *,const void *));
// -- XML Properties --
LGUIFont *pFont;
unsigned int BackgroundColor;
unsigned int Border;
unsigned int BorderColor;
unsigned int SelectionColor;
eListBoxSort SortType;
bool bSelectMultiple;
LGUITexture *pTexture;
LGUIEmbeddedScript *pOnSelect;
LGUIEmbeddedScript *pOnDeSelect;
// --------------------
unsigned int TextColor;
LGUIScrollBar *pVerticalBar;
bool bAutoSort;
int (__cdecl* fCustomCompare)(const void *,const void *);
unsigned int VisiblePos;
set<ListBoxItem *> Selection;
CIndex<ListBoxItem *> Items;
CIndex<ListBoxItem *> OrderedItems;
unsigned int nItems;
unsigned int DraggingID;
bool Reordered;
};