]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/propgrid/props.h
moving more things to common API between carbon and cocoa, adapting WidthDefault...
[wxWidgets.git] / include / wx / propgrid / props.h
index 7e4dcb9dd09be89730b016dbf4f9f76d6a1196c0..5c381150561558e992a3d2919fd070cf9dad3197 100644 (file)
@@ -4,7 +4,7 @@
 // Author:      Jaakko Salli
 // Modified by:
 // Created:     2007-03-28
-// RCS-ID:      $Id:
+// RCS-ID:      $Id$
 // Copyright:   (c) Jaakko Salli
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
@@ -22,45 +22,10 @@ class wxArrayEditorDialog;
 
 // -----------------------------------------------------------------------
 
-//
-// Additional property class declaration helper macros
-//
-
 //
 // Property class implementation helper macros.
 //
 
-#define WX_PG_DECLARE_BASIC_TYPE_METHODS() \
-    virtual wxString GetValueAsString( int argFlags = 0 ) const; \
-    virtual bool StringToValue( wxVariant& variant, \
-                                const wxString& text, \
-                                int argFlags = 0 ) const;
-
-#define WX_PG_DECLARE_CHOICE_METHODS() \
-    virtual bool IntToValue( wxVariant& variant, \
-                             int number, int argFlags = 0 ) const; \
-    virtual int GetChoiceInfo( wxPGChoiceInfo* choiceinfo );
-
-#define WX_PG_DECLARE_EVENT_METHODS() \
-    virtual bool OnEvent( wxPropertyGrid* propgrid, \
-                          wxWindow* primary, wxEvent& event );
-
-#define WX_PG_DECLARE_PARENTAL_METHODS() \
-    virtual void ChildChanged( wxVariant& thisValue, \
-                               int childIndex, wxVariant& childValue ) const; \
-    virtual void RefreshChildren();
-
-#define WX_PG_DECLARE_CUSTOM_PAINT_METHODS() \
-    virtual wxSize OnMeasureImage( int item ) const; \
-    virtual void OnCustomPaint( wxDC& dc, \
-                                const wxRect& rect, wxPGPaintData& paintdata );
-
-#define WX_PG_DECLARE_ATTRIBUTE_METHODS() \
-    virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
-
-#define WX_PG_DECLARE_VALIDATOR_METHODS() \
-    virtual wxValidator* DoGetValidator() const;
-
 // Adds constructor function as well.
 #define WX_PG_IMPLEMENT_PROPERTY_CLASS2(NAME,CLASSNAME,\
                                         UPCLASS,T,T_AS_ARG,EDITOR) \
@@ -71,14 +36,6 @@ WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(NAME,T,EDITOR)
 #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
@@ -87,22 +44,21 @@ IMPLEMENT_DYNAMIC_CLASS(NAME, UPNAME)
 #define WX_PG_DECLARE_STRING_PROPERTY_WITH_DECL(NAME, DECL) \
 DECL NAME : public wxLongStringProperty \
 { \
-    WX_PG_DECLARE_DERIVED_PROPERTY_CLASS(NAME) \
+    DECLARE_DYNAMIC_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 ); \
-    WX_PG_DECLARE_VALIDATOR_METHODS() \
+    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&) \
+IMPLEMENT_DYNAMIC_CLASS(NAME,wxLongStringProperty) \
 NAME::NAME( const wxString& name, \
             const wxString& label, \
             const wxString& value ) \
@@ -117,64 +73,6 @@ 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) \
@@ -195,8 +93,7 @@ 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&) \
+IMPLEMENT_DYNAMIC_CLASS(CLASSNAME, wxSystemColourProperty) \
 CLASSNAME::CLASSNAME( const wxString& label, const wxString& name, \
     const wxColourPropertyValue& value ) \
     : wxSystemColourProperty(label, name, LABELS, VALUES, \
@@ -316,13 +213,15 @@ WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR2(CLASSNAME, \
 // 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;
 
 // -----------------------------------------------------------------------
 
 #ifndef SWIG
 
+#include "wx/textctrl.h"
+
 /** @class wxPGInDialogValidator
     @ingroup classes
     Creates and manages a temporary wxTextCtrl for validation purposes.
@@ -379,8 +278,12 @@ public:
                       const wxString& value = wxEmptyString );
     virtual ~wxStringProperty();
 
-    WX_PG_DECLARE_BASIC_TYPE_METHODS()
-    WX_PG_DECLARE_ATTRIBUTE_METHODS()
+    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual bool StringToValue( wxVariant& variant,
+                                const wxString& text,
+                                int argFlags = 0 ) const;
+
+    virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
 
     /** This is updated so "<composed>" special value can be handled.
     */
@@ -465,7 +368,10 @@ public:
     wxIntProperty( const wxString& label,
                    const wxString& name,
                    const wxLongLong& value );
-    WX_PG_DECLARE_BASIC_TYPE_METHODS()
+    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual bool StringToValue( wxVariant& variant,
+                                const wxString& text,
+                                int argFlags = 0 ) const;
     virtual bool ValidateValue( wxVariant& value,
                                 wxPGValidationInfo& validationInfo ) const;
     virtual bool IntToValue( wxVariant& variant,
@@ -516,8 +422,11 @@ public:
     wxUIntProperty( const wxString& label,
                     const wxString& name,
                     const wxULongLong& value );
-    WX_PG_DECLARE_BASIC_TYPE_METHODS()
-    WX_PG_DECLARE_ATTRIBUTE_METHODS()
+    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual bool StringToValue( wxVariant& variant,
+                                const wxString& text,
+                                int argFlags = 0 ) const;
+    virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
     virtual bool ValidateValue( wxVariant& value,
                                 wxPGValidationInfo& validationInfo ) const;
     virtual bool IntToValue( wxVariant& variant,
@@ -550,8 +459,11 @@ public:
                      double value = 0.0 );
     virtual ~wxFloatProperty();
 
-    WX_PG_DECLARE_BASIC_TYPE_METHODS()
-    WX_PG_DECLARE_ATTRIBUTE_METHODS()
+    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual bool StringToValue( wxVariant& variant,
+                                const wxString& text,
+                                int argFlags = 0 ) const;
+    virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
     virtual bool ValidateValue( wxVariant& value,
                                 wxPGValidationInfo& validationInfo ) const;
 
@@ -590,9 +502,13 @@ public:
                     bool value = false );
     virtual ~wxBoolProperty();
 
-    WX_PG_DECLARE_BASIC_TYPE_METHODS()
-    WX_PG_DECLARE_CHOICE_METHODS()
-    WX_PG_DECLARE_ATTRIBUTE_METHODS()
+    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual bool StringToValue( wxVariant& variant,
+                                const wxString& text,
+                                int argFlags = 0 ) const;
+    virtual bool IntToValue( wxVariant& variant,
+                             int number, int argFlags = 0 ) const;
+    virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
 };
 
 #endif  // !SWIG
@@ -640,6 +556,11 @@ public:
     // 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; }
+
     int GetValueForIndex( size_t index ) const
     {
         int v;
@@ -718,15 +639,11 @@ public:
 
     virtual ~wxEnumProperty();
 
-    virtual int GetChoiceInfo( wxPGChoiceInfo* choiceinfo );
     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; }
-
-protected:
-    wxPGChoices             m_choices;
 };
 
 // -----------------------------------------------------------------------
