X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a48fcef3e805da8613e9404494040f3b22bec4a7..cf21e2fc0bcb1c2f4c4aba2131e7a1756e2ba123:/include/wx/propgrid/propgriddefs.h?ds=sidebyside diff --git a/include/wx/propgrid/propgriddefs.h b/include/wx/propgrid/propgriddefs.h index f6608cef06..02e4fc0f2d 100644 --- a/include/wx/propgrid/propgriddefs.h +++ b/include/wx/propgrid/propgriddefs.h @@ -4,7 +4,7 @@ // Author: Jaakko Salli // Modified by: // Created: 2008-08-31 -// RCS-ID: $Id: +// RCS-ID: $Id$ // Copyright: (c) Jaakko Salli // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// @@ -15,6 +15,7 @@ #if wxUSE_PROPGRID #include "wx/dynarray.h" +#include "wx/vector.h" #include "wx/hashmap.h" #include "wx/variant.h" #include "wx/longlong.h" @@ -83,7 +84,7 @@ // comment to use bitmap buttons #define wxPG_ICON_WIDTH 9 // 1 if wxRendererNative should be employed - #define wxPG_USE_RENDERER_NATIVE 0 + #define wxPG_USE_RENDERER_NATIVE 1 // 1 to use double-buffer that guarantees flicker-free painting #define wxPG_DOUBLE_BUFFER 1 @@ -119,7 +120,7 @@ #define wxPG_XBEFOREWIDGET 1 // x position adjustment for wxTextCtrl (and like) - #define wxPG_TEXTCTRLXADJUST 3 + #define wxPG_TEXTCTRLXADJUST 0 // comment to use bitmap buttons #define wxPG_ICON_WIDTH 11 @@ -228,6 +229,12 @@ // (for tree buttons) //#undef wxPG_ICON_WIDTH +#if WXWIN_COMPATIBILITY_2_6 || WXWIN_COMPATIBILITY_2_8 + #define wxPG_COMPATIBILITY_1_4 1 +#else + #define wxPG_COMPATIBILITY_1_4 0 +#endif + // Need to force disable tooltips? #if !wxUSE_TOOLTIPS #undef wxPG_SUPPORT_TOOLTIPS @@ -245,14 +252,6 @@ // ----------------------------------------------------------------------- -// wxPG_CHECK_FOO_DBG - debug check with message that does not -// interrupt program flow. -#define wxPG_CHECK_RET_DBG(A,B) \ - if ( !(A) ) { wxLogWarning(B); return; } -#define wxPG_CHECK_MSG_DBG(A,B,C) \ - if ( !(A) ) { wxLogWarning(C); return B; } - - class wxPGEditor; class wxPGProperty; class wxPropertyCategory; @@ -267,9 +266,8 @@ class wxPropertyGrid; class wxPropertyGridEvent; class wxPropertyGridManager; class wxPGOwnerDrawnComboBox; -class wxPGCustomComboControl; class wxPGEditorDialogAdapter; -struct wxPGValidationInfo; +class wxPGValidationInfo; // ----------------------------------------------------------------------- @@ -331,7 +329,10 @@ WX_DECLARE_STRING_HASH_MAP_WITH_DECL(void*, wxPGHashMapS2P, class WXDLLIMPEXP_PROPGRID); - +WX_DECLARE_STRING_HASH_MAP_WITH_DECL(wxString, + wxPGHashMapS2S, + class WXDLLIMPEXP_PROPGRID); + WX_DECLARE_VOIDPTR_HASH_MAP_WITH_DECL(void*, wxPGHashMapP2P, class WXDLLIMPEXP_PROPGRID); @@ -391,7 +392,14 @@ enum wxPG_MISC_ARG_FLAGS // Means property for which final string value is for can not really be // edited. - wxPG_UNEDITABLE_COMPOSITE_FRAGMENT = 0x00000020 + wxPG_UNEDITABLE_COMPOSITE_FRAGMENT = 0x00000020, + + // ValueToString() called from GetValueAsString() + // (guarantees that input wxVariant value is current own value) + wxPG_VALUE_IS_CURRENT = 0x00000040, + + // Value is being set programmatically (ie. not by user) + wxPG_PROGRAMMATIC_VALUE = 0x00000080 }; // ----------------------------------------------------------------------- @@ -426,7 +434,7 @@ enum wxPG_SETVALUE_FLAGS #ifndef SWIG -// Editor accessor. +// Editor accessor (for backwards compatiblity use only). #define wxPG_EDITOR(T) wxPGEditor_##T // Declare editor class, with optional part. @@ -513,7 +521,9 @@ extern expdecl const char* classname##_VariantType; #define WX_PG_IMPLEMENT_VARIANT_DATA(classname) \ WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED(classname, wxEMPTY_PARAMETER_VALUE) -#define WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED_NO_EQ(classname,expdecl) \ +// Add getter (ie. classname << variant) separately to allow +// custom implementations. +#define WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED_NO_EQ_NO_GETTER(classname,expdecl) \ const char* classname##_VariantType = #classname; \ class classname##VariantData: public wxVariantData \ { \ @@ -540,15 +550,6 @@ wxString classname##VariantData::GetType() const\ return wxS(#classname);\ }\ \ -expdecl classname& operator << ( classname &value, const wxVariant &variant )\ -{\ - wxASSERT( variant.GetType() == #classname );\ - \ - classname##VariantData *data = (classname##VariantData*) variant.GetData();\ - value = data->GetValue();\ - return value;\ -}\ -\ expdecl wxVariant& operator << ( wxVariant &variant, const classname &value )\ {\ classname##VariantData *data = new classname##VariantData( value );\ @@ -568,11 +569,17 @@ expdecl const classname& classname##RefFromVariant( const wxVariant& variant ) \ return data->GetValue();\ } -// implements a wxVariantData-derived class using for the Eq() method the -// operator== which must have been provided by "classname" -#define WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED(classname,expdecl) \ -WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED_NO_EQ(classname,wxEMPTY_PARAMETER_VALUE expdecl) \ -\ +#define WX_PG_IMPLEMENT_VARIANT_DATA_GETTER(classname, expdecl) \ +expdecl classname& operator << ( classname &value, const wxVariant &variant )\ +{\ + wxASSERT( variant.GetType() == #classname );\ + \ + classname##VariantData *data = (classname##VariantData*) variant.GetData();\ + value = data->GetValue();\ + return value;\ +} + +#define WX_PG_IMPLEMENT_VARIANT_DATA_EQ(classname, expdecl) \ bool classname##VariantData::Eq(wxVariantData& data) const \ {\ wxASSERT( GetType() == data.GetType() );\ @@ -582,12 +589,20 @@ bool classname##VariantData::Eq(wxVariantData& data) const \ return otherData.m_value == m_value;\ } +// implements a wxVariantData-derived class using for the Eq() method the +// operator== which must have been provided by "classname" +#define WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED(classname,expdecl) \ +WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED_NO_EQ_NO_GETTER(classname,wxEMPTY_PARAMETER_VALUE expdecl) \ +WX_PG_IMPLEMENT_VARIANT_DATA_GETTER(classname,wxEMPTY_PARAMETER_VALUE expdecl) \ +WX_PG_IMPLEMENT_VARIANT_DATA_EQ(classname,wxEMPTY_PARAMETER_VALUE expdecl) + #define WX_PG_IMPLEMENT_VARIANT_DATA(classname) \ WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED(classname, wxEMPTY_PARAMETER_VALUE) // with Eq() implementation that always returns false #define WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED_DUMMY_EQ(classname,expdecl) \ -WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED_NO_EQ(classname,wxEMPTY_PARAMETER_VALUE expdecl) \ +WX_PG_IMPLEMENT_VARIANT_DATA_EXPORTED_NO_EQ_NO_GETTER(classname,wxEMPTY_PARAMETER_VALUE expdecl) \ +WX_PG_IMPLEMENT_VARIANT_DATA_GETTER(classname,wxEMPTY_PARAMETER_VALUE expdecl) \ \ bool classname##VariantData::Eq(wxVariantData& WXUNUSED(data)) const \ {\ @@ -617,6 +632,27 @@ template<> inline wxVariant WXVARIANT( const wxColour& value ) 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 wxPG_VARIANT_TYPE_STRING wxPGGlobalVars->m_strstring