1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/generic/bmpcbox.h
3 // Purpose: wxBitmapComboBox
4 // Author: Jaakko Salli
6 // Created: Aug-30-2006
8 // Copyright: (c) Jaakko Salli
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_GENERIC_BMPCBOX_H_
13 #define _WX_GENERIC_BMPCBOX_H_
16 #define wxGENERIC_BITMAPCOMBOBOX 1
19 #error "Generic wxBitmapComboBox depends on wxOwnerDrawnComboBox"
22 #include "wx/odcombo.h"
25 // ----------------------------------------------------------------------------
26 // wxBitmapComboBox: a wxComboBox that allows images to be shown
27 // in front of string items.
28 // ----------------------------------------------------------------------------
30 class WXDLLIMPEXP_ADV wxBitmapComboBox
: public wxOwnerDrawnComboBox
,
31 public wxBitmapComboBoxBase
36 wxBitmapComboBox() : wxOwnerDrawnComboBox(), wxBitmapComboBoxBase()
41 wxBitmapComboBox(wxWindow
*parent
,
42 wxWindowID id
= wxID_ANY
,
43 const wxString
& value
= wxEmptyString
,
44 const wxPoint
& pos
= wxDefaultPosition
,
45 const wxSize
& size
= wxDefaultSize
,
47 const wxString choices
[] = NULL
,
49 const wxValidator
& validator
= wxDefaultValidator
,
50 const wxString
& name
= wxBitmapComboBoxNameStr
)
51 : wxOwnerDrawnComboBox(),
52 wxBitmapComboBoxBase()
56 (void)Create(parent
, id
, value
, pos
, size
, n
,
57 choices
, style
, validator
, name
);
60 wxBitmapComboBox(wxWindow
*parent
,
62 const wxString
& value
,
65 const wxArrayString
& choices
,
67 const wxValidator
& validator
= wxDefaultValidator
,
68 const wxString
& name
= wxBitmapComboBoxNameStr
);
70 bool Create(wxWindow
*parent
,
72 const wxString
& value
,
76 const wxString choices
[],
78 const wxValidator
& validator
= wxDefaultValidator
,
79 const wxString
& name
= wxBitmapComboBoxNameStr
);
81 bool Create(wxWindow
*parent
,
83 const wxString
& value
,
86 const wxArrayString
& choices
,
88 const wxValidator
& validator
= wxDefaultValidator
,
89 const wxString
& name
= wxBitmapComboBoxNameStr
);
91 virtual ~wxBitmapComboBox();
93 // Adds item with image to the end of the combo box.
94 int Append(const wxString
& item
, const wxBitmap
& bitmap
= wxNullBitmap
)
95 { return DoAppendWithImage(item
, bitmap
); }
97 int Append(const wxString
& item
, const wxBitmap
& bitmap
, void *clientData
)
98 { int n
= DoAppendWithImage(item
, bitmap
); SetClientData(n
, clientData
); return n
; }
99 int Append(const wxString
& item
, const wxBitmap
& bitmap
, wxClientData
*clientData
)
100 { int n
= DoAppendWithImage(item
, bitmap
); SetClientObject(n
, clientData
); return n
; }
102 // Returns size of image used in list.
103 virtual wxSize
GetBitmapSize() const
105 return m_usedImgSize
;
108 // Returns the image of the item with the given index.
109 virtual wxBitmap
GetItemBitmap(unsigned int n
) const;
111 // Inserts item with image into the list before pos. Not valid for wxCB_SORT or wxCB_SORT
112 // styles, use Append instead.
113 int Insert(const wxString
& item
, const wxBitmap
& bitmap
, unsigned int pos
)
114 { return DoInsertWithImage(item
, bitmap
, pos
); }
116 int Insert(const wxString
& item
, const wxBitmap
& bitmap
,
117 unsigned int pos
, void *clientData
);
118 int Insert(const wxString
& item
, const wxBitmap
& bitmap
,
119 unsigned int pos
, wxClientData
*clientData
);
121 // Sets the image for the given item.
122 virtual void SetItemBitmap(unsigned int n
, const wxBitmap
& bitmap
);
124 virtual void Clear();
125 virtual void Delete(unsigned int n
);
129 virtual void OnDrawBackground(wxDC
& dc
, const wxRect
& rect
, int item
, int flags
) const;
130 virtual void OnDrawItem(wxDC
& dc
, const wxRect
& rect
, int item
, int flags
) const;
131 virtual wxCoord
OnMeasureItem(size_t item
) const;
132 virtual wxCoord
OnMeasureItemWidth(size_t item
) const;
134 virtual int DoAppendWithImage(const wxString
& item
, const wxBitmap
& bitmap
);
135 virtual int DoInsertWithImage(const wxString
& item
, const wxBitmap
& bitmap
,
138 virtual int DoAppend(const wxString
& item
);
139 virtual int DoInsert(const wxString
& item
, unsigned int pos
);
141 virtual bool SetFont(const wxFont
& font
);
143 virtual wxSize
DoGetBestSize() const;
146 void OnResize(wxSizeEvent
& event
);
148 // Recalculates amount of empty space needed in front of
149 // text in control itself.
150 void DetermineIndent();
152 bool OnAddBitmap(const wxBitmap
& bitmap
);
154 // Adds image to position - called in Append/Insert before
156 bool DoInsertBitmap(const wxBitmap
& image
, unsigned int pos
);
159 wxArrayPtrVoid m_bitmaps
; // Images associated with items
160 wxSize m_usedImgSize
; // Size of bitmaps
163 int m_imgAreaWidth
; // Width and height of area next to text field
170 DECLARE_EVENT_TABLE()
172 DECLARE_DYNAMIC_CLASS(wxBitmapComboBox
)
177 // _WX_GENERIC_BMPCBOX_H_