// Created: 2008-08-23
// RCS-ID: $Id$
// Copyright: (c) Jaakko Salli
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_PROPGRID_PROPERTY_H_
#define _WX_PROPGRID_PROPERTY_H_
+#include "wx/defs.h"
+
#if wxUSE_PROPGRID
#include "wx/propgrid/propgriddefs.h"
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(); }
@{
*/
-enum wxPG_PROPERTY_FLAGS
+enum wxPGPropertyFlags
{
/** Indicates bold font.
@remarks
This flag cannot be used with property iterators.
+
+ @see wxPGProperty::SetAutoUnspecified()
*/
wxPG_PROP_AUTO_UNSPECIFIED = 0x00040000,
Code should automatically take care of this, however.
*/
#define wxPG_PROP_PARENTAL_FLAGS \
- (wxPG_PROP_AGGREGATE|wxPG_PROP_CATEGORY|wxPG_PROP_MISC_PARENT)
+ ((wxPGPropertyFlags)(wxPG_PROP_AGGREGATE | \
+ wxPG_PROP_CATEGORY | \
+ wxPG_PROP_MISC_PARENT))
/** @}
*/
*/
#define wxPG_DIR_DIALOG_MESSAGE wxS("DialogMessage")
+/**
+ wxArrayStringProperty's string delimiter character. If this is aquotation
+ mark or hyphen, then strings will be quoted instead (with given
+ character).
+
+ Default delimiter is quotation mark.
+*/
+#define wxPG_ARRAY_DELIMITER wxS("Delimiter")
+
/** Sets displayed date format for wxDateProperty.
*/
#define wxPG_DATE_FORMAT wxS("DateFormat")
*/
void DeleteChoice( int index );
+ /**
+ Enables or disables the property. Disabled property usually appears
+ as having grey text.
+
+ @param enable
+ If @false, property is disabled instead.
+
+ @see wxPropertyGridInterface::EnableProperty()
+ */
+ void Enable( bool enable = true );
+
/**
Call to enable or disable usage of common value (integer value that can
be selected for properties instead of their normal values) for this
return m_value.IsNull();
}
- FlagType HasFlag( FlagType flag ) const
+ /**
+ Returns non-zero if property has given flag set.
+
+ @see propgrid_propflags
+ */
+ FlagType HasFlag( wxPGPropertyFlags flag ) const
{
return ( m_flags & flag );
}
*/
wxVariant GetAttributesAsList() const;
+ /**
+ Returns property flags.
+ */
FlagType GetFlags() const
{
return m_flags;
By default changes are applied recursively. Set this paramter
wxPG_DONT_RECURSE to prevent this.
*/
- inline bool Hide( bool hide, int flags = wxPG_RECURSE );
+ bool Hide( bool hide, int flags = wxPG_RECURSE );
bool IsExpanded() const
{ return (!(m_flags & wxPG_PROP_COLLAPSED) && GetChildCount()); }
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.
}
/**
- Sets given property flag(s).
- */
- void SetFlag( FlagType flag ) { m_flags |= flag; }
+ Sets or clears given property flag. Mainly for internal use.
- /**
- Sets or clears given property flag(s).
+ @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 HasFlag(), GetFlags()
*/
- void ChangeFlag( FlagType flag, bool set )
+ void ChangeFlag( wxPGPropertyFlags flag, bool set )
{
if ( set )
m_flags |= flag;
m_flags &= ~flag;
}
- void SetFlagRecursively( FlagType flag, bool set );
+ /**
+ Sets or clears given property flag, recursively. This function is
+ primarily intended for internal use.
+
+ @see ChangeFlag()
+ */
+ void SetFlagRecursively( wxPGPropertyFlags flag, bool set );
void SetHelpString( const wxString& helpString )
{
@remarks This operation deselects the property and clears its
value.
*/
- bool SetChoices( wxPGChoices& choices );
+ bool SetChoices( const wxPGChoices& choices );
/** Set max length of text in text editor.
*/
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;
const wxVariantList* valueOverrides = NULL,
wxPGHashMapS2S* childResults = NULL ) const;
+ bool DoHide( bool hide, int flags );
+
void DoSetName(const wxString& str) { m_name = str; }
/** Deletes all sub-properties. */
// Removes child property with given pointer. Does not delete it.
void RemoveChild( wxPGProperty* p );
+ void DoEnable( bool enable );
+
void DoPreAddChild( int index, wxPGProperty* prop );
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.