X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1621f192d95b44c5909a788b8f1fe9e9c381df72..1237a25bc49396fa39516846a855bf3b0a4fe1f7:/include/wx/propgrid/propgriddefs.h diff --git a/include/wx/propgrid/propgriddefs.h b/include/wx/propgrid/propgriddefs.h index d72a787095..8ed9e32b5e 100644 --- a/include/wx/propgrid/propgriddefs.h +++ b/include/wx/propgrid/propgriddefs.h @@ -28,8 +28,6 @@ // NOTE: More in propertygrid.cpp // -#ifndef SWIG - #if defined(__WXMSW__) // space between vertical line and value text @@ -37,9 +35,6 @@ // space between vertical line and value editor control #define wxPG_XBEFOREWIDGET 1 - // x position adjustment for wxTextCtrl (and like) - #define wxPG_TEXTCTRLXADJUST 3 - // comment to use bitmap buttons #define wxPG_ICON_WIDTH 9 // 1 if wxRendererNative should be employed @@ -54,10 +49,6 @@ // width of optional bitmap/image in front of property #define wxPG_CUSTOM_IMAGE_WIDTH 20 - // 1 to create controls out of sight, hide them, and then move them into - // correct position - #define wxPG_CREATE_CONTROLS_HIDDEN 0 - // 1 if splitter drag detect margin and control cannot overlap #define wxPG_NO_CHILD_EVT_MOTION 0 @@ -79,7 +70,9 @@ #define wxPG_XBEFOREWIDGET 1 // x position adjustment for wxTextCtrl (and like) - #define wxPG_TEXTCTRLXADJUST 3 + // NB: Only define wxPG_TEXTCTRLXADJUST for platforms that do not + // (yet) support wxTextEntry::SetMargins() for the left margin. + //#define wxPG_TEXTCTRLXADJUST 3 // comment to use bitmap buttons #define wxPG_ICON_WIDTH 9 @@ -95,10 +88,6 @@ // width of optional bitmap/image in front of property #define wxPG_CUSTOM_IMAGE_WIDTH 20 - // 1 to create controls out of sight, hide them, and then move them into - // correct position - #define wxPG_CREATE_CONTROLS_HIDDEN 0 - // 1 if splitter drag detect margin and control cannot overlap #define wxPG_NO_CHILD_EVT_MOTION 1 @@ -136,10 +125,6 @@ // width of optional bitmap/image in front of property #define wxPG_CUSTOM_IMAGE_WIDTH 20 - // 1 to create controls out of sight, hide them, and then move them into - // correct position - #define wxPG_CREATE_CONTROLS_HIDDEN 0 - // 1 if splitter drag detect margin and control cannot overlap #define wxPG_NO_CHILD_EVT_MOTION 0 @@ -177,10 +162,6 @@ // width of optional bitmap/image in front of property #define wxPG_CUSTOM_IMAGE_WIDTH 20 - // 1 to create controls out of sight, hide them, and then move them into - // correct position - #define wxPG_CREATE_CONTROLS_HIDDEN 0 - // 1 if splitter drag detect margin and control cannot overlap #define wxPG_NO_CHILD_EVT_MOTION 1 @@ -201,6 +182,9 @@ #define wxCC_CUSTOM_IMAGE_MARGIN1 4 // before image #define wxCC_CUSTOM_IMAGE_MARGIN2 5 // after image +#define DEFAULT_IMAGE_OFFSET_INCREMENT \ + (wxCC_CUSTOM_IMAGE_MARGIN1 + wxCC_CUSTOM_IMAGE_MARGIN2) + #define wxPG_DRAG_MARGIN 30 #if wxPG_NO_CHILD_EVT_MOTION @@ -223,7 +207,6 @@ #define wxPG_SMALL_SCREEN 0 #endif -#endif // #ifndef SWIG // Undefine wxPG_ICON_WIDTH to use supplied xpm bitmaps instead // (for tree buttons) @@ -266,7 +249,6 @@ class wxPropertyGrid; class wxPropertyGridEvent; class wxPropertyGridManager; class wxPGOwnerDrawnComboBox; -class wxPGCustomComboControl; class wxPGEditorDialogAdapter; class wxPGValidationInfo; @@ -279,17 +261,13 @@ class wxPGValidationInfo; @{ */ -#ifndef SWIG - // Used to tell wxPGProperty to use label as name as well - #define wxPG_LABEL (*wxPGProperty::sm_wxPG_LABEL) - // This is the value placed in wxPGProperty::sm_wxPG_LABEL - #define wxPG_LABEL_STRING wxS("@!") - #define wxPG_NULL_BITMAP wxNullBitmap - #define wxPG_COLOUR_BLACK (*wxBLACK) -#else - #define wxPG_NULL_BITMAP wxBitmap_NULL - #define wxPG_COLOUR_BLACK wxColour_BLACK -#endif // #ifndef SWIG +// Used to tell wxPGProperty to use label as name as well +#define wxPG_LABEL (*wxPGProperty::sm_wxPG_LABEL) + +// This is the value placed in wxPGProperty::sm_wxPG_LABEL +#define wxPG_LABEL_STRING wxS("@!") +#define wxPG_NULL_BITMAP wxNullBitmap +#define wxPG_COLOUR_BLACK (*wxBLACK) /** Convert Red, Green and Blue to a single 32-bit value. */ @@ -302,6 +280,29 @@ class wxPGValidationInfo; #define wxPG_DEFAULT_IMAGE_SIZE wxSize(-1, -1) +/** This callback function is used for sorting properties. + + Call wxPropertyGrid::SetSortFunction() to set it. + + Sort function should return a value greater than 0 if position of p1 is + after p2. So, for instance, when comparing property names, you can use + following implementation: + + @code + int MyPropertySortFunction(wxPropertyGrid* propGrid, + wxPGProperty* p1, + wxPGProperty* p2) + { + return p1->GetBaseName().compare( p2->GetBaseName() ); + } + @endcode +*/ +typedef int (*wxPGSortCallback)(wxPropertyGrid* propGrid, + wxPGProperty* p1, + wxPGProperty* p2); + + + typedef wxString wxPGCachedString; /** @} @@ -315,17 +316,10 @@ typedef wxString wxPGCachedString; // ----------------------------------------------------------------------- -#ifndef SWIG - -#if wxUSE_STL -typedef std::vector wxArrayPGProperty; -#else WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(wxPGProperty*, wxArrayPGProperty, wxBaseArrayPtrVoid, class WXDLLIMPEXP_PROPGRID); -#endif -// Always use wxString based hashmap with unicode, stl, swig and GCC 4.0+ WX_DECLARE_STRING_HASH_MAP_WITH_DECL(void*, wxPGHashMapS2P, class WXDLLIMPEXP_PROPGRID); @@ -333,7 +327,7 @@ WX_DECLARE_STRING_HASH_MAP_WITH_DECL(void*, WX_DECLARE_STRING_HASH_MAP_WITH_DECL(wxString, wxPGHashMapS2S, class WXDLLIMPEXP_PROPGRID); - + WX_DECLARE_VOIDPTR_HASH_MAP_WITH_DECL(void*, wxPGHashMapP2P, class WXDLLIMPEXP_PROPGRID); @@ -345,8 +339,6 @@ WX_DECLARE_HASH_MAP_WITH_DECL(wxInt32, wxPGHashMapI2I, class WXDLLIMPEXP_PROPGRID); -#endif // #ifndef SWIG - // ----------------------------------------------------------------------- enum wxPG_GETPROPERTYVALUES_FLAGS @@ -365,7 +357,12 @@ wxPG_INC_ATTRIBUTES = 0x00000040, wxPG_RECURSE_STARTS = 0x00000080, /** Force value change. */ -wxPG_FORCE = 0x00000100 +wxPG_FORCE = 0x00000100, + +/** Only sort categories and their immediate children. + Sorting done by wxPG_AUTO_SORT option uses this. +*/ +wxPG_SORT_TOP_LEVEL_ONLY = 0x00000200 }; @@ -433,15 +430,17 @@ enum wxPG_SETVALUE_FLAGS // ----------------------------------------------------------------------- // Editor class. -#ifndef SWIG - // Editor accessor (for backwards compatiblity use only). #define wxPG_EDITOR(T) wxPGEditor_##T -// Declare editor class, with optional part. -#define WX_PG_DECLARE_EDITOR_WITH_DECL(EDITOR,DECL) \ -extern DECL wxPGEditor* wxPGEditor_##EDITOR; \ -extern DECL wxPGEditor* wxPGConstruct##EDITOR##EditorClass(); +// Macro for declaring editor class, with optional impexpdecl part. +#ifndef WX_PG_DECLARE_EDITOR_WITH_DECL + + #define WX_PG_DECLARE_EDITOR_WITH_DECL(EDITOR,DECL) \ + extern DECL wxPGEditor* wxPGEditor_##EDITOR; \ + extern DECL wxPGEditor* wxPGConstruct##EDITOR##EditorClass(); + +#endif // Declare editor class. #define WX_PG_DECLARE_EDITOR(EDITOR) \ @@ -458,8 +457,6 @@ WX_PG_DECLARE_EDITOR_WITH_DECL(CheckBox,WXDLLIMPEXP_PROPGRID) #endif WX_PG_DECLARE_EDITOR_WITH_DECL(ChoiceAndButton,WXDLLIMPEXP_PROPGRID) -#endif // !SWIG - // ----------------------------------------------------------------------- #ifndef SWIG @@ -487,6 +484,12 @@ template<> inline wxVariant WXVARIANT( const wxArrayString& value ) { return wxVariant(value); } template<> inline wxVariant WXVARIANT( const wxString& 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 template<> inline wxVariant WXVARIANT( const wxDateTime& value ) { return wxVariant(value); } @@ -559,14 +562,24 @@ expdecl wxVariant& operator << ( wxVariant &variant, const classname &value )\ } \ expdecl classname& classname##RefFromVariant( wxVariant& variant ) \ { \ - wxASSERT( variant.GetType() == #classname );\ - classname##VariantData *data = (classname##VariantData*) variant.GetData();\ + wxASSERT_MSG( variant.GetType() == wxS(#classname), \ + wxString::Format("Variant type should have been '%s'" \ + "instead of '%s'", \ + wxS(#classname), \ + variant.GetType().c_str())); \ + classname##VariantData *data = \ + (classname##VariantData*) variant.GetData(); \ return data->GetValue();\ } \ expdecl const classname& classname##RefFromVariant( const wxVariant& variant ) \ { \ - wxASSERT( variant.GetType() == #classname );\ - classname##VariantData *data = (classname##VariantData*) variant.GetData();\ + wxASSERT_MSG( variant.GetType() == wxS(#classname), \ + wxString::Format("Variant type should have been '%s'" \ + "instead of '%s'", \ + wxS(#classname), \ + variant.GetType().c_str())); \ + classname##VariantData *data = \ + (classname##VariantData*) variant.GetData(); \ return data->GetValue();\ } @@ -616,8 +629,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(wxSize, 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) template<> inline wxVariant WXVARIANT( const wxFont& value ) { @@ -633,27 +644,6 @@ 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 @@ -663,31 +653,13 @@ WXDLLIMPEXP_PROPGRID wxULongLong_t& operator << ( wxULongLong_t &value, const wx #define wxPG_VARIANT_TYPE_DOUBLE wxS("double") #define wxPG_VARIANT_TYPE_ARRSTRING wxS("arrstring") #define wxPG_VARIANT_TYPE_DATETIME wxS("datetime") - -// Safely converts a wxVariant to (long) int. Supports converting from string -// 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 ); +#define wxPG_VARIANT_TYPE_LONGLONG wxS("longlong") +#define wxPG_VARIANT_TYPE_ULONGLONG wxS("ulonglong") #endif // !SWIG // ----------------------------------------------------------------------- -#ifndef SWIG - // // Tokenizer macros. // NOTE: I have made two versions - worse ones (performance and consistency @@ -743,8 +715,6 @@ protected: #define WX_PG_TOKENIZER2_END() \ } -#endif - // ----------------------------------------------------------------------- #endif // wxUSE_PROPGRID