X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/895e26a04bb70facbc8d6bb54c1da8a872725557..726cc8697cd44a41b43257f05ca8cdd42b71a711:/include/wx/propgrid/props.h diff --git a/include/wx/propgrid/props.h b/include/wx/propgrid/props.h index 5eeb376e4f..66d625a24d 100644 --- a/include/wx/propgrid/props.h +++ b/include/wx/propgrid/props.h @@ -6,12 +6,14 @@ // Created: 2007-03-28 // RCS-ID: $Id$ // Copyright: (c) Jaakko Salli -// Licence: wxWindows license +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_PROPGRID_PROPS_H_ #define _WX_PROPGRID_PROPS_H_ +#include "wx/defs.h" + #if wxUSE_PROPGRID // ----------------------------------------------------------------------- @@ -25,6 +27,7 @@ class wxPGArrayEditorDialog; #include "wx/textctrl.h" #include "wx/button.h" #include "wx/listbox.h" +#include "wx/valtext.h" // ----------------------------------------------------------------------- @@ -91,7 +94,7 @@ private: Basic property with string value. Supported special attributes: - - "Password": set to 1 inorder to enable wxTE_PASSWORD on the editor. + - "Password": set to 1 in order to enable wxTE_PASSWORD on the editor. @remarks - If value "" is set, then actual value is formed (or composed) @@ -122,9 +125,9 @@ protected: // ----------------------------------------------------------------------- -/** Constants used with DoValidation() methods. +/** Constants used with NumericValidation<>(). */ -enum wxPGDoValidationConstants +enum wxPGNumericValidationConstants { /** Instead of modifying the value, show an error message. */ @@ -141,6 +144,29 @@ enum wxPGDoValidationConstants // ----------------------------------------------------------------------- +#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. @@ -255,6 +281,7 @@ public: 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; @@ -300,6 +327,7 @@ public: wxPGValidationInfo* pValidationInfo, int mode = wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ); + static wxValidator* GetClassValidator(); virtual wxValidator* DoGetValidator () const; protected: @@ -489,7 +517,7 @@ protected: @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 continous sequence of spaces, + to manually edit the flags as a text; a continuous sequence of spaces, commas and semicolons is considered as a flag id separator. Note: When changing "choices" (ie. flag labels) of wxFlagsProperty, you will need to use SetPropertyChoices - otherwise they will not get @@ -716,7 +744,6 @@ 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() ); @@ -729,8 +756,12 @@ public: int argFlags = 0 ) const; virtual bool OnEvent( wxPropertyGrid* propgrid, wxWindow* primary, wxEvent& event ); + virtual bool DoSetAttribute( const wxString& name, wxVariant& value ); - virtual void GenerateValueAsString(); + // 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 @@ -745,8 +776,27 @@ public: // 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; }; // ----------------------------------------------------------------------- @@ -761,9 +811,6 @@ public: \ const wxString& name = wxPG_LABEL, \ const wxArrayString& value = wxArrayString() ); \ ~PROPNAME(); \ - virtual void GenerateValueAsString(); \ - virtual bool StringToValue( wxVariant& value, \ - const wxString& text, int = 0 ) const; \ virtual bool OnEvent( wxPropertyGrid* propgrid, \ wxWindow* primary, wxEvent& event ); \ virtual bool OnCustomStringEdit( wxWindow* parent, wxString& value ); \ @@ -785,32 +832,9 @@ PROPNAME::PROPNAME( const wxString& label, \ : wxArrayStringProperty(label,name,value) \ { \ PROPNAME::GenerateValueAsString(); \ + m_delimiter = DELIMCHAR; \ } \ PROPNAME::~PROPNAME() { } \ -void PROPNAME::GenerateValueAsString() \ -{ \ - wxChar delimChar = DELIMCHAR; \ - if ( delimChar == wxS('"') ) \ - wxArrayStringProperty::GenerateValueAsString(); \ - else \ - wxPropertyGrid::ArrayStringToString(m_display, \ - m_value.GetArrayString(), \ - 0,DELIMCHAR,0); \ -} \ -bool PROPNAME::StringToValue( wxVariant& variant, \ - const wxString& text, int ) const \ -{ \ - wxChar delimChar = DELIMCHAR; \ - if ( delimChar == wxS('"') ) \ - return wxArrayStringProperty::StringToValue(variant, text, 0); \ - \ - wxArrayString arr; \ - WX_PG_TOKENIZER1_BEGIN(text,DELIMCHAR) \ - arr.Add( token ); \ - WX_PG_TOKENIZER1_END() \ - variant = arr; \ - return true; \ -} \ bool PROPNAME::OnEvent( wxPropertyGrid* propgrid, \ wxWindow* primary, wxEvent& event ) \ { \ @@ -973,7 +997,7 @@ public: void SetCustomButton( const wxString& custBtText, wxArrayStringProperty* pcc ) { - if ( custBtText.length() ) + if ( !custBtText.empty() ) { EnableCustomNewAction(); m_pCallingClass = pcc;