X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/70884c6fc84177ba95da356c4aa4c63eb5a13983..a516284f67e1910fc6dc5364b289340332d0d35f:/include/wx/gtk/dvrenderers.h diff --git a/include/wx/gtk/dvrenderers.h b/include/wx/gtk/dvrenderers.h index 7f6cb0777e..2e05380324 100644 --- a/include/wx/gtk/dvrenderers.h +++ b/include/wx/gtk/dvrenderers.h @@ -3,7 +3,7 @@ // Purpose: All GTK wxDataViewCtrl renderer classes // Author: Robert Roebling, Vadim Zeitlin // Created: 2009-11-07 (extracted from wx/gtk/dataview.h) -// RCS-ID: $Id: wxhead.h,v 1.11 2009-06-29 10:23:04 zeitlin Exp $ +// RCS-ID: $Id$ // Copyright: (c) 2006 Robert Roebling // (c) 2009 Vadim Zeitlin // Licence: wxWindows licence @@ -44,6 +44,9 @@ public: virtual void SetAlignment( int align ); virtual bool GtkSupportsAttrs() const { return true; } + virtual bool GtkSetAttr(const wxDataViewItemAttr& attr); + + virtual GtkCellRendererText *GtkGetTextRenderer() const; protected: // implementation of Set/GetValue() @@ -114,24 +117,51 @@ public: wxDC *dc, int state); -protected: + // store GTK render call parameters for possible later use + void GTKStashRenderParams(GdkWindow *window, + GtkWidget *widget, + GdkRectangle *background_area, + GdkRectangle *expose_area, + int flags) + { + m_renderParams.window = window; + m_renderParams.widget = widget; + m_renderParams.background_area = background_area; + m_renderParams.expose_area = expose_area; + m_renderParams.flags = flags; + } + + // we may or not support attributes, as we don't know it, return true to + // make it possible to use them + virtual bool GtkSupportsAttrs() const { return true; } + + virtual bool GtkSetAttr(const wxDataViewItemAttr& attr) + { + SetAttr(attr); + return !attr.IsDefault(); + } + virtual GtkCellRendererText *GtkGetTextRenderer() const; + +protected: bool Init(wxDataViewCellMode mode, int align); private: wxDC *m_dc; -public: - // Internal, temporary for RenderText. - GtkCellRenderer *m_text_renderer; - GdkWindow *window; - GtkWidget *widget; - GdkRectangle *background_area; - GdkRectangle *cell_area; - GdkRectangle *expose_area; - int flags; + GtkCellRendererText *m_text_renderer; + + // parameters of the original render() call stored so that we could pass + // them forward to m_text_renderer if our RenderText() is called + struct GTKRenderParams + { + GdkWindow *window; + GtkWidget *widget; + GdkRectangle *background_area; + GdkRectangle *expose_area; + int flags; + } m_renderParams; -protected: DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer) }; @@ -209,7 +239,7 @@ public: virtual bool Render( wxRect cell, wxDC *dc, int state ); virtual wxSize GetSize() const; - virtual bool Activate( wxRect cell, + virtual bool Activate( const wxRect& cell, wxDataViewModel *model, const wxDataViewItem &item, unsigned int col ); @@ -238,10 +268,33 @@ public: void SetAlignment( int align ); + wxString GetChoice(size_t index) const { return m_choices[index]; } + const wxArrayString& GetChoices() const { return m_choices; } + private: wxArrayString m_choices; wxString m_data; }; +// ---------------------------------------------------------------------------- +// wxDataViewChoiceByIndexRenderer +// ---------------------------------------------------------------------------- + +class WXDLLIMPEXP_ADV wxDataViewChoiceByIndexRenderer: public wxDataViewChoiceRenderer +{ +public: + wxDataViewChoiceByIndexRenderer( const wxArrayString &choices, + wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE, + int alignment = wxDVR_DEFAULT_ALIGNMENT ); + + virtual bool SetValue( const wxVariant &value ); + virtual bool GetValue( wxVariant &value ) const; + +private: + virtual void GtkOnTextEdited(const gchar *itempath, const wxString& str); +}; + + + #endif // _WX_GTK_DVRENDERERS_H_