]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/propgrid/props.h
rename wxRendererNative::DrawRadioButton() to DrawOptionButton() to avoid conflict...
[wxWidgets.git] / include / wx / propgrid / props.h
index 08c1d9228feb76abd773774776b8168766ba28f6..5517f8acd9877fac7c7e2a4034d8dd0d175681f1 100644 (file)
@@ -4,7 +4,7 @@
 // Author:      Jaakko Salli
 // Modified by:
 // Created:     2007-03-28
 // Author:      Jaakko Salli
 // Modified by:
 // Created:     2007-03-28
-// RCS-ID:      $Id:
+// RCS-ID:      $Id$
 // Copyright:   (c) Jaakko Salli
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) Jaakko Salli
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
@@ -20,268 +20,34 @@ class wxArrayEditorDialog;
 
 #include "wx/propgrid/editors.h"
 
 
 #include "wx/propgrid/editors.h"
 
+#include "wx/filename.h"
+#include "wx/dialog.h"
+#include "wx/textctrl.h"
+#include "wx/button.h"
+#include "wx/listbox.h"
+
 // -----------------------------------------------------------------------
 
 //
 // Property class implementation helper macros.
 //
 
 // -----------------------------------------------------------------------
 
 //
 // Property class implementation helper macros.
 //
 
-// Adds constructor function as well.
-#define WX_PG_IMPLEMENT_PROPERTY_CLASS2(NAME,CLASSNAME,\
-                                        UPCLASS,T,T_AS_ARG,EDITOR) \
+#define WX_PG_IMPLEMENT_PROPERTY_CLASS(NAME, UPCLASS, T, T_AS_ARG, EDITOR) \
 IMPLEMENT_DYNAMIC_CLASS(NAME, UPCLASS) \
 IMPLEMENT_DYNAMIC_CLASS(NAME, UPCLASS) \
-WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(NAME,T,EDITOR)
-
-// A regular property
-#define WX_PG_IMPLEMENT_PROPERTY_CLASS(NAME,UPNAME,T,T_AS_ARG,EDITOR) \
-WX_PG_IMPLEMENT_PROPERTY_CLASS2(NAME,NAME,UPNAME,T,T_AS_ARG,EDITOR)
-
-#define WX_PG_DECLARE_DERIVED_PROPERTY_CLASS(CLASSNAME) \
-DECLARE_DYNAMIC_CLASS(CLASSNAME)
-
-// Derived property class is one that inherits from an existing working property
-// class, but assumes same value and editor type.
-#define WX_PG_IMPLEMENT_DERIVED_PROPERTY_CLASS(NAME,UPNAME,T_AS_ARG) \
-IMPLEMENT_DYNAMIC_CLASS(NAME, UPNAME)
-
-// -----------------------------------------------------------------------
-
-#define wxPG_NO_ESCAPE      wxPG_PROP_NO_ESCAPE     // No escape sequences
-#define wxPG_ESCAPE         0                       // Escape sequences
-
-#define WX_PG_DECLARE_STRING_PROPERTY_WITH_DECL(NAME, DECL) \
-DECL NAME : public wxLongStringProperty \
-{ \
-    WX_PG_DECLARE_DERIVED_PROPERTY_CLASS(NAME) \
-public: \
-    NAME( const wxString& name = wxPG_LABEL, \
-          const wxString& label = wxPG_LABEL, \
-          const wxString& value = wxEmptyString); \
-    virtual ~NAME(); \
-    virtual bool OnButtonClick( wxPropertyGrid* propgrid, wxString& value ); \
-    virtual wxValidator* DoGetValidator() const; \
-};
-
-#define WX_PG_DECLARE_STRING_PROPERTY(NAME) \
-WX_PG_DECLARE_STRING_PROPERTY_WITH_DECL(NAME, class) \
-
-#define WX_PG_IMPLEMENT_STRING_PROPERTY_WITH_VALIDATOR(NAME, FLAGS) \
-WX_PG_IMPLEMENT_DERIVED_PROPERTY_CLASS(NAME,wxLongStringProperty,\
-                                       const wxString&) \
-NAME::NAME( const wxString& name, \
-            const wxString& label, \
-            const wxString& value ) \
-  : wxLongStringProperty(name,label,value) \
-{ \
-    m_flags |= FLAGS; \
-} \
-NAME::~NAME() { }
-
-#define WX_PG_IMPLEMENT_STRING_PROPERTY(NAME, FLAGS) \
-WX_PG_IMPLEMENT_STRING_PROPERTY_WITH_VALIDATOR(NAME,FLAGS) \
-wxValidator* NAME::DoGetValidator () const \
-{ return (wxValidator*) NULL; }
-
-// -----------------------------------------------------------------------
-
-#define WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY_WITH_DECL(CLASSNAME,DECL) \
-DECL CLASSNAME : public wxFlagsProperty \
-{ \
-    WX_PG_DECLARE_PROPERTY_CLASS(CLASSNAME) \
-public: \
-    CLASSNAME( const wxString& label = wxPG_LABEL, \
-               const wxString& name = wxPG_LABEL, \
-               long value = -1 ); \
-    virtual ~CLASSNAME(); \
-};
-
-#define WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY(CLASSNAME) \
-WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY_WITH_DECL(CLASSNAME, class)
-
-// This will create interface for wxFlagsProperty derived class
-// named CLASSNAME.
-#define WX_PG_IMPLEMENT_CUSTOM_FLAGS_PROPERTY(CLASSNAME,LABELS,VALUES,DEFVAL) \
-WX_PG_IMPLEMENT_PROPERTY_CLASS(CLASSNAME,wxFlagsProperty,long_##CLASSNAME,\
-                               long,TextCtrl) \
-CLASSNAME::CLASSNAME( const wxString& label, \
-                      const wxString& name, \
-                      long value ) \
-    : wxFlagsProperty(label,name,LABELS,VALUES,value!=-1?value:DEFVAL) \
-{ \
-    m_flags |= wxPG_PROP_STATIC_CHOICES; \
-} \
-CLASSNAME::~CLASSNAME() { }
-
-
-// -----------------------------------------------------------------------
-
-#define WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY_WITH_DECL(CLASSNAME, DECL) \
-class CLASSNAME : public wxEnumProperty \
-{ \
-    WX_PG_DECLARE_PROPERTY_CLASS(CLASSNAME) \
-public: \
-    CLASSNAME( const wxString& label = wxPG_LABEL, \
-               const wxString& name = wxPG_LABEL, \
-               int value = -1 ); \
-    virtual ~CLASSNAME(); \
-};
-
-#define WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY(CLASSNAME) \
-WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY_WITH_DECL(CLASSNAME, class)
-
-#define WX_PG_IMPLEMENT_CUSTOM_ENUM_PROPERTY(CLASSNAME,LABELS,VALUES,DEFVAL) \
-WX_PG_IMPLEMENT_PROPERTY_CLASS(CLASSNAME, wxEnumProperty, long_##CLASSNAME, \
-                               int, Choice) \
-CLASSNAME::CLASSNAME( const wxString& label, const wxString& name, int value ) \
-    : wxEnumProperty(label,name,LABELS,VALUES,value!=-1?value:DEFVAL) \
-{ \
-    m_flags |= wxPG_PROP_STATIC_CHOICES; \
-} \
-CLASSNAME::~CLASSNAME() { }
-
-
-// -----------------------------------------------------------------------
-
-#define WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_WITH_DECL(CLASSNAME, DECL) \
-DECL CLASSNAME : public wxSystemColourProperty \
-{ \
-    DECLARE_DYNAMIC_CLASS(CLASSNAME) \
-public: \
-    CLASSNAME( const wxString& label = wxPG_LABEL, \
-               const wxString& name = wxPG_LABEL, \
-               const wxColourPropertyValue& value = wxColourPropertyValue() ); \
-    virtual ~CLASSNAME(); \
-    virtual wxColour GetColour( int index ) const; \
-};
-
-#define WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY(CLASSNAME) \
-WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_WITH_DECL(CLASSNAME, class)
-
-#define WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY(CLASSNAME,\
-                                               LABELS,VALUES,COLOURS) \
-static wxPGChoices gs_##CLASSNAME##_choicesCache; \
-WX_PG_IMPLEMENT_DERIVED_PROPERTY_CLASS(CLASSNAME, wxSystemColourProperty, \
-                                       const wxColourPropertyValue&) \
-CLASSNAME::CLASSNAME( const wxString& label, const wxString& name, \
-    const wxColourPropertyValue& value ) \
-    : wxSystemColourProperty(label, name, LABELS, VALUES, \
-                             &gs_##CLASSNAME##_choicesCache, value ) \
-{ \
-    m_flags |= wxPG_PROP_TRANSLATE_CUSTOM; \
-} \
-CLASSNAME::~CLASSNAME () { } \
-wxColour CLASSNAME::GetColour ( int index ) const \
-{ \
-    if ( !m_choices.HasValue(index) ) \
-    { \
-        wxASSERT( index < (int)m_choices.GetCount() ); \
-        return COLOURS[index]; \
-    } \
-    return COLOURS[m_choices.GetValue(index)]; \
-}
-
-// -----------------------------------------------------------------------
-
-#define WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR_WITH_DECL(CLASSNAME,\
-                                                                     DECL) \
-DECL CLASSNAME : public wxSystemColourProperty \
-{ \
-    WX_PG_DECLARE_PROPERTY_CLASS(CLASSNAME) \
-public: \
-    CLASSNAME( const wxString& label = wxPG_LABEL, \
-               const wxString& name = wxPG_LABEL, \
-               const wxColour& value = wxColour() ); \
-    virtual ~CLASSNAME(); \
-    virtual wxString GetValueAsString( int argFlags ) const; \
-    virtual wxColour GetColour( int index ) const; \
-    virtual wxVariant DoTranslateVal( wxColourPropertyValue& v ) const; \
-    void Init( wxColour colour ); \
-};
-
-#define WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR(CLASSNAME) \
-WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR_WITH_DECL(CLASSNAME, class)
-
-#define WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR2(CLASSNAME, \
-                                                              LABELS, \
-                                                              VALUES, \
-                                                              COLOURS, \
-                                                              EDITOR) \
-static wxPGChoices gs_##CLASSNAME##_choicesCache; \
-WX_PG_IMPLEMENT_PROPERTY_CLASS(CLASSNAME, wxSystemColourProperty, \
-                               wxColour, const wxColour&,EDITOR) \
-CLASSNAME::CLASSNAME( const wxString& label, \
-                      const wxString& name, \
-                      const wxColour& value ) \
-    : wxSystemColourProperty(label, name, LABELS, VALUES, \
-                             &gs_##CLASSNAME##_choicesCache, value ) \
-{ \
-    if ( &value ) \
-        Init( value ); \
-    else \
-        Init( *wxWHITE ); \
-    m_flags |= wxPG_PROP_TRANSLATE_CUSTOM; \
-} \
-CLASSNAME::~CLASSNAME() { } \
-void CLASSNAME::Init( wxColour colour ) \
-{ \
-    if ( !colour.Ok() ) \
-        colour = *wxWHITE; \
-    wxVariant variant; \
-    variant << colour; \
-    m_value = variant; \
-    int ind = ColToInd(colour); \
-    if ( ind < 0 ) \
-        ind = m_choices.GetCount() - 1; \
-    SetIndex( ind ); \
-} \
-wxString CLASSNAME::GetValueAsString( int argFlags ) const \
-{ \
-    const wxPGEditor* editor = GetEditorClass(); \
-    if ( editor != wxPG_EDITOR(Choice) && \
-         editor != wxPG_EDITOR(ChoiceAndButton) && \
-         editor != wxPG_EDITOR(ComboBox) ) \
-        argFlags |= wxPG_PROPERTY_SPECIFIC; \
-    return wxSystemColourProperty::GetValueAsString(argFlags); \
-} \
-wxColour CLASSNAME::GetColour( int index ) const \
-{ \
-    if ( !m_choices.HasValue(index) ) \
-    { \
-        wxASSERT( index < (int)GetItemCount() ); \
-        return COLOURS[index]; \
-    } \
-    return COLOURS[m_choices.GetValue(index)]; \
-} \
-wxVariant CLASSNAME::DoTranslateVal( wxColourPropertyValue& v ) const \
-{ \
-    wxVariant variant; \
-    variant << v.m_colour; \
-    return variant; \
-}
-
-
-#define WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR(CLASSNAME, \
-                                                             LABELS, \
-                                                             VALUES, \
-                                                             COLOURS) \
-WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR2(CLASSNAME, \
-                                                      LABELS, \
-                                                      VALUES, \
-                                                      COLOURS, \
-                                                      Choice)
+WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(NAME, T, EDITOR)
 
 // -----------------------------------------------------------------------
 
 //
 // These macros help creating DoGetValidator
 #define WX_PG_DOGETVALIDATOR_ENTRY() \
 
 // -----------------------------------------------------------------------
 
 //
 // These macros help creating DoGetValidator
 #define WX_PG_DOGETVALIDATOR_ENTRY() \
