| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029 | 
							- /////////////////////////////////////////////////////////////////////////////
 
- // Name:        wx/propgrid/props.h
 
- // Purpose:     wxPropertyGrid Property Classes
 
- // Author:      Jaakko Salli
 
- // Modified by:
 
- // Created:     2007-03-28
 
- // Copyright:   (c) Jaakko Salli
 
- // Licence:     wxWindows licence
 
- /////////////////////////////////////////////////////////////////////////////
 
- #ifndef _WX_PROPGRID_PROPS_H_
 
- #define _WX_PROPGRID_PROPS_H_
 
- #include "wx/defs.h"
 
- #if wxUSE_PROPGRID
 
- // -----------------------------------------------------------------------
 
- class wxPGArrayEditorDialog;
 
- #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"
 
- #include "wx/valtext.h"
 
- // -----------------------------------------------------------------------
 
- //
 
- // Property class implementation helper macros.
 
- //
 
- #define WX_PG_IMPLEMENT_PROPERTY_CLASS(NAME, UPCLASS, T, T_AS_ARG, EDITOR) \
 
- IMPLEMENT_DYNAMIC_CLASS(NAME, UPCLASS) \
 
- WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(NAME, T, EDITOR)
 
- // -----------------------------------------------------------------------
 
- //
 
- // These macros help creating DoGetValidator
 
- #define WX_PG_DOGETVALIDATOR_ENTRY() \
 
-     static wxValidator* s_ptr = NULL; \
 
-     if ( s_ptr ) return s_ptr;
 
- // Common function exit
 
- #define WX_PG_DOGETVALIDATOR_EXIT(VALIDATOR) \
 
-     s_ptr = VALIDATOR; \
 
-     wxPGGlobalVars->m_arrValidators.push_back( VALIDATOR ); \
 
-     return VALIDATOR;
 
- // -----------------------------------------------------------------------
 
- /** @class wxPGInDialogValidator
 
-     @ingroup classes
 
-     Creates and manages a temporary wxTextCtrl for validation purposes.
 
-     Uses wxPropertyGrid's current editor, if available.
 
- */
 
- class WXDLLIMPEXP_PROPGRID wxPGInDialogValidator
 
- {
 
- public:
 
-     wxPGInDialogValidator()
 
-     {
 
-         m_textCtrl = NULL;
 
-     }
 
-     ~wxPGInDialogValidator()
 
-     {
 
-         if ( m_textCtrl )
 
-             m_textCtrl->Destroy();
 
-     }
 
-     bool DoValidate( wxPropertyGrid* propGrid,
 
-                      wxValidator* validator,
 
-                      const wxString& value );
 
- private:
 
-     wxTextCtrl*         m_textCtrl;
 
- };
 
- // -----------------------------------------------------------------------
 
- // Property classes
 
- // -----------------------------------------------------------------------
 
- #define wxPG_PROP_PASSWORD  wxPG_PROP_CLASS_SPECIFIC_2
 
- /** @class wxStringProperty
 
-     @ingroup classes
 
-     Basic property with string value.
 
-     <b>Supported special attributes:</b>
 
-     - "Password": set to 1 in order to enable wxTE_PASSWORD on the editor.
 
-     @remarks
 
-     - If value "<composed>" is set, then actual value is formed (or composed)
 
-       from values of child properties.
 
- */
 
- class WXDLLIMPEXP_PROPGRID wxStringProperty : public wxPGProperty
 
