wxCustomProperty Class Reference

This is a somewhat inefficient but versatile property class. More...

#include <props.h>

Inheritance diagram for wxCustomProperty:

wxPGProperty

List of all members.

Public Member Functions

virtual void ChildChanged (wxVariant &a1, int a2, wxVariant &a3) const
 Called after value of a child property has been altered.
virtual bool DoSetAttribute (const wxString &name, wxVariant &value)
 Special handling for attributes of this property.
virtual int GetChoiceInfo (wxPGChoiceInfo *choiceinfo)
 Returns current value's index to the choice control.
virtual wxString GetValueAsString (int argFlags) const
 Returns text representation of property's value.
virtual bool IntToValue (wxVariant &variant, int number, int argFlags) const
 Converts 'number' (including choice selection) into proper value 'variant'.
virtual void OnCustomPaint (wxDC &dc, const wxRect &rect, wxPGPaintData &paintdata)
 Override to paint an image in front of the property value text or drop-down list item (but only if wxPGProperty::OnMeasureImage is overridden as well).
virtual wxSize OnMeasureImage (int item) const
 Returns size of the custom painted image in front of property.
virtual bool StringToValue (wxVariant &variant, const wxString &text, int argFlags=0) const
 Converts 'text' into proper value 'variant'.
 wxCustomProperty (const wxString &label=wxPG_LABEL, const wxString &name=wxPG_LABEL)

Protected Attributes

wxPGChoices m_choices
wxPGPaintCallback m_paintCallback


Detailed Description

This is a somewhat inefficient but versatile property class.

Base class offers the following:


Member Function Documentation

virtual void wxCustomProperty::ChildChanged ( wxVariant &  thisValue,
int  childIndex,
wxVariant &  childValue 
) const [virtual]

Called after value of a child property has been altered.

Note that this function is usually called at the time that value of this property, or given child property, is still pending for change.

Sample pseudo-code implementation:

        void MyProperty::ChildChanged( wxVariant& thisValue, int childIndex, wxVariant& childValue ) const
        {
            // Acquire reference to actual type of data stored in variant
            // (TFromVariant only exists if wxPropertyGrid's wxVariant-macros were used to create
            // the variant class).
            T& data = TFromVariant(thisValue);

            // Copy childValue into data.
            switch ( childIndex )
            {
                case 0:
                    data.SetSubProp1( childvalue.GetLong() );
                    break;
                case 1:
                    data.SetSubProp2( childvalue.GetString() );
                    break;
                ...
            }
        }

Parameters:
thisValue Value of this property, that should be altered.
childIndex Index of child changed (you can use Item(childIndex) to get).
childValue Value of the child property.

Reimplemented from wxPGProperty.

virtual bool wxCustomProperty::DoSetAttribute ( const wxString &  name,
wxVariant &  value 
) [virtual]

Special handling for attributes of this property.

If returns false, then the attribute will be automatically stored in m_attributes.

Default implementation simply returns false.

Reimplemented from wxPGProperty.

virtual int wxCustomProperty::GetChoiceInfo ( wxPGChoiceInfo *  choiceinfo  )  [virtual]

Returns current value's index to the choice control.

May also return, through pointer arguments, strings that should be inserted to that control. Irrelevant to classes which do not employ wxPG_EDITOR(Choice) or similar.

Remarks:
  • If returns NULL in choices, then this class must be derived from wxBaseEnumProperty.
  • Must not crash even if property's set of choices is uninitialized (i.e. it points to wxPGGlobalVars->m_emptyConstants).

Reimplemented from wxPGProperty.

virtual wxString wxCustomProperty::GetValueAsString ( int  argFlags  )  const [virtual]

Returns text representation of property's value.

Generally this function should not be called from the application code. Instead, call GetValueString().

Parameters:
argFlags If wxPG_FULL_VALUE is set, returns complete, storable string value instead of displayable. If wxPG_EDITABLE_VALUE is set, returns string value that must be editable in textctrl. If wxPG_COMPOSITE_FRAGMENT is set, returns text that is appropriate to display as a part of composite property string value.
Remarks:
  • Default implementation returns string composed from text representations of child properties.
  • Implementations are never called with m_value being null variant (ie. unspecified value), so you don't need to check for that. Naturally this means that unspecified value is always displayed as an empty string.