-    static wxValidator* s_ptr = (wxValidator*) NULL; \
+    static wxValidator* s_ptr = NULL; \
     if ( s_ptr ) return s_ptr;
 
 // Common function exit
 #define WX_PG_DOGETVALIDATOR_EXIT(VALIDATOR) \
     s_ptr = VALIDATOR; \
     if ( s_ptr ) return s_ptr;
 
 // Common function exit
 #define WX_PG_DOGETVALIDATOR_EXIT(VALIDATOR) \
     s_ptr = VALIDATOR; \
-    wxPGGlobalVars->m_arrValidators.Add( (void*) VALIDATOR ); \
+    wxPGGlobalVars->m_arrValidators.push_back( VALIDATOR ); \
     return VALIDATOR;
 
 // -----------------------------------------------------------------------
     return VALIDATOR;
 
 // -----------------------------------------------------------------------
@@ -344,7 +110,7 @@ public:
                       const wxString& value = wxEmptyString );
     virtual ~wxStringProperty();
 
                       const wxString& value = wxEmptyString );
     virtual ~wxStringProperty();
 
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -434,7 +200,7 @@ public:
     wxIntProperty( const wxString& label,
                    const wxString& name,
                    const wxLongLong& value );
     wxIntProperty( const wxString& label,
                    const wxString& name,
                    const wxLongLong& value );
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -488,7 +254,7 @@ public:
     wxUIntProperty( const wxString& label,
                     const wxString& name,
                     const wxULongLong& value );
     wxUIntProperty( const wxString& label,
                     const wxString& name,
                     const wxULongLong& value );
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -525,7 +291,7 @@ public:
                      double value = 0.0 );
     virtual ~wxFloatProperty();
 
                      double value = 0.0 );
     virtual ~wxFloatProperty();
 
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -540,10 +306,10 @@ public:
                               wxPGValidationInfo* pValidationInfo,
                               int mode =
                                  wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE );
                               wxPGValidationInfo* pValidationInfo,
                               int mode =
                                  wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE );
