X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9ceed261f809dacf8f64c2287c5de9e45d22e5cb..3c9863aca7b164a3fa3fcb61af9f0fbdf30e08f2:/include/wx/propgrid/property.h diff --git a/include/wx/propgrid/property.h b/include/wx/propgrid/property.h index dc1f2c2426..f72e352e8f 100644 --- a/include/wx/propgrid/property.h +++ b/include/wx/propgrid/property.h @@ -12,6 +12,8 @@ #ifndef _WX_PROPGRID_PROPERTY_H_ #define _WX_PROPGRID_PROPERTY_H_ +#include "wx/defs.h" + #if wxUSE_PROPGRID #include "wx/propgrid/propgriddefs.h" @@ -304,6 +306,13 @@ public: return *this; } + // Used mostly internally to figure out if this cell is supposed + // to have default values when attached to a grid. + bool IsInvalid() const + { + return ( m_refData == NULL ); + } + private: virtual wxObjectRefData *CreateRefData() const { return new wxPGCellData(); } @@ -473,6 +482,8 @@ wxPG_PROP_USES_COMMON_VALUE = 0x00020000, @remarks This flag cannot be used with property iterators. + + @see wxPGProperty::SetAutoUnspecified() */ wxPG_PROP_AUTO_UNSPECIFIED = 0x00040000, @@ -1908,6 +1919,21 @@ public: void SetAttributes( const wxPGAttributeStorage& attributes ); + /** + Set if user can change the property's value to unspecified by + modifying the value of the editor control (usually by clearing + it). Currently, this can work with following properties: + wxIntProperty, wxUIntProperty, wxFloatProperty, wxEditEnumProperty. + + @param enable + Whether to enable or disable this behavior (it is disabled by + default). + */ + void SetAutoUnspecified( bool enable = true ) + { + ChangeFlag(wxPG_PROP_AUTO_UNSPECIFIED, enable); + } + /** Sets property's background colour. @@ -2039,23 +2065,14 @@ public: } /** - Sets given property flag. - - @see propgrid_propflags - */ - void SetFlag( wxPGPropertyFlags flag ) - { - // - // NB: While using wxPGPropertyFlags here makes it difficult to - // combine different flags, it usefully prevents user from - // using incorrect flags (say, wxWindow styles). - m_flags |= flag; - } + Sets or clears given property flag. Mainly for internal use. - /** - Sets or clears given property flag. + @remarks Setting a property flag never has any side-effect, and is + intended almost exclusively for internal use. So, for + example, if you want to disable a property, call + Enable(false) instead of setting wxPG_PROP_DISABLED flag. - @see propgrid_propflags + @see HasFlag(), GetFlags() */ void ChangeFlag( wxPGPropertyFlags flag, bool set ) { @@ -2066,9 +2083,10 @@ public: } /** - Sets or clears given property flag, recursively. + Sets or clears given property flag, recursively. This function is + primarily intended for internal use. - @see propgrid_propflags + @see ChangeFlag() */ void SetFlagRecursively( wxPGPropertyFlags flag, bool set ); @@ -2181,8 +2199,6 @@ public: return m_helpString; } - void ClearFlag( FlagType flag ) { m_flags &= ~(flag); } - // Use, for example, to detect if item is inside collapsed section. bool IsSomeParent( wxPGProperty* candidate_parent ) const; @@ -2375,6 +2391,22 @@ protected: void SetParentState( wxPropertyGridPageState* pstate ) { m_parentState = pstate; } + void SetFlag( wxPGPropertyFlags flag ) + { + // + // NB: While using wxPGPropertyFlags here makes it difficult to + // combine different flags, it usefully prevents user from + // using incorrect flags (say, wxWindow styles). + m_flags |= flag; + } + + void ClearFlag( FlagType flag ) { m_flags &= ~(flag); } + + // Called when the property is being removed from the grid and/or + // page state (but *not* when it is also deleted). + void OnDetached(wxPropertyGridPageState* state, + wxPropertyGrid* propgrid); + // Call after fixed sub-properties added/removed after creation. // if oldSelInd >= 0 and < new max items, then selection is // moved to it.