// Created: 2008-08-31
// RCS-ID: $Id$
// Copyright: (c) Jaakko Salli
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_PROPGRID_PROPGRIDDEFS_H_
#define _WX_PROPGRID_PROPGRIDDEFS_H_
+#include "wx/defs.h"
+
#if wxUSE_PROPGRID
#include "wx/dynarray.h"
#include "wx/vector.h"
#include "wx/hashmap.h"
#include "wx/variant.h"
+#include "wx/any.h"
#include "wx/longlong.h"
#include "wx/clntdata.h"
// 1 if wxRendererNative should be employed
#define wxPG_USE_RENDERER_NATIVE 0
- // 1 to use double-buffer that guarantees flicker-free painting
- #define wxPG_DOUBLE_BUFFER 1
-
// Enable tooltips
#define wxPG_SUPPORT_TOOLTIPS 1
// 1 if splitter drag detect margin and control cannot overlap
#define wxPG_NO_CHILD_EVT_MOTION 0
- // If 1, then setting empty tooltip actually hides it
- #define wxPG_ALLOW_EMPTY_TOOLTIPS 1
-
#define wxPG_NAT_BUTTON_BORDER_ANY 1
#define wxPG_NAT_BUTTON_BORDER_X 1
#define wxPG_NAT_BUTTON_BORDER_Y 1
- // If 1 then controls are refreshed after selected was drawn.
- #define wxPG_REFRESH_CONTROLS_AFTER_REPAINT 0
+ // If 1 then controls are refreshed explicitly in a few places
+ #define wxPG_REFRESH_CONTROLS 0
#elif defined(__WXGTK__)
// 1 if wxRendererNative should be employed
#define wxPG_USE_RENDERER_NATIVE 1
- // 1 to use double-buffer that guarantees flicker-free painting
- #define wxPG_DOUBLE_BUFFER 1
-
// Enable tooltips
#define wxPG_SUPPORT_TOOLTIPS 1
// 1 if splitter drag detect margin and control cannot overlap
#define wxPG_NO_CHILD_EVT_MOTION 1
- // If 1, then setting empty tooltip actually hides it
- #define wxPG_ALLOW_EMPTY_TOOLTIPS 0
-
#define wxPG_NAT_BUTTON_BORDER_ANY 1
#define wxPG_NAT_BUTTON_BORDER_X 1
#define wxPG_NAT_BUTTON_BORDER_Y 1
// If 1 then controls are refreshed after selected was drawn.
- #define wxPG_REFRESH_CONTROLS_AFTER_REPAINT 1
+ #define wxPG_REFRESH_CONTROLS 1
#elif defined(__WXMAC__)
// 1 if wxRendererNative should be employed
#define wxPG_USE_RENDERER_NATIVE 1
- // 1 to use double-buffer that guarantees flicker-free painting
- #define wxPG_DOUBLE_BUFFER 0
-
// Enable tooltips
#define wxPG_SUPPORT_TOOLTIPS 1
// 1 if splitter drag detect margin and control cannot overlap
#define wxPG_NO_CHILD_EVT_MOTION 0
- // If 1, then setting empty tooltip actually hides it
- #define wxPG_ALLOW_EMPTY_TOOLTIPS 1
-
#define wxPG_NAT_BUTTON_BORDER_ANY 0
#define wxPG_NAT_BUTTON_BORDER_X 0
#define wxPG_NAT_BUTTON_BORDER_Y 0
// If 1 then controls are refreshed after selected was drawn.
- #define wxPG_REFRESH_CONTROLS_AFTER_REPAINT 0
+ #define wxPG_REFRESH_CONTROLS 0
#else // defaults
// 1 if wxRendererNative should be employed
#define wxPG_USE_RENDERER_NATIVE 0
- // 1 to use double-buffer that guarantees flicker-free painting
- #define wxPG_DOUBLE_BUFFER 0
-
// Enable tooltips
#define wxPG_SUPPORT_TOOLTIPS 0
// 1 if splitter drag detect margin and control cannot overlap
#define wxPG_NO_CHILD_EVT_MOTION 1
- // If 1, then setting empty tooltip actually hides it
- #define wxPG_ALLOW_EMPTY_TOOLTIPS 0
-
#define wxPG_NAT_BUTTON_BORDER_ANY 0
#define wxPG_NAT_BUTTON_BORDER_X 0
#define wxPG_NAT_BUTTON_BORDER_Y 0
// If 1 then controls are refreshed after selected was drawn.
- #define wxPG_REFRESH_CONTROLS_AFTER_REPAINT 1
+ #define wxPG_REFRESH_CONTROLS 0
#endif // platform
#if defined(__WXWINCE__)
#define wxPG_SMALL_SCREEN 1
- #undef wxPG_DOUBLE_BUFFER
- #define wxPG_DOUBLE_BUFFER 0
#else
#define wxPG_SMALL_SCREEN 0
#endif
wxPGHashMapI2I,
class WXDLLIMPEXP_PROPGRID);
+// Utility to find if specific item is in a vector. Returns index to
+// the item, or wxNOT_FOUND if not present.
+template<typename CONTAINER, typename T>
+int wxPGFindInVector( CONTAINER vector, const T& item )
+{
+ for ( unsigned int i=0; i<vector.size(); i++ )
+ {
+ if ( vector[i] == item )
+ return (int) i;
+ }
+ return wxNOT_FOUND;
+}
+
// -----------------------------------------------------------------------
enum wxPG_GETPROPERTYVALUES_FLAGS
// Used when dealing with fragments of composite string value
wxPG_COMPOSITE_FRAGMENT = 0x00000010,
- // Means property for which final string value is for can not really be
+ // Means property for which final string value is for cannot really be
// edited.
wxPG_UNEDITABLE_COMPOSITE_FRAGMENT = 0x00000020,
\
virtual wxVariantData* Clone() const { return new classname##VariantData(m_value); } \
\
+ DECLARE_WXANY_CONVERSION() \
protected:\
classname m_value; \
};\
\
+IMPLEMENT_TRIVIAL_WXANY_CONVERSION(classname, classname##VariantData) \
+\
wxString classname##VariantData::GetType() const\
{\
return wxS(#classname);\