Added support for wxLongLong and wxULongLong in wxVariant (closes #10166)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61070 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Jaakko Salli
2009-06-15 22:43:27 +00:00
parent 958e4b4b75
commit 4e00b90802
13 changed files with 577 additions and 351 deletions

View File

@@ -337,6 +337,7 @@ All:
- Added wxStd{Input,Output}Stream classes (Jonathan Liu). - Added wxStd{Input,Output}Stream classes (Jonathan Liu).
- Include port number in host header in wxHTTP (Marcin 'Malcom' Malich). - Include port number in host header in wxHTTP (Marcin 'Malcom' Malich).
- Added wxTempFile::Flush(). - Added wxTempFile::Flush().
- Added support for wxLongLong and wxULongLong in wxVariant.
All (GUI): All (GUI):

View File

@@ -517,6 +517,12 @@ template<> inline wxVariant WXVARIANT( const wxArrayString& value )
{ return wxVariant(value); } { return wxVariant(value); }
template<> inline wxVariant WXVARIANT( const wxString& value ) template<> inline wxVariant WXVARIANT( const wxString& value )
{ return wxVariant(value); } { return wxVariant(value); }
#if wxUSE_LONGLONG
template<> inline wxVariant WXVARIANT( const wxLongLong& value )
{ return wxVariant(value); }
template<> inline wxVariant WXVARIANT( const wxULongLong& value )
{ return wxVariant(value); }
#endif
#if wxUSE_DATETIME #if wxUSE_DATETIME
template<> inline wxVariant WXVARIANT( const wxDateTime& value ) template<> inline wxVariant WXVARIANT( const wxDateTime& value )
{ return wxVariant(value); } { return wxVariant(value); }
@@ -656,8 +662,6 @@ WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED_DUMMY_EQ(classname, wxEMPTY_PARAMETER_VALU
WX_PG_DECLARE_VARIANT_DATA_EXPORTED(wxPoint, WXDLLIMPEXP_PROPGRID) WX_PG_DECLARE_VARIANT_DATA_EXPORTED(wxPoint, WXDLLIMPEXP_PROPGRID)
WX_PG_DECLARE_VARIANT_DATA_EXPORTED(wxSize, WXDLLIMPEXP_PROPGRID) WX_PG_DECLARE_VARIANT_DATA_EXPORTED(wxSize, WXDLLIMPEXP_PROPGRID)
WX_PG_DECLARE_VARIANT_DATA_EXPORTED(wxArrayInt, WXDLLIMPEXP_PROPGRID) WX_PG_DECLARE_VARIANT_DATA_EXPORTED(wxArrayInt, WXDLLIMPEXP_PROPGRID)
WX_PG_DECLARE_VARIANT_DATA_EXPORTED(wxLongLong, WXDLLIMPEXP_PROPGRID)
WX_PG_DECLARE_VARIANT_DATA_EXPORTED(wxULongLong, WXDLLIMPEXP_PROPGRID)
DECLARE_VARIANT_OBJECT_EXPORTED(wxFont, WXDLLIMPEXP_PROPGRID) DECLARE_VARIANT_OBJECT_EXPORTED(wxFont, WXDLLIMPEXP_PROPGRID)
template<> inline wxVariant WXVARIANT( const wxFont& value ) template<> inline wxVariant WXVARIANT( const wxFont& value )
{ {
@@ -673,27 +677,6 @@ template<> inline wxVariant WXVARIANT( const wxColour& value )
return variant; return variant;
} }
#if wxUSE_LONGLONG_NATIVE
template<> inline wxVariant WXVARIANT( const wxLongLong_t& value )
{
wxVariant variant;
variant << wxLongLong(value);
return variant;
}
template<> inline wxVariant WXVARIANT( const wxULongLong_t& value )
{
wxVariant variant;
variant << wxULongLong(value);
return variant;
}
WXDLLIMPEXP_PROPGRID wxLongLong_t& operator << ( wxLongLong_t &value, const wxVariant &variant );
WXDLLIMPEXP_PROPGRID wxULongLong_t& operator << ( wxULongLong_t &value, const wxVariant &variant );
#endif // wxUSE_LONGLONG_NATIVE
// Define constants for common wxVariant type strings // Define constants for common wxVariant type strings
#define wxPG_VARIANT_TYPE_STRING wxPGGlobalVars->m_strstring #define wxPG_VARIANT_TYPE_STRING wxPGGlobalVars->m_strstring
@@ -703,24 +686,8 @@ WXDLLIMPEXP_PROPGRID wxULongLong_t& operator << ( wxULongLong_t &value, const wx
#define wxPG_VARIANT_TYPE_DOUBLE wxS("double") #define wxPG_VARIANT_TYPE_DOUBLE wxS("double")
#define wxPG_VARIANT_TYPE_ARRSTRING wxS("arrstring") #define wxPG_VARIANT_TYPE_ARRSTRING wxS("arrstring")
#define wxPG_VARIANT_TYPE_DATETIME wxS("datetime") #define wxPG_VARIANT_TYPE_DATETIME wxS("datetime")
#define wxPG_VARIANT_TYPE_LONGLONG wxS("longlong")
// Safely converts a wxVariant to (long) int. Supports converting from string #define wxPG_VARIANT_TYPE_ULONGLONG wxS("ulonglong")
// and boolean as well.
WXDLLIMPEXP_PROPGRID
long wxPGVariantToInt( const wxVariant& variant, long defVal = 1 );
// Safely converts a wxVariant to wxLongLong_t. Returns true on success.
WXDLLIMPEXP_PROPGRID
bool wxPGVariantToLongLong( const wxVariant& variant, wxLongLong_t* pResult );
// Safely converts a wxVariant to wxULongLong_t. Returns true on success.
WXDLLIMPEXP_PROPGRID
bool wxPGVariantToULongLong( const wxVariant& variant, wxULongLong_t* pResult );
// Safely converts a wxVariant to double. Supports converting from string and
// wxLongLong as well.
WXDLLIMPEXP_PROPGRID
bool wxPGVariantToDouble( const wxVariant& variant, double* pResult );
#endif // !SWIG #endif // !SWIG

View File

@@ -537,23 +537,17 @@ public:
return value.GetArrayString(); return value.GetArrayString();
} }
#if wxUSE_LONGLONG_NATIVE #ifdef wxLongLong_t
wxLongLong_t GetPropertyValueAsLongLong( wxPGPropArg id ) const wxLongLong_t GetPropertyValueAsLongLong( wxPGPropArg id ) const
{ {
wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL_WFALLBACK("wxLongLong", wxPG_PROP_ARG_CALL_PROLOG_RETVAL(0)
(long) GetPropertyValueAsLong(id)) return p->GetValue().GetLongLong().GetValue();
wxLongLong ll;
ll << value;
return ll.GetValue();
} }
wxULongLong_t GetPropertyValueAsULongLong( wxPGPropArg id ) const wxULongLong_t GetPropertyValueAsULongLong( wxPGPropArg id ) const
{ {
wxPG_PROP_ID_GETPROPVAL_CALL_PROLOG_RETVAL_WFALLBACK("wxULongLong", wxPG_PROP_ARG_CALL_PROLOG_RETVAL(0)
(unsigned long) GetPropertyValueAsULong(id)) return p->GetValue().GetULongLong().GetValue();
wxULongLong ull;
ull << value;
return ull.GetValue();
} }
#endif #endif
@@ -1170,7 +1164,7 @@ public:
SetPropVal( id, v ); SetPropVal( id, v );
} }
#if wxUSE_LONGLONG_NATIVE #ifdef wxLongLong_t
/** Sets value (wxLongLong&) of a property. /** Sets value (wxLongLong&) of a property.
*/ */
void SetPropertyValue( wxPGPropArg id, wxLongLong_t value ) void SetPropertyValue( wxPGPropArg id, wxLongLong_t value )

