Eliminated last property generation macros from props.h (colour property gen ones, now use subclassing facilities present in wx(System)ColourProperty)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56150 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Jaakko Salli
2008-10-07 17:28:05 +00:00
parent cf490c4df9
commit d61d8cffa9
5 changed files with 116 additions and 186 deletions

View File

@@ -26,144 +26,9 @@ class wxArrayEditorDialog;
// Property class implementation helper macros.
//
// 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, UPCLASS, T, T_AS_ARG, EDITOR) \
IMPLEMENT_DYNAMIC_CLASS(NAME, UPCLASS) \
WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(NAME,T,EDITOR)
// A regular property
#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_CUSTOM_COLOUR_PROPERTY_WITH_DECL(CLASSNAME, DECL) \
DECL CLASSNAME : public wxSystemColourProperty \
{ \
DECLARE_DYNAMIC_CLASS(CLASSNAME) \
public: \
CLASSNAME( const wxString& label = wxPG_LABEL, \
const wxString& name = wxPG_LABEL, \
const wxColourPropertyValue& value = wxColourPropertyValue() ); \
virtual ~CLASSNAME(); \
virtual wxColour GetColour( int index ) const; \
};
#define WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY(CLASSNAME) \
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; \
IMPLEMENT_DYNAMIC_CLASS(CLASSNAME, wxSystemColourProperty) \
CLASSNAME::CLASSNAME( const wxString& label, const wxString& name, \
const wxColourPropertyValue& value ) \
: wxSystemColourProperty(label, name, LABELS, VALUES, \
&gs_##CLASSNAME##_choicesCache, value ) \
{ \
m_flags |= wxPG_PROP_TRANSLATE_CUSTOM; \
} \
CLASSNAME::~CLASSNAME () { } \
wxColour CLASSNAME::GetColour ( int index ) const \
{ \
if ( !m_choices.HasValue(index) ) \
{ \
wxASSERT( index < (int)m_choices.GetCount() ); \
return COLOURS[index]; \
} \
return COLOURS[m_choices.GetValue(index)]; \
}
// -----------------------------------------------------------------------
#define WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR_WITH_DECL(CLASSNAME,\
DECL) \
DECL CLASSNAME : public wxSystemColourProperty \
{ \
WX_PG_DECLARE_PROPERTY_CLASS(CLASSNAME) \
public: \
CLASSNAME( const wxString& label = wxPG_LABEL, \
const wxString& name = wxPG_LABEL, \
const wxColour& value = wxColour() ); \
virtual ~CLASSNAME(); \
virtual wxString GetValueAsString( int argFlags ) const; \
virtual wxColour GetColour( int index ) const; \
virtual wxVariant DoTranslateVal( wxColourPropertyValue& v ) const; \
void Init( wxColour colour ); \
};
#define WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR(CLASSNAME) \
WX_PG_DECLARE_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR_WITH_DECL(CLASSNAME, class)
#define WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR2(CLASSNAME, \
LABELS, \
VALUES, \
COLOURS, \
EDITOR) \
static wxPGChoices gs_##CLASSNAME##_choicesCache; \
WX_PG_IMPLEMENT_PROPERTY_CLASS(CLASSNAME, wxSystemColourProperty, \
wxColour, const wxColour&,EDITOR) \
CLASSNAME::CLASSNAME( const wxString& label, \
const wxString& name, \
const wxColour& value ) \
: wxSystemColourProperty(label, name, LABELS, VALUES, \
&gs_##CLASSNAME##_choicesCache, value ) \
{ \
if ( &value ) \
Init( value ); \
else \
Init( *wxWHITE ); \
m_flags |= wxPG_PROP_TRANSLATE_CUSTOM; \
} \
CLASSNAME::~CLASSNAME() { } \
void CLASSNAME::Init( wxColour colour ) \
{ \
if ( !colour.Ok() ) \
colour = *wxWHITE; \
wxVariant variant; \
variant << colour; \
m_value = variant; \
int ind = ColToInd(colour); \
if ( ind < 0 ) \
ind = m_choices.GetCount() - 1; \
SetIndex( ind ); \
} \
wxString CLASSNAME::GetValueAsString( int argFlags ) const \
{ \
const wxPGEditor* editor = GetEditorClass(); \
if ( editor != wxPGEditor_Choice && \
editor != wxPGEditor_ChoiceAndButton && \
editor != wxPGEditor_ComboBox ) \
argFlags |= wxPG_PROPERTY_SPECIFIC; \
return wxSystemColourProperty::GetValueAsString(argFlags); \
} \
wxColour CLASSNAME::GetColour( int index ) const \
{ \
if ( !m_choices.HasValue(index) ) \
{ \
wxASSERT( index < (int)GetItemCount() ); \
return COLOURS[index]; \
} \
return COLOURS[m_choices.GetValue(index)]; \
} \
wxVariant CLASSNAME::DoTranslateVal( wxColourPropertyValue& v ) const \
{ \
wxVariant variant; \
variant << v.m_colour; \
return variant; \
}
#define WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR(CLASSNAME, \
LABELS, \
VALUES, \
COLOURS) \
WX_PG_IMPLEMENT_CUSTOM_COLOUR_PROPERTY_USES_WXCOLOUR2(CLASSNAME, \
LABELS, \
VALUES, \
COLOURS, \
Choice)
WX_PG_IMPLEMENT_PROPERTY_CLASS_PLAIN(NAME, T, EDITOR)
// -----------------------------------------------------------------------