]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/gtk/dvrenderers.h
synchronize GTK2 minimum version in docs
[wxWidgets.git] / include / wx / gtk / dvrenderers.h
index 3aa702914475ac4d5c35a9d78c189018e2d308ce..9901bec0cba698be4210acc43dc74f1c6aa9e41c 100644 (file)
 #ifndef _WX_GTK_DVRENDERERS_H_
 #define _WX_GTK_DVRENDERERS_H_
 
-typedef struct _GdkRectangle GdkRectangle;
+#ifdef __WXGTK3__
+    typedef struct _cairo_rectangle_int cairo_rectangle_int_t;
+    typedef cairo_rectangle_int_t GdkRectangle;
+#else
+    typedef struct _GdkRectangle GdkRectangle;
+#endif
 
 // ---------------------------------------------------------
 // wxDataViewTextRenderer
@@ -117,18 +122,12 @@ public:
                             wxDC *dc,
                             int state);
 
+    struct GTKRenderParams;
+
     // store GTK render call parameters for possible later use
-    void GTKStashRenderParams(GdkWindow *window,
-                              GtkWidget *widget,
-                              GdkRectangle *background_area,
-                              GdkRectangle *expose_area,
-                              int flags)
+    void GTKSetRenderParams(GTKRenderParams* renderParams)
     {
-        m_renderParams.window = window;
-        m_renderParams.widget = widget;
-        m_renderParams.background_area = background_area;
-        m_renderParams.expose_area = expose_area;
-        m_renderParams.flags = flags;
+        m_renderParams = renderParams;
     }
 
     // we may or not support attributes, as we don't know it, return true to
@@ -147,20 +146,17 @@ protected:
     bool Init(wxDataViewCellMode mode, int align);
 
 private:
+    // Called from GtkGetTextRenderer() to really create the renderer if
+    // necessary.
+    void GtkInitTextRenderer();
+
     wxDC        *m_dc;
 
     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;
+    GTKRenderParams* m_renderParams;
 
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer)
 };
@@ -185,9 +181,17 @@ public:
     virtual wxSize GetSize() const;
 
 private:
+    void GTKSetLabel();
+
     wxString    m_label;
     int         m_value;
 
+#if !wxUSE_UNICODE
+    // Flag used to indicate that we need to set the label because we were
+    // unable to do it in the ctor (see comments there).
+    bool m_needsToSetLabel;
+#endif // !wxUSE_UNICODE
+
 protected:
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressRenderer)
 };
@@ -223,34 +227,6 @@ private:
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewIconTextRenderer)
 };
 
-// ---------------------------------------------------------
-// wxDataViewDateRenderer
-// ---------------------------------------------------------
-
-class WXDLLIMPEXP_ADV wxDataViewDateRenderer: public wxDataViewCustomRenderer
-{
-public:
-    wxDataViewDateRenderer( const wxString &varianttype = "datetime",
-                            wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE,
-                            int align = wxDVR_DEFAULT_ALIGNMENT );
-
-    bool SetValue( const wxVariant &value );
-    bool GetValue( wxVariant &value ) const;
-
-    virtual bool Render( wxRect cell, wxDC *dc, int state );
-    virtual wxSize GetSize() const;
-    virtual bool Activate( wxRect cell,
-                           wxDataViewModel *model,
-                           const wxDataViewItem &item,
-                           unsigned int col );
-
-private:
-    wxDateTime    m_date;
-
-protected:
-    DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewDateRenderer)
-};
-
 // -------------------------------------
 // wxDataViewChoiceRenderer
 // -------------------------------------
@@ -276,5 +252,25 @@ private:
     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 char *itempath, const wxString& str);
+};
+
+
+
 #endif // _WX_GTK_DVRENDERERS_H_