View File

@@ -21,6 +21,7 @@
#include "wx/arrstr.h" #include "wx/arrstr.h"
#include "wx/list.h" #include "wx/list.h"
#include "wx/cpp.h" #include "wx/cpp.h"
#include "wx/longlong.h"
#if wxUSE_DATETIME #if wxUSE_DATETIME
#include "wx/datetime.h" #include "wx/datetime.h"
@@ -260,6 +261,23 @@ public:
void operator= (wxObject* value); void operator= (wxObject* value);
wxObject* GetWxObjectPtr() const; wxObject* GetWxObjectPtr() const;
#if wxUSE_LONGLONG
// wxLongLong
wxVariant(wxLongLong, const wxString& name = wxEmptyString);
bool operator==(wxLongLong value) const;
bool operator!=(wxLongLong value) const;
void operator=(wxLongLong value);
operator wxLongLong() const { return GetLongLong(); }
wxLongLong GetLongLong() const;
// wxULongLong
wxVariant(wxULongLong, const wxString& name = wxEmptyString);
bool operator==(wxULongLong value) const;
bool operator!=(wxULongLong value) const;
void operator=(wxULongLong value);
operator wxULongLong() const { return GetULongLong(); }
wxULongLong GetULongLong() const;
#endif
// ------------------------------ // ------------------------------
// list operations // list operations
@@ -307,6 +325,10 @@ public:
#if wxUSE_DATETIME #if wxUSE_DATETIME
bool Convert(wxDateTime* value) const; bool Convert(wxDateTime* value) const;
#endif // wxUSE_DATETIME #endif // wxUSE_DATETIME
#if wxUSE_LONGLONG
bool Convert(wxLongLong* value) const;
bool Convert(wxULongLong* value) const;
#endif // wxUSE_LONGLONG
// Attributes // Attributes
protected: protected:

View File