+    virtual wxValidator* DoGetValidator () const;
 
 protected:
     int m_precision;
 
 protected:
     int m_precision;
-    virtual wxValidator* DoGetValidator () const;
 };
 
 // -----------------------------------------------------------------------
 };
 
 // -----------------------------------------------------------------------
@@ -568,7 +334,7 @@ public:
                     bool value = false );
     virtual ~wxBoolProperty();
 
                     bool value = false );
     virtual ~wxBoolProperty();
 
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -581,9 +347,14 @@ public:
 
 // -----------------------------------------------------------------------
 
 
 // -----------------------------------------------------------------------
 
-/** @class wxBaseEnumProperty
+// If set, then selection of choices is static and should not be
+// changed (i.e. returns NULL in GetPropertyChoices).
+#define wxPG_PROP_STATIC_CHOICES    wxPG_PROP_CLASS_SPECIFIC_1
+
+/** @class wxEnumProperty
     @ingroup classes
     @ingroup classes
-    Derive dynamic custom properties with choices from this class.
+    You can derive custom properties with choices from this class. See
+    wxBaseEnumProperty for remarks.
 
     @remarks
     - Updating private index is important. You can do this either by calling
 
     @remarks
     - Updating private index is important. You can do this either by calling
@@ -591,14 +362,49 @@ public:
     be called (by not implementing it, or by calling super class function in
     it) -OR- you can just call SetIndex in OnSetValue.
 */
     be called (by not implementing it, or by calling super class function in
     it) -OR- you can just call SetIndex in OnSetValue.
 */
