+/**
+ @class wxGridCellAutoWrapStringEditor
+
+ Grid cell editor for wrappable string/text data.
+
+ @library{wxadv}
+ @category{grid}
+
+ @see wxGridCellEditor, wxGridCellBoolEditor, wxGridCellChoiceEditor,
+ wxGridCellEnumEditor, wxGridCellFloatEditor,
+ wxGridCellNumberEditor, wxGridCellTextEditor
+*/
+class wxGridCellAutoWrapStringEditor : public wxGridCellTextEditor
+{
+public:
+ wxGridCellAutoWrapStringEditor();
+};
+
+/**
+ @class wxGridCellBoolEditor
+
+ Grid cell editor for boolean data.
+
+ @library{wxadv}
+ @category{grid}
+
+ @see wxGridCellEditor, wxGridCellAutoWrapStringEditor,
+ wxGridCellChoiceEditor, wxGridCellEnumEditor,
+ wxGridCellFloatEditor, wxGridCellNumberEditor,
+ wxGridCellTextEditor
+*/
+class wxGridCellBoolEditor : public wxGridCellEditor
+{
+public:
+ /**
+ Default constructor.
+ */
+ wxGridCellBoolEditor();
+
+ /**
+ Returns @true if the given @a value is equal to the string
+ representation of the truth value we currently use (see
+ UseStringValues()).
+ */
+ static bool IsTrueValue(const wxString& value);
+
+ /**
+ This method allows you to customize the values returned by GetValue()
+ for the cell using this editor. By default, the default values of the
+ arguments are used, i.e. @c "1" is returned if the cell is checked and
+ an empty string otherwise.
+ */
+ static void UseStringValues(const wxString& valueTrue = "1",
+ const wxString& valueFalse = wxEmptyString);
+};
+
+/**
+ @class wxGridCellChoiceEditor
+
+ Grid cell editor for string data providing the user a choice from a list of
+ strings.
+
+ @library{wxadv}
+ @category{grid}
+
+ @see wxGridCellEditor, wxGridCellAutoWrapStringEditor,
+ wxGridCellBoolEditor, wxGridCellEnumEditor,
+ wxGridCellFloatEditor, wxGridCellNumberEditor,
+ wxGridCellTextEditor
+*/
+class wxGridCellChoiceEditor : public wxGridCellEditor
+{
+public:
+ /**
+ Choice cell renderer ctor.
+
+ @param count
+ Number of strings from which the user can choose.
+ @param choices
+ An array of strings from which the user can choose.
+ @param allowOthers
+ If allowOthers is @true, the user can type a string not in choices
+ array.
+ */
+ wxGridCellChoiceEditor(size_t count = 0,
+ const wxString choices[] = NULL,
+ bool allowOthers = false);
+
+ /**
+ Choice cell renderer ctor.
+
+ @param choices
+ An array of strings from which the user can choose.
+ @param allowOthers
+ If allowOthers is @true, the user can type a string not in choices
+ array.
+ */
+ wxGridCellChoiceEditor(const wxArrayString& choices,
+ bool allowOthers = false);
+
+ /**
+ Parameters string format is "item1[,item2[...,itemN]]"
+ */
+ virtual void SetParameters(const wxString& params);
+};
+
+/**
+ @class wxGridCellEnumEditor
+
+ Grid cell editor which displays an enum number as a textual equivalent
+ (eg. data in cell is 0,1,2 ... n the cell could be displayed as
+ "John","Fred"..."Bob" in the combo choice box).
+
+ @library{wxadv}
+ @category{grid}
+
+ @see wxGridCellEditor, wxGridCellAutoWrapStringEditor,
+ wxGridCellBoolEditor, wxGridCellChoiceEditor,
+ wxGridCellTextEditor, wxGridCellFloatEditor,
+ wxGridCellNumberEditor
+*/
+class wxGridCellEnumEditor : public wxGridCellChoiceEditor
+{
+public:
+ /**
+ Enum cell editor ctor.
+
+ @param choices
+ Comma separated choice parameters "item1[,item2[...,itemN]]".
+ */
+ wxGridCellEnumEditor( const wxString& choices = wxEmptyString );
+};
+
+/**
+ @class wxGridCellTextEditor
+
+ Grid cell editor for string/text data.
+
+ @library{wxadv}
+ @category{grid}
+
+ @see wxGridCellEditor, wxGridCellAutoWrapStringEditor,
+ wxGridCellBoolEditor, wxGridCellChoiceEditor,
+ wxGridCellEnumEditor, wxGridCellFloatEditor,
+ wxGridCellNumberEditor
+*/
+class wxGridCellTextEditor : public wxGridCellEditor
+{
+public:
+ /**
+ Default constructor.
+ */
+ wxGridCellTextEditor();
+
+ /**
+ The parameters string format is "n" where n is a number representing
+ the maximum width.
+ */
+ virtual void SetParameters(const wxString& params);
+};
+
+/**
+ @class wxGridCellFloatEditor
+
+ The editor for floating point numbers data.
+
+ @library{wxadv}
+ @category{grid}
+
+ @see wxGridCellEditor, wxGridCellAutoWrapStringEditor,
+ wxGridCellBoolEditor, wxGridCellChoiceEditor,
+ wxGridCellEnumEditor, wxGridCellNumberEditor,
+ wxGridCellTextEditor
+*/
+class wxGridCellFloatEditor : public wxGridCellTextEditor
+{
+public:
+ /**
+ Float cell editor ctor.
+
+ @param width
+ Minimum number of characters to be shown.
+ @param precision
+ Number of digits after the decimal dot.
+ */
+ wxGridCellFloatEditor(int width = -1, int precision = -1);
+
+ /**
+ Parameters string format is "width,precision"
+ */
+ virtual void SetParameters(const wxString& params);
+};
+
+/**
+ @class wxGridCellNumberEditor
+
+ Grid cell editor for numeric integer data.
+
+ @library{wxadv}
+ @category{grid}
+
+ @see wxGridCellEditor, wxGridCellAutoWrapStringEditor,
+ wxGridCellBoolEditor, wxGridCellChoiceEditor,
+ wxGridCellEnumEditor, wxGridCellFloatEditor,
+ wxGridCellTextEditor
+*/
+class wxGridCellNumberEditor : public wxGridCellTextEditor
+{
+public:
+ /**
+ Allows you to specify the range for acceptable data. Values equal to
+ -1 for both @a min and @a max indicate that no range checking should be
+ done.
+ */
+ wxGridCellNumberEditor(int min = -1, int max = -1);
+
+
+ /**
+ Parameters string format is "min,max".
+ */
+ virtual void SetParameters(const wxString& params);
+
+protected:
+
+ /**
+ If the return value is @true, the editor uses a wxSpinCtrl to get user
+ input, otherwise it uses a wxTextCtrl.
+ */
+ bool HasRange() const;
+
+ /**
+ String representation of the value.
+ */
+ wxString GetString() const;
+};
+
+
+
+/**
+ @class wxGridCellAttr
+
+ This class can be used to alter the cells' appearance in the grid by
+ changing their attributes from the defaults. An object of this class may be
+ returned by wxGridTableBase::GetAttr().
+
+ @library{wxadv}
+ @category{grid}
+*/
+class wxGridCellAttr
+{
+public:
+ /**
+ Kind of the attribute to retrieve.
+
+ @see wxGridCellAttrProvider::GetAttr(), wxGridTableBase::GetAttr()
+ */
+ enum wxAttrKind
+ {
+ /// Return the combined effective attribute for the cell.
+ Any,
+
+ /// Return the attribute explicitly set for this cell.
+ Cell,
+
+ /// Return the attribute set for this cells row.
+ Row,
+
+ /// Return the attribute set for this cells column.
+ Col
+ };
+
+ /**
+ Default constructor.
+ */
+ wxGridCellAttr(wxGridCellAttr* attrDefault = NULL);
+ /**
+ Constructor specifying some of the often used attributes.
+ */
+ wxGridCellAttr(const wxColour& colText, const wxColour& colBack,
+ const wxFont& font, int hAlign, int vAlign);
+
+ /**
+ Creates a new copy of this object.
+ */
+ wxGridCellAttr* Clone() const;
+
+ /**
+ This class is reference counted: it is created with ref count of 1, so
+ calling DecRef() once will delete it. Calling IncRef() allows to lock
+ it until the matching DecRef() is called.
+ */
+ void DecRef();
+
+ /**
+ Get the alignment to use for the cell with the given attribute.
+
+ If this attribute doesn't specify any alignment, the default attribute
+ alignment is used (which can be changed using
+ wxGrid::SetDefaultCellAlignment() but is left and top by default).
+
+ Notice that @a hAlign and @a vAlign values are always overwritten by
+ this function, use GetNonDefaultAlignment() if this is not desirable.
+
+ @param hAlign
+ Horizontal alignment is returned here if this argument is non-@NULL.
+ It is one of wxALIGN_LEFT, wxALIGN_CENTRE or wxALIGN_RIGHT.
+ @param vAlign
+ Vertical alignment is returned here if this argument is non-@NULL.
+ It is one of wxALIGN_TOP, wxALIGN_CENTRE or wxALIGN_BOTTOM.
+ */
+ void GetAlignment(int* hAlign, int* vAlign) const;
+
+ /**
+ Returns the background colour.
+ */
+ const wxColour& GetBackgroundColour() const;
+
+ /**
+ Returns the cell editor.
+ */
+ wxGridCellEditor* GetEditor(const wxGrid* grid, int row, int col) const;
+
+ /**
+ Returns the font.
+ */
+ const wxFont& GetFont() const;
+
+ /**
+ Get the alignment defined by this attribute.
+
+ Unlike GetAlignment() this function only modifies @a hAlign and @a
+ vAlign if this attribute does define a non-default alignment. This
+ means that they must be initialized before calling this function and
+ that their values will be preserved unchanged if they are different
+ from wxALIGN_INVALID.
+
+ For example, the following fragment can be used to use the cell
+ alignment if one is defined but right-align its contents by default
+ (instead of left-aligning it by default) while still using the default
+ vertical alignment:
+ @code
+ int hAlign = wxALIGN_RIGHT,
+ vAlign = wxALIGN_INVALID;
+ attr.GetNonDefaultAlignment(&hAlign, &vAlign);
+ @endcode
+
+ @since 2.9.1
+ */
+ void GetNonDefaultAlignment(int *hAlign, int *vAlign) const;
+
+ /**
+ Returns the cell renderer.
+ */
+ wxGridCellRenderer* GetRenderer(const wxGrid* grid, int row, int col) const;
+
+ /**
+ Returns the text colour.
+ */
+ const wxColour& GetTextColour() const;
+
+ /**
+ Returns @true if this attribute has a valid alignment set.
+ */
+ bool HasAlignment() const;
+
+ /**
+ Returns @true if this attribute has a valid background colour set.
+ */
+ bool HasBackgroundColour() const;
+
+ /**
+ Returns @true if this attribute has a valid cell editor set.
+ */
+ bool HasEditor() const;
+
+ /**
+ Returns @true if this attribute has a valid font set.
+ */
+ bool HasFont() const;
+
+ /**
+ Returns @true if this attribute has a valid cell renderer set.
+ */
+ bool HasRenderer() const;
+
+ /**
+ Returns @true if this attribute has a valid text colour set.
+ */
+ bool HasTextColour() const;
+
+ /**
+ This class is reference counted: it is created with ref count of 1, so
+ calling DecRef() once will delete it. Calling IncRef() allows to lock
+ it until the matching DecRef() is called.
+ */
+ void IncRef();
+
+ /**
+ Returns @true if this cell is set as read-only.
+ */
+ bool IsReadOnly() const;
+
+ /**
+ Sets the alignment. @a hAlign can be one of @c wxALIGN_LEFT,
+ @c wxALIGN_CENTRE or @c wxALIGN_RIGHT and @a vAlign can be one of
+ @c wxALIGN_TOP, @c wxALIGN_CENTRE or @c wxALIGN_BOTTOM.
+ */
+ void SetAlignment(int hAlign, int vAlign);
+
+ /**
+ Sets the background colour.
+ */
+ void SetBackgroundColour(const wxColour& colBack);
+
+ /**
+ @todo Needs documentation.
+ */
+ void SetDefAttr(wxGridCellAttr* defAttr);
+
+ /**
+ Sets the editor to be used with the cells with this attribute.
+ */
+ void SetEditor(wxGridCellEditor* editor);
+
+ /**
+ Sets the font.
+ */
+ void SetFont(const wxFont& font);
+
+ /**
+ Sets the cell as read-only.
+ */
+ void SetReadOnly(bool isReadOnly = true);
+
+ /**
+ Sets the renderer to be used for cells with this attribute. Takes
+ ownership of the pointer.
+ */
+ void SetRenderer(wxGridCellRenderer* renderer);
+
+ /**
+ Sets the text colour.
+ */
+ void SetTextColour(const wxColour& colText);
+};
+
+/**
+ Base class for corner window renderer.
+
+ This is the simplest of all header renderers and only has a single
+ function.
+
+ @see wxGridCellAttrProvider::GetCornerRenderer()
+
+ @since 2.9.1
+ */
+class wxGridCornerHeaderRenderer
+{
+public:
+ /**
+ Called by the grid to draw the corner window border.
+
+ This method is responsible for drawing the border inside the given @a
+ rect and adjusting the rectangle size to correspond to the area inside
+ the border, i.e. usually call wxRect::Deflate() to account for the
+ border width.
+
+ @param grid
+ The grid whose corner window is being drawn.
+ @param dc
+ The device context to use for drawing.
+ @param rect
+ Input/output parameter which contains the border rectangle on input
+ and should be updated to contain the area inside the border on
+ function return.
+ */
+ virtual void DrawBorder(const wxGrid& grid,
+ wxDC& dc,
+ wxRect& rect) const = 0;
+};
+/**
+ Common base class for row and column headers renderers.
+
+ @see wxGridColumnHeaderRenderer, wxGridRowHeaderRenderer
+
+ @since 2.9.1
+ */
+class wxGridHeaderLabelsRenderer : public wxGridCornerHeaderRenderer
+{
+public:
+ /**
+ Called by the grid to draw the specified label.
+
+ Notice that the base class DrawBorder() method is called before this
+ one.
+
+ The default implementation uses wxGrid::GetLabelTextColour() and
+ wxGrid::GetLabelFont() to draw the label.