526954c596
Use "wxWindows licence" and not "wxWidgets licence" (the latter doesn't exist) and consistently spell "licence" using British spelling. See #12165. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64940 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
177 lines
5.4 KiB
C++
177 lines
5.4 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: property.h
|
|
// Purpose: interface of wxPGProperty
|
|
// Author: wxWidgets team
|
|
// RCS-ID: $Id$
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
/**
|
|
@section propgrid_hittestresult wxPropertyGridHitTestResult
|
|
|
|
A return value from wxPropertyGrid::HitTest(),
|
|
contains all you need to know about an arbitrary location on the grid.
|
|
*/
|
|
struct wxPropertyGridHitTestResult
|
|
{
|
|
public:
|
|
|
|
wxPGProperty* GetProperty() const { return property; }
|
|
|
|
/** Column. -1 for margin. */
|
|
int column;
|
|
|
|
/** Index of splitter hit, -1 for none. */
|
|
int splitter;
|
|
|
|
/** If splitter hit, offset to that */
|
|
int splitterHitOffset;
|
|
|
|
private:
|
|
/** Property. NULL if empty space below properties was hit */
|
|
wxPGProperty* property;
|
|
};
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
#define wxPG_IT_CHILDREN(A) (A<<16)
|
|
|
|
/** @section propgrid_iterator_flags wxPropertyGridIterator Flags
|
|
@{
|
|
|
|
NOTES: At lower 16-bits, there are flags to check if item will be included. At higher
|
|
16-bits, there are same flags, but to instead check if children will be included.
|
|
*/
|
|
|
|
enum wxPG_ITERATOR_FLAGS
|
|
{
|
|
|
|
/** Iterate through 'normal' property items (does not include children of aggregate or hidden items by default).
|
|
*/
|
|
wxPG_ITERATE_PROPERTIES = (wxPG_PROP_PROPERTY|wxPG_PROP_MISC_PARENT|wxPG_PROP_AGGREGATE| \
|
|
wxPG_PROP_COLLAPSED|((wxPG_PROP_MISC_PARENT|wxPG_PROP_CATEGORY)<<16)),
|
|
|
|
/** Iterate children of collapsed parents, and individual items that are hidden.
|
|
*/
|
|
wxPG_ITERATE_HIDDEN = (wxPG_PROP_HIDDEN|wxPG_IT_CHILDREN(wxPG_PROP_COLLAPSED)),
|
|
|
|
/** Iterate children of parent that is an aggregate property (ie. has fixed children).
|
|
*/
|
|
wxPG_ITERATE_FIXED_CHILDREN = (wxPG_IT_CHILDREN(wxPG_PROP_AGGREGATE)|wxPG_ITERATE_PROPERTIES),
|
|
|
|
/** Iterate categories. Note that even without this flag, children of categories
|
|
are still iterated through.
|
|
*/
|
|
wxPG_ITERATE_CATEGORIES = (wxPG_PROP_CATEGORY|wxPG_IT_CHILDREN(wxPG_PROP_CATEGORY)|wxPG_PROP_COLLAPSED),
|
|
|
|
wxPG_ITERATE_ALL_PARENTS = (wxPG_PROP_MISC_PARENT|wxPG_PROP_AGGREGATE|wxPG_PROP_CATEGORY),
|
|
|
|
wxPG_ITERATE_ALL_PARENTS_RECURSIVELY = (wxPG_ITERATE_ALL_PARENTS|wxPG_IT_CHILDREN(wxPG_ITERATE_ALL_PARENTS)),
|
|
|
|
wxPG_ITERATOR_FLAGS_ALL = (wxPG_PROP_PROPERTY|wxPG_PROP_MISC_PARENT|wxPG_PROP_AGGREGATE| \
|
|
wxPG_PROP_HIDDEN|wxPG_PROP_CATEGORY|wxPG_PROP_COLLAPSED),
|
|
|
|
wxPG_ITERATOR_MASK_OP_ITEM = wxPG_ITERATOR_FLAGS_ALL,
|
|
|
|
wxPG_ITERATOR_MASK_OP_PARENT = wxPG_ITERATOR_FLAGS_ALL, // (wxPG_PROP_MISC_PARENT|wxPG_PROP_AGGREGATE|wxPG_PROP_CATEGORY)
|
|
|
|
/** Combines all flags needed to iterate through visible properties
|
|
(ie. hidden properties and children of collapsed parents are skipped).
|
|
*/
|
|
wxPG_ITERATE_VISIBLE = (wxPG_ITERATE_PROPERTIES|wxPG_PROP_CATEGORY|wxPG_IT_CHILDREN(wxPG_PROP_AGGREGATE)),
|
|
|
|
/** Iterate all items.
|
|
*/
|
|
wxPG_ITERATE_ALL = (wxPG_ITERATE_VISIBLE|wxPG_ITERATE_HIDDEN),
|
|
|
|
/** Iterate through individual properties (ie. categories and children of
|
|
aggregate properties are skipped).
|
|
*/
|
|
wxPG_ITERATE_NORMAL = (wxPG_ITERATE_PROPERTIES|wxPG_ITERATE_HIDDEN),
|
|
|
|
/** Default iterator flags.
|
|
*/
|
|
wxPG_ITERATE_DEFAULT = wxPG_ITERATE_NORMAL
|
|
|
|
};
|
|
|
|
/** @}
|
|
*/
|
|
|
|
|
|
/**
|
|
@section propgrid_iterator_class wxPropertyGridIterator
|
|
|
|
Preferable way to iterate through contents of wxPropertyGrid,
|
|
wxPropertyGridManager, and wxPropertyGridPage.
|
|
|
|
See wxPropertyGridInterface::GetIterator() for more information about usage.
|
|
|
|
@library{wxpropgrid}
|
|
@category{propgrid}
|
|
*/
|
|
class wxPropertyGridIterator : public wxPropertyGridIteratorBase
|
|
{
|
|
public:
|
|
|
|
void Assign( const wxPropertyGridIteratorBase& it );
|
|
|
|
bool AtEnd() const { return m_property == NULL; }
|
|
|
|
/**
|
|
Get current property.
|
|
*/
|
|
wxPGProperty* GetProperty() const { return m_property; }
|
|
|
|
/**
|
|
Iterate to the next property.
|
|
*/
|
|
void Next( bool iterateChildren = true );
|
|
|
|
/**
|
|
Iterate to the previous property.
|
|
*/
|
|
void Prev();
|
|
|
|
protected:
|
|
};
|
|
|
|
// -----------------------------------------------------------------------
|
|
|
|
/**
|
|
@section propgrid_viterator_class wxPGVIterator
|
|
|
|
Abstract implementation of a simple iterator. Can only be used
|
|
to iterate in forward order, and only through the entire container.
|
|
Used to have functions dealing with all properties work with both
|
|
wxPropertyGrid and wxPropertyGridManager.
|
|
*/
|
|
class wxPGVIterator
|
|
{
|
|
public:
|
|
wxPGVIterator() { m_pIt = NULL; }
|
|
wxPGVIterator( wxPGVIteratorBase* obj ) { m_pIt = obj; }
|
|
~wxPGVIterator() { UnRef(); }
|
|
void UnRef() { if (m_pIt) m_pIt->DecRef(); }
|
|
wxPGVIterator( const wxPGVIterator& it )
|
|
{
|
|
m_pIt = it.m_pIt;
|
|
m_pIt->IncRef();
|
|
}
|
|
const wxPGVIterator& operator=( const wxPGVIterator& it )
|
|
{
|
|
UnRef();
|
|
m_pIt = it.m_pIt;
|
|
m_pIt->IncRef();
|
|
return *this;
|
|
}
|
|
void Next() { m_pIt->Next(); }
|
|
bool AtEnd() const { return m_pIt->m_it.AtEnd(); }
|
|
wxPGProperty* GetProperty() const { return m_pIt->m_it.GetProperty(); }
|
|
protected:
|
|
wxPGVIteratorBase* m_pIt;
|
|
};
|
|
|
|
|