added wxPropertyGrid from Jaakko Salli (#9934)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55576 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
692
include/wx/propgrid/propgridpagestate.h
Normal file
692
include/wx/propgrid/propgridpagestate.h
Normal file
@@ -0,0 +1,692 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: wx/propgrid/propgridpagestate.h
|
||||
// Purpose: wxPropertyGridPageState class
|
||||
// Author: Jaakko Salli
|
||||
// Modified by:
|
||||
// Created: 2008-08-24
|
||||
// RCS-ID: $Id:
|
||||
// Copyright: (c) Jaakko Salli
|
||||
// Licence: wxWindows license
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_PROPGRID_PROPGRIDPAGESTATE_H_
|
||||
#define _WX_PROPGRID_PROPGRIDPAGESTATE_H_
|
||||
|
||||
#include "wx/propgrid/property.h"
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
/** @section propgrid_hittestresult wxPropertyGridHitTestResult
|
||||
|
||||
A return value from wxPropertyGrid::HitTest(),
|
||||
contains all you need to know about an arbitrary location on the grid.
|
||||
*/
|
||||
struct WXDLLIMPEXP_PROPGRID wxPropertyGridHitTestResult
|
||||
{
|
||||
friend class wxPropertyGridPageState;
|
||||
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_IT_CHILDREN(wxPG_PROP_MISC_PARENT) |
|
||||
wxPG_IT_CHILDREN(wxPG_PROP_CATEGORY),
|
||||
|
||||
/** 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_PROP_MISC_PARENT|wxPG_PROP_AGGREGATE|wxPG_PROP_CATEGORY)
|
||||
wxPG_ITERATOR_MASK_OP_PARENT = wxPG_ITERATOR_FLAGS_ALL,
|
||||
|
||||
/** 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
|
||||
|
||||
};
|
||||
|
||||
/** @}
|
||||
*/
|
||||
|
||||
|
||||
#define wxPG_ITERATOR_CREATE_MASKS(FLAGS, A, B) \
|
||||
A = (FLAGS ^ wxPG_ITERATOR_MASK_OP_ITEM) & \
|
||||
wxPG_ITERATOR_MASK_OP_ITEM & 0xFFFF; \
|
||||
B = ((FLAGS>>16) ^ wxPG_ITERATOR_MASK_OP_PARENT) & \
|
||||
wxPG_ITERATOR_MASK_OP_PARENT & 0xFFFF;
|
||||
|
||||
|
||||
// Macro to test if children of PWC should be iterated through
|
||||
#define wxPG_ITERATOR_PARENTEXMASK_TEST(PWC, PARENTMASK) \
|
||||
( \
|
||||
!(PWC->GetFlags() & PARENTMASK) && \
|
||||
PWC->GetChildCount() \
|
||||
)
|
||||
|
||||
|
||||
// Base for wxPropertyGridIterator classes.
|
||||
class WXDLLIMPEXP_PROPGRID wxPropertyGridIteratorBase
|
||||
{
|
||||
public:
|
||||
wxPropertyGridIteratorBase()
|
||||
{
|
||||
}
|
||||
|
||||
void Assign( const wxPropertyGridIteratorBase& it );
|
||||
|
||||
bool AtEnd() const { return m_property == NULL; }
|
||||
|
||||
/** Get current property.
|
||||
*/
|
||||
wxPGProperty* GetProperty() const { return m_property; }
|
||||
|
||||
void Init( wxPropertyGridPageState* state,
|
||||
int flags,
|
||||
wxPGProperty* property,
|
||||
int dir = 1 );
|
||||
|
||||
void Init( wxPropertyGridPageState* state,
|
||||
int flags,
|
||||
int startPos = wxTOP,
|
||||
int dir = 0 );
|
||||
|
||||
/** Iterate to the next property.
|
||||
*/
|
||||
void Next( bool iterateChildren = true );
|
||||
|
||||
/** Iterate to the previous property.
|
||||
*/
|
||||
void Prev();
|
||||
|
||||
/**
|
||||
Set base parent, ie a property when, in which iteration returns, it
|
||||
ends.
|
||||
|
||||
Default base parent is the root of the used wxPropertyGridPageState.
|
||||
*/
|
||||
void SetBaseParent( wxPGProperty* baseParent )
|
||||
{ m_baseParent = baseParent; }
|
||||
|
||||
protected:
|
||||
|
||||
wxPGProperty* m_property;
|
||||
|
||||
private:
|
||||
wxPropertyGridPageState* m_state;
|
||||
wxPGProperty* m_baseParent;
|
||||
|
||||
// Masks are used to quickly exclude items
|
||||
int m_itemExMask;
|
||||
int m_parentExMask;
|
||||
};
|
||||
|
||||
|
||||
#define wxPG_IMPLEMENT_ITERATOR(CLASS, PROPERTY, STATE) \
|
||||
CLASS( STATE* state, int flags = wxPG_ITERATE_DEFAULT, \
|
||||
PROPERTY* property = NULL, int dir = 1 ) \
|
||||
: wxPropertyGridIteratorBase() \
|
||||
{ Init( (wxPropertyGridPageState*)state, flags, \
|
||||
(wxPGProperty*)property, dir ); } \
|
||||
CLASS( STATE* state, int flags, int startPos, int dir = 0 ) \
|
||||
: wxPropertyGridIteratorBase() \
|
||||
{ Init( (wxPropertyGridPageState*)state, flags, startPos, dir ); } \
|
||||
CLASS() \
|
||||
: wxPropertyGridIteratorBase() \
|
||||
{ \
|
||||
m_property = NULL; \
|
||||
} \
|
||||
CLASS( const CLASS& it ) \
|
||||
: wxPropertyGridIteratorBase( ) \
|
||||
{ \
|
||||
Assign(it); \
|
||||
} \
|
||||
~CLASS() \
|
||||
{ \
|
||||
} \
|
||||
const CLASS& operator=( const CLASS& it ) \
|
||||
{ \
|
||||
Assign(it); \
|
||||
return *this; \
|
||||
} \
|
||||
CLASS& operator++() { Next(); return *this; } \
|
||||
CLASS operator++(int) { CLASS it=*this;Next();return it; } \
|
||||
CLASS& operator--() { Prev(); return *this; } \
|
||||
CLASS operator--(int) { CLASS it=*this;Prev();return it; } \
|
||||
PROPERTY* operator *() const { return (PROPERTY*)m_property; } \
|
||||
static PROPERTY* OneStep( STATE* state, \
|
||||
int flags = wxPG_ITERATE_DEFAULT, \
|
||||
PROPERTY* property = NULL, \
|
||||
int dir = 1 ) \
|
||||
{ \
|
||||
CLASS it( state, flags, property, dir ); \
|
||||
if ( property ) \
|
||||
{ \
|
||||
if ( dir == 1 ) it.Next(); \
|
||||
else it.Prev(); \
|
||||
} \
|
||||
return *it; \
|
||||
}
|
||||
|
||||
|
||||
/** @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 WXDLLIMPEXP_PROPGRID
|
||||
wxPropertyGridIterator : public wxPropertyGridIteratorBase
|
||||
{
|
||||
public:
|
||||
|
||||
wxPG_IMPLEMENT_ITERATOR(wxPropertyGridIterator,
|
||||
wxPGProperty,
|
||||
wxPropertyGridPageState)
|
||||
|
||||
protected:
|
||||
};
|
||||
|
||||
|
||||
// Const version of wxPropertyGridIterator.
|
||||
class WXDLLIMPEXP_PROPGRID
|
||||
wxPropertyGridConstIterator : public wxPropertyGridIteratorBase
|
||||
{
|
||||
public:
|
||||
wxPG_IMPLEMENT_ITERATOR(wxPropertyGridConstIterator,
|
||||
const wxPGProperty,
|
||||
const wxPropertyGridPageState)
|
||||
|
||||
protected:
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
/** Base class to derive new viterators.
|
||||
*/
|
||||
class WXDLLIMPEXP_PROPGRID wxPGVIteratorBase
|
||||
{
|
||||
friend class wxPGVIterator;
|
||||
public:
|
||||
wxPGVIteratorBase() { m_refCount = 1; }
|
||||
virtual void Next() = 0;
|
||||
void IncRef()
|
||||
{
|
||||
m_refCount++;
|
||||
}
|
||||
void DecRef()
|
||||
{
|
||||
m_refCount--;
|
||||
if ( m_refCount <= 0 )
|
||||
delete this;
|
||||
}
|
||||
protected:
|
||||
virtual ~wxPGVIteratorBase() { }
|
||||
|
||||
wxPropertyGridIterator m_it;
|
||||
private:
|
||||
int m_refCount;
|
||||
};
|
||||
|
||||
/** @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 WXDLLIMPEXP_PROPGRID 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();
|
||||
}
|
||||
#ifndef SWIG
|
||||
const wxPGVIterator& operator=( const wxPGVIterator& it )
|
||||
{
|
||||
UnRef();
|
||||
m_pIt = it.m_pIt;
|
||||
m_pIt->IncRef();
|
||||
return *this;
|
||||
}
|
||||
#endif
|
||||
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;
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
#ifndef SWIG
|
||||
// We won't need this class from wxPython
|
||||
|
||||
/** @class wxPropertyGridPageState
|
||||
|
||||
Contains low-level property page information (properties, column widths,
|
||||
etc) of a single wxPropertyGrid or single wxPropertyGridPage. Generally you
|
||||
should not use this class directly, but instead member functions in
|
||||
wxPropertyGridInterface, wxPropertyGrid, wxPropertyGridPage, and
|
||||
wxPropertyGridManager.
|
||||
|
||||
@remarks
|
||||
- In separate wxPropertyGrid component this class was known as
|
||||
wxPropertyGridState.
|
||||
- Currently this class is not implemented in wxPython.
|
||||
|
||||
@library{wxpropgrid}
|
||||
@category{propgrid}
|
||||
*/
|
||||
class WXDLLIMPEXP_PROPGRID wxPropertyGridPageState
|
||||
{
|
||||
friend class wxPGProperty;
|
||||
friend class wxPropertyGrid;
|
||||
friend class wxPGCanvas;
|
||||
friend class wxPropertyGridInterface;
|
||||
friend class wxPropertyGridPage;
|
||||
friend class wxPropertyGridManager;
|
||||
public:
|
||||
|
||||
/** Default constructor. */
|
||||
wxPropertyGridPageState();
|
||||
|
||||
/** Destructor. */
|
||||
virtual ~wxPropertyGridPageState();
|
||||
|
||||
/** Makes sure all columns have minimum width.
|
||||
*/
|
||||
void CheckColumnWidths( int widthChange = 0 );
|
||||
|
||||
/**
|
||||
Override this member function to add custom behavior on property
|
||||
deletion.
|
||||
*/
|
||||
virtual void DoDelete( wxPGProperty* item );
|
||||
|
||||
wxSize DoFitColumns( bool allowGridResize = false );
|
||||
|
||||
wxPGProperty* DoGetItemAtY( int y ) const;
|
||||
|
||||
/**
|
||||
Override this member function to add custom behavior on property
|
||||
insertion.
|
||||
*/
|
||||
virtual wxPGProperty* DoInsert( wxPGProperty* parent,
|
||||
int index,
|
||||
wxPGProperty* property );
|
||||
|
||||
/**
|
||||
This needs to be overridden in grid used the manager so that splitter
|
||||
changes can be propagated to other pages.
|
||||
*/
|
||||
virtual void DoSetSplitterPosition( int pos,
|
||||
int splitterColumn = 0,
|
||||
bool allPages = false,
|
||||
bool fromAutoCenter = false );
|
||||
|
||||
bool EnableCategories( bool enable );
|
||||
|
||||
/** Make sure virtual height is up-to-date.
|
||||
*/
|
||||
void EnsureVirtualHeight()
|
||||
{
|
||||
if ( m_vhCalcPending )
|
||||
{
|
||||
RecalculateVirtualHeight();
|
||||
m_vhCalcPending = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/** Enables or disables given property and its subproperties. */
|
||||
bool DoEnableProperty( wxPGProperty* p, bool enable );
|
||||
|
||||
/** Returns (precalculated) height of contained visible properties.
|
||||
*/
|
||||
unsigned int GetVirtualHeight() const
|
||||
{
|
||||
wxASSERT( !m_vhCalcPending );
|
||||
return m_virtualHeight;
|
||||
}
|
||||
|
||||
/** Returns (precalculated) height of contained visible properties.
|
||||
*/
|
||||
unsigned int GetVirtualHeight()
|
||||
{
|
||||
EnsureVirtualHeight();
|
||||
return m_virtualHeight;
|
||||
}
|
||||
|
||||
/** Returns actual height of contained visible properties.
|
||||
@remarks
|
||||
Mostly used for internal diagnostic purposes.
|
||||
*/
|
||||
inline unsigned int GetActualVirtualHeight() const;
|
||||
|
||||
unsigned int GetColumnCount() const
|
||||
{
|
||||
return m_colWidths.size();
|
||||
}
|
||||
|
||||
wxPGProperty* GetSelection() const
|
||||
{
|
||||
return m_selected;
|
||||
}
|
||||
|
||||
int GetColumnMinWidth( int column ) const;
|
||||
|
||||
int GetColumnWidth( unsigned int column ) const
|
||||
{
|
||||
return m_colWidths[column];
|
||||
}
|
||||
|
||||
wxPropertyGrid* GetGrid() const { return m_pPropGrid; }
|
||||
|
||||
/** Returns last item which could be iterated using given flags.
|
||||
@param flags
|
||||
@link iteratorflags List of iterator flags@endlink
|
||||
*/
|
||||
wxPGProperty* GetLastItem( int flags = wxPG_ITERATE_DEFAULT );
|
||||
|
||||
const wxPGProperty* GetLastItem( int flags = wxPG_ITERATE_DEFAULT ) const
|
||||
{
|
||||
return ((wxPropertyGridPageState*)this)->GetLastItem(flags);
|
||||
}
|
||||
|
||||
wxPropertyCategory* GetPropertyCategory( const wxPGProperty* p ) const;
|
||||
|
||||
wxPGProperty* GetPropertyByLabel( const wxString& name,
|
||||
wxPGProperty* parent = NULL ) const;
|
||||
|
||||
wxVariant DoGetPropertyValues( const wxString& listname,
|
||||
wxPGProperty* baseparent,
|
||||
long flags ) const;
|
||||
|
||||
wxPGProperty* DoGetRoot() const { return m_properties; }
|
||||
|
||||
// Returns combined width of margin and all the columns
|
||||
int GetVirtualWidth() const
|
||||
{
|
||||
return m_width;
|
||||
}
|
||||
|
||||
/**
|
||||
Returns minimal width for given column so that all images and texts
|
||||
will fit entirely.
|
||||
|
||||
Used by SetSplitterLeft() and DoFitColumns().
|
||||
*/
|
||||
int GetColumnFitWidth(wxClientDC& dc,
|
||||
wxPGProperty* pwc,
|
||||
unsigned int col,
|
||||
bool subProps) const;
|
||||
|
||||
/** Returns information about arbitrary position in the grid.
|
||||
|
||||
wxPropertyGridHitTestResult definition:
|
||||
@code
|
||||
struct wxPropertyGridHitTestResult
|
||||
{
|
||||
wxPGProperty* GetProperty() const;
|
||||
|
||||
// column. -1 for margin
|
||||
int column;
|
||||
|
||||
// Index of splitter hit, -1 for none.
|
||||
int splitter;
|
||||
|
||||
// If splitter hit, then offset to that.
|
||||
int splitterHitOffset;
|
||||
};
|
||||
@endcode
|
||||
*/
|
||||
wxPropertyGridHitTestResult HitTest( const wxPoint& pt ) const;
|
||||
|
||||
/** Returns true if page is visibly displayed.
|
||||
*/
|
||||
inline bool IsDisplayed() const;
|
||||
|
||||
bool IsInNonCatMode() const { return (bool)(m_properties == m_abcArray); }
|
||||
|
||||
/** Only inits arrays, doesn't migrate things or such. */
|
||||
void InitNonCatMode ();
|
||||
|
||||
void DoLimitPropertyEditing( wxPGProperty* p, bool limit = true )
|
||||
{
|
||||
p->SetFlagRecursively(wxPG_PROP_NOEDITOR, limit);
|
||||
}
|
||||
|
||||
bool DoSelectProperty( wxPGProperty* p, unsigned int flags = 0 );
|
||||
|
||||
/** widthChange is non-client.
|
||||
*/
|
||||
void OnClientWidthChange( int newWidth,
|
||||
int widthChange,
|
||||
bool fromOnResize = false );
|
||||
|
||||
/** Recalculates m_virtualHeight.
|
||||
*/
|
||||
void RecalculateVirtualHeight()
|
||||
{
|
||||
m_virtualHeight = GetActualVirtualHeight();
|
||||
}
|
||||
|
||||
void SetColumnCount( int colCount );
|
||||
|
||||
void PropagateColSizeDec( int column, int decrease, int dir );
|
||||
|
||||
bool DoHideProperty( wxPGProperty* p, bool hide, int flags = wxPG_RECURSE );
|
||||
|
||||
bool DoSetPropertyValueString( wxPGProperty* p, const wxString& value );
|
||||
|
||||
bool DoSetPropertyValue( wxPGProperty* p, wxVariant& value );
|
||||
|
||||
bool DoSetPropertyValueWxObjectPtr( wxPGProperty* p, wxObject* value );
|
||||
void DoSetPropertyValues( const wxVariantList& list,
|
||||
wxPGProperty* default_category );
|
||||
|
||||
void DoSetPropertyValueUnspecified( wxPGProperty* p );
|
||||
|
||||
void SetSplitterLeft( bool subProps = false );
|
||||
|
||||
/** Set virtual width for this particular page. */
|
||||
void SetVirtualWidth( int width );
|
||||
|
||||
void SortChildren( wxPGProperty* p );
|
||||
void Sort();
|
||||
|
||||
void SetSelection( wxPGProperty* p ) { m_selected = p; }
|
||||
|
||||
/** Called after virtual height needs to be recalculated.
|
||||
*/
|
||||
void VirtualHeightChanged()
|
||||
{
|
||||
m_vhCalcPending = 1;
|
||||
}
|
||||
|
||||
/** Base append. */
|
||||
wxPGProperty* DoAppend( wxPGProperty* property );
|
||||
|
||||
/** Returns property by its name. */
|
||||
wxPGProperty* BaseGetPropertyByName( const wxString& name ) const;
|
||||
|
||||
void DoClearSelection()
|
||||
{
|
||||
m_selected = NULL;
|
||||
}
|
||||
|
||||
/** Called in, for example, wxPropertyGrid::Clear. */
|
||||
void DoClear();
|
||||
|
||||
bool DoCollapse( wxPGProperty* p );
|
||||
|
||||
bool DoExpand( wxPGProperty* p );
|
||||
|
||||
void CalculateFontAndBitmapStuff( int vspacing );
|
||||
|
||||
protected:
|
||||
|
||||
int DoGetSplitterPosition( int splitterIndex = 0 ) const;
|
||||
|
||||
/** Returns column at x coordinate (in GetGrid()->GetPanel()).
|
||||
@param pSplitterHit
|
||||
Give pointer to int that receives index to splitter that is at x.
|
||||
@param pSplitterHitOffset
|
||||
Distance from said splitter.
|
||||
*/
|
||||
int HitTestH( int x, int* pSplitterHit, int* pSplitterHitOffset ) const;
|
||||
|
||||
int PrepareToAddItem ( wxPGProperty* property,
|
||||
wxPGProperty* scheduledParent );
|
||||
|
||||
/** If visible, then this is pointer to wxPropertyGrid.
|
||||
This shall *never* be NULL to indicate that this state is not visible.
|
||||
*/
|
||||
wxPropertyGrid* m_pPropGrid;
|
||||
|
||||
/** Pointer to currently used array. */
|
||||
wxPGProperty* m_properties;
|
||||
|
||||
/** Array for categoric mode. */
|
||||
wxPGRootProperty m_regularArray;
|
||||
|
||||
/** Array for root of non-categoric mode. */
|
||||
wxPGRootProperty* m_abcArray;
|
||||
|
||||
/** Dictionary for name-based access. */
|
||||
wxPGHashMapS2P m_dictName;
|
||||
|
||||
/** List of column widths (first column does not include margin). */
|
||||
wxArrayInt m_colWidths;
|
||||
|
||||
double m_fSplitterX;
|
||||
|
||||
/** Most recently added category. */
|
||||
wxPropertyCategory* m_currentCategory;
|
||||
|
||||
/** Pointer to selected property. */
|
||||
wxPGProperty* m_selected;
|
||||
|
||||
/** Virtual width. */
|
||||
int m_width;
|
||||
|
||||
/** Indicates total virtual height of visible properties. */
|
||||
unsigned int m_virtualHeight;
|
||||
|
||||
/** 1 if m_lastCaption is also the bottommost caption. */
|
||||
unsigned char m_lastCaptionBottomnest;
|
||||
|
||||
/** 1 items appended/inserted, so stuff needs to be done before drawing;
|
||||
If m_virtualHeight == 0, then calcylatey's must be done.
|
||||
Otherwise just sort.
|
||||
*/
|
||||
unsigned char m_itemsAdded;
|
||||
|
||||
/** 1 if any value is modified. */
|
||||
unsigned char m_anyModified;
|
||||
|
||||
unsigned char m_vhCalcPending;
|
||||
};
|
||||
|
||||
#endif // #ifndef SWIG
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
#endif // _WX_PROPGRID_PROPGRIDPAGESTATE_H_
|
||||
|
Reference in New Issue
Block a user