// 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(); }
@remarks
This flag cannot be used with property iterators.
+
+ @see wxPGProperty::SetAutoUnspecified()
*/
wxPG_PROP_AUTO_UNSPECIFIED = 0x00040000,
*/
#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
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.
-
- @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 )
{
}
/**
- 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 );
@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.