- {
 
-     WX_PG_DECLARE_PROPERTY_CLASS(wxStringProperty)
 
- public:
 
-     wxStringProperty( const wxString& label = wxPG_LABEL,
 
-                       const wxString& name = wxPG_LABEL,
 
-                       const wxString& value = wxEmptyString );
 
-     virtual ~wxStringProperty();
 
-     virtual wxString ValueToString( wxVariant& value, 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.
 
-     */
 
-     virtual void OnSetValue();
 
- protected:
 
- };
 
- // -----------------------------------------------------------------------
 
- /** Constants used with NumericValidation<>().
 
- */
 
- enum wxPGNumericValidationConstants
 
- {
 
-     /** Instead of modifying the value, show an error message.
 
-     */
 
-     wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE      = 0,
 
-     /** Modify value, but stick with the limitations.
 
-     */
 
-     wxPG_PROPERTY_VALIDATION_SATURATE           = 1,
 
-     /** Modify value, wrap around on overflow.
 
-     */
 
-     wxPG_PROPERTY_VALIDATION_WRAP               = 2
 
- };
 
- // -----------------------------------------------------------------------
 
- #if wxUSE_VALIDATORS
 
- /**
 
-     A more comprehensive numeric validator class.
 
- */
 
- class WXDLLIMPEXP_PROPGRID wxNumericPropertyValidator : public wxTextValidator
 
- {
 
- public:
 
-     enum NumericType
 
-     {
 
-         Signed = 0,
 
-         Unsigned,
 
-         Float
 
-     };
 
-     wxNumericPropertyValidator( NumericType numericType, int base = 10 );
 
-     virtual ~wxNumericPropertyValidator() { }
 
-     virtual bool Validate(wxWindow* parent);
 
- };
 
- #endif // wxUSE_VALIDATORS
 
- /** @class wxIntProperty
 
-     @ingroup classes
 
-     Basic property with integer value.
 
-     Seamlessly supports 64-bit integer (wxLongLong) on overflow.
 
-     <b>Example how to use seamless 64-bit integer support</b>
 
-       Getting value:
 
-       @code
 
-           wxLongLong_t value = pg->GetPropertyValueAsLongLong();
 
-       @endcode
 
-          or
 
-       @code
 
-           wxLongLong_t value;
 
-           wxVariant variant = property->GetValue();
 
-           if ( variant.GetType() == "wxLongLong" )
 
-               value = wxLongLongFromVariant(variant);
 
-           else
 
-               value = variant.GetLong();
 
-       @endcode
 
-       Setting value:
 
-        @code
 
-           pg->SetPropertyValue(longLongVal);
 
-       @endcode
 
-          or
 
-       @code
 
-           property->SetValue(WXVARIANT(longLongVal));
 
-       @endcode
 
-     <b>Supported special attributes:</b>
 
-     - "Min", "Max": Specify acceptable value range.
 
- */
 
- class WXDLLIMPEXP_PROPGRID wxIntProperty : public wxPGProperty
 
- {
 
-     WX_PG_DECLARE_PROPERTY_CLASS(wxIntProperty)
 
- public:
 
-     wxIntProperty( const wxString& label = wxPG_LABEL,
 
-                    const wxString& name = wxPG_LABEL,
 
-                    long value = 0 );
 
-     virtual ~wxIntProperty();
 
-     wxIntProperty( const wxString& label,
 
-                    const wxString& name,
 
-                    const wxLongLong& value );
 
-     virtual wxString ValueToString( wxVariant& value, 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,
 
-                              int number,
 
-                              int argFlags = 0 ) const;
 
-     static wxValidator* GetClassValidator();
 
-     virtual wxValidator* DoGetValidator() const;
 
-     /** Validation helper.
 
-     */
 
-     static bool DoValidation( const wxPGProperty* property,
 
-                               wxLongLong_t& value,
 
-                               wxPGValidationInfo* pValidationInfo,
 
-                               int mode =
 
-                                 wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE );
 
- protected:
 
- };
 
- // -----------------------------------------------------------------------
 
- /** @class wxUIntProperty
 
-     @ingroup classes
 
-     Basic property with unsigned integer value.
 
-     Seamlessly supports 64-bit integer (wxULongLong) on overflow.
 
-     <b>Supported special attributes:</b>
 
-     - "Min", "Max": Specify acceptable value range.
 
-     - "Base": Define base. Valid constants are wxPG_BASE_OCT, wxPG_BASE_DEC,
 
-     wxPG_BASE_HEX and wxPG_BASE_HEXL (lowercase characters). Arbitrary bases
 
-     are <b>not</b> supported.
 
-     - "Prefix": Possible values are wxPG_PREFIX_NONE, wxPG_PREFIX_0x, and
 
-     wxPG_PREFIX_DOLLAR_SIGN. Only wxPG_PREFIX_NONE works with Decimal and Octal
 
-     numbers.
 
-     @remarks
 
-     - For example how to use seamless 64-bit integer support, see wxIntProperty
 
-     documentation (just use wxULongLong instead of wxLongLong).
 
- */
 
- class WXDLLIMPEXP_PROPGRID wxUIntProperty : public wxPGProperty
 
- {
 
-     WX_PG_DECLARE_PROPERTY_CLASS(wxUIntProperty)
 
- public:
 
-     wxUIntProperty( const wxString& label = wxPG_LABEL,
 
-                     const wxString& name = wxPG_LABEL,
 
-                     unsigned long value = 0 );
 
-     virtual ~wxUIntProperty();
 
-     wxUIntProperty( const wxString& label,
 
-                     const wxString& name,
 
-                     const wxULongLong& value );
 
-     virtual wxString ValueToString( wxVariant& value, 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 wxValidator* DoGetValidator () const;
 
-     virtual bool IntToValue( wxVariant& variant,
 
-                              int number,
 
-                              int argFlags = 0 ) const;
 
- protected:
 
-     wxByte      m_base;
 
-     wxByte      m_realBase; // translated to 8,16,etc.
 
-     wxByte      m_prefix;
 
- private:
 
-     void Init();
 
- };
 
- // -----------------------------------------------------------------------
 
- /** @class wxFloatProperty
 
-     @ingroup classes
 
-     Basic property with double-precision floating point value.
 
-     <b>Supported special attributes:</b>
 
-     - "Precision": Sets the (max) precision used when floating point value is
 
-     rendered as text. The default -1 means infinite precision.
 
- */
 
- class WXDLLIMPEXP_PROPGRID wxFloatProperty : public wxPGProperty
 
- {
 
-     WX_PG_DECLARE_PROPERTY_CLASS(wxFloatProperty)
 
- public:
 
-     wxFloatProperty( const wxString& label = wxPG_LABEL,
 
-                      const wxString& name = wxPG_LABEL,
 
-                      double value = 0.0 );
 
-     virtual ~wxFloatProperty();
 
-     virtual wxString ValueToString( wxVariant& value, 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;
 
-     /** Validation helper.
 
-     */
 
-     static bool DoValidation( const wxPGProperty* property,
 
-                               double& value,
 
-                               wxPGValidationInfo* pValidationInfo,
 
-                               int mode =
 
-                                  wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE );
 
-     static wxValidator* GetClassValidator();
 
-     virtual wxValidator* DoGetValidator () const;
 
- protected:
 
-     int m_precision;
 
- };
 
- // -----------------------------------------------------------------------
 
- /** @class wxBoolProperty
 
-     @ingroup classes
 
-     Basic property with boolean value.
 
-     <b>Supported special attributes:</b>
 
-     - "UseCheckbox": Set to 1 to use check box editor instead of combo box.
 
-     - "UseDClickCycling": Set to 1 to cycle combo box instead showing the list.
 
- */
 
- class WXDLLIMPEXP_PROPGRID wxBoolProperty : public wxPGProperty
 
- {
 
-     WX_PG_DECLARE_PROPERTY_CLASS(wxBoolProperty)
 
- public:
 
-     wxBoolProperty( const wxString& label = wxPG_LABEL,
 
-                     const wxString& name = wxPG_LABEL,
 
-                     bool value = false );
 
-     virtual ~wxBoolProperty();
 
-     virtual wxString ValueToString( wxVariant& value, 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 );
 
- };
 
- // -----------------------------------------------------------------------
 
- // 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.
 
-     @remarks
 
-     - Updating private index is important. You can do this either by calling
 
-     SetIndex() in IntToValue, and then letting wxBaseEnumProperty::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 wxEnumProperty : public wxPGProperty
 
- {
 
-     WX_PG_DECLARE_PROPERTY_CLASS(wxEnumProperty)
 
- public:
 
- #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;
 
-     virtual bool StringToValue( wxVariant& variant,
 
-                                 const wxString& text,
 
-                                 int argFlags = 0 ) const;
 
-     virtual bool ValidateValue( wxVariant& value,
 
-                                 wxPGValidationInfo& validationInfo ) const;
 
-     // If wxPG_FULL_VALUE is not set in flags, then the value is interpreted
 
-     // as index to choices list. Otherwise, it is actual value.
 
-     virtual bool IntToValue( wxVariant& variant,
 
-                              int number,
 
-                              int argFlags = 0 ) const;
 
-     //
 
-     // Additional virtuals
 
-     // This must be overridden to have non-index based value
 
-     virtual int GetIndexForValue( int value ) const;
 
-     // 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; }
 
-     virtual void OnValidationFailure( wxVariant& pendingValue );
 
- protected:
 
-     int GetIndex() const;
 
-     void SetIndex( int index );
 
-     bool ValueFromString_( wxVariant& value,
 
-                            const wxString& text,
 
-                            int argFlags ) const;
 
-     bool ValueFromInt_( wxVariant& value, int intVal, int argFlags ) const;
 
-     static void ResetNextIndex() { ms_nextIndex = -2; }
 
- private:
 
-     // This is private so that classes are guaranteed to use GetIndex
 
-     // for up-to-date index value.
 
-     int                     m_index;
 
-     // Relies on ValidateValue being called always before OnSetValue
 
-     static int              ms_nextIndex;
 
- };
 
- // -----------------------------------------------------------------------
 
- /** @class wxEditEnumProperty
 
-     @ingroup classes
 
-     wxEnumProperty with wxString value and writable combo box editor.
 
-     @remarks
 
-     Uses int value, similar to wxEnumProperty, unless text entered by user is
 
-     is not in choices (in which case string value is used).
 
- */
 
- class WXDLLIMPEXP_PROPGRID wxEditEnumProperty : public wxEnumProperty
 
- {
 
-     WX_PG_DECLARE_PROPERTY_CLASS(wxEditEnumProperty)
 
- public:
 
-     wxEditEnumProperty( const wxString& label,
 
-                         const wxString& name,
 
-                         const wxChar* const* labels,
 
-                         const long* values,
 
-                         const wxString& value );
 
-     wxEditEnumProperty( const wxString& label = wxPG_LABEL,
 
-                         const wxString& name = wxPG_LABEL,
 
-                         const wxArrayString& labels = wxArrayString(),
 
-                         const wxArrayInt& values = wxArrayInt(),
 
-                         const wxString& value = wxEmptyString );
 
-     wxEditEnumProperty( const wxString& label,
 
-                         const wxString& name,
 
-                         wxPGChoices& choices,
 
-                         const wxString& value = wxEmptyString );
 
-     // Special constructor for caching choices (used by derived class)
 
-     wxEditEnumProperty( const wxString& label,
 
-                         const wxString& name,
 
-                         const wxChar* const* labels,
 
-                         const long* values,
 
-                         wxPGChoices* choicesCache,
 
-                         const wxString& value );
 
-     virtual ~wxEditEnumProperty();
 
- protected:
 
- };
 
- // -----------------------------------------------------------------------
 
- /** @class wxFlagsProperty
 
-     @ingroup classes
 
-     Represents a bit set that fits in a long integer. wxBoolProperty
 
-     sub-properties are created for editing individual bits. Textctrl is created
 
-     to manually edit the flags as a text; a continuous sequence of spaces,
 
-     commas and semicolons is considered as a flag id separator.
 
-     <b>Note:</b> When changing "choices" (ie. flag labels) of wxFlagsProperty,
 
-     you will need to use SetPropertyChoices - otherwise they will not get
 
-     updated properly.
 
- */
 
- class WXDLLIMPEXP_PROPGRID wxFlagsProperty : public wxPGProperty
 
- {
 
-     WX_PG_DECLARE_PROPERTY_CLASS(wxFlagsProperty)
 
- public:
 
- #ifndef SWIG
 
-     wxFlagsProperty( const wxString& label,
 
-                      const wxString& name,
 
-                      const wxChar* const* labels,
 
-                      const long* values = NULL,
 
-                      long value = 0 );
 
-     wxFlagsProperty( const wxString& label,
 
-                      const wxString& name,
 
-                      wxPGChoices& choices,
 
-                      long value = 0 );
 
- #endif
 
-     wxFlagsProperty( const wxString& label = wxPG_LABEL,
 
-                      const wxString& name = wxPG_LABEL,
 
-                      const wxArrayString& labels = wxArrayString(),
 
-                      const wxArrayInt& values = wxArrayInt(),
 
-                      int value = 0 );
 
-     virtual ~wxFlagsProperty ();
 
-     virtual void OnSetValue();
 
-     virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
 
-     virtual bool StringToValue( wxVariant& variant,
 
-                                 const wxString& text,
 
-                                 int flags ) 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.
 
-     virtual int GetChoiceSelection() const { return wxNOT_FOUND; }
 
-     // helpers
 
-     size_t GetItemCount() const { return m_choices.GetCount(); }
 
-     const wxString& GetLabel( size_t ind ) const
 
-         { return m_choices.GetLabel(static_cast<int>(ind)); }
 
- protected:
 
-     // Used to detect if choices have been changed
 
-     wxPGChoicesData*        m_oldChoicesData;
 
-     // Needed to properly mark changed sub-properties
 
-     long                    m_oldValue;
 
-     // Converts string id to a relevant bit.
 
-     long IdToBit( const wxString& id ) const;
 
-     // Creates children and sets value.
 
-     void Init();
 
- };
 
- // -----------------------------------------------------------------------
 
- /** @class wxPGFileDialogAdapter
 
-     @ingroup classes
 
- */
 
- class WXDLLIMPEXP_PROPGRID
 
-     wxPGFileDialogAdapter : public wxPGEditorDialogAdapter
 
- {
 
- public:
 
-     virtual bool DoShowDialog( wxPropertyGrid* propGrid,
 
-                                wxPGProperty* property );
 
- };
 
- // -----------------------------------------------------------------------
 
- // Indicates first bit useable by derived properties.
 
- #define wxPG_PROP_SHOW_FULL_FILENAME  wxPG_PROP_CLASS_SPECIFIC_1
 
- /** @class wxFileProperty
 
-     @ingroup classes
 
-     Like wxLongStringProperty, but the button triggers file selector instead.
 
-     <b>Supported special attributes:</b>
 
-     - "Wildcard": Sets wildcard (see wxFileDialog for format details), "All
 
-     files..." is default.
 
-     - "ShowFullPath": Default 1. When 0, only the file name is shown (i.e. drive
 
-       and directory are hidden).
 
-     - "ShowRelativePath": If set, then the filename is shown relative to the
 
-     given path string.
 
-     - "InitialPath": Sets the initial path of where to look for files.
 
-     - "DialogTitle": Sets a specific title for the dir dialog.
 
- */
 
- class WXDLLIMPEXP_PROPGRID wxFileProperty : public wxPGProperty
 
- {
 
-     friend class wxPGFileDialogAdapter;
 
-     WX_PG_DECLARE_PROPERTY_CLASS(wxFileProperty)
 
- public:
 
-     wxFileProperty( const wxString& label = wxPG_LABEL,
 
-                     const wxString& name = wxPG_LABEL,
 
-                     const wxString& value = wxEmptyString );
 
-     virtual ~wxFileProperty ();
 
-     virtual void OnSetValue();
 
-     virtual wxString ValueToString( wxVariant& value, int argFlags = 0 ) const;
 
-     virtual bool StringToValue( wxVariant& variant,
 
-                                 const wxString& text,
 
-                                 int argFlags = 0 ) const;
 
-     virtual wxPGEditorDialogAdapter* GetEditorDialog() const;
 
-     virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
 
-     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
 
-     int         m_indFilter; // index to the selected filter
 
- };
 
- // -----------------------------------------------------------------------
 
- #define wxPG_PROP_NO_ESCAPE     wxPG_PROP_CLASS_SPECIFIC_1
 
- /** @class wxPGLongStringDialogAdapter
 
-     @ingroup classes
 
- */
 
- class WXDLLIMPEXP_PROPGRID
 
-     wxPGLongStringDialogAdapter : public wxPGEditorDialogAdapter
 
- {
 
- public:
 
-     virtual bool DoShowDialog( wxPropertyGrid* propGrid,
 
-                                wxPGProperty* property );
 
- };
 
- /** @class wxLongStringProperty
 
-     @ingroup classes
 
-     Like wxStringProperty, but has a button that triggers a small text
 
-     editor dialog.
 
- */
 
- class WXDLLIMPEXP_PROPGRID wxLongStringProperty : public wxPGProperty
 
- {
 
-     WX_PG_DECLARE_PROPERTY_CLASS(wxLongStringProperty)
 
- public:
 
-     wxLongStringProperty( const wxString& label = wxPG_LABEL,
 
-                           const wxString& name = wxPG_LABEL,
 
-                           const wxString& value = wxEmptyString );
 
-     virtual ~wxLongStringProperty();
 
-     virtual wxString ValueToString( wxVariant& value, 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 );
 
-     // 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
 
-     // should be returned if that was the case.
 
-     virtual bool OnButtonClick( wxPropertyGrid* propgrid, wxString& value );
 
-     static bool DisplayEditorDialog( wxPGProperty* prop,
 
-                                      wxPropertyGrid* propGrid,
 
-                                      wxString& value );
 
- protected:
 
- };
 
- // -----------------------------------------------------------------------
 
- /** @class wxDirProperty
 
-     @ingroup classes
 
-     Like wxLongStringProperty, but the button triggers dir selector instead.
 
-     <b>Supported special attributes:</b>
 
-     - "DialogMessage": Sets specific message in the dir selector.
 
- */
 
- class WXDLLIMPEXP_PROPGRID wxDirProperty : public wxLongStringProperty
 
- {
 
-     DECLARE_DYNAMIC_CLASS(wxDirProperty)
 
- public:
 
-     wxDirProperty( const wxString& name = wxPG_LABEL,
 
-                    const wxString& label = wxPG_LABEL,
 
-                    const wxString& value = wxEmptyString );
 
-     virtual ~wxDirProperty();
 
-     virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
 
-     virtual wxValidator* DoGetValidator() const;
 
-     virtual bool OnButtonClick ( wxPropertyGrid* propGrid, wxString& value );
 
- protected:
 
-     wxString    m_dlgMessage;
 
- };
 
- // -----------------------------------------------------------------------
 
- // wxBoolProperty specific flags
 
- #define wxPG_PROP_USE_CHECKBOX      wxPG_PROP_CLASS_SPECIFIC_1
 
- // DCC = Double Click Cycles
 
- #define wxPG_PROP_USE_DCC           wxPG_PROP_CLASS_SPECIFIC_2
 
- // -----------------------------------------------------------------------
 
- /** @class wxArrayStringProperty
 
-     @ingroup classes
 
-     Property that manages a list of strings.
 
- */
 
- class WXDLLIMPEXP_PROPGRID wxArrayStringProperty : public wxPGProperty
 
- {
 
-     WX_PG_DECLARE_PROPERTY_CLASS(wxArrayStringProperty)
 
- public:
 
-     wxArrayStringProperty( const wxString& label = wxPG_LABEL,
 
-                            const wxString& name = wxPG_LABEL,
 
-                            const wxArrayString& value = wxArrayString() );
 
-     virtual ~wxArrayStringProperty();
 
-     virtual void OnSetValue();
 
-     virtual wxString ValueToString( wxVariant& value, 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 bool DoSetAttribute( const wxString& name, wxVariant& value );
 
-     // Implement in derived class for custom array-to-string conversion.
 
-     virtual void ConvertArrayToString(const wxArrayString& arr,
 
-                                       wxString* pString,
 
-                                       const wxUniChar& delimiter) const;
 
-     // 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
 
-     // should be returned if that was the case.
 
-     virtual bool OnCustomStringEdit( wxWindow* parent, wxString& value );
 
-     // Helper.
 
-     virtual bool OnButtonClick( wxPropertyGrid* propgrid,
 
-                                 wxWindow* primary,
 
-                                 const wxChar* cbt );
 
-     // Creates wxPGArrayEditorDialog for string editing. Called in OnButtonClick.
 
-     virtual wxPGArrayEditorDialog* CreateEditorDialog();
 
-     enum ConversionFlags
 
-     {
 
-         Escape          = 0x01,
 
-         QuoteStrings    = 0x02
 
-     };
 
-     /**
 
-         Generates contents for string dst based on the contents of
 
-         wxArrayString src.
 
-     */
 
-     static void ArrayStringToString( wxString& dst, const wxArrayString& src,
 
-                                      wxUniChar delimiter, int flags );
 
- protected:
 
-     // Previously this was to be implemented in derived class for array-to-
 
-     // string conversion. Now you should implement ConvertValueToString()
 
-     // instead.
 
-     virtual void GenerateValueAsString();
 
-     wxString        m_display; // Cache for displayed text.
 
-     wxUniChar       m_delimiter;
 
- };
 
- // -----------------------------------------------------------------------
 
- #define WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_VALIDATOR_WITH_DECL(PROPNAME, \
 
-                                                                     DECL) \
 
- DECL PROPNAME : public wxArrayStringProperty \
 
- { \
 
-     WX_PG_DECLARE_PROPERTY_CLASS(PROPNAME) \
 
- public: \
 
-     PROPNAME( const wxString& label = wxPG_LABEL, \
 
-               const wxString& name = wxPG_LABEL, \
 
-               const wxArrayString& value = wxArrayString() ); \
 
-     ~PROPNAME(); \
 
-     virtual bool OnEvent( wxPropertyGrid* propgrid, \
 
-                           wxWindow* primary, wxEvent& event ); \
 
-     virtual bool OnCustomStringEdit( wxWindow* parent, wxString& value ); \
 
-     virtual wxValidator* DoGetValidator() const; \
 
- };
 
- #define WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAM) \
 
- WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAM, class)
 
- #define WX_PG_IMPLEMENT_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAME, \
 
-                                                             DELIMCHAR, \
 
-                                                             CUSTBUTTXT) \
 
- WX_PG_IMPLEMENT_PROPERTY_CLASS(PROPNAME, wxArrayStringProperty, \
 
-                                wxArrayString, const wxArrayString&, \
 
-                                TextCtrlAndButton) \
 
- PROPNAME::PROPNAME( const wxString& label, \
 
-                     const wxString& name, \
 
-                     const wxArrayString& value ) \
 
-     : wxArrayStringProperty(label,name,value) \
 
- { \
 
-     PROPNAME::GenerateValueAsString(); \
 
-     m_delimiter = DELIMCHAR; \
 
- } \
 
- PROPNAME::~PROPNAME() { } \
 
- bool PROPNAME::OnEvent( wxPropertyGrid* propgrid, \
 
-                         wxWindow* primary, wxEvent& event ) \
 
- { \
 
-     if ( event.GetEventType() == wxEVT_BUTTON ) \
 
-         return OnButtonClick(propgrid,primary,(const wxChar*) CUSTBUTTXT); \
 
-     return false; \
 
- }
 
- #define WX_PG_DECLARE_ARRAYSTRING_PROPERTY(PROPNAME) \
 
- WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAME)
 
