// Author: Jaakko Salli
// Modified by:
// Created: 2007-03-28
-// RCS-ID: $Id:
+// RCS-ID: $Id$
// Copyright: (c) Jaakko Salli
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
// -----------------------------------------------------------------------
-//
-// Additional property class declaration helper macros
-//
-
//
// Property class implementation helper macros.
//
-#define WX_PG_DECLARE_BASIC_TYPE_METHODS() \
- virtual wxString GetValueAsString( int argFlags = 0 ) const; \
- virtual bool StringToValue( wxVariant& variant, \
- const wxString& text, \
- int argFlags = 0 ) const;
-
-#define WX_PG_DECLARE_CHOICE_METHODS() \
- virtual bool IntToValue( wxVariant& variant, \
- int number, int argFlags = 0 ) const; \
- virtual int GetChoiceInfo( wxPGChoiceInfo* choiceinfo );
-
-#define WX_PG_DECLARE_EVENT_METHODS() \
- virtual bool OnEvent( wxPropertyGrid* propgrid, \
- wxWindow* primary, wxEvent& event );
-
-#define WX_PG_DECLARE_PARENTAL_METHODS() \
- virtual void ChildChanged( wxVariant& thisValue, \
- int childIndex, wxVariant& childValue ) const; \
- virtual void RefreshChildren();
-
-#define WX_PG_DECLARE_CUSTOM_PAINT_METHODS() \
- virtual wxSize OnMeasureImage( int item ) const; \
- virtual void OnCustomPaint( wxDC& dc, \
- const wxRect& rect, wxPGPaintData& paintdata );
-
-#define WX_PG_DECLARE_ATTRIBUTE_METHODS() \
- virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
-
-#define WX_PG_DECLARE_VALIDATOR_METHODS() \
- virtual wxValidator* DoGetValidator() const;
-
// Adds constructor function as well.
#define WX_PG_IMPLEMENT_PROPERTY_CLASS2(NAME,CLASSNAME,\
UPCLASS,T,T_AS_ARG,EDITOR) \
#define WX_PG_IMPLEMENT_PROPERTY_CLASS(NAME,UPNAME,T,T_AS_ARG,EDITOR) \
WX_PG_IMPLEMENT_PROPERTY_CLASS2(NAME,NAME,UPNAME,T,T_AS_ARG,EDITOR)
-#define WX_PG_DECLARE_DERIVED_PROPERTY_CLASS(CLASSNAME) \
-DECLARE_DYNAMIC_CLASS(CLASSNAME)
-
-// Derived property class is one that inherits from an existing working property
-// class, but assumes same value and editor type.
-#define WX_PG_IMPLEMENT_DERIVED_PROPERTY_CLASS(NAME,UPNAME,T_AS_ARG) \
-IMPLEMENT_DYNAMIC_CLASS(NAME, UPNAME)
-
// -----------------------------------------------------------------------
#define wxPG_NO_ESCAPE wxPG_PROP_NO_ESCAPE // No escape sequences
#define WX_PG_DECLARE_STRING_PROPERTY_WITH_DECL(NAME, DECL) \
DECL NAME : public wxLongStringProperty \
{ \
- WX_PG_DECLARE_DERIVED_PROPERTY_CLASS(NAME) \
+ DECLARE_DYNAMIC_CLASS(NAME) \
public: \
NAME( const wxString& name = wxPG_LABEL, \
const wxString& label = wxPG_LABEL, \
const wxString& value = wxEmptyString); \
virtual ~NAME(); \
virtual bool OnButtonClick( wxPropertyGrid* propgrid, wxString& value ); \
- WX_PG_DECLARE_VALIDATOR_METHODS() \
+ virtual wxValidator* DoGetValidator() const; \
};
#define WX_PG_DECLARE_STRING_PROPERTY(NAME) \
WX_PG_DECLARE_STRING_PROPERTY_WITH_DECL(NAME, class) \
#define WX_PG_IMPLEMENT_STRING_PROPERTY_WITH_VALIDATOR(NAME, FLAGS) \
-WX_PG_IMPLEMENT_DERIVED_PROPERTY_CLASS(NAME,wxLongStringProperty,\
- const wxString&) \
+IMPLEMENT_DYNAMIC_CLASS(NAME,wxLongStringProperty) \
NAME::NAME( const wxString& name, \
const wxString& label, \
const wxString& value ) \
wxValidator* NAME::DoGetValidator () const \
{ return (wxValidator*) NULL; }
-// -----------------------------------------------------------------------
-
-#define WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY_WITH_DECL(CLASSNAME,DECL) \
-DECL CLASSNAME : public wxFlagsProperty \
-{ \
- WX_PG_DECLARE_PROPERTY_CLASS(CLASSNAME) \
-public: \
- CLASSNAME( const wxString& label = wxPG_LABEL, \
- const wxString& name = wxPG_LABEL, \
- long value = -1 ); \
- virtual ~CLASSNAME(); \
-};
-
-#define WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY(CLASSNAME) \
-WX_PG_DECLARE_CUSTOM_FLAGS_PROPERTY_WITH_DECL(CLASSNAME, class)
-
-// This will create interface for wxFlagsProperty derived class
-// named CLASSNAME.
-#define WX_PG_IMPLEMENT_CUSTOM_FLAGS_PROPERTY(CLASSNAME,LABELS,VALUES,DEFVAL) \
-WX_PG_IMPLEMENT_PROPERTY_CLASS(CLASSNAME,wxFlagsProperty,long_##CLASSNAME,\
- long,TextCtrl) \
-CLASSNAME::CLASSNAME( const wxString& label, \
- const wxString& name, \
- long value ) \
- : wxFlagsProperty(label,name,LABELS,VALUES,value!=-1?value:DEFVAL) \
-{ \
- m_flags |= wxPG_PROP_STATIC_CHOICES; \
-} \
-CLASSNAME::~CLASSNAME() { }
-
-
-// -----------------------------------------------------------------------
-
-#define WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY_WITH_DECL(CLASSNAME, DECL) \
-class CLASSNAME : public wxEnumProperty \
-{ \
- WX_PG_DECLARE_PROPERTY_CLASS(CLASSNAME) \
-public: \
- CLASSNAME( const wxString& label = wxPG_LABEL, \
- const wxString& name = wxPG_LABEL, \
- int value = -1 ); \
- virtual ~CLASSNAME(); \
-};
-
-#define WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY(CLASSNAME) \
-WX_PG_DECLARE_CUSTOM_ENUM_PROPERTY_WITH_DECL(CLASSNAME, class)
-
-#define WX_PG_IMPLEMENT_CUSTOM_ENUM_PROPERTY(CLASSNAME,LABELS,VALUES,DEFVAL) \
-WX_PG_IMPLEMENT_PROPERTY_CLASS(CLASSNAME, wxEnumProperty, long_##CLASSNAME, \
- int, Choice) \
-CLASSNAME::CLASSNAME( const wxString& label, const wxString& name, int value ) \
- : wxEnumProperty(label,name,LABELS,VALUES,value!=-1?value:DEFVAL) \
-{ \
- m_flags |= wxPG_PROP_STATIC_CHOICES; \
-} \
-CLASSNAME::~CLASSNAME() { }
-
-
// -----------------------------------------------------------------------
#define WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_WITH_DECL(CLASSNAME, DECL) \
#define WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY(CLASSNAME,\
LABELS,VALUES,COLOURS) \
static wxPGChoices gs_##CLASSNAME##_choicesCache; \
-WX_PG_IMPLEMENT_DERIVED_PROPERTY_CLASS(CLASSNAME, wxSystemColourProperty, \
- const wxColourPropertyValue&) \
+IMPLEMENT_DYNAMIC_CLASS(CLASSNAME, wxSystemColourProperty) \
CLASSNAME::CLASSNAME( const wxString& label, const wxString& name, \
const wxColourPropertyValue& value ) \
: wxSystemColourProperty(label, name, LABELS, VALUES, \
// Common function exit
#define WX_PG_DOGETVALIDATOR_EXIT(VALIDATOR) \
s_ptr = VALIDATOR; \
- wxPGGlobalVars->m_arrValidators.Add( (void*) VALIDATOR ); \
+ wxPGGlobalVars->m_arrValidators.push_back( VALIDATOR ); \
return VALIDATOR;
// -----------------------------------------------------------------------
#ifndef SWIG
+#include "wx/textctrl.h"
+
/** @class wxPGInDialogValidator
@ingroup classes
Creates and manages a temporary wxTextCtrl for validation purposes.
const wxString& value = wxEmptyString );
virtual ~wxStringProperty();
- WX_PG_DECLARE_BASIC_TYPE_METHODS()
- WX_PG_DECLARE_ATTRIBUTE_METHODS()
+ virtual wxString GetValueAsString( 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.
*/
wxIntProperty( const wxString& label,
const wxString& name,
const wxLongLong& value );
- WX_PG_DECLARE_BASIC_TYPE_METHODS()
+ virtual wxString GetValueAsString( 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,
wxUIntProperty( const wxString& label,
const wxString& name,
const wxULongLong& value );
- WX_PG_DECLARE_BASIC_TYPE_METHODS()
- WX_PG_DECLARE_ATTRIBUTE_METHODS()
+ virtual wxString GetValueAsString( 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 bool IntToValue( wxVariant& variant,
double value = 0.0 );
virtual ~wxFloatProperty();
- WX_PG_DECLARE_BASIC_TYPE_METHODS()
- WX_PG_DECLARE_ATTRIBUTE_METHODS()
+ virtual wxString GetValueAsString( 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;
bool value = false );
virtual ~wxBoolProperty();
- WX_PG_DECLARE_BASIC_TYPE_METHODS()
- WX_PG_DECLARE_CHOICE_METHODS()
- WX_PG_DECLARE_ATTRIBUTE_METHODS()
+ virtual wxString GetValueAsString( 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 );
};
#endif // !SWIG
// 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;
virtual ~wxEnumProperty();
- virtual int GetChoiceInfo( wxPGChoiceInfo* choiceinfo );
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; }
-
-protected:
- wxPGChoices m_choices;
};
// -----------------------------------------------------------------------
wxVariant& childValue ) const;
virtual void RefreshChildren();
- // this is necessary for conveying m_choices
- virtual int GetChoiceInfo( wxPGChoiceInfo* choiceinfo );
+ // 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(); }
{ return m_choices.GetLabel(ind); }
protected:
- wxPGChoices m_choices;
-
// Used to detect if choices have been changed
wxPGChoicesData* m_oldChoicesData;
const wxString& text,
int argFlags = 0 ) const;
virtual wxPGEditorDialogAdapter* GetEditorDialog() const;
-
- WX_PG_DECLARE_ATTRIBUTE_METHODS()
+ virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
static wxValidator* GetClassValidator();
virtual wxValidator* DoGetValidator() const;
virtual bool StringToValue( wxVariant& variant,
const wxString& text,
int argFlags = 0 ) const;
-
- WX_PG_DECLARE_EVENT_METHODS()
+ 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
const wxString& value = wxEmptyString );
virtual ~wxDirProperty();
- WX_PG_DECLARE_ATTRIBUTE_METHODS()
- WX_PG_DECLARE_VALIDATOR_METHODS()
+ virtual bool DoSetAttribute( const wxString& name, wxVariant& value );
+ virtual wxValidator* DoGetValidator() const;
virtual bool OnButtonClick ( wxPropertyGrid* propGrid, wxString& value );
virtual ~wxArrayStringProperty();
virtual void OnSetValue();
- WX_PG_DECLARE_BASIC_TYPE_METHODS()
- WX_PG_DECLARE_EVENT_METHODS()
+ virtual wxString GetValueAsString( 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 void GenerateValueAsString();
virtual bool OnEvent( wxPropertyGrid* propgrid, \
wxWindow* primary, wxEvent& event ); \
virtual bool OnCustomStringEdit( wxWindow* parent, wxString& value ); \
- WX_PG_DECLARE_VALIDATOR_METHODS() \
+ virtual wxValidator* DoGetValidator() const; \
};
#define WX_PG_DECLARE_ARRAYSTRING_PROPERTY_WITH_VALIDATOR(PROPNAM) \
// wxArrayEditorDialog
// -----------------------------------------------------------------------
-#include "wx/textctrl.h"
#include "wx/button.h"
+#include "wx/dialog.h"
#include "wx/listbox.h"
#define wxAEDIALOG_STYLE \