// 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
// -----------------------------------------------------------------------
#include "wx/textctrl.h"
#include "wx/button.h"
#include "wx/listbox.h"
+#include "wx/valtext.h"
// -----------------------------------------------------------------------
Basic property with string value.
<b>Supported special attributes:</b>
- - "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 "<composed>" is set, then actual value is formed (or composed)
// -----------------------------------------------------------------------
-/** Constants used with DoValidation() methods.
+/** Constants used with NumericValidation<>().
*/
-enum wxPGDoValidationConstants
+enum wxPGNumericValidationConstants
{
/** Instead of modifying the value, show an error message.
*/
// -----------------------------------------------------------------------
+#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.
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;
wxPGValidationInfo* pValidationInfo,
int mode =
wxPG_PROPERTY_VALIDATION_ERROR_MESSAGE );
+ static wxValidator* GetClassValidator();
virtual wxValidator* DoGetValidator () const;
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.
<b>Note:</b> When changing "choices" (ie. flag labels) of wxFlagsProperty,
you will need to use SetPropertyChoices - otherwise they will not get
{
WX_PG_DECLARE_PROPERTY_CLASS(wxArrayStringProperty)
public:
-
wxArrayStringProperty( const wxString& label = wxPG_LABEL,
const wxString& name = wxPG_LABEL,
const wxArrayString& value = wxArrayString() );
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
// 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;
};
// -----------------------------------------------------------------------
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 ); \
: 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 ) \
{ \
void SetCustomButton( const wxString& custBtText,
wxArrayStringProperty* pcc )
{
- if ( custBtText.length() )
+ if ( !custBtText.empty() )
{
EnableCustomNewAction();
m_pCallingClass = pcc;