wxWidgets: wxDataViewCustomRenderer Class Reference

| Version: 3.0.2

- Main Page
- Related Pages
- Categories
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Member Functions | List of all members
wxDataViewCustomRenderer Class Referenceabstract
wxDataViewCtrl Related Classes

`#include <wx/dataview.h>`

Inheritance diagram for wxDataViewCustomRenderer:
[legend]

## Detailed Description

You need to derive a new class from wxDataViewCustomRenderer in order to write a new renderer.

You need to override at least wxDataViewRenderer::SetValue, wxDataViewRenderer::GetValue, wxDataViewCustomRenderer::GetSize and wxDataViewCustomRenderer::Render.

If you want your renderer to support in-place editing then you also need to override wxDataViewCustomRenderer::HasEditorCtrl, wxDataViewCustomRenderer::CreateEditorCtrl and wxDataViewCustomRenderer::GetValueFromEditorCtrl.

Note that a special event handler will be pushed onto that editor control which handles <ENTER> and focus out events in order to end the editing.

##

Library: wxAdvanced
Category: wxDataViewCtrl Related Classes

## Public Member Functions
| wxDataViewCustomRenderer (const wxString &varianttype="string", wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT)
| Constructor.
virtual | ~wxDataViewCustomRenderer ()
| Destructor.
virtual bool | ActivateCell (const wxRect &cell, wxDataViewModel *model, const wxDataViewItem &item, unsigned int col, const wxMouseEvent *mouseEvent)
| Override this to react to cell activation.
virtual wxWindow * | CreateEditorCtrl (wxWindow *parent, wxRect labelRect, const wxVariant &value)
| Override this to create the actual editor control once editing is about to start.
const wxDataViewItemAttr & | GetAttr () const
| Return the attribute to be used for rendering.
virtual wxSize | GetSize () const =0
| Return size required to show content.
virtual bool | GetValueFromEditorCtrl (wxWindow *editor, wxVariant &value)
| Override this so that the renderer can get the value from the editor control (pointed to by editor):
virtual bool | HasEditorCtrl () const
| Override this and make it return true in order to indicate that this renderer supports in-place editing.
virtual bool | LeftClick (wxPoint cursor, wxRect cell, wxDataViewModel *model, const wxDataViewItem &item, unsigned int col)
| Override this to react to a left click.
virtual bool | Activate (wxRect cell, wxDataViewModel *model, const wxDataViewItem &item, unsigned int col)
| Override this to react to the activation of a cell.
virtual bool | Render (wxRect cell, wxDC *dc, int state)=0
| Override this to render the cell.
void | RenderText (const wxString &text, int xoffset, wxRect cell, wxDC *dc, int state)
| This method should be called from within Render() whenever you need to render simple text.
virtual bool | StartDrag (const wxPoint &cursor, const wxRect &cell, wxDataViewModel *model, const wxDataViewItem &item, unsigned int col)
| Override this to start a drag operation.
Public Member Functions inherited from wxDataViewRenderer
| wxDataViewRenderer (const wxString &varianttype, wxDataViewCellMode mode=wxDATAVIEW_CELL_INERT, int align=wxDVR_DEFAULT_ALIGNMENT)
| Constructor.
void | EnableEllipsize (wxEllipsizeMode mode=wxELLIPSIZE_MIDDLE)
| Enable or disable replacing parts of the item text with ellipsis to make it fit the column width.
void | DisableEllipsize ()
| Disable replacing parts of the item text with ellipsis.
virtual int | GetAlignment () const
| Returns the alignment.
wxEllipsizeMode | GetEllipsizeMode () const
| Returns the ellipsize mode used by the renderer.
virtual wxDataViewCellMode | GetMode () const
| Returns the cell mode.
wxDataViewColumn * | GetOwner () const
| Returns pointer to the owning wxDataViewColumn.
virtual bool | GetValue (wxVariant &value) const =0
| This methods retrieves the value from the renderer in order to transfer the value back to the data model.
wxString | GetVariantType () const
| Returns a string with the type of the wxVariant supported by this renderer.
virtual void | SetAlignment (int align)
| Sets the alignment of the renderer's content.
void | SetOwner (wxDataViewColumn *owner)
| Sets the owning wxDataViewColumn.
virtual bool | SetValue (const wxVariant &value)=0
| Set the value of the renderer (and thus its cell) to value.
virtual bool | Validate (wxVariant &value)
| Before data is committed to the data model, it is passed to this method where it can be checked for validity.
virtual bool | StartEditing (const wxDataViewItem &item, wxRect labelRect)
virtual void | CancelEditing ()
virtual bool | FinishEditing ()
wxWindow * | GetEditorCtrl ()
Public Member Functions inherited from wxObject
| wxObject ()
| Default ctor; initializes to NULL the internal reference data.
| wxObject (const wxObject &other)
| Copy ctor.
virtual | ~wxObject ()
| Destructor.
virtual wxClassInfo * | GetClassInfo () const
| This virtual function is redefined for every class that requires run-time type information, when using the wxDECLARE_CLASS macro (or similar).
wxObjectRefData * | GetRefData () const
| Returns the wxObject::m_refData pointer, i.e. the data referenced by this object.
bool | IsKindOf (const wxClassInfo *info) const
| Determines whether this class is a subclass of (or the same class as) the given class.
bool | IsSameAs (const wxObject &obj) const
| Returns true if this object has the same data pointer as obj.
void | Ref (const wxObject &clone)
| Makes this object refer to the data in clone.
void | SetRefData (wxObjectRefData *data)
| Sets the wxObject::m_refData pointer.
void | UnRef ()
| Decrements the reference count in the associated data, and if it is zero, deletes the data.
void | UnShare ()
| This is the same of AllocExclusive() but this method is public.
void | operator delete (void *buf)
| The delete operator is defined for debugging versions of the library only, when the identifier `WXDEBUG` is defined.
void * | operator new (size_t size, const wxString &filename=NULL, int lineNum=0)
| The new operator is defined for debugging versions of the library only, when the identifier `WXDEBUG` is defined.

