// Name: odcombo.h
// Purpose: interface of wxOwnerDrawnComboBox
// Author: wxWidgets team
-// RCS-ID: $Id$
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
wxODCB_PAINTING_SELECTED = 0x0002
};
+
+/**
+ New window styles for wxOwnerDrawnComboBox
+*/
+enum
+{
+ /**
+ Double-clicking cycles item if wxCB_READONLY is also used.
+ */
+ wxODCB_DCLICK_CYCLES = wxCC_SPECIAL_DCLICK,
+
+ /**
+ If used, control itself is not custom paint using callback.
+ Even if this is not used, writable combo is never custom paint
+ until SetCustomPaintWidth is called
+ */
+ wxODCB_STD_CONTROL_PAINT = 0x1000
+};
+
+
+
/**
@class wxOwnerDrawnComboBox
@see wxComboCtrl window styles and @ref overview_windowstyles.
- @beginEventTable{wxCommandEvent}
+ @beginEventEmissionTable{wxCommandEvent}
@event{EVT_COMBOBOX(id, func)}
- Process a wxEVT_COMMAND_COMBOBOX_SELECTED event, when an item on
+ Process a wxEVT_COMBOBOX event, when an item on
the list is selected. Note that calling GetValue() returns the new
value of selection.
@endEventTable
@library{wxadv}
@category{ctrl}
- <!-- @appearance{ownerdrawncombobox.png} -->
+ @appearance{ownerdrawncombobox}
@see wxComboCtrl, wxComboBox, wxVListBox, wxCommandEvent
*/
-class wxOwnerDrawnComboBox : public wxComboCtrl
+class wxOwnerDrawnComboBox : public wxComboCtrl, public wxItemContainer
{
public:
/**
*/
wxOwnerDrawnComboBox();
- //@{
/**
Constructor, creating and showing a owner-drawn combobox.
@see Create(), wxValidator
*/
wxOwnerDrawnComboBox(wxWindow* parent, wxWindowID id,
- const wxString& value = "",
+ const wxString& value = wxEmptyString,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
int n = 0,
- const wxString[] choices = NULL,
+ const wxString choices[] = NULL,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = "comboBox");
+ /**
+ Constructor, creating and showing a owner-drawn combobox.
+
+ @param parent
+ Parent window. Must not be @NULL.
+ @param id
+ Window identifier. The value @c wxID_ANY indicates a default value.
+ @param value
+ Initial selection string. An empty string indicates no selection.
+ @param pos
+ Window position.
+ @param size
+ Window size.
+ If ::wxDefaultSize is specified then the window is sized appropriately.
+ @param choices
+ An array of strings with which to initialise the control.
+ @param style
+ Window style. See wxOwnerDrawnComboBox.
+ @param validator
+ Window validator.
+ @param name
+ Window name.
+
+ @see Create(), wxValidator
+ */
wxOwnerDrawnComboBox(wxWindow* parent, wxWindowID id,
const wxString& value,
const wxPoint& pos,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
const wxString& name = "comboBox");
- //@}
/**
Destructor, destroying the owner-drawn combobox.
*/
- ~wxOwnerDrawnComboBox();
+ virtual ~wxOwnerDrawnComboBox();
//@{
/**
@remarks Derived classes should call or replace this function.
*/
- bool Create(wxWindow* parent, wxWindowID id,
- const wxString& value = "",
+ bool Create(wxWindow *parent,
+ wxWindowID id,
+ const wxString& value = wxEmptyString,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
- int n, const wxString choices[],
long style = 0,
const wxValidator& validator = wxDefaultValidator,
- const wxString& name = "comboBox");
- bool Create(wxWindow* parent, wxWindowID id,
+ const wxString& name = wxComboBoxNameStr);
+ bool Create(wxWindow *parent,
+ wxWindowID id,
+ const wxString& value,
+ const wxPoint& pos,
+ const wxSize& size,
+ int n,
+ const wxString choices[],
+ long style = 0,
+ const wxValidator& validator = wxDefaultValidator,
+ const wxString& name = wxComboBoxNameStr);
+ bool Create(wxWindow *parent,
+ wxWindowID id,
const wxString& value,
const wxPoint& pos,
const wxSize& size,
const wxArrayString& choices,
long style = 0,
const wxValidator& validator = wxDefaultValidator,
- const wxString& name = "comboBox");
+ const wxString& name = wxComboBoxNameStr);
//@}
/**
Returns index to the widest item in the list.
*/
- int GetWidestItem() const;
+ virtual int GetWidestItem();
/**
Returns width of the widest item in the list.
*/
- int GetWidestItemWidth() const;
+ virtual int GetWidestItemWidth();
+
+protected:
/**
This method is used to draw the items background and, maybe, a border around it.
@remarks flags has the same meaning as with OnDrawItem().
*/
- void OnDrawBackground(wxDC& dc, const wxRect& rect, int item,
- int flags) const;
+ virtual void OnDrawBackground(wxDC& dc, const wxRect& rect, int item,
+ int flags) const;
/**
The derived class may implement this function to actually draw the item
@param flags
A combination of the ::wxOwnerDrawnComboBoxPaintingFlags enumeration values.
*/
- void OnDrawItem(wxDC& dc, const wxRect& rect, int item,
- int flags) const;
+ virtual void OnDrawItem(wxDC& dc, const wxRect& rect, int item,
+ int flags) const;
/**
The derived class may implement this method to return the height of the
The default implementation returns text height, as if this control was
a normal combobox.
*/
- wxCoord OnMeasureItem(size_t item) const;
+ virtual wxCoord OnMeasureItem(size_t item) const;
/**
The derived class may implement this method to return the width of the
The default implementation returns -1.
*/
- wxCoord OnMeasureItemWidth(size_t item) const;
+ virtual wxCoord OnMeasureItemWidth(size_t item) const;
};