+// -------------------------------------
+// MySpinCtrlInPlaceRenderer
+// -------------------------------------
+
+class MySpinCtrlInPlaceRenderer: public wxDataViewCustomRenderer
+{
+public:
+ MySpinCtrlInPlaceRenderer() :
+ wxDataViewCustomRenderer( wxT("long"), wxDATAVIEW_CELL_EDITABLE ) { }
+
+
+ virtual bool HasEditorCtrl()
+ {
+ return true;
+ }
+ virtual wxControl* CreateEditorCtrl( wxWindow *parent, wxRect labelRect, const wxVariant &value )
+ {
+ long l = value;
+ return new wxSpinCtrl( parent, wxID_ANY, wxEmptyString,
+ labelRect.GetTopLeft(), labelRect.GetSize(), -0, -1, 2010, l );
+ }
+ virtual bool GetValueFromEditorCtrl( wxControl* editor, wxVariant &value )
+ {
+ wxSpinCtrl *sc = (wxSpinCtrl*) editor;
+ long l = sc->GetValue();
+ value = l;
+ return true;
+ }
+
+ bool Render( wxRect rect, wxDC *dc, int WXUNUSED(state) )
+ {
+ wxString str;
+ str.Printf( wxT("%d"), (int) m_data );
+ dc->SetTextForeground( *wxBLACK );
+ dc->DrawText( str, rect.x, rect.y );
+ return true;
+ }
+ wxSize GetSize() const
+ {
+ return wxSize(80,16);
+ }
+ bool SetValue( const wxVariant &value )
+ {
+ m_data = value.GetLong();
+ return true;
+ }
+ bool GetValue( wxVariant &value ) const
+ {
+ value = m_data;
+ return true;
+ }
+
+private:
+ long m_data;
+};
+
+