// Author: Jaakko Salli
// Modified by:
// Created: 2008-08-31
-// RCS-ID: $Id:
+// RCS-ID: $Id$
// Copyright: (c) Jaakko Salli
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#if wxUSE_PROPGRID
#include "wx/dynarray.h"
+#include "wx/vector.h"
#include "wx/hashmap.h"
#include "wx/variant.h"
#include "wx/longlong.h"
// 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
#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
// (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
// -----------------------------------------------------------------------
-// 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;
class wxPropertyGridEvent;
class wxPropertyGridManager;
class wxPGOwnerDrawnComboBox;
-class wxPGCustomComboControl;
class wxPGEditorDialogAdapter;
-struct wxPGValidationInfo;
+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;
/** @}
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);
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
};
// 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
};
// -----------------------------------------------------------------------
#ifndef SWIG
-// Editor accessor.
+// Editor accessor (for backwards compatiblity use only).
#define wxPG_EDITOR(T) wxPGEditor_##T
// Declare editor class, with optional part.