## Protected Member Functions
wxSize | GetTextExtent (const wxString &str) const
| Helper for GetSize() implementations, respects attributes.
Protected Member Functions inherited from wxDataViewRenderer
wxDataViewCtrl * | GetView () const
Protected Member Functions inherited from wxObject
void | AllocExclusive ()
| Ensure that this object's data is not shared with any other object.
virtual wxObjectRefData * | CreateRefData () const
| Creates a new instance of the wxObjectRefData-derived class specific to this object and returns it.
virtual wxObjectRefData * | CloneRefData (const wxObjectRefData *data) const
| Creates a new instance of the wxObjectRefData-derived class specific to this object and initializes it copying data.

## Additional Inherited Members
Protected Attributes inherited from wxObject
wxObjectRefData * | m_refData
| Pointer to an object which is the object's reference-counted data.

## Constructor & Destructor Documentation

wxDataViewCustomRenderer::wxDataViewCustomRenderer | ( | const wxString & | varianttype = `"string"`,
|  | wxDataViewCellMode | mode = `wxDATAVIEW_CELL_INERT`,
|  | int | align = `wxDVR_DEFAULT_ALIGNMENT`
| ) |  |

Constructor.

virtual wxDataViewCustomRenderer::~wxDataViewCustomRenderer | ( |  | ) |
| virtual

Destructor.

## Member Function Documentation

virtual bool wxDataViewCustomRenderer::Activate | ( | wxRect | cell,
|  | wxDataViewModel * | model,
|  | const wxDataViewItem & | item,
|  | unsigned int | col
| ) |  |
| virtual

Override this to react to the activation of a cell.

This method is deprecated, please use ActivateCell instead.

virtual bool wxDataViewCustomRenderer::ActivateCell | ( | const wxRect & | cell,
|  | wxDataViewModel * | model,
|  | const wxDataViewItem & | item,
|  | unsigned int | col,
|  | const wxMouseEvent * | mouseEvent
| ) |  |
| virtual

Override this to react to cell activation.

Activating a cell is an alternative to showing inline editor when the value can be edited in a simple way that doesn't warrant full editor control. The most typical use of cell activation is toggling the checkbox in wxDataViewToggleRenderer; others would be e.g. an embedded volume slider or a five-star rating column.

The exact means of activating a cell are platform-dependent, but they are usually similar to those used for inline editing of values. Typically, a cell would be activated by Space or Enter keys or by left mouse click.

This method will only be called if the cell has the wxDATAVIEW_CELL_ACTIVATABLE mode.

Parameters

  cell | Coordinates of the activated cell's area.
  model | The model to manipulate in response.
  item | Activated item.
  col | Activated column of item.
  mouseEvent | If the activation was triggered by mouse click, contains the corresponding event. Is NULL otherwise (for keyboard activation). Mouse coordinates are adjusted to be relative to the cell.

