// Author: Jaakko Salli
// Modified by:
// 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"
// NOTE: More in propertygrid.cpp
//
-#ifndef SWIG
-
#if defined(__WXMSW__)
// space between vertical line and value text
// 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
-#endif // #ifndef SWIG
// Undefine wxPG_ICON_WIDTH to use supplied xpm bitmaps instead
// (for tree buttons)
@{
*/
-#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.
*/
// -----------------------------------------------------------------------
-#ifndef SWIG
-
WX_DEFINE_TYPEARRAY_WITH_DECL_PTR(wxPGProperty*, wxArrayPGProperty,
wxBaseArrayPtrVoid,
class WXDLLIMPEXP_PROPGRID);
-// 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);
wxPGHashMapI2I,
class WXDLLIMPEXP_PROPGRID);
-#endif // #ifndef SWIG
+// 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;
+}
// -----------------------------------------------------------------------
// 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,
// -----------------------------------------------------------------------
// 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) \
#endif
WX_PG_DECLARE_EDITOR_WITH_DECL(ChoiceAndButton,WXDLLIMPEXP_PROPGRID)
-#endif // !SWIG
-
// -----------------------------------------------------------------------
#ifndef SWIG
\
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);\
// -----------------------------------------------------------------------
-#ifndef SWIG
-
//
// Tokenizer macros.
// NOTE: I have made two versions - worse ones (performance and consistency
#define WX_PG_TOKENIZER2_END() \
}
-#endif
-
// -----------------------------------------------------------------------
#endif // wxUSE_PROPGRID