#ifndef _WX_IMAGLBOX_H_
#define _WX_IMAGLBOX_H_
#include "wx/defs.h"
#include "wx/vlbox.h"
#include "wx/ctrlsub.h"
extern const wxChar wxImageListBoxNameStr[];
extern const wxChar wxSimpleImageListBoxNameStr[];
class wxImageListBox : public wxVListBox
{
DECLARE_ABSTRACT_CLASS(wxImageListBox);
public:
wxImageListBox();
wxImageListBox(wxWindow *parent,
wxWindowID id = wxID_ANY,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxImageListBoxNameStr);
bool Create(wxWindow *parent,
wxWindowID id = wxID_ANY,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxImageListBoxNameStr);
virtual ~wxImageListBox();
virtual bool SetFont(const wxFont&);
void SetImageSpacing(wxCoord right, wxCoord left, wxCoord vertical);
void SetTextSpacing(wxCoord vertical);
protected:
virtual wxString OnGetItemString(size_t n) const = 0;
virtual wxBitmap* OnGetItemBitmap(size_t n) const = 0;
virtual void OnDrawItem(wxDC& dc, const wxRect& rect, size_t n) const;
virtual wxCoord OnMeasureItem(size_t n) const;
void Init();
wxCoord m_image_spacing_right;
wxCoord m_image_spacing_left;
wxCoord m_image_spacing_vertical;
wxCoord m_text_spacing_vertical;
private:
DECLARE_NO_COPY_CLASS(wxImageListBox);
};
#define wxILB_DEFAULT_STYLE wxBORDER_SUNKEN
class wxSimpleImageListBox : public wxImageListBox,
public wxItemContainer
{
public:
wxSimpleImageListBox() { }
wxSimpleImageListBox(wxWindow *parent,
wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
int n = 0, const wxString choices[] = NULL,
long style = wxILB_DEFAULT_STYLE,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxSimpleImageListBoxNameStr)
{
Create(parent, id, pos, size, n, choices, style, validator, name);
}
wxSimpleImageListBox(wxWindow *parent,
wxWindowID id,
const wxPoint& pos,
const wxSize& size,
const wxArrayString& choices,
long style = wxILB_DEFAULT_STYLE,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxSimpleImageListBoxNameStr)
{
Create(parent, id, pos, size, choices, style, validator, name);
}
bool Create(wxWindow *parent, wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
int n = 0, const wxString choices[] = NULL,
long style = wxILB_DEFAULT_STYLE,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxSimpleImageListBoxNameStr);
bool Create(wxWindow *parent, wxWindowID id,
const wxPoint& pos,
const wxSize& size,
const wxArrayString& choices,
long style = wxILB_DEFAULT_STYLE,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = wxSimpleImageListBoxNameStr);
virtual ~wxSimpleImageListBox();
void SetSelection(int n)
{ wxVListBox::SetSelection(n); }
int GetSelection() const
{ return wxVListBox::GetSelection(); }
wxCONTROL_ITEMCONTAINER_CLIENTDATAOBJECT_RECAST
virtual unsigned int GetCount() const
{ return m_items.GetCount(); }
virtual wxString GetString(unsigned int n) const;
wxArrayString GetStrings() const
{ return m_items; }
virtual void SetString(unsigned int n, const wxString& s);
virtual void Clear();
virtual void Delete(unsigned int n);
void SetBitmap(unsigned int n, const wxBitmap& bmp);
wxBitmap* GetBitmap(unsigned int n);
void Append(const wxArrayString& strings);
int Append(const wxString& item)
{ return wxItemContainer::Append(item); }
int Append(const wxString& item, void *clientData)
{ return wxItemContainer::Append(item, clientData); }
int Append(const wxString& item, wxClientData *clientData)
{ return wxItemContainer::Append(item, clientData); }
protected:
virtual int DoAppend(const wxString& item);
virtual int DoInsert(const wxString& item, unsigned int pos);
virtual void DoSetItemClientData(unsigned int n, void *clientData)
{ m_clientData[n] = clientData; }
virtual void *DoGetItemClientData(unsigned int n) const
{ return m_clientData[n]; }
virtual void DoSetItemClientObject(unsigned int n, wxClientData *clientData)
{ m_clientData[n] = (void *)clientData; }
virtual wxClientData *DoGetItemClientObject(unsigned int n) const
{ return (wxClientData *)m_clientData[n]; }
void UpdateCount();
virtual void SetItemCount(size_t count)
{ wxImageListBox::SetItemCount(count); }
virtual void SetLineCount(size_t count)
{ wxImageListBox::SetLineCount(count); }
virtual wxString OnGetItemString(size_t n) const
{ return m_items[n]; }
virtual wxBitmap* OnGetItemBitmap(size_t n) const
{ return (wxBitmap*)m_bitmaps[n]; }
wxArrayString m_items;
wxArrayPtrVoid m_bitmaps;
wxArrayPtrVoid m_clientData;
DECLARE_NO_COPY_CLASS(wxSimpleImageListBox);
};
#endif