Several wxBitmapDataCell changes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41540 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -24,7 +24,7 @@
|
|||||||
|
|
||||||
#if defined(__WXGTK20__)
|
#if defined(__WXGTK20__)
|
||||||
// for testing
|
// for testing
|
||||||
// #define wxUSE_GENERICDATAVIEWCTRL 1
|
#define wxUSE_GENERICDATAVIEWCTRL 1
|
||||||
#elif defined(__WXMAC__)
|
#elif defined(__WXMAC__)
|
||||||
#define wxUSE_GENERICDATAVIEWCTRL 1
|
#define wxUSE_GENERICDATAVIEWCTRL 1
|
||||||
#else
|
#else
|
||||||
|
@@ -15,6 +15,7 @@
|
|||||||
#include "wx/list.h"
|
#include "wx/list.h"
|
||||||
#include "wx/control.h"
|
#include "wx/control.h"
|
||||||
#include "wx/scrolwin.h"
|
#include "wx/scrolwin.h"
|
||||||
|
#include "wx/icon.h"
|
||||||
|
|
||||||
// ---------------------------------------------------------
|
// ---------------------------------------------------------
|
||||||
// classes
|
// classes
|
||||||
@@ -109,6 +110,30 @@ protected:
|
|||||||
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextCell)
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewTextCell)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
// wxDataViewBitmapCell
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
|
class WXDLLIMPEXP_ADV wxDataViewBitmapCell: public wxDataViewCustomCell
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxDataViewBitmapCell( const wxString &varianttype = wxT("wxBitmap"),
|
||||||
|
wxDataViewCellMode mode = wxDATAVIEW_CELL_INERT );
|
||||||
|
|
||||||
|
bool SetValue( const wxVariant &value );
|
||||||
|
bool GetValue( wxVariant &value );
|
||||||
|
|
||||||
|
bool Render( wxRect cell, wxDC *dc, int state );
|
||||||
|
wxSize GetSize();
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxIcon m_icon;
|
||||||
|
wxBitmap m_bitmap;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
DECLARE_DYNAMIC_CLASS_NO_COPY(wxDataViewBitmapCell)
|
||||||
|
};
|
||||||
|
|
||||||
// ---------------------------------------------------------
|
// ---------------------------------------------------------
|
||||||
// wxDataViewToggleCell
|
// wxDataViewToggleCell
|
||||||
// ---------------------------------------------------------
|
// ---------------------------------------------------------
|
||||||
|
@@ -35,6 +35,7 @@
|
|||||||
#include "wx/calctrl.h"
|
#include "wx/calctrl.h"
|
||||||
#include "wx/popupwin.h"
|
#include "wx/popupwin.h"
|
||||||
#include "wx/renderer.h"
|
#include "wx/renderer.h"
|
||||||
|
#include "wx/icon.h"
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// classes
|
// classes
|
||||||
@@ -298,7 +299,7 @@ wxDataViewCustomCell::wxDataViewCustomCell( const wxString &varianttype,
|
|||||||
// wxDataViewTextCell
|
// wxDataViewTextCell
|
||||||
// ---------------------------------------------------------
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
IMPLEMENT_ABSTRACT_CLASS(wxDataViewTextCell, wxDataViewCustomCell)
|
IMPLEMENT_CLASS(wxDataViewTextCell, wxDataViewCustomCell)
|
||||||
|
|
||||||
wxDataViewTextCell::wxDataViewTextCell( const wxString &varianttype, wxDataViewCellMode mode ) :
|
wxDataViewTextCell::wxDataViewTextCell( const wxString &varianttype, wxDataViewCellMode mode ) :
|
||||||
wxDataViewCustomCell( varianttype, mode )
|
wxDataViewCustomCell( varianttype, mode )
|
||||||
@@ -329,6 +330,52 @@ wxSize wxDataViewTextCell::GetSize()
|
|||||||
return wxSize(80,20);
|
return wxSize(80,20);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
// wxDataViewBitmapCell
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
|
IMPLEMENT_CLASS(wxDataViewBitmapCell, wxDataViewCustomCell)
|
||||||
|
|
||||||
|
wxDataViewBitmapCell::wxDataViewBitmapCell( const wxString &varianttype, wxDataViewCellMode mode ) :
|
||||||
|
wxDataViewCustomCell( varianttype, mode )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxDataViewBitmapCell::SetValue( const wxVariant &value )
|
||||||
|
{
|
||||||
|
if (value.GetType() == wxT("wxBitmap"))
|
||||||
|
m_bitmap << value;
|
||||||
|
if (value.GetType() == wxT("wxIcon"))
|
||||||
|
m_icon << value;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxDataViewBitmapCell::GetValue( wxVariant& WXUNUSED(value) )
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wxDataViewBitmapCell::Render( wxRect cell, wxDC *dc, int WXUNUSED(state) )
|
||||||
|
{
|
||||||
|
if (m_bitmap.Ok())
|
||||||
|
dc->DrawBitmap( m_bitmap, cell.x, cell.y );
|
||||||
|
else if (m_icon.Ok())
|
||||||
|
dc->DrawIcon( m_icon, cell.x, cell.y );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
wxSize wxDataViewBitmapCell::GetSize()
|
||||||
|
{
|
||||||
|
if (m_bitmap.Ok())
|
||||||
|
return wxSize( m_bitmap.GetWidth(), m_bitmap.GetHeight() );
|
||||||
|
else if (m_icon.Ok())
|
||||||
|
return wxSize( m_icon.GetWidth(), m_icon.GetHeight() );
|
||||||
|
|
||||||
|
return wxSize(16,16);
|
||||||
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------
|
// ---------------------------------------------------------
|
||||||
// wxDataViewToggleCell
|
// wxDataViewToggleCell
|
||||||
// ---------------------------------------------------------
|
// ---------------------------------------------------------
|
||||||
|
@@ -25,6 +25,8 @@
|
|||||||
#include "wx/stockitem.h"
|
#include "wx/stockitem.h"
|
||||||
#include "wx/calctrl.h"
|
#include "wx/calctrl.h"
|
||||||
#include "wx/popupwin.h"
|
#include "wx/popupwin.h"
|
||||||
|
#include "wx/icon.h"
|
||||||
|
|
||||||
|
|
||||||
#include "wx/gtk/private.h"
|
#include "wx/gtk/private.h"
|
||||||
#include "wx/gtk/win_gtk.h"
|
#include "wx/gtk/win_gtk.h"
|
||||||
@@ -980,14 +982,30 @@ bool wxDataViewBitmapCell::SetValue( const wxVariant &value )
|
|||||||
{
|
{
|
||||||
if (value.GetType() == wxT("wxBitmap"))
|
if (value.GetType() == wxT("wxBitmap"))
|
||||||
{
|
{
|
||||||
// We could also use the type safe wxGetVariantCast here
|
wxBitmap bitmap;
|
||||||
const wxBitmap *bitmap = (const wxBitmap*) value.GetWxObjectPtr();
|
bitmap << value;
|
||||||
if (!bitmap)
|
|
||||||
return false;
|
|
||||||
|
|
||||||
// This may create a Pixbuf representation in the
|
// This may create a Pixbuf representation in the
|
||||||
// wxBitmap object (and it will stay there)
|
// wxBitmap object (and it will stay there)
|
||||||
GdkPixbuf *pixbuf = bitmap->GetPixbuf();
|
GdkPixbuf *pixbuf = bitmap.GetPixbuf();
|
||||||
|
|
||||||
|
GValue gvalue = { 0, };
|
||||||
|
g_value_init( &gvalue, G_TYPE_OBJECT );
|
||||||
|
g_value_set_object( &gvalue, pixbuf );
|
||||||
|
g_object_set_property( G_OBJECT(m_renderer), "pixbuf", &gvalue );
|
||||||
|
g_value_unset( &gvalue );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value.GetType() == wxT("wxIcon"))
|
||||||
|
{
|
||||||
|
wxIcon bitmap;
|
||||||
|
bitmap << value;
|
||||||
|
|
||||||
|
// This may create a Pixbuf representation in the
|
||||||
|
// wxBitmap object (and it will stay there)
|
||||||
|
GdkPixbuf *pixbuf = bitmap.GetPixbuf();
|
||||||
|
|
||||||
GValue gvalue = { 0, };
|
GValue gvalue = { 0, };
|
||||||
g_value_init( &gvalue, G_TYPE_OBJECT );
|
g_value_init( &gvalue, G_TYPE_OBJECT );
|
||||||
|
Reference in New Issue
Block a user