\section{\class{wxDataViewRenderer}}\label{wxdataviewrenderer} This class is used by \helpref{wxDataViewCtrl}{wxdataviewctrl} to render the individual cells. One instance of a renderer class is owned by \helpref{wxDataViewColumn}{wxdataviewcolumn}. There is a number of ready-to-use renderers provided: \helpref{wxDataViewTextRenderer}{wxdataviewtextrenderer}, \helpref{wxDataViewTextRendererAttr}{wxdataviewtextrendererattr}, \helpref{wxDataViewIconTextRenderer}{wxdataviewicontextrenderer}, \helpref{wxDataViewToggleRenderer}{wxdataviewtogglerenderer}, \helpref{wxDataViewProgressRenderer}{wxdataviewprogressrenderer}, \helpref{wxDataViewBitmapRenderer}{wxdataviewbitmaprenderer}, \helpref{wxDataViewDateRenderer}{wxdataviewdaterenderer}. \helpref{wxDataViewSpinRenderer}{wxdataviewspinrenderer}. Additionally, the user can write own renderers by deriving from \helpref{wxDataViewCustomRenderer}{wxdataviewcustomrenderer}. The {\it wxDataViewCellMode} flag controls, what actions the cell data allows. {\it wxDATAVIEW\_CELL\_ACTIVATABLE} indicates that the user can double click the cell and something will happen (e.g. a window for editing a date will pop up). {\it wxDATAVIEW\_CELL\_EDITABLE} indicates that the user can edit the data in-place, i.e. an control will show up after a slow click on the cell. This behaviour is best known from changing the filename in most file managers etc. {\small \begin{verbatim} enum wxDataViewCellMode { wxDATAVIEW_CELL_INERT, wxDATAVIEW_CELL_ACTIVATABLE, wxDATAVIEW_CELL_EDITABLE }; \end{verbatim} } The {\it wxDataViewCellRenderState} flag controls how the the renderer should display its contents in a cell: {\small \begin{verbatim} enum wxDataViewCellRenderState { wxDATAVIEW_CELL_SELECTED = 1, wxDATAVIEW_CELL_PRELIT = 2, wxDATAVIEW_CELL_INSENSITIVE = 4, wxDATAVIEW_CELL_FOCUSED = 8 }; \end{verbatim} } \wxheading{Derived from} \helpref{wxObject}{wxobject} \wxheading{Include files} \wxheading{Library} \helpref{wxAdv}{librarieslist} \latexignore{\rtfignore{\wxheading{Members}}} \membersection{wxDataViewRenderer::wxDataViewRenderer}\label{wxdataviewrendererwxdataviewrenderer} \func{}{wxDataViewRenderer}{\param{const wxString\& }{varianttype}, \param{wxDataViewCellMode }{mode = wxDATAVIEW\_CELL\_INERT}, \param{int }{alignment = wxALIGN\_LEFT|wxALIGN\_CENTRE\_VERTICAL}} Constructor. \membersection{wxDataViewRenderer::GetMode}\label{wxdataviewrenderergetmode} \func{virtual wxDataViewCellMode}{GetMode}{\void} Returns the cell mode. \membersection{wxDataViewRenderer::GetOwner}\label{wxdataviewrenderergetowner} \func{virtual wxDataViewColumn*}{GetOwner}{\void} Returns pointer to the owning \helpref{wxDataViewColumn}{wxdataviewcolumn}. \membersection{wxDataViewRenderer::GetValue}\label{wxdataviewrenderergetvalue} \func{virtual bool}{GetValue}{\param{wxVariant\& }{value}} This methods retrieves the value from the renderer in order to transfer the value back to the data model. Returns {\it false} on failure. \membersection{wxDataViewRenderer::GetVariantType}\label{wxdataviewrenderergetvarianttype} \func{virtual wxString}{GetVariantType}{\void} Returns a string with the type of the \helpref{wxVariant}{wxvariant} supported by this renderer. \membersection{wxDataViewRenderer::SetOwner}\label{wxdataviewrenderersetowner} \func{virtual void}{SetOwner}{\param{wxDataViewColumn* }{owner}} Sets the owning \helpref{wxDataViewColumn}{wxdataviewcolumn}. This is usually called from within wxDataViewColumn. \membersection{wxDataViewRenderer::SetValue}\label{wxdataviewrenderersetvalue} \func{virtual bool}{SetValue}{\param{const wxVariant\& }{value}} Set the value of the renderer (and thus its cell) to {\it value}. The internal code will then render this cell with this data. \membersection{wxDataViewRenderer::Validate}\label{wxdataviewrenderervalidate} \func{virtual bool}{Validate}{\param{wxVariant\& }{value}} Before data is committed to the data model, it is passed to this method where it can be checked for validity. This can also be used for checking a valid range or limiting the user input in a certain aspect (e.g. max number of characters or only alphanumeric input, ASCII only etc.). Return {\it false} if the value is not valid. Please note that due to implementation limitations, this validation is done after the editing control already is destroyed and the editing process finished. \section{\class{wxDataViewTextRenderer}}\label{wxdataviewtextrenderer} wxDataViewTextRenderer is used for rendering text. It supports in-place editing if desired. \wxheading{Derived from} \helpref{wxDataViewRenderer}{wxdataviewrenderer}\\ \helpref{wxObject}{wxobject} \wxheading{Include files} \wxheading{Library} \helpref{wxAdv}{librarieslist} \latexignore{\rtfignore{\wxheading{Members}}} \membersection{wxDataViewTextRenderer::wxDataViewTextRenderer}\label{wxdataviewtextrendererwxdataviewtextrenderer} \func{}{wxDataViewTextRenderer}{\param{const wxString\& }{varianttype = "string"}, \param{wxDataViewCellMode }{mode = wxDATAVIEW\_CELL\_INERT}} \section{\class{wxDataViewTextRendererAttr}}\label{wxdataviewtextrendererattr} The same as \helpref{wxDataViewTextRenderer}{wxdataviewtextrenderer} but with support for font attributes. Font attributes are currently only supported under GTK+ and MSW. See also \helpref{wxDataViewModel::GetAttr}{wxdataviewmodelgetattr} and \helpref{wxDataViewItemAttr}{wxdataviewitemattr}. \wxheading{Derived from} \helpref{wxDataViewTextRenderer}{wxdataviewtextrenderer} \wxheading{Include files} \wxheading{Library} \helpref{wxAdv}{librarieslist} \wxheading{Data structures} \latexignore{\rtfignore{\wxheading{Members}}} \membersection{wxDataViewTextRendererAttr::wxDataViewTextRendererAttr}\label{wxdataviewtextrendererattrwxdataviewtextrendererattr} \func{}{wxDataViewTextRendererAttr}{\param{const wxString\& }{varianttype = "string"}, \param{wxDataViewCellMode }{mode = wxDATAVIEW\_CELL\_INERT}, \param{int }{align = wxDVR\_DEFAULT\_ALIGNMENT}} \section{\class{wxDataViewProgressRenderer}}\label{wxdataviewprogressrenderer} wxDataViewProgressRenderer \wxheading{Derived from} \helpref{wxDataViewRenderer}{wxdataviewrenderer}\\ \helpref{wxObject}{wxobject} \wxheading{Include files} \wxheading{Library} \helpref{wxAdv}{librarieslist} \latexignore{\rtfignore{\wxheading{Members}}} \membersection{wxDataViewProgressRenderer::wxDataViewProgressRenderer}\label{wxdataviewprogressrendererwxdataviewprogressrenderer} \func{}{wxDataViewProgressRenderer}{\param{const wxString\& }{label = wxEmptyString}, \param{const wxString\& }{varianttype = long"}, \param{wxDataViewCellMode }{mode = wxDATAVIEW\_CELL\_INERT}} \section{\class{wxDataViewIconText}}\label{wxdataviewicontext} wxDataViewIconText is used by \helpref{wxDataViewIconTextRenderer}{wxdataviewicontextrenderer} for data transfer. This class can be converted to a from a \helpref{wxVariant}{wxvariant}. \wxheading{Derived from} \helpref{wxObject}{wxobject} \wxheading{Include files} \membersection{wxDataViewIconText::wxDataViewIconText}\label{wxdataviewicontextwxdataviewicontext} \func{}{wxDataViewIconText}{\param{const wxString\& }{text = wxEmptyString}, \param{const wxIcon\& }{icon = wxNullIcon}} \func{}{wxDataViewIconText}{\param{const wxDataViewIconText\& }{other}} Constructor. \membersection{wxDataViewIconText::GetIcon}\label{wxdataviewicontextgeticon} \constfunc{const wxIcon\&}{GetIcon}{\void} Gets the icon. \membersection{wxDataViewIconText::GetText}\label{wxdataviewicontextgettext} \constfunc{wxString}{GetText}{\void} Gets the text. \membersection{wxDataViewIconText::SetIcon}\label{wxdataviewicontextseticon} \func{void}{SetIcon}{\param{const wxIcon\& }{icon}} Set the icon. \membersection{wxDataViewIconText::SetText}\label{wxdataviewicontextsettext} \func{void}{SetText}{\param{const wxString\& }{text}} Set the text. \section{\class{wxDataViewIconTextRenderer}}\label{wxdataviewicontextrenderer} The wxDataViewIconTextRenderer class is used to display text with a small icon next to it as it is typically done in a file manager. This classes uses the \helpref{wxDataViewIconText}{wxdataviewicontext} helper class to store its data. wxDataViewIonText can be converted to a from a \helpref{wxVariant}{wxvariant} using the left shift operator. \wxheading{Derived from} \helpref{wxDataViewRenderer}{wxdataviewrenderer}\\ \helpref{wxObject}{wxobject} \wxheading{Include files} \wxheading{Library} \helpref{wxAdv}{librarieslist} \latexignore{\rtfignore{\wxheading{Members}}} \membersection{wxDataViewIconTextRenderer::wxDataViewIconTextRenderer}\label{wxdataviewtogglerendererwxdataviewicontextrenderer} \func{}{wxDataViewIconTextRenderer}{\param{const wxString\& }{varianttype = "wxDataViewIconText"}, \param{wxDataViewCellMode }{mode = wxDATAVIEW\_CELL\_INERT}} \section{\class{wxDataViewToggleRenderer}}\label{wxdataviewtogglerenderer} wxDataViewToggleRenderer \wxheading{Derived from} \helpref{wxDataViewRenderer}{wxdataviewrenderer}\\ \helpref{wxObject}{wxobject} \wxheading{Include files} \wxheading{Library} \helpref{wxAdv}{librarieslist} \latexignore{\rtfignore{\wxheading{Members}}} \membersection{wxDataViewToggleRenderer::wxDataViewToggleRenderer}\label{wxdataviewtogglerendererwxdataviewtogglerenderer} \func{}{wxDataViewToggleRenderer}{\param{const wxString\& }{varianttype = "bool"}, \param{wxDataViewCellMode }{mode = wxDATAVIEW\_CELL\_INERT}} \section{\class{wxDataViewBitmapRenderer}}\label{wxdataviewbitmaprenderer} wxDataViewBitmapRenderer \wxheading{Derived from} \helpref{wxDataViewRenderer}{wxdataviewrenderer}\\ \helpref{wxObject}{wxobject} \wxheading{Include files} \wxheading{Library} \helpref{wxAdv}{librarieslist} \latexignore{\rtfignore{\wxheading{Members}}} \membersection{wxDataViewBitmapRenderer::wxDataViewBitmapRenderer}\label{wxdataviewbitmaprendererwxdataviewbitmaprenderer} \func{}{wxDataViewBitmapRenderer}{\param{const wxString\& }{varianttype = "wxBitmap"}, \param{wxDataViewCellMode }{mode = wxDATAVIEW\_CELL\_INERT}} \section{\class{wxDataViewDateRenderer}}\label{wxdataviewdaterenderer} wxDataViewDateRenderer \wxheading{Derived from} \helpref{wxDataViewRenderer}{wxdataviewrenderer}\\ \helpref{wxObject}{wxobject} \wxheading{Include files} \wxheading{Library} \helpref{wxAdv}{librarieslist} \latexignore{\rtfignore{\wxheading{Members}}} \membersection{wxDataViewDateRenderer::wxDataViewDateRenderer}\label{wxdataviewdaterendererwxdataviewdaterenderer} \func{}{wxDataViewDateRenderer}{\param{const wxString\& }{varianttype = "datetime"}, \param{wxDataViewCellMode }{mode = wxDATAVIEW\_CELL\_ACTIVATABLE}} \section{\class{wxDataViewCustomRenderer}}\label{wxdataviewcustomrenderer} You need to derive a new class from wxDataViewCustomRenderer in order to write a new renderer. You need to override at least \helpref{SetValue}{wxdataviewrenderersetvalue}, \helpref{GetValue}{wxdataviewrenderergetvalue}, \helpref{GetSize}{wxdataviewcustomrenderergetsize} and \helpref{Render}{wxdataviewcustomrendererrender}. If you want your renderer to support in-place editing then you also need to override \helpref{HasEditorCtrl}{wxdataviewcustomrendererhaseditorctrl}, \helpref{CreateEditorCtrl}{wxdataviewcustomrenderercreateeditorctrl} and \helpref{GetValueFromEditorCtrl}{wxdataviewcustomrenderergetvaluefromeditorctrl}. Note that a special event handler will be pushed onto that editor control which handles and focus out events in order to end the editing. \wxheading{Derived from} \helpref{wxDataViewRenderer}{wxdataviewrenderer}\\ \helpref{wxObject}{wxobject} \wxheading{Include files} \wxheading{Library} \helpref{wxAdv}{librarieslist} \latexignore{\rtfignore{\wxheading{Members}}} \membersection{wxDataViewCustomRenderer::wxDataViewCustomRenderer}\label{wxdataviewcustomrendererwxdataviewcustomrenderer} \func{}{wxDataViewCustomRenderer}{\param{const wxString\& }{varianttype = "string"}, \param{wxDataViewCellMode }{mode = wxDATAVIEW\_CELL\_INERT}, \param{bool }{no\_init = false}} Constructor. \membersection{wxDataViewCustomRenderer::\destruct{wxDataViewCustomRenderer}}\label{wxdataviewcustomrendererdtor} \func{}{\destruct{wxDataViewCustomRenderer}}{\void} Destructor. \membersection{wxDataViewCustomRenderer::HasEditorCtrl}\label{wxdataviewcustomrendererhaseditorctrl} \func{virtual bool}{HasEditorCtrl}{\void} Override this and make it return {\it true} in order to indicate that this renderer supports in-place editing. \membersection{wxDataViewCustomRenderer::CreateEditorCtrl}\label{wxdataviewcustomrenderercreateeditorctrl} \func{virtual wxControl*}{CreateEditorCtrl}{\param{wxWindow *}{parent}, \param{wxRect }{labelRect}, \param{const wxVariant \& }{value}} Override this to create the actual editor control once editing is about to start. {\it parent} is the parent of the editor control, {\it labelRect} indicates the position and size of the editor control and {\it value} is its initial value: {\small \begin{verbatim} { long l = value; return new wxSpinCtrl( parent, wxID_ANY, wxEmptyString, labelRect.GetTopLeft(), labelRect.GetSize(), 0, 0, 100, l ); } \end{verbatim} } \membersection{wxDataViewCustomRenderer::GetValueFromEditorCtrl}\label{wxdataviewcustomrenderergetvaluefromeditorctrl} \func{virtual bool}{GetValueFromEditorCtrl}{\param{wxControl* }{editor}, \param{wxVariant \& }{value}} Overrride this so that the renderer can get the value from the editor control (pointed to by {\it editor}): {\small \begin{verbatim} { wxSpinCtrl *sc = (wxSpinCtrl*) editor; long l = sc->GetValue(); value = l; return true; } \end{verbatim} } \membersection{wxDataViewCustomRenderer::Activate}\label{wxdataviewcustomrendereractivate} \func{virtual bool}{Activate}{\param{wxRect }{cell}, \param{wxDataViewModel* }{model}, \param{unsigned int }{col}, \param{unsigned int }{row}} Override this to react to double clicks or . \membersection{wxDataViewCustomRenderer::GetDC}\label{wxdataviewcustomrenderergetdc} \func{virtual wxDC*}{GetDC}{\void} Create DC on request. Internal. \membersection{wxDataViewCustomRenderer::GetSize}\label{wxdataviewcustomrenderergetsize} \func{virtual wxSize}{GetSize}{\void} Return size required to show content. \membersection{wxDataViewCustomRenderer::LeftClick}\label{wxdataviewcustomrendererleftclick} \func{virtual bool}{LeftClick}{\param{wxPoint }{cursor}, \param{wxRect }{cell}, \param{wxDataViewModel* }{model}, \param{unsigned int }{col}, \param{unsigned int }{row}} Overrride this to react to a left click. \membersection{wxDataViewCustomRenderer::Render}\label{wxdataviewcustomrendererrender} \func{virtual bool}{Render}{\param{wxRect }{cell}, \param{wxDC* }{dc}, \param{int }{state}} Override this to render the cell. Before this is called, \helpref{SetValue}{wxdataviewrenderersetvalue} was called so that this instance knows what to render. \membersection{wxDataViewCustomRenderer::RenderText}\label{wxdataviewcustomrendererrender} \func{bool}{RenderText}{\param{const wxString\& }{text}, \param{int }{xoffset}, \param{wxRect }{cell}, \param{wxDC* }{dc}, \param{int }{state}} This method should be called from within \helpref{Render}{wxdataviewcustomrendererrender} 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. \membersection{wxDataViewCustomRenderer::RightClick}\label{wxdataviewcustomrendererrightclick} \func{virtual bool}{RightClick}{\param{wxPoint }{cursor}, \param{wxRect }{cell}, \param{wxDataViewModel* }{model}, \param{unsigned int }{col}, \param{unsigned int }{row}} Overrride this to react to a right click. \membersection{wxDataViewCustomRenderer::StartDrag}\label{wxdataviewcustomrendererstartdrag} \func{virtual bool}{StartDrag}{\param{wxPoint }{cursor}, \param{wxRect }{cell}, \param{wxDataViewModel* }{model}, \param{unsigned int }{col}, \param{unsigned int }{row}} Overrride this to start a drag operation. \section{\class{wxDataViewSpinRenderer}}\label{wxdataviewspinrenderer} This is a specialized renderer for rendering integer values. It supports modifying the values in-place by using a wxSpinCtrl. The renderer only support variants of type {\it long}. \wxheading{Derived from} \helpref{wxDataViewCustomRenderer}{wxdataviewcustomrenderer} \wxheading{Include files} \wxheading{Data structures} \latexignore{\rtfignore{\wxheading{Members}}} \membersection{wxDataViewSpinRenderer::wxDataViewSpinRenderer}\label{wxdataviewspinrendererwxdataviewspinrenderer} \func{}{wxDataViewSpinRenderer}{\param{int }{min}, \param{int }{max}, \param{wxDataViewCellMode }{mode = wxDATAVIEW\_CELL\_EDITABLE}, \param{int }{alignment = wxDVR\_DEFAULT\_ALIGNMENT}} Constructor. {\it min} and {\it max} indicate the minimum und maximum values of for the wxSpinCtrl.