-class WXDLLIMPEXP_PROPGRID wxBaseEnumProperty : public wxPGProperty
+class WXDLLIMPEXP_PROPGRID wxEnumProperty : public wxPGProperty
 {
 {
+    WX_PG_DECLARE_PROPERTY_CLASS(wxEnumProperty)
 public:
 public:
-    wxBaseEnumProperty( const wxString& label = wxPG_LABEL,
-                        const wxString& name = wxPG_LABEL );
+
+#ifndef SWIG
+    wxEnumProperty( const wxString& label = wxPG_LABEL,
+                    const wxString& name = wxPG_LABEL,
+                    const wxChar** labels = NULL,
+                    const long* values = NULL,
+                    int value = 0 );
+    wxEnumProperty( const wxString& label,
+                    const wxString& name,
+                    wxPGChoices& choices,
+                    int value = 0 );
+
+    // Special constructor for caching choices (used by derived class)
+    wxEnumProperty( const wxString& label,
+                    const wxString& name,
+                    const wxChar** labels,
+                    const long* values,
+                    wxPGChoices* choicesCache,
+                    int value = 0 );
+
+    wxEnumProperty( const wxString& label,
+                    const wxString& name,
+                    const wxArrayString& labels,
+                    const wxArrayInt& values = wxArrayInt(),
+                    int value = 0 );
+#else
+    wxEnumProperty( const wxString& label = wxPG_LABEL,
+                    const wxString& name = wxPG_LABEL,
+                    const wxArrayString& labels = wxArrayString(),
+                    const wxArrayInt& values = wxArrayInt(),
+                    int value = 0 );
+#endif
+
+    virtual ~wxEnumProperty();
+
+    size_t GetItemCount() const { return m_choices.GetCount(); }
 
     virtual void OnSetValue();
 
     virtual void OnSetValue();
-    virtual wxString GetValueAsString( int argFlags ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -617,22 +423,12 @@ public:
     // This must be overridden to have non-index based value
     virtual int GetIndexForValue( int value ) const;
 
     // This must be overridden to have non-index based value
     virtual int GetIndexForValue( int value ) const;
 
-    // This returns string and value for index
-    // Returns NULL if beyond last item
-    // pvalue is never NULL - always set it.
-    virtual const wxString* GetEntry( size_t index, int* pvalue ) const = 0;
-
     // GetChoiceSelection needs to overridden since m_index is
     // the true index, and various property classes derived from
     // this take advantage of it.
     virtual int GetChoiceSelection() const { return m_index; }
 
     // GetChoiceSelection needs to overridden since m_index is
     // the true index, and various property classes derived from
     // this take advantage of it.
     virtual int GetChoiceSelection() const { return m_index; }
 
-    int GetValueForIndex( size_t index ) const
-    {
-        int v;
-        GetEntry( index, &v );
-        return v;
-    }
+    virtual void OnValidationFailure( wxVariant& pendingValue );
 
 protected:
 
 
 protected:
 
@@ -653,63 +449,7 @@ private:
 
     // Relies on ValidateValue being called always before OnSetValue
     static int              ms_nextIndex;
 
     // Relies on ValidateValue being called always before OnSetValue
     static int              ms_nextIndex;
-};
-
-// -----------------------------------------------------------------------
-
-// If set, then selection of choices is static and should not be
-// changed (i.e. returns NULL in GetPropertyChoices).
-#define wxPG_PROP_STATIC_CHOICES    wxPG_PROP_CLASS_SPECIFIC_1
-
-/** @class wxEnumProperty
-    @ingroup classes
-    You can derive custom properties with choices from this class. See
-    wxBaseEnumProperty for remarks.
-*/
-class WXDLLIMPEXP_PROPGRID wxEnumProperty : public wxBaseEnumProperty
-{
-    WX_PG_DECLARE_PROPERTY_CLASS(wxEnumProperty)
-public:
-
-#ifndef SWIG
-    wxEnumProperty( const wxString& label = wxPG_LABEL,
-                    const wxString& name = wxPG_LABEL,
-                    const wxChar** labels = NULL,
-                    const long* values = NULL,
-                    int value = 0 );
-    wxEnumProperty( const wxString& label,
-                    const wxString& name,
-                    wxPGChoices& choices,
-                    int value = 0 );
-
-    // Special constructor for caching choices (used by derived class)
-    wxEnumProperty( const wxString& label,
-                    const wxString& name,
-                    const wxChar** labels,
-                    const long* values,
-                    wxPGChoices* choicesCache,
-                    int value = 0 );
-
-    wxEnumProperty( const wxString& label,
-                    const wxString& name,
-                    const wxArrayString& labels,
-                    const wxArrayInt& values = wxArrayInt(),
-                    int value = 0 );
-#else
-    wxEnumProperty( const wxString& label = wxPG_LABEL,
-                    const wxString& name = wxPG_LABEL,
-                    const wxArrayString& labels = wxArrayString(),
-                    const wxArrayInt& values = wxArrayInt(),
-                    int value = 0 );
-#endif
-
-    virtual ~wxEnumProperty();
-
-    virtual int GetIndexForValue( int value ) const;
-    virtual const wxString* GetEntry( size_t index, int* pvalue ) const;
-
-    size_t GetItemCount() const { return m_choices.GetCount(); }
-    const wxPGChoices& GetChoices() const { return m_choices; }
+    static int              ms_prevIndex;
 };
 
 // -----------------------------------------------------------------------
 };
 
 // -----------------------------------------------------------------------
@@ -791,7 +531,7 @@ public:
     virtual ~wxFlagsProperty ();
 
     virtual void OnSetValue();
     virtual ~wxFlagsProperty ();
 
     virtual void OnSetValue();
-    virtual wxString GetValueAsString( int argFlags ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int flags ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int flags ) const;
@@ -838,8 +578,6 @@ public:
 
 // -----------------------------------------------------------------------
 
 
 // -----------------------------------------------------------------------
 
-#include "wx/filename.h"
-
 // Indicates first bit useable by derived properties.
 #define wxPG_PROP_SHOW_FULL_FILENAME  wxPG_PROP_CLASS_SPECIFIC_1
 
 // Indicates first bit useable by derived properties.
 #define wxPG_PROP_SHOW_FULL_FILENAME  wxPG_PROP_CLASS_SPECIFIC_1
 
@@ -869,7 +607,7 @@ public:
     virtual ~wxFileProperty ();
 
     virtual void OnSetValue();
     virtual ~wxFileProperty ();
 
     virtual void OnSetValue();
-    virtual wxString GetValueAsString( int argFlags ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -879,12 +617,16 @@ public:
     static wxValidator* GetClassValidator();
     virtual wxValidator* DoGetValidator() const;
 
     static wxValidator* GetClassValidator();
     virtual wxValidator* DoGetValidator() const;
 
+    /**
+        Returns filename to file represented by current value.
+    */
+    wxFileName GetFileName() const;
+
 protected:
     wxString    m_wildcard;
     wxString    m_basePath; // If set, then show path relative to it
     wxString    m_initialPath; // If set, start the file dialog here
     wxString    m_dlgTitle; // If set, used as title for file dialog
 protected:
     wxString    m_wildcard;
     wxString    m_basePath; // If set, then show path relative to it
     wxString    m_initialPath; // If set, start the file dialog here
     wxString    m_dlgTitle; // If set, used as title for file dialog
-    wxFileName  m_filename; // used as primary storage
     int         m_indFilter; // index to the selected filter
 };
 
     int         m_indFilter; // index to the selected filter
 };
 