@@ -141,6 +141,16 @@ public:
*/ */
wxVariant(double value, const wxString& name = wxEmptyString); wxVariant(double value, const wxString& name = wxEmptyString);
/**
Constructs a variant from a wxLongLong.
*/
wxVariant(wxLongLong value, const wxString& name = wxEmptyString);
/**
Constructs a variant from a wxULongLong.
*/
wxVariant(wxULongLong value, const wxString& name = wxEmptyString);
/** /**
Constructs a variant from a list of variants Constructs a variant from a list of variants
*/ */
@@ -250,6 +260,8 @@ public:
bool Convert(double* value) const; bool Convert(double* value) const;
bool Convert(wxString* value) const; bool Convert(wxString* value) const;
bool Convert(wxChar* value) const; bool Convert(wxChar* value) const;
bool Convert(wxLongLong* value) const;
bool Convert(wxULongLong* value) const;
bool Convert(wxDateTime* value) const; bool Convert(wxDateTime* value) const;
//@} //@}
@@ -290,6 +302,11 @@ public:
*/ */
long GetLong() const; long GetLong() const;
/**
Returns the signed 64-bit integer value.
*/
wxLongLong GetLongLong() const;
/** /**
Returns a constant reference to the variant name. Returns a constant reference to the variant name.
*/ */
@@ -310,7 +327,9 @@ public:
- "double" - "double"
- "list" - "list"
- "long" - "long"
- "longlong"
- "string" - "string"
- "ulonglong"
- "arrstring" - "arrstring"
- "void*" - "void*"
@@ -319,6 +338,11 @@ public:
*/ */
wxString GetType() const; wxString GetType() const;
/**
Returns the unsigned 64-bit integer value.
*/
wxULongLong GetULongLong() const;
/** /**
Gets the void pointer value. Gets the void pointer value.
@@ -390,6 +414,8 @@ public:
bool operator !=(long value) const; bool operator !=(long value) const;
bool operator !=(bool value) const; bool operator !=(bool value) const;
bool operator !=(double value) const; bool operator !=(double value) const;
bool operator !=(wxLongLong value) const;
bool operator !=(wxULongLong value) const;
bool operator !=(void* value) const; bool operator !=(void* value) const;
bool operator !=(wxObject* value) const; bool operator !=(wxObject* value) const;
bool operator !=(const wxVariantList& value) const; bool operator !=(const wxVariantList& value) const;
@@ -410,6 +436,8 @@ public:
void operator =(long value); void operator =(long value);
void operator =(bool value); void operator =(bool value);
void operator =(double value); void operator =(double value);
bool operator =(wxLongLong value) const;
bool operator =(wxULongLong value) const;
void operator =(void* value); void operator =(void* value);
void operator =(wxObject* value); void operator =(wxObject* value);
void operator =(const wxVariantList& value); void operator =(const wxVariantList& value);
@@ -428,6 +456,8 @@ public:
bool operator ==(long value) const; bool operator ==(long value) const;
bool operator ==(bool value) const; bool operator ==(bool value) const;
bool operator ==(double value) const; bool operator ==(double value) const;
bool operator ==(wxLongLong value) const;
bool operator ==(wxULongLong value) const;
bool operator ==(void* value) const; bool operator ==(void* value) const;
bool operator ==(wxObject* value) const; bool operator ==(wxObject* value) const;
bool operator ==(const wxVariantList& value) const; bool operator ==(const wxVariantList& value) const;
@@ -437,10 +467,13 @@ public:
//@{ //@{
/** /**
Operator for implicit conversion to a long, using GetLong(). Operators for implicit conversion, using appropriate getter member
function.
*/ */
double operator double() const; double operator double() const;
long operator long() const; long operator long() const;
wxLongLong operator wxLongLong() const;
wxULongLong operator wxULongLong() const;
//@} //@}
/** /**

View File

@@ -920,11 +920,11 @@ void FormMain::OnPropertyGridChange( wxPropertyGridEvent& event )
SetSize ( m_pPropGridManager->GetPropertyValueAsInt(property), -1, -1, -1, wxSIZE_USE_EXISTING ); SetSize ( m_pPropGridManager->GetPropertyValueAsInt(property), -1, -1, -1, wxSIZE_USE_EXISTING );
else if ( name == wxT("Y") ) else if ( name == wxT("Y") )
// wxPGVariantToInt is safe long int value getter // wxPGVariantToInt is safe long int value getter
SetSize ( -1, wxPGVariantToInt(value), -1, -1, wxSIZE_USE_EXISTING ); SetSize ( -1, value.GetLong(), -1, -1, wxSIZE_USE_EXISTING );
else if ( name == wxT("Width") ) else if ( name == wxT("Width") )
SetSize ( -1, -1, m_pPropGridManager->GetPropertyValueAsInt(property), -1, wxSIZE_USE_EXISTING ); SetSize ( -1, -1, m_pPropGridManager->GetPropertyValueAsInt(property), -1, wxSIZE_USE_EXISTING );
else if ( name == wxT("Height") ) else if ( name == wxT("Height") )
SetSize ( -1, -1, -1, wxPGVariantToInt(value), wxSIZE_USE_EXISTING ); SetSize ( -1, -1, -1, value.GetLong(), wxSIZE_USE_EXISTING );
else if ( name == wxT("Label") ) else if ( name == wxT("Label") )
{ {
SetTitle ( m_pPropGridManager->GetPropertyValueAsString(property) ); SetTitle ( m_pPropGridManager->GetPropertyValueAsString(property) );

View File

@@ -220,7 +220,7 @@ wxVariant wxSizeProperty::ChildChanged( wxVariant& thisValue,
wxVariant& childValue ) const wxVariant& childValue ) const
{ {
wxSize& size = wxSizeRefFromVariant(thisValue); wxSize& size = wxSizeRefFromVariant(thisValue);
int val = wxPGVariantToInt(childValue); int val = childValue.GetLong();
switch ( childIndex ) switch ( childIndex )
{ {
case 0: size.x = val; break; case 0: size.x = val; break;
@@ -261,7 +261,7 @@ wxVariant wxPointProperty::ChildChanged( wxVariant& thisValue,
wxVariant& childValue ) const wxVariant& childValue ) const
{ {
wxPoint& point = wxPointRefFromVariant(thisValue); wxPoint& point = wxPointRefFromVariant(thisValue);
int val = wxPGVariantToInt(childValue); int val = childValue.GetLong();
switch ( childIndex ) switch ( childIndex )
{ {
case 0: point.x = val; break; case 0: point.x = val; break;

View File

@@ -662,58 +662,6 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
if ( pgman->GetPropertyValueAsLongLong(wxT("IntProperty")) != wxLL(-80000000000) ) if ( pgman->GetPropertyValueAsLongLong(wxT("IntProperty")) != wxLL(-80000000000) )
RT_FAILURE(); RT_FAILURE();
//
// Flexible wx(U)LongLong << operator safety conformance tests
wxPGProperty* prop;
wxLongLong ll;
wxULongLong ull;
prop = pgman->GetProperty(wxT("IntProperty"));
prop->SetValue(128);
ll << prop->GetValue();
if ( ll != 128 )
RT_FAILURE();
prop->SetValue(WXVARIANT(wxLL(68719476736)));
ll << prop->GetValue();
if ( ll.GetValue() != wxLL(68719476736) )
RT_FAILURE();
#if wxUSE_LONGLONG_NATIVE
wxLongLong_t ll_t;
ll_t << prop->GetValue();
if ( ll_t != wxLL(68719476736) )
RT_FAILURE();
#endif
prop->SetValue(256);
ll << prop->GetValue();
if ( ll != 256 )
RT_FAILURE();
prop = pgman->GetProperty(wxT("UIntProperty"));
prop->SetValue(128);
ull << prop->GetValue();
if ( ull != 128 )
RT_FAILURE();
prop->SetValue(WXVARIANT(wxULL(68719476739)));
ull << prop->GetValue();
if ( ull.GetValue() != wxULL(68719476739) )
RT_FAILURE();
#if wxUSE_LONGLONG_NATIVE
wxULongLong_t ull_t;
ull_t << prop->GetValue();
if ( ull_t != wxLL(68719476739) )
RT_FAILURE();
#endif
prop->SetValue(256);
ull << prop->GetValue();
if ( ull != 256 )
RT_FAILURE();
// Make sure children of composite parent get updated as well // Make sure children of composite parent get updated as well
// Original string value: "Lamborghini Diablo SV; 5707; [300; 3.9; 8.6] 300000; Not Convertible" // Original string value: "Lamborghini Diablo SV; 5707; [300; 3.9; 8.6] 300000; Not Convertible"

View File

@@ -1414,6 +1414,320 @@ wxArrayString wxVariant::GetArrayString() const
return wxArrayString(); return wxArrayString();
} }
// ----------------------------------------------------------------------------
// wxVariantDataLongLong
// ----------------------------------------------------------------------------
#if wxUSE_LONGLONG
class WXDLLIMPEXP_BASE wxVariantDataLongLong : public wxVariantData
{
public:
wxVariantDataLongLong() { m_value = 0; }
wxVariantDataLongLong(wxLongLong value) { m_value = value; }
wxLongLong GetValue() const { return m_value; }
void SetValue(wxLongLong value) { m_value = value; }
virtual bool Eq(wxVariantData& data) const;
virtual bool Read(wxString& str);
virtual bool Write(wxString& str) const;
#if wxUSE_STD_IOSTREAM
virtual bool Read(wxSTD istream& str);
virtual bool Write(wxSTD ostream& str) const;
#endif
#if wxUSE_STREAMS
virtual bool Read(wxInputStream& str);
virtual bool Write(wxOutputStream &str) const;
#endif // wxUSE_STREAMS
wxVariantData* Clone() const
{
return new wxVariantDataLongLong(m_value);
}
virtual wxString GetType() const { return wxS("longlong"); }
protected:
wxLongLong m_value;
};
bool wxVariantDataLongLong::Eq(wxVariantData& data) const
{
wxASSERT_MSG( (data.GetType() == wxS("longlong")),
"wxVariantDataLongLong::Eq: argument mismatch" );
wxVariantDataLongLong& otherData = (wxVariantDataLongLong&) data;
return (otherData.m_value == m_value);
}
#if wxUSE_STD_IOSTREAM
bool wxVariantDataLongLong::Write(wxSTD ostream& str) const
{
wxString s;
Write(s);
str << (const char*) s.mb_str();
return true;
}
#endif
bool wxVariantDataLongLong::Write(wxString& str) const
{
str.Printf(wxS("%lld"), m_value);
return true;
}
#if wxUSE_STD_IOSTREAM
bool wxVariantDataLongLong::Read(wxSTD istream& WXUNUSED(str))
{
wxFAIL_MSG(wxS("Unimplemented"));
return false;
}
#endif
#if wxUSE_STREAMS
bool wxVariantDataLongLong::Write(wxOutputStream& str) const
{
wxTextOutputStream s(str);
s.Write32(m_value.GetLo());
s.Write32(m_value.GetHi());
return true;
}
bool wxVariantDataLongLong::Read(wxInputStream& str)
{
wxTextInputStream s(str);
unsigned long lo = s.Read32();
long hi = s.Read32();
m_value = wxLongLong(hi, lo);
return true;
}
#endif // wxUSE_STREAMS
bool wxVariantDataLongLong::Read(wxString& str)
{
#ifdef wxLongLong_t
wxLongLong_t value_t;
if ( !str.ToLongLong(&value_t) )
return false;
m_value = value_t;
return true;
#else
return false;
#endif
}
// wxVariant
wxVariant::wxVariant(wxLongLong val, const wxString& name)
{
m_refData = new wxVariantDataLongLong(val);
m_name = name;
}
bool wxVariant::operator==(wxLongLong value) const
{
wxLongLong thisValue;
if ( !Convert(&thisValue) )
return false;
else
return (value == thisValue);
}
bool wxVariant::operator!=(wxLongLong value) const
{
return (!((*this) == value));
}
void wxVariant::operator=(wxLongLong value)
{
if ( GetType() == wxS("longlong") &&
m_refData->GetRefCount() == 1 )
{
((wxVariantDataLongLong*)GetData())->SetValue(value);
}
else
{
UnRef();
m_refData = new wxVariantDataLongLong(value);
}
}
wxLongLong wxVariant::GetLongLong() const
{
wxLongLong value;
if ( Convert(&value) )
{
return value;
}
else
{
wxFAIL_MSG(wxT("Could not convert to a long long"));
return 0;
}
}
#endif // wxUSE_LONGLONG
// ----------------------------------------------------------------------------
// wxVariantDataULongLong
// ----------------------------------------------------------------------------
#if wxUSE_LONGLONG
class WXDLLIMPEXP_BASE wxVariantDataULongLong : public wxVariantData
{
public:
wxVariantDataULongLong() { m_value = 0; }
wxVariantDataULongLong(wxULongLong value) { m_value = value; }
wxULongLong GetValue() const { return m_value; }
void SetValue(wxULongLong value) { m_value = value; }
virtual bool Eq(wxVariantData& data) const;
virtual bool Read(wxString& str);
virtual bool Write(wxString& str) const;
#if wxUSE_STD_IOSTREAM
virtual bool Read(wxSTD istream& str);
virtual bool Write(wxSTD ostream& str) const;
#endif
#if wxUSE_STREAMS
virtual bool Read(wxInputStream& str);
virtual bool Write(wxOutputStream &str) const;
#endif // wxUSE_STREAMS
wxVariantData* Clone() const
{
return new wxVariantDataULongLong(m_value);
}
virtual wxString GetType() const { return wxS("ulonglong"); }
protected:
wxULongLong m_value;
};
bool wxVariantDataULongLong::Eq(wxVariantData& data) const
{
wxASSERT_MSG( (data.GetType() == wxS("ulonglong")),
"wxVariantDataULongLong::Eq: argument mismatch" );
wxVariantDataULongLong& otherData = (wxVariantDataULongLong&) data;
return (otherData.m_value == m_value);
}
#if wxUSE_STD_IOSTREAM
bool wxVariantDataULongLong::Write(wxSTD ostream& str) const
{
wxString s;
Write(s);
str << (const char*) s.mb_str();
return true;
}
#endif
bool wxVariantDataULongLong::Write(wxString& str) const
{
str.Printf(wxS("%llu"), m_value);
return true;
}
#if wxUSE_STD_IOSTREAM
bool wxVariantDataULongLong::Read(wxSTD istream& WXUNUSED(str))
{
wxFAIL_MSG(wxS("Unimplemented"));
return false;
}
#endif
#if wxUSE_STREAMS
bool wxVariantDataULongLong::Write(wxOutputStream& str) const
{
wxTextOutputStream s(str);
s.Write32(m_value.GetLo());
s.Write32(m_value.GetHi());
return true;
}
bool wxVariantDataULongLong::Read(wxInputStream& str)
{
wxTextInputStream s(str);
unsigned long lo = s.Read32();
long hi = s.Read32();
m_value = wxULongLong(hi, lo);
return true;
}
#endif // wxUSE_STREAMS
bool wxVariantDataULongLong::Read(wxString& str)
{
#ifdef wxLongLong_t
wxULongLong_t value_t;
if ( !str.ToULongLong(&value_t) )
return false;
m_value = value_t;
return true;
#else
return false;
#endif
}
// wxVariant
wxVariant::wxVariant(wxULongLong val, const wxString& name)
{
m_refData = new wxVariantDataULongLong(val);
m_name = name;
}
bool wxVariant::operator==(wxULongLong value) const
{
wxULongLong thisValue;
if ( !Convert(&thisValue) )
return false;
else
return (value == thisValue);
}
bool wxVariant::operator!=(wxULongLong value) const
{
return (!((*this) == value));
}
void wxVariant::operator=(wxULongLong value)
{
if ( GetType() == wxS("ulonglong") &&
m_refData->GetRefCount() == 1 )
{
((wxVariantDataULongLong*)GetData())->SetValue(value);
}
else
{
UnRef();
m_refData = new wxVariantDataULongLong(value);
}
}
wxULongLong wxVariant::GetULongLong() const
{
wxULongLong value;
if ( Convert(&value) )
{
return value;
}
else
{
wxFAIL_MSG(wxT("Could not convert to a long long"));
return 0;
}
}
#endif // wxUSE_LONGLONG
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// wxVariantDataList // wxVariantDataList
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@@ -1699,14 +2013,32 @@ size_t wxVariant::GetCount() const
bool wxVariant::Convert(long* value) const bool wxVariant::Convert(long* value) const
{ {
wxString type(GetType()); wxString type(GetType());
if (type == wxT("double")) if (type == wxS("double"))
*value = (long) (((wxVariantDoubleData*)GetData())->GetValue()); *value = (long) (((wxVariantDoubleData*)GetData())->GetValue());
else if (type == wxT("long")) else if (type == wxS("long"))
*value = ((wxVariantDataLong*)GetData())->GetValue(); *value = ((wxVariantDataLong*)GetData())->GetValue();
else if (type == wxT("bool")) else if (type == wxS("bool"))
*value = (long) (((wxVariantDataBool*)GetData())->GetValue()); *value = (long) (((wxVariantDataBool*)GetData())->GetValue());
else if (type == wxT("string")) else if (type == wxS("string"))
*value = wxAtol(((wxVariantDataString*)GetData())->GetValue()); *value = wxAtol(((wxVariantDataString*)GetData())->GetValue());
#if wxUSE_LONGLONG
else if (type == wxS("longlong"))
{
wxLongLong v = ((wxVariantDataLongLong*)GetData())->GetValue();
// Don't convert if return value would be vague
if ( v < LONG_MIN || v > LONG_MAX )
return false;
*value = v.ToLong();
}
else if (type == wxS("ulonglong"))
{
wxULongLong v = ((wxVariantDataULongLong*)GetData())->GetValue();
// Don't convert if return value would be vague
if ( v.GetHi() )
return false;
*value = (long) v.ToULong();
}
#endif
else else
return false; return false;
@@ -1750,6 +2082,16 @@ bool wxVariant::Convert(double* value) const
*value = (double) (((wxVariantDataBool*)GetData())->GetValue()); *value = (double) (((wxVariantDataBool*)GetData())->GetValue());
else if (type == wxT("string")) else if (type == wxT("string"))
*value = (double) wxAtof(((wxVariantDataString*)GetData())->GetValue()); *value = (double) wxAtof(((wxVariantDataString*)GetData())->GetValue());
#if wxUSE_LONGLONG
else if (type == wxS("longlong"))
{
*value = ((wxVariantDataLongLong*)GetData())->GetValue().ToDouble();
}
else if (type == wxS("ulonglong"))
{
*value = ((wxVariantDataULongLong*)GetData())->GetValue().ToDouble();
}
#endif
else else
return false; return false;
@@ -1795,6 +2137,91 @@ bool wxVariant::Convert(wxString* value) const
return true; return true;
} }
#if wxUSE_LONGLONG
bool wxVariant::Convert(wxLongLong* value) const
{
wxString type(GetType());
if (type == wxS("longlong"))
*value = ((wxVariantDataLongLong*)GetData())->GetValue();
else if (type == wxS("long"))
*value = ((wxVariantDataLong*)GetData())->GetValue();
else if (type == wxS("string"))
{
wxString s = ((wxVariantDataString*)GetData())->GetValue();
#ifdef wxLongLong_t
wxLongLong_t value_t;
if ( !s.ToLongLong(&value_t) )
return false;
*value = value_t;
#else
long l_value;
if ( !s.ToLong(&l_value) )
return false;
*value = l_value;
#endif
}
else if (type == wxS("bool"))
*value = (long) (((wxVariantDataBool*)GetData())->GetValue());
else if (type == wxS("double"))
{
value->Assign(((wxVariantDoubleData*)GetData())->GetValue());
}
else if (type == wxS("ulonglong"))
*value = ((wxVariantDataULongLong*)GetData())->GetValue();
else
return false;
return true;
}
bool wxVariant::Convert(wxULongLong* value) const
{
wxString type(GetType());
if (type == wxS("ulonglong"))
*value = ((wxVariantDataULongLong*)GetData())->GetValue();
else if (type == wxS("long"))
*value = ((wxVariantDataLong*)GetData())->GetValue();
else if (type == wxS("string"))
{
wxString s = ((wxVariantDataString*)GetData())->GetValue();
#ifdef wxLongLong_t
wxULongLong_t value_t;
if ( !s.ToULongLong(&value_t) )
return false;
*value = value_t;
#else
unsigned long l_value;
if ( !s.ToULong(&l_value) )
return false;
*value = l_value;
#endif
}
else if (type == wxS("bool"))
*value = (long) (((wxVariantDataBool*)GetData())->GetValue());
else if (type == wxS("double"))
{
double value_d = ((wxVariantDoubleData*)GetData())->GetValue();
if ( value_d < 0.0 )
return false;
#ifdef wxLongLong_t
*value = (wxULongLong_t) value_d;
#else
wxLongLong temp;
temp.Assign(value_d);
*value = temp;
#endif
}
else if (type == wxS("longlong"))
*value = ((wxVariantDataLongLong*)GetData())->GetValue();
else
return false;
return true;
}
#endif // wxUSE_LONGLONG
#if wxUSE_DATETIME #if wxUSE_DATETIME
bool wxVariant::Convert(wxDateTime* value) const bool wxVariant::Convert(wxDateTime* value) const
{ {

View File

@@ -720,7 +720,7 @@ wxVariant wxFontProperty::ChildChanged( wxVariant& thisValue,
if ( ind == 0 ) if ( ind == 0 )
{ {
font.SetPointSize( wxPGVariantToInt(childValue) ); font.SetPointSize( childValue.GetLong() );
} }
else if ( ind == 1 ) else if ( ind == 1 )
{ {
@@ -1425,7 +1425,7 @@ bool wxSystemColourProperty::DoSetAttribute( const wxString& name, wxVariant& va
{ {
if ( name == wxPG_COLOUR_ALLOW_CUSTOM ) if ( name == wxPG_COLOUR_ALLOW_CUSTOM )
{ {
int ival = wxPGVariantToInt(value); int ival = value.GetLong();
if ( ival && (m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) ) if ( ival && (m_flags & wxPG_PROP_HIDE_CUSTOM_COLOUR) )
{ {

View File

@@ -1634,18 +1634,20 @@ long wxPGProperty::GetAttributeAsLong( const wxString& name, long defVal ) const
{ {
wxVariant variant = m_attributes.FindValue(name); wxVariant variant = m_attributes.FindValue(name);
return wxPGVariantToInt(variant, defVal); if ( variant.IsNull() )
return defVal;
return variant.GetLong();
} }
double wxPGProperty::GetAttributeAsDouble( const wxString& name, double defVal ) const double wxPGProperty::GetAttributeAsDouble( const wxString& name, double defVal ) const
{ {
double retVal;
wxVariant variant = m_attributes.FindValue(name); wxVariant variant = m_attributes.FindValue(name);
if ( wxPGVariantToDouble(variant, &retVal) ) if ( variant.IsNull() )
return retVal;
return defVal; return defVal;
return variant.GetDouble();
} }
wxVariant wxPGProperty::GetAttributesAsList() const wxVariant wxPGProperty::GetAttributesAsList() const

View File

@@ -56,173 +56,8 @@ const wxChar *wxPGTypeName_wxArrayString = wxT("arrstring");
WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED(wxPoint, WXDLLIMPEXP_PROPGRID) WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED(wxPoint, WXDLLIMPEXP_PROPGRID)
WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED(wxSize, WXDLLIMPEXP_PROPGRID) WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED(wxSize, WXDLLIMPEXP_PROPGRID)
WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED_DUMMY_EQ(wxArrayInt, WXDLLIMPEXP_PROPGRID) WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED_DUMMY_EQ(wxArrayInt, WXDLLIMPEXP_PROPGRID)
// For wxLongLong and wxULongLong have custom classname << variant
// implementation for improved flexibility.
WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED_NO_EQ_NO_GETTER(wxLongLong, WXDLLIMPEXP_PROPGRID)
WX_PG_IMPLEMENT_VARIANT_DATA_EQ(wxLongLong, WXDLLIMPEXP_PROPGRID)
WXDLLIMPEXP_PROPGRID wxLongLong& operator << ( wxLongLong &value, const wxVariant &variant )
{
wxLongLong_t ll;
if ( !wxPGVariantToLongLong(variant, &ll) )
{
wxFAIL_MSG("Cannot convert to wxLongLong");
}
value = ll;
return value;
}
WXDLLIMPEXP_PROPGRID wxLongLong_t& operator << ( wxLongLong_t &value, const wxVariant &variant )
{
if ( !wxPGVariantToLongLong(variant, &value) )
{
wxFAIL_MSG("Cannot convert to wxLongLong");
}
return value;
}
WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED_NO_EQ_NO_GETTER(wxULongLong, WXDLLIMPEXP_PROPGRID)
WX_PG_IMPLEMENT_VARIANT_DATA_EQ(wxULongLong, WXDLLIMPEXP_PROPGRID)
WXDLLIMPEXP_PROPGRID wxULongLong& operator << ( wxULongLong &value, const wxVariant &variant )
{
wxULongLong_t ull;
if ( !wxPGVariantToULongLong(variant, &ull) )
{
wxFAIL_MSG("Cannot convert to wxULongLong");
}
value = ull;
return value;
}
WXDLLIMPEXP_PROPGRID wxULongLong_t& operator << ( wxULongLong_t &value, const wxVariant &variant )
{
if ( !wxPGVariantToULongLong(variant, &value) )
{
wxFAIL_MSG("Cannot convert to wxULongLong");
}
return value;
}
IMPLEMENT_VARIANT_OBJECT_EXPORTED(wxFont, WXDLLIMPEXP_PROPGRID) IMPLEMENT_VARIANT_OBJECT_EXPORTED(wxFont, WXDLLIMPEXP_PROPGRID)
// -----------------------------------------------------------------------
// wxVariant helpers
// -----------------------------------------------------------------------
long wxPGVariantToInt( const wxVariant& variant, long defVal )
{
if ( variant.IsNull() )
return defVal;
if ( variant.GetType() == wxS("long") )
return variant.GetLong();
if ( variant.GetType() == wxS("bool") )
return variant.GetBool() ? 1 : 0;
if ( variant.GetType() == wxS("wxLongLong") )
{
wxLongLong ll;
ll << variant;
if ( ll >= LONG_MAX )
return LONG_MAX;
else if ( ll <= LONG_MIN )
return LONG_MIN;
return ll.ToLong();
}
long l = defVal;
if ( variant.GetType() == wxPG_VARIANT_TYPE_STRING )
variant.GetString().ToLong(&l, 0);
return l;
}
// -----------------------------------------------------------------------
bool wxPGVariantToLongLong( const wxVariant& variant, wxLongLong_t* pResult )
{
if ( variant.IsNull() )
return false;
wxString variantType = variant.GetType();
if ( variantType == wxPG_VARIANT_TYPE_LONG )
{
*pResult = variant.GetLong();
return true;
}
if ( variantType == wxLongLong_VariantType )
{
// NOTE: << operator uses this functions, so we can't use it here
*pResult = wxLongLongRefFromVariant(variant).GetValue();
return true;
}
return false;
}
// -----------------------------------------------------------------------
bool wxPGVariantToULongLong( const wxVariant& variant, wxULongLong_t* pResult )
{
if ( variant.IsNull() )
return false;
wxString variantType = variant.GetType();
if ( variantType == wxPG_VARIANT_TYPE_LONG )
{
*pResult = (unsigned long)variant.GetLong();
return true;
}
if ( variantType == wxULongLong_VariantType )
{
// NOTE: << operator uses this functions, so we can't use it here
*pResult = wxULongLongRefFromVariant(variant).GetValue();
return true;
}
return false;
}
// -----------------------------------------------------------------------
bool wxPGVariantToDouble( const wxVariant& variant, double* pResult )
{
if ( variant.IsNull() )
return false;
wxString variantType = variant.GetType();
if ( variantType == wxPG_VARIANT_TYPE_DOUBLE )
{
*pResult = variant.GetDouble();
return true;
}
if ( variantType == wxPG_VARIANT_TYPE_LONG )
{
*pResult = (double)variant.GetLong();
return true;
}
if ( variantType == wxLongLong_VariantType )
{
wxLongLong ll;
ll << variant;
*pResult = ll.ToDouble();
return true;
}
if ( variantType == wxPG_VARIANT_TYPE_STRING )
if ( variant.GetString().ToDouble(pResult) )
return true;
return false;
}
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
// wxPGPropArgCls // wxPGPropArgCls
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------

View File

@@ -134,7 +134,7 @@ bool wxStringProperty::DoSetAttribute( const wxString& name, wxVariant& value )
if ( name == wxPG_STRING_PASSWORD ) if ( name == wxPG_STRING_PASSWORD )
{ {
m_flags &= ~(wxPG_PROP_PASSWORD); m_flags &= ~(wxPG_PROP_PASSWORD);
if ( wxPGVariantToInt(value) ) m_flags |= wxPG_PROP_PASSWORD; if ( value.GetLong() ) m_flags |= wxPG_PROP_PASSWORD;
RecreateEditor(); RecreateEditor();
return false; return false;
} }
@@ -169,10 +169,9 @@ wxString wxIntProperty::ValueToString( wxVariant& value,
{ {
return wxString::Format(wxS("%li"),value.GetLong()); return wxString::Format(wxS("%li"),value.GetLong());
} }
else if ( value.GetType() == wxLongLong_VariantType ) else if ( value.GetType() == wxPG_VARIANT_TYPE_LONGLONG )
{ {
wxLongLong ll; wxLongLong ll = value.GetLongLong();
ll << value;
return ll.ToString(); return ll.ToString();
} }
@@ -221,10 +220,9 @@ bool wxIntProperty::StringToValue( wxVariant& variant, const wxString& text, int
{ {
bool doChangeValue = isPrevLong; bool doChangeValue = isPrevLong;
if ( !isPrevLong && variantType == wxLongLong_VariantType ) if ( !isPrevLong && variantType == wxPG_VARIANT_TYPE_LONGLONG )
{ {
wxLongLong oldValue; wxLongLong oldValue = variant.GetLongLong();
oldValue << variant;
if ( oldValue.GetValue() != value64 ) if ( oldValue.GetValue() != value64 )
doChangeValue = true; doChangeValue = true;
} }
@@ -232,7 +230,7 @@ bool wxIntProperty::StringToValue( wxVariant& variant, const wxString& text, int
if ( doChangeValue ) if ( doChangeValue )
{ {
wxLongLong ll(value64); wxLongLong ll(value64);
variant << ll; variant = ll;
return true; return true;
} }
} }
@@ -274,14 +272,14 @@ bool wxIntProperty::DoValidation( const wxPGProperty* property, wxLongLong_t& va
variant = property->GetAttribute(wxPGGlobalVars->m_strMin); variant = property->GetAttribute(wxPGGlobalVars->m_strMin);
if ( !variant.IsNull() ) if ( !variant.IsNull() )
{ {
wxPGVariantToLongLong(variant, &min); min = variant.GetLongLong().GetValue();
minOk = true; minOk = true;
} }
variant = property->GetAttribute(wxPGGlobalVars->m_strMax); variant = property->GetAttribute(wxPGGlobalVars->m_strMax);
if ( !variant.IsNull() ) if ( !variant.IsNull() )
{ {
wxPGVariantToLongLong(variant, &max); max = variant.GetLongLong().GetValue();
maxOk = true; maxOk = true;
} }
@@ -319,12 +317,12 @@ bool wxIntProperty::DoValidation( const wxPGProperty* property, wxLongLong_t& va
return true; return true;
} }
bool wxIntProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& validationInfo ) const bool wxIntProperty::ValidateValue( wxVariant& value,
wxPGValidationInfo& validationInfo ) const
{ {
wxLongLong_t ll; wxLongLong_t ll = value.GetLongLong().GetValue();
if ( wxPGVariantToLongLong(value, &ll) ) return DoValidation(this, ll, &validationInfo,
return DoValidation(this, ll, &validationInfo, wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE);
return true;
} }
wxValidator* wxIntProperty::GetClassValidator() wxValidator* wxIntProperty::GetClassValidator()
@@ -406,11 +404,11 @@ wxString wxUIntProperty::ValueToString( wxVariant& value,
if ( value.GetType() == wxPG_VARIANT_TYPE_LONG ) if ( value.GetType() == wxPG_VARIANT_TYPE_LONG )
{ {
return wxString::Format(gs_uintTemplates32[index], (unsigned long)value.GetLong()); return wxString::Format(gs_uintTemplates32[index],
(unsigned long)value.GetLong());
} }
wxULongLong ull; wxULongLong ull = value.GetULongLong();
ull << value;
return wxString::Format(gs_uintTemplates64[index], ull.GetValue()); return wxString::Format(gs_uintTemplates64[index], ull.GetValue());
} }
@@ -439,18 +437,16 @@ bool wxUIntProperty::StringToValue( wxVariant& variant, const wxString& text, in
{ {
bool doChangeValue = isPrevLong; bool doChangeValue = isPrevLong;
if ( !isPrevLong && variantType == wxULongLong_VariantType ) if ( !isPrevLong && variantType == wxPG_VARIANT_TYPE_ULONGLONG )
{ {
wxULongLong oldValue; wxULongLong oldValue = variant.GetULongLong();
oldValue << variant;
if ( oldValue.GetValue() != value64 ) if ( oldValue.GetValue() != value64 )
doChangeValue = true; doChangeValue = true;
} }
if ( doChangeValue ) if ( doChangeValue )
{ {
wxULongLong ull(value64); variant = wxULongLong(value64);
variant << ull;
return true; return true;
} }
} }
@@ -481,9 +477,8 @@ bool wxUIntProperty::IntToValue( wxVariant& variant, int number, int WXUNUSED(ar
bool wxUIntProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& validationInfo ) const bool wxUIntProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& validationInfo ) const
{ {
// Check for min/max // Check for min/max
wxULongLong_t ll; wxULongLong_t ll = value.GetULongLong().GetValue();
if ( wxPGVariantToULongLong(value, &ll) )
{
wxULongLong_t min = 0; wxULongLong_t min = 0;
wxULongLong_t max = wxUINT64_MAX; wxULongLong_t max = wxUINT64_MAX;
wxVariant variant; wxVariant variant;
@@ -491,7 +486,7 @@ bool wxUIntProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& valida
variant = GetAttribute(wxPGGlobalVars->m_strMin); variant = GetAttribute(wxPGGlobalVars->m_strMin);
if ( !variant.IsNull() ) if ( !variant.IsNull() )
{ {
wxPGVariantToULongLong(variant, &min); min = variant.GetULongLong().GetValue();
if ( ll < min ) if ( ll < min )
{ {
validationInfo.SetFailureMessage( validationInfo.SetFailureMessage(
@@ -503,7 +498,7 @@ bool wxUIntProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& valida
variant = GetAttribute(wxPGGlobalVars->m_strMax); variant = GetAttribute(wxPGGlobalVars->m_strMax);
if ( !variant.IsNull() ) if ( !variant.IsNull() )
{ {
wxPGVariantToULongLong(variant, &max); max = variant.GetULongLong().GetValue();
if ( ll > max ) if ( ll > max )
{ {
validationInfo.SetFailureMessage( validationInfo.SetFailureMessage(
@@ -512,7 +507,7 @@ bool wxUIntProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& valida
return false; return false;
} }
} }
}
return true; return true;
} }
@@ -655,7 +650,10 @@ bool wxFloatProperty::StringToValue( wxVariant& variant, const wxString& text, i
return false; return false;
} }
bool wxFloatProperty::DoValidation( const wxPGProperty* property, double& value, wxPGValidationInfo* pValidationInfo, int mode ) bool wxFloatProperty::DoValidation( const wxPGProperty* property,
double& value,
wxPGValidationInfo* pValidationInfo,
int mode )
{ {
// Check for min/max // Check for min/max
double min = (double)wxINT64_MIN; double min = (double)wxINT64_MIN;
@@ -667,14 +665,14 @@ bool wxFloatProperty::DoValidation( const wxPGProperty* property, double& value,
variant = property->GetAttribute(wxPGGlobalVars->m_strMin); variant = property->GetAttribute(wxPGGlobalVars->m_strMin);
if ( !variant.IsNull() ) if ( !variant.IsNull() )
{ {
wxPGVariantToDouble(variant, &min); min = variant.GetDouble();
minOk = true; minOk = true;
} }
variant = property->GetAttribute(wxPGGlobalVars->m_strMax); variant = property->GetAttribute(wxPGGlobalVars->m_strMax);
if ( !variant.IsNull() ) if ( !variant.IsNull() )
{ {
wxPGVariantToDouble(variant, &max); max = variant.GetDouble();
maxOk = true; maxOk = true;
} }
@@ -696,7 +694,7 @@ bool wxFloatProperty::DoValidation( const wxPGProperty* property, double& value,
if ( maxOk ) if ( maxOk )
{ {
wxPGVariantToDouble(variant, &max); max = variant.GetDouble();
if ( value > max ) if ( value > max )
{ {
if ( mode == wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ) if ( mode == wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE )
@@ -713,12 +711,13 @@ bool wxFloatProperty::DoValidation( const wxPGProperty* property, double& value,
return true; return true;
} }
bool wxFloatProperty::ValidateValue( wxVariant& value, wxPGValidationInfo& validationInfo ) const bool
wxFloatProperty::ValidateValue( wxVariant& value,
wxPGValidationInfo& validationInfo ) const
{ {
double fpv; double fpv = value.GetDouble();
if ( wxPGVariantToDouble(value, &fpv) ) return DoValidation(this, fpv, &validationInfo,
return DoValidation(this, fpv, &validationInfo, wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE); wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE);
return true;
} }
bool wxFloatProperty::DoSetAttribute( const wxString& name, wxVariant& value ) bool wxFloatProperty::DoSetAttribute( const wxString& name, wxVariant& value )
@@ -849,8 +848,7 @@ bool wxBoolProperty::DoSetAttribute( const wxString& name, wxVariant& value )
#if wxPG_INCLUDE_CHECKBOX #if wxPG_INCLUDE_CHECKBOX
if ( name == wxPG_BOOL_USE_CHECKBOX ) if ( name == wxPG_BOOL_USE_CHECKBOX )
{ {
int ival = wxPGVariantToInt(value); if ( value.GetLong() )
if ( ival )
m_flags |= wxPG_PROP_USE_CHECKBOX; m_flags |= wxPG_PROP_USE_CHECKBOX;
else else
m_flags &= ~(wxPG_PROP_USE_CHECKBOX); m_flags &= ~(wxPG_PROP_USE_CHECKBOX);
@@ -859,8 +857,7 @@ bool wxBoolProperty::DoSetAttribute( const wxString& name, wxVariant& value )
#endif #endif
if ( name == wxPG_BOOL_USE_DOUBLE_CLICK_CYCLING ) if ( name == wxPG_BOOL_USE_DOUBLE_CLICK_CYCLING )
{ {
int ival = wxPGVariantToInt(value); if ( value.GetLong() )
if ( ival )
m_flags |= wxPG_PROP_USE_DCC; m_flags |= wxPG_PROP_USE_DCC;
else else
m_flags &= ~(wxPG_PROP_USE_DCC); m_flags &= ~(wxPG_PROP_USE_DCC);
@@ -1799,7 +1796,7 @@ bool wxFileProperty::DoSetAttribute( const wxString& name, wxVariant& value )
// stored in m_attributes. // stored in m_attributes.
if ( name == wxPG_FILE_SHOW_FULL_PATH ) if ( name == wxPG_FILE_SHOW_FULL_PATH )
{ {
if ( wxPGVariantToInt(value) ) if ( value.GetLong() )
m_flags |= wxPG_PROP_SHOW_FULL_FILENAME; m_flags |= wxPG_PROP_SHOW_FULL_FILENAME;
else else
m_flags &= ~(wxPG_PROP_SHOW_FULL_FILENAME); m_flags &= ~(wxPG_PROP_SHOW_FULL_FILENAME);