- #define WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_DECL(PROPNAME, DECL) \
 
- WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_VALIDATOR_WITH_DECL(PROPNAME, DECL)
 
- #define WX_PG_IMPLEMENT_ARRAYSTRING_PROPERTY(PROPNAME,DELIMCHAR,CUSTBUTTXT) \
 
- WX_PG_IMPLEMENT_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAME, \
 
-                                                     DELIMCHAR, \
 
-                                                     CUSTBUTTXT) \
 
- wxValidator* PROPNAME::DoGetValidator () const \
 
- { return NULL; }
 
- // -----------------------------------------------------------------------
 
- // wxPGArrayEditorDialog
 
- // -----------------------------------------------------------------------
 
- #if wxUSE_EDITABLELISTBOX
 
- class WXDLLIMPEXP_FWD_ADV wxEditableListBox;
 
- class WXDLLIMPEXP_FWD_CORE wxListEvent;
 
- #define wxAEDIALOG_STYLE \
 
-     (wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER | wxOK | wxCANCEL | wxCENTRE)
 
- class WXDLLIMPEXP_PROPGRID wxPGArrayEditorDialog : public wxDialog
 
- {
 
- public:
 
-     wxPGArrayEditorDialog();
 
-     virtual ~wxPGArrayEditorDialog() { }
 
-     void Init();
 
-     wxPGArrayEditorDialog( wxWindow *parent,
 
-                          const wxString& message,
 
-                          const wxString& caption,
 
-                          long style = wxAEDIALOG_STYLE,
 
-                          const wxPoint& pos = wxDefaultPosition,
 
-                          const wxSize& sz = wxDefaultSize );
 
-     bool Create( wxWindow *parent,
 
-                  const wxString& message,
 
-                  const wxString& caption,
 
-                  long style = wxAEDIALOG_STYLE,
 
-                  const wxPoint& pos = wxDefaultPosition,
 
-                  const wxSize& sz = wxDefaultSize );
 
-     void EnableCustomNewAction()
 
-     {
 
-         m_hasCustomNewAction = true;
 
-     }
 
-     /** Set value modified by dialog.
 
-     */
 
-     virtual void SetDialogValue( const wxVariant& WXUNUSED(value) )
 
-     {
 
-         wxFAIL_MSG(wxT("re-implement this member function in derived class"));
 
-     }
 
-     /** Return value modified by dialog.
 
-     */
 
-     virtual wxVariant GetDialogValue() const
 
-     {
 
-         wxFAIL_MSG(wxT("re-implement this member function in derived class"));
 
-         return wxVariant();
 
-     }
 
-     /** Override to return wxValidator to be used with the wxTextCtrl
 
-         in dialog. Note that the validator is used in the standard
 
-         wx way, ie. it immediately prevents user from entering invalid
 
-         input.
 
-         @remarks
 
-         Dialog frees the validator.
 
-     */
 
-     virtual wxValidator* GetTextCtrlValidator() const
 
-     {
 
-         return NULL;
 
-     }
 
-     // Returns true if array was actually modified
 
-     bool IsModified() const { return m_modified; }
 
-     // wxEditableListBox utilities
 
-     int GetSelection() const;
 
-     // implementation from now on
 
-     void OnAddClick(wxCommandEvent& event);
 
-     void OnDeleteClick(wxCommandEvent& event);
 
-     void OnUpClick(wxCommandEvent& event);
 
-     void OnDownClick(wxCommandEvent& event);
 
-     void OnEndLabelEdit(wxListEvent& event);
 
-     void OnIdle(wxIdleEvent& event);
 
- protected:
 
-     wxEditableListBox*  m_elb;
 
-     // These are used for focus repair
 
-     wxWindow*           m_elbSubPanel;
 
-     wxWindow*           m_lastFocused;
 
-     // A new item, edited by user, is pending at this index.
 
-     // It will be committed once list ctrl item editing is done.
 
-     int             m_itemPendingAtIndex;
 
-     bool            m_modified;
 
-     bool            m_hasCustomNewAction;
 
-     // These must be overridden - must return true on success.
 
-     virtual wxString ArrayGet( size_t index ) = 0;
 
-     virtual size_t ArrayGetCount() = 0;
 
-     virtual bool ArrayInsert( const wxString& str, int index ) = 0;
 
-     virtual bool ArraySet( size_t index, const wxString& str ) = 0;
 
-     virtual void ArrayRemoveAt( int index ) = 0;
 
-     virtual void ArraySwap( size_t first, size_t second ) = 0;
 
-     virtual bool OnCustomNewAction(wxString* WXUNUSED(resString))
 
-     {
 
-         return false;
 
-     }
 
- private:
 
-     DECLARE_DYNAMIC_CLASS_NO_COPY(wxPGArrayEditorDialog)
 
-     DECLARE_EVENT_TABLE()
 
- };
 