@@ -920,7 +662,7 @@ public:
                           const wxString& value = wxEmptyString );
     virtual ~wxLongStringProperty();
 
                           const wxString& value = wxEmptyString );
     virtual ~wxLongStringProperty();
 
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -999,7 +741,7 @@ public:
     virtual ~wxArrayStringProperty();
 
     virtual void OnSetValue();
     virtual ~wxArrayStringProperty();
 
     virtual void OnSetValue();
-    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
@@ -1108,17 +850,13 @@ WX_PG_IMPLEMENT_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAME, \
                                                     DELIMCHAR, \
                                                     CUSTBUTTXT) \
 wxValidator* PROPNAME::DoGetValidator () const \
                                                     DELIMCHAR, \
                                                     CUSTBUTTXT) \
 wxValidator* PROPNAME::DoGetValidator () const \
-{ return (wxValidator*) NULL; }
+{ return NULL; }
 
 
 // -----------------------------------------------------------------------
 // wxArrayEditorDialog
 // -----------------------------------------------------------------------
 
 
 
 // -----------------------------------------------------------------------
 // wxArrayEditorDialog
 // -----------------------------------------------------------------------
 
-#include "wx/textctrl.h"
-#include "wx/button.h"
-#include "wx/listbox.h"
-
 #define wxAEDIALOG_STYLE \
     (wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxOK | wxCANCEL | wxCENTRE)
 
 #define wxAEDIALOG_STYLE \
     (wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxOK | wxCANCEL | wxCENTRE)
 
@@ -1169,7 +907,7 @@ public:
     */
     virtual wxValidator* GetTextCtrlValidator() const
     {
     */
     virtual wxValidator* GetTextCtrlValidator() const
     {
-        return (wxValidator*) NULL;
+        return NULL;
     }
 
     // Returns true if array was actually modified
     }
 
     // Returns true if array was actually modified