X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f4bc1aa27cb33f679d7e9c1518a7855bbc1fa471..f55d9f749b61b3a8435c58a285ac096726d15040:/include/wx/propgrid/props.h diff --git a/include/wx/propgrid/props.h b/include/wx/propgrid/props.h index 7e4dcb9dd0..5c38115056 100644 --- a/include/wx/propgrid/props.h +++ b/include/wx/propgrid/props.h @@ -4,7 +4,7 @@ // Author: Jaakko Salli // Modified by: // Created: 2007-03-28 -// RCS-ID: $Id: +// RCS-ID: $Id$ // Copyright: (c) Jaakko Salli // Licence: wxWindows license ///////////////////////////////////////////////////////////////////////////// @@ -22,45 +22,10 @@ class wxArrayEditorDialog; // ----------------------------------------------------------------------- -// -// 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) \ @@ -71,14 +36,6 @@ WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(NAME,T,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 @@ -87,22 +44,21 @@ IMPLEMENT_DYNAMIC_CLASS(NAME, UPNAME) #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 ) \ @@ -117,64 +73,6 @@ WX_PG_IMPLEMENT_STRING_PROPERTY_WITH_VALIDATOR(NAME,FLAGS) \ 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) \ @@ -195,8 +93,7 @@ WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_WITH_DECL(CLASSNAME, class) #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, \ @@ -316,13 +213,15 @@ WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR2(CLASSNAME, \ // 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. @@ -379,8 +278,12 @@ public: 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 "" special value can be handled. */ @@ -465,7 +368,10 @@ public: 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, @@ -516,8 +422,11 @@ public: 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, @@ -550,8 +459,11 @@ public: 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; @@ -590,9 +502,13 @@ public: 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 @@ -640,6 +556,11 @@ public: // 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; @@ -718,15 +639,11 @@ public: 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; }; // ----------------------------------------------------------------------- @@ -817,8 +734,9 @@ public: 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(); } @@ -826,8 +744,6 @@ public: { return m_choices.GetLabel(ind); } protected: - wxPGChoices m_choices; - // Used to detect if choices have been changed wxPGChoicesData* m_oldChoicesData; @@ -892,8 +808,7 @@ public: 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; @@ -943,8 +858,8 @@ public: 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 @@ -982,8 +897,8 @@ public: 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 ); @@ -1018,8 +933,12 @@ public: 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(); @@ -1060,7 +979,7 @@ public: \ 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) \ @@ -1130,8 +1049,8 @@ wxValidator* PROPNAME::DoGetValidator () const \ // wxArrayEditorDialog // ----------------------------------------------------------------------- -#include "wx/textctrl.h" #include "wx/button.h" +#include "wx/dialog.h" #include "wx/listbox.h" #define wxAEDIALOG_STYLE \