@@ -817,8 +734,9 @@ public:
                                wxVariant& childValue ) const;
     virtual void RefreshChildren();
 
-    // this is necessary for conveying m_choices
-    virtual int GetChoiceInfo( wxPGChoiceInfo* choiceinfo );
+    // GetChoiceSelection needs to overridden since m_choices is
+    // used and value is integer, but it is not index.
+    virtual int GetChoiceSelection() const { return wxNOT_FOUND; }
 
     // helpers
     size_t GetItemCount() const { return m_choices.GetCount(); }
@@ -826,8 +744,6 @@ public:
         { return m_choices.GetLabel(ind); }
 
 protected:
-    wxPGChoices             m_choices;
-
     // Used to detect if choices have been changed
     wxPGChoicesData*        m_oldChoicesData;
 
@@ -892,8 +808,7 @@ public:
                                 const wxString& text,
                                 int argFlags = 0 ) const;
     virtual wxPGEditorDialogAdapter* GetEditorDialog() const;
-
-    WX_PG_DECLARE_ATTRIBUTE_METHODS()
+    virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
 
     static wxValidator* GetClassValidator();
     virtual wxValidator* DoGetValidator() const;
@@ -943,8 +858,8 @@ public:
     virtual bool StringToValue( wxVariant& variant,
                                 const wxString& text,
                                 int argFlags = 0 ) const;
-
-    WX_PG_DECLARE_EVENT_METHODS()
+    virtual bool OnEvent( wxPropertyGrid* propgrid,
+                          wxWindow* primary, wxEvent& event );
 
     // Shows string editor dialog. Value to be edited should be read from
     // value, and if dialog is not cancelled, it should be stored back and true
@@ -982,8 +897,8 @@ public:
                    const wxString& value = wxEmptyString );
     virtual ~wxDirProperty();
 
-    WX_PG_DECLARE_ATTRIBUTE_METHODS()
-    WX_PG_DECLARE_VALIDATOR_METHODS()
+    virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
+    virtual wxValidator* DoGetValidator() const;
 
     virtual bool OnButtonClick ( wxPropertyGrid* propGrid, wxString& value );
 
@@ -1018,8 +933,12 @@ public:
     virtual ~wxArrayStringProperty();
 
     virtual void OnSetValue();
-    WX_PG_DECLARE_BASIC_TYPE_METHODS()
-    WX_PG_DECLARE_EVENT_METHODS()
+    virtual wxString GetValueAsString( int argFlags = 0 ) const;
+    virtual bool StringToValue( wxVariant& variant,
+                                const wxString& text,
+                                int argFlags = 0 ) const;
+    virtual bool OnEvent( wxPropertyGrid* propgrid,
+                          wxWindow* primary, wxEvent& event );
 
     virtual void GenerateValueAsString();
 
@@ -1060,7 +979,7 @@ public: \
     virtual bool OnEvent( wxPropertyGrid* propgrid, \
                           wxWindow* primary, wxEvent& event ); \
     virtual bool OnCustomStringEdit( wxWindow* parent, wxString& value ); \
-    WX_PG_DECLARE_VALIDATOR_METHODS() \
+    virtual wxValidator* DoGetValidator() const; \
 };
 
 #define WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAM) \
@@ -1130,8 +1049,8 @@ wxValidator* PROPNAME::DoGetValidator () const \
 // wxArrayEditorDialog
 // -----------------------------------------------------------------------
 
-#include "wx/textctrl.h"
 #include "wx/button.h"
+#include "wx/dialog.h"
 #include "wx/listbox.h"
 
 #define wxAEDIALOG_STYLE \