Since
  2.9.3

Note
  Do not confuse this method with item activation in wxDataViewCtrl and the wxEVT_DATAVIEW_ITEM_ACTIVATED event. That one is used for activating the item (or, to put it differently, the entire row) similarly to analogous messages in wxTreeCtrl and wxListCtrl, and the effect differs (play a song, open a file etc.). Cell activation, on the other hand, is all about interacting with the individual cell.

See Also
  CreateEditorCtrl()

virtual wxWindow* wxDataViewCustomRenderer::CreateEditorCtrl | ( | wxWindow * | parent,
|  | wxRect | labelRect,
|  | const wxVariant & | value
| ) |  |
| virtual

Override this to create the actual editor control once editing is about to start.

This method will only be called if the cell has the wxDATAVIEW_CELL_EDITABLE mode. Editing is typically triggered by slowly double-clicking the cell or by a platform-dependent keyboard shortcut (F2 is typical on Windows, Space and/or Enter is common elsewhere and supported on Windows too).

Parameters

  parent | The parent of the editor control.
  labelRect | Indicates the position and size of the editor control. The control should be created in place of the cell and labelRect should be respected as much as possible.
  value | Initial value of the editor.

An example:

{
long l = value;
return new wxSpinCtrl( parent, wxID_ANY, wxEmptyString,
labelRect.GetTopLeft(), labelRect.GetSize(), 0, 0, 100, l );
}

See Also
  ActivateCell()

Reimplemented from wxDataViewRenderer.

const wxDataViewItemAttr& wxDataViewCustomRenderer::GetAttr | ( |  | ) | const

Return the attribute to be used for rendering.

This function may be called from Render() implementation to use the attributes defined for the item if the renderer supports them.

Notice that when Render() is called, the wxDC object passed to it is already set up to use the correct attributes (e.g. its font is set to bold or italic version if wxDataViewItemAttr::GetBold() or GetItalic() returns true) so it may not be necessary to call it explicitly if you only want to render text using the items attributes.

Since
  2.9.1

virtual wxSize wxDataViewCustomRenderer::GetSize | ( |  | ) | const
| pure virtual

Return size required to show content.

wxSize wxDataViewCustomRenderer::GetTextExtent | ( | const wxString & | str | ) | const
| protected

Helper for GetSize() implementations, respects attributes.

virtual bool wxDataViewCustomRenderer::GetValueFromEditorCtrl | ( | wxWindow * | editor,
|  | wxVariant & | value
| ) |  |
| virtual

Override this so that the renderer can get the value from the editor control (pointed to by editor):

{
wxSpinCtrl *sc = (wxSpinCtrl*) editor;
long l = sc->GetValue();
value = l;
return true;
}

Reimplemented from wxDataViewRenderer.

virtual bool wxDataViewCustomRenderer::HasEditorCtrl | ( |  | ) | const
| virtual

Override this and make it return true in order to indicate that this renderer supports in-place editing.

Reimplemented from wxDataViewRenderer.

virtual bool wxDataViewCustomRenderer::LeftClick | ( | wxPoint | cursor,
|  | wxRect | cell,
|  | wxDataViewModel * | model,
|  | const wxDataViewItem & | item,
|  | unsigned int | col
| ) |  |
| virtual

Override this to react to a left click.

This method will only be called in `wxDATAVIEW_CELL_ACTIVATABLE` mode. This method is deprecated, please use ActivateCell instead.

virtual bool wxDataViewCustomRenderer::Render | ( | wxRect | cell,
|  | wxDC * | dc,
|  | int | state
| ) |  |
| pure virtual

Override this to render the cell.

Before this is called, wxDataViewRenderer::SetValue was called so that this instance knows what to render.

void wxDataViewCustomRenderer::RenderText | ( | const wxString & | text,
|  | int | xoffset,
|  | wxRect | cell,
|  | wxDC * | dc,
|  | int | state
| ) |  |

This method should be called from within Render() whenever you need to render simple text.

This will ensure that the correct colour, font and vertical alignment will be chosen so the text will look the same as text drawn by native renderers.

virtual bool wxDataViewCustomRenderer::StartDrag | ( | const wxPoint & | cursor,
|  | const wxRect & | cell,
|  | wxDataViewModel * | model,
|  | const wxDataViewItem & | item,
|  | unsigned int | col
| ) |  |
| virtual

Override this to start a drag operation.

Not yet supported.