- #endif // wxUSE_EDITABLELISTBOX
 
- // -----------------------------------------------------------------------
 
- // wxPGArrayStringEditorDialog
 
- // -----------------------------------------------------------------------
 
- class WXDLLIMPEXP_PROPGRID
 
-     wxPGArrayStringEditorDialog : public wxPGArrayEditorDialog
 
- {
 
- public:
 
-     wxPGArrayStringEditorDialog();
 
-     virtual ~wxPGArrayStringEditorDialog() { }
 
-     void Init();
 
-     virtual void SetDialogValue( const wxVariant& value )
 
-     {
 
-         m_array = value.GetArrayString();
 
-     }
 
-     virtual wxVariant GetDialogValue() const
 
-     {
 
-         return m_array;
 
-     }
 
-     void SetCustomButton( const wxString& custBtText,
 
-                           wxArrayStringProperty* pcc )
 
-     {
 
-         if ( !custBtText.empty() )
 
-         {
 
-             EnableCustomNewAction();
 
-             m_pCallingClass = pcc;
 
-         }
 
-     }
 
-     virtual bool OnCustomNewAction(wxString* resString);
 
- protected:
 
-     wxArrayString   m_array;
 
-     wxArrayStringProperty*     m_pCallingClass;
 
-     virtual wxString ArrayGet( size_t index );
 
-     virtual size_t ArrayGetCount();
 
-     virtual bool ArrayInsert( const wxString& str, int index );
 
-     virtual bool ArraySet( size_t index, const wxString& str );
 
-     virtual void ArrayRemoveAt( int index );
 
-     virtual void ArraySwap( size_t first, size_t second );
 
- private:
 
-     DECLARE_DYNAMIC_CLASS_NO_COPY(wxPGArrayStringEditorDialog)
 
-     DECLARE_EVENT_TABLE()
 
- };
 
- // -----------------------------------------------------------------------
 
- #endif // wxUSE_PROPGRID
 
- #endif // _WX_PROPGRID_PROPS_H_
 
 
  |