X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1425eca550ca78f6d0824e50376d763aff17242d..7ca3cc6fc375515bcb0bb925c944df067d3b2ead:/include/wx/propgrid/props.h diff --git a/include/wx/propgrid/props.h b/include/wx/propgrid/props.h index 965de7dc7a..554a2c3a29 100644 --- a/include/wx/propgrid/props.h +++ b/include/wx/propgrid/props.h @@ -20,6 +20,12 @@ class wxArrayEditorDialog; #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" + // ----------------------------------------------------------------------- // @@ -35,7 +41,7 @@ WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(NAME, T, EDITOR) // // 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 @@ -48,8 +54,6 @@ WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(NAME, T, EDITOR) #ifndef SWIG -#include "wx/textctrl.h" - /** @class wxPGInDialogValidator @ingroup classes Creates and manages a temporary wxTextCtrl for validation purposes. @@ -302,10 +306,10 @@ public: wxPGValidationInfo* pValidationInfo, int mode = wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ); + virtual wxValidator* DoGetValidator () const; protected: int m_precision; - virtual wxValidator* DoGetValidator () const; }; // ----------------------------------------------------------------------- @@ -343,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 - 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 @@ -353,11 +362,46 @@ public: 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: - 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* const* 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* const* 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 wxString ValueToString( wxVariant& value, int argFlags = 0 ) const; @@ -379,22 +423,12 @@ public: // 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; } - int GetValueForIndex( size_t index ) const - { - int v; - GetEntry( index, &v ); - return v; - } + virtual void OnValidationFailure( wxVariant& pendingValue ); protected: @@ -419,63 +453,6 @@ private: // ----------------------------------------------------------------------- -// 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; } -}; - -// ----------------------------------------------------------------------- - /** @class wxEditEnumProperty @ingroup classes wxEnumProperty with wxString value and writable combo box editor. @@ -491,7 +468,7 @@ public: wxEditEnumProperty( const wxString& label, const wxString& name, - const wxChar** labels, + const wxChar* const* labels, const long* values, const wxString& value ); wxEditEnumProperty( const wxString& label = wxPG_LABEL, @@ -507,7 +484,7 @@ public: // Special constructor for caching choices (used by derived class) wxEditEnumProperty( const wxString& label, const wxString& name, - const wxChar** labels, + const wxChar* const* labels, const long* values, wxPGChoices* choicesCache, const wxString& value ); @@ -537,7 +514,7 @@ public: #ifndef SWIG wxFlagsProperty( const wxString& label, const wxString& name, - const wxChar** labels, + const wxChar* const* labels, const long* values = NULL, long value = 0 ); wxFlagsProperty( const wxString& label, @@ -557,10 +534,11 @@ public: virtual bool StringToValue( wxVariant& variant, const wxString& text, int flags ) const; - virtual void ChildChanged( wxVariant& thisValue, - int childIndex, - wxVariant& childValue ) const; + virtual wxVariant ChildChanged( wxVariant& thisValue, + int childIndex, + wxVariant& childValue ) const; virtual void RefreshChildren(); + virtual bool DoSetAttribute( const wxString& name, wxVariant& value ); // GetChoiceSelection needs to overridden since m_choices is // used and value is integer, but it is not index. @@ -600,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 @@ -720,9 +696,7 @@ protected: */ class WXDLLIMPEXP_PROPGRID wxDirProperty : public wxLongStringProperty { -#ifndef SWIG DECLARE_DYNAMIC_CLASS(wxDirProperty) -#endif public: wxDirProperty( const wxString& name = wxPG_LABEL, const wxString& label = wxPG_LABEL, @@ -874,17 +848,13 @@ WX_PG_IMPLEMENT_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAME, \ DELIMCHAR, \ CUSTBUTTXT) \ wxValidator* PROPNAME::DoGetValidator () const \ -{ return (wxValidator*) NULL; } +{ return NULL; } // ----------------------------------------------------------------------- // wxArrayEditorDialog // ----------------------------------------------------------------------- -#include "wx/button.h" -#include "wx/dialog.h" -#include "wx/listbox.h" - #define wxAEDIALOG_STYLE \ (wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxOK | wxCANCEL | wxCENTRE) @@ -935,7 +905,7 @@ public: */ virtual wxValidator* GetTextCtrlValidator() const { - return (wxValidator*) NULL; + return NULL; } // Returns true if array was actually modified @@ -982,10 +952,8 @@ protected: virtual void ArraySwap( size_t first, size_t second ) = 0; private: -#ifndef SWIG DECLARE_DYNAMIC_CLASS_NO_COPY(wxArrayEditorDialog) DECLARE_EVENT_TABLE() -#endif }; // ----------------------------------------------------------------------- @@ -1032,10 +1000,8 @@ protected: virtual void ArraySwap( size_t first, size_t second ); private: -#ifndef SWIG DECLARE_DYNAMIC_CLASS_NO_COPY(wxPGArrayStringEditorDialog) DECLARE_EVENT_TABLE() -#endif }; // -----------------------------------------------------------------------