X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/895e26a04bb70facbc8d6bb54c1da8a872725557..66c2bf7b1d9326fb650acfaae22ec50528cfbf7c:/include/wx/propgrid/props.h diff --git a/include/wx/propgrid/props.h b/include/wx/propgrid/props.h index 5eeb376e4f..ea902d13e6 100644 --- a/include/wx/propgrid/props.h +++ b/include/wx/propgrid/props.h @@ -4,14 +4,15 @@ // Author: Jaakko Salli // Modified by: // 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 +26,7 @@ class wxPGArrayEditorDialog; #include "wx/textctrl.h" #include "wx/button.h" #include "wx/listbox.h" +#include "wx/valtext.h" // ----------------------------------------------------------------------- @@ -91,7 +93,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 +124,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 +143,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 +280,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 +326,7 @@ public: wxPGValidationInfo* pValidationInfo, int mode = wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE ); + static wxValidator* GetClassValidator(); virtual wxValidator* DoGetValidator () const; protected: @@ -489,7 +516,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 @@ -536,7 +563,7 @@ public: // helpers size_t GetItemCount() const { return m_choices.GetCount(); } const wxString& GetLabel( size_t ind ) const - { return m_choices.GetLabel(ind); } + { return m_choices.GetLabel(static_cast(ind)); } protected: // Used to detect if choices have been changed @@ -716,7 +743,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 +755,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 +775,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 +810,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,36 +831,13 @@ 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 ) \ { \ - if ( event.GetEventType() == wxEVT_COMMAND_BUTTON_CLICKED ) \ + if ( event.GetEventType() == wxEVT_BUTTON ) \ return OnButtonClick(propgrid,primary,(const wxChar*) CUSTBUTTXT); \ return false; \ } @@ -973,7 +996,7 @@ public: void SetCustomButton( const wxString& custBtText, wxArrayStringProperty* pcc ) { - if ( custBtText.length() ) + if ( !custBtText.empty() ) { EnableCustomNewAction(); m_pCallingClass = pcc;