See also:
GetValueString()

Reimplemented from wxPGProperty.

virtual bool wxCustomProperty::IntToValue ( wxVariant &  value,
int  number,
int  argFlags 
) const [virtual]

Converts 'number' (including choice selection) into proper value 'variant'.

Returns true if new (different than m_value) value could be interpreted from the integer.

Parameters:
argFlags If wxPG_FULL_VALUE is set, returns complete, storable value instead of displayable
Remarks:
  • Default implementation may work correctly if used value type is int.
  • If property is not supposed to use choice or spinctrl or other editor with int-based value, it is not necessary to implement this method.
  • If property uses choice control, and displays a dialog on some choice items, then it is preferred to display that dialog in IntToValue instead of OnEvent.
  • You might want to take into account that m_value is Null variant if property value is unspecified (which is usually only case if you explicitly enabled that sort behavior).

Reimplemented from wxPGProperty.

virtual void wxCustomProperty::OnCustomPaint ( wxDC &  dc,
const wxRect &  rect,
wxPGPaintData paintdata 
) [virtual]

Override to paint an image in front of the property value text or drop-down list item (but only if wxPGProperty::OnMeasureImage is overridden as well).

If property's OnMeasureImage() returns size that has height != 0 but less than row height ( < 0 has special meanings), wxPropertyGrid calls this method to draw a custom image in a limited area in front of the editor control or value text/graphics, and if control has drop-down list, then the image is drawn there as well (even in the case OnMeasureImage() returned higher height than row height).

NOTE: Following applies when OnMeasureImage() returns a "flexible" height ( using wxPG_FLEXIBLE_SIZE(W,H) macro), which implies variable height items: If rect.x is < 0, then this is a measure item call, which means that dc is invalid and only thing that should be done is to set paintdata.m_drawnHeight to the height of the image of item at index paintdata.m_choiceItem. This call may be done even as often as once every drop-down popup show.

Parameters:
dc wxDC to paint on.
rect Box reserved for custom graphics. Includes surrounding rectangle, if any. If x is < 0, then this is a measure item call (see above).
paintdata wxPGPaintData structure with much useful data.
Remarks:
  • You can actually exceed rect width, but if you do so then paintdata.m_drawnWidth must be set to the full width drawn in pixels.
  • Due to technical reasons, rect's height will be default even if custom height was reported during measure call.
  • Brush is guaranteed to be default background colour. It has been already used to clear the background of area being painted. It can be modified.
  • Pen is guaranteed to be 1-wide 'black' (or whatever is the proper colour) pen for drawing framing rectangle. It can be changed as well.
See also:
GetValueAsString

Reimplemented from wxPGProperty.

virtual wxSize wxCustomProperty::OnMeasureImage ( int  item  )  const [virtual]

Returns size of the custom painted image in front of property.

This method must be overridden to return non-default value if OnCustomPaint is to be called.

Parameters:
item Normally -1, but can be an index to the property's list of items.
Remarks:
  • Default behavior is to return wxSize(0,0), which means no image.
  • Default image width or height is indicated with dimension -1.
  • You can also return wxPG_DEFAULT_IMAGE_SIZE which equals wxSize(-1, -1).

Reimplemented from wxPGProperty.

virtual bool wxCustomProperty::StringToValue ( wxVariant &  variant,
const wxString &  text,
int  argFlags = 0 
) const [virtual]

Converts 'text' into proper value 'variant'.

Returns true if new (different than m_value) value could be interpreted from the text.

Parameters:
argFlags If wxPG_FULL_VALUE is set, returns complete, storable value instead of displayable one (they may be different). If wxPG_COMPOSITE_FRAGMENT is set, text is interpreted as a part of composite property string value (as generated by GetValueAsString() called with this same flag).
Remarks:
  • Default implementation converts semicolon delimited tokens into child values. Only works for properties with children.
  • You might want to take into account that m_value is Null variant if property value is unspecified (which is usually only case if you explicitly enabled that sort behavior).

Reimplemented from wxPGProperty.


The documentation for this class was generated from the following file:

Generated on Sun Oct 4 12:26:24 2009 for wxPropertyGrid by  doxygen 1.5.9