119e862ca9
Changing the value of a "choice" cell in wxDataViewCtrl didn't work correctly in wxOSX/Cocoa because wxDataViewChoiceRenderer used the base class version of OSXOnCellChanged() which passed the integer index we received from NSOutlineView to the model instead of the expected string. Fix this by overriding OSXOnCellChanged() in wxDataViewChoiceRenderer itself and using its argument as an integer index of the selection because this is what it is, at least under OS X 10.7. Closes #14373. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71939 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
214 lines
6.7 KiB
C++
214 lines
6.7 KiB
C++
///////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/osx/dvrenderers.h
|
|
// Purpose: All OS X wxDataViewCtrl renderer classes
|
|
// Author: Vadim Zeitlin
|
|
// Created: 2009-11-07 (extracted from wx/osx/dataview.h)
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) 2009 Vadim Zeitlin <vadim@wxwidgets.org>
|
|
// Licence: wxWindows licence
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_OSX_DVRENDERERS_H_
|
|
#define _WX_OSX_DVRENDERERS_H_
|
|
|
|
// ---------------------------------------------------------
|
|
// wxDataViewCustomRenderer
|
|
// ---------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_ADV wxDataViewCustomRenderer : public wxDataViewCustomRendererBase
|
|
{
|
|
public:
|
|
wxDataViewCustomRenderer(const wxString& varianttype = "string",
|
|
wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
|
|
int align = wxDVR_DEFAULT_ALIGNMENT);
|
|
|
|
virtual ~wxDataViewCustomRenderer();
|
|
|
|
|
|
// implementation only
|
|
// -------------------
|
|
|
|
virtual bool MacRender();
|
|
|
|
#if wxOSX_USE_COCOA
|
|
virtual void OSXApplyAttr(const wxDataViewItemAttr& attr);
|
|
#endif // Cocoa
|
|
|
|
virtual wxDC* GetDC(); // creates a device context and keeps it
|
|
void SetDC(wxDC* newDCPtr); // this method takes ownership of the pointer
|
|
|
|
private:
|
|
wxControl* m_editorCtrlPtr; // pointer to an in-place editor control
|
|
|
|
wxDC* m_DCPtr;
|
|
|
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewCustomRenderer)
|
|
};
|
|
|
|
// ---------------------------------------------------------
|
|
// wxDataViewTextRenderer
|
|
// ---------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_ADV wxDataViewTextRenderer: public wxDataViewRenderer
|
|
{
|
|
public:
|
|
wxDataViewTextRenderer(const wxString& varianttype = "string",
|
|
wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
|
|
int align = wxDVR_DEFAULT_ALIGNMENT);
|
|
|
|
virtual bool MacRender();
|
|
|
|
#if wxOSX_USE_COCOA
|
|
virtual void OSXOnCellChanged(NSObject *value,
|
|
const wxDataViewItem& item,
|
|
unsigned col);
|
|
#endif // Cocoa
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextRenderer)
|
|
};
|
|
|
|
// ---------------------------------------------------------
|
|
// wxDataViewBitmapRenderer
|
|
// ---------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_ADV wxDataViewBitmapRenderer: public wxDataViewRenderer
|
|
{
|
|
public:
|
|
wxDataViewBitmapRenderer(const wxString& varianttype = "wxBitmap",
|
|
wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
|
|
int align = wxDVR_DEFAULT_ALIGNMENT);
|
|
|
|
virtual bool MacRender();
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewBitmapRenderer)
|
|
};
|
|
|
|
#if wxOSX_USE_COCOA
|
|
|
|
// -------------------------------------
|
|
// wxDataViewChoiceRenderer
|
|
// -------------------------------------
|
|
|
|
class WXDLLIMPEXP_ADV wxDataViewChoiceRenderer: public wxDataViewRenderer
|
|
{
|
|
public:
|
|
wxDataViewChoiceRenderer(const wxArrayString& choices,
|
|
wxDataViewCellMode mode = wxDATAVIEW_CELL_EDITABLE,
|
|
int alignment = wxDVR_DEFAULT_ALIGNMENT );
|
|
|
|
virtual bool MacRender();
|
|
|
|
wxString GetChoice(size_t index) const { return m_choices[index]; }
|
|
const wxArrayString& GetChoices() const { return m_choices; }
|
|
|
|
#if wxOSX_USE_COCOA
|
|
virtual void OSXOnCellChanged(NSObject *value,
|
|
const wxDataViewItem& item,
|
|
unsigned col);
|
|
#endif // Cocoa
|
|
|
|
private:
|
|
wxArrayString m_choices;
|
|
|
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewChoiceRenderer)
|
|
};
|
|
|
|
#endif // wxOSX_USE_COCOA
|
|
|
|
// ---------------------------------------------------------
|
|
// wxDataViewIconTextRenderer
|
|
// ---------------------------------------------------------
|
|
class WXDLLIMPEXP_ADV wxDataViewIconTextRenderer: public wxDataViewRenderer
|
|
{
|
|
public:
|
|
wxDataViewIconTextRenderer(const wxString& varianttype = "wxDataViewIconText",
|
|
wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
|
|
int align = wxDVR_DEFAULT_ALIGNMENT);
|
|
|
|
virtual bool MacRender();
|
|
|
|
#if wxOSX_USE_COCOA
|
|
virtual void OSXOnCellChanged(NSObject *value,
|
|
const wxDataViewItem& item,
|
|
unsigned col);
|
|
#endif // Cocoa
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewIconTextRenderer)
|
|
};
|
|
|
|
// ---------------------------------------------------------
|
|
// wxDataViewToggleRenderer
|
|
// ---------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_ADV wxDataViewToggleRenderer: public wxDataViewRenderer
|
|
{
|
|
public:
|
|
wxDataViewToggleRenderer(const wxString& varianttype = "bool",
|
|
wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
|
|
int align = wxDVR_DEFAULT_ALIGNMENT);
|
|
|
|
virtual bool MacRender();
|
|
|
|
#if wxOSX_USE_COCOA
|
|
virtual void OSXOnCellChanged(NSObject *value,
|
|
const wxDataViewItem& item,
|
|
unsigned col);
|
|
#endif // Cocoa
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewToggleRenderer)
|
|
};
|
|
|
|
// ---------------------------------------------------------
|
|
// wxDataViewProgressRenderer
|
|
// ---------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_ADV wxDataViewProgressRenderer: public wxDataViewRenderer
|
|
{
|
|
public:
|
|
wxDataViewProgressRenderer(const wxString& label = wxEmptyString,
|
|
const wxString& varianttype = "long",
|
|
wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT,
|
|
int align = wxDVR_DEFAULT_ALIGNMENT);
|
|
|
|
virtual bool MacRender();
|
|
|
|
#if wxOSX_USE_COCOA
|
|
virtual void OSXOnCellChanged(NSObject *value,
|
|
const wxDataViewItem& item,
|
|
unsigned col);
|
|
#endif // Cocoa
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewProgressRenderer)
|
|
};
|
|
|
|
// ---------------------------------------------------------
|
|
// wxDataViewDateRenderer
|
|
// ---------------------------------------------------------
|
|
|
|
class WXDLLIMPEXP_ADV wxDataViewDateRenderer: public wxDataViewRenderer
|
|
{
|
|
public:
|
|
wxDataViewDateRenderer(const wxString& varianttype = "datetime",
|
|
wxDataViewCellMode mode = wxDATAVIEW_CELL_ACTIVATABLE,
|
|
int align = wxDVR_DEFAULT_ALIGNMENT);
|
|
|
|
virtual bool MacRender();
|
|
|
|
#if wxOSX_USE_COCOA
|
|
virtual void OSXOnCellChanged(NSObject *value,
|
|
const wxDataViewItem& item,
|
|
unsigned col);
|
|
#endif // Cocoa
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewDateRenderer)
|
|
};
|
|
|
|
#endif // _WX_OSX_DVRENDERERS_H_
|
|
|