diff --git a/include/wx/propgrid/propgridpagestate.h b/include/wx/propgrid/propgridpagestate.h index 24aa13f7db..2dc6d1eb27 100644 --- a/include/wx/propgrid/propgridpagestate.h +++ b/include/wx/propgrid/propgridpagestate.h @@ -19,11 +19,8 @@ // ----------------------------------------------------------------------- -/** @section propgrid_hittestresult wxPropertyGridHitTestResult - - A return value from wxPropertyGrid::HitTest(), - contains all you need to know about an arbitrary location on the grid. -*/ +// A return value from wxPropertyGrid::HitTest(), +// contains all you need to know about an arbitrary location on the grid. class WXDLLIMPEXP_PROPGRID wxPropertyGridHitTestResult { friend class wxPropertyGridPageState; @@ -40,42 +37,34 @@ public: { } - /** - Returns column hit. -1 for margin. - */ + // Returns column hit. -1 for margin. int GetColumn() const { return m_column; } - /** - Returns property hit. NULL if empty space below - properties was hit instead. - */ + // Returns property hit. NULL if empty space below + // properties was hit instead. wxPGProperty* GetProperty() const { return m_property; } - /** - Returns index of splitter hit, -1 for none. - */ + // Returns index of splitter hit, -1 for none. int GetSplitter() const { return m_splitter; } - /** - If splitter hit, then this member function - returns offset to the exact splitter position. - */ + // If splitter hit, then this member function + // returns offset to the exact splitter position. int GetSplitterHitOffset() const { return m_splitterHitOffset; } private: - /** Property. NULL if empty space below properties was hit */ + // Property. NULL if empty space below properties was hit. wxPGProperty* m_property; - /** Column. -1 for margin. */ + // Column. -1 for margin. int m_column; - /** Index of splitter hit, -1 for none. */ + // Index of splitter hit, -1 for none. int m_splitter; - /** If splitter hit, offset to that */ + // If splitter hit, offset to that. int m_splitterHitOffset; }; @@ -83,21 +72,14 @@ private: #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. -*/ - +// 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). -*/ +// 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 | @@ -105,22 +87,18 @@ wxPG_ITERATE_PROPERTIES = wxPG_PROP_PROPERTY | wxPG_IT_CHILDREN(wxPG_PROP_MISC_PARENT) | wxPG_IT_CHILDREN(wxPG_PROP_CATEGORY), -/** Iterate children of collapsed parents, and individual items that are hidden. -*/ +// 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). -*/ +// 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. -*/ +// 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, @@ -145,33 +123,26 @@ 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). -*/ +// 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. -*/ +// 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). -*/ +// 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. -*/ +// Default iterator flags. wxPG_ITERATE_DEFAULT = wxPG_ITERATE_NORMAL }; -/** @} -*/ - #define wxPG_ITERATOR_CREATE_MASKS(FLAGS, A, B) \ A = (FLAGS ^ wxPG_ITERATOR_MASK_OP_ITEM) & \ @@ -200,8 +171,7 @@ public: bool AtEnd() const { return m_property == NULL; } - /** Get current property. - */ + // Get current property. wxPGProperty* GetProperty() const { return m_property; } void Init( wxPropertyGridPageState* state, @@ -214,20 +184,15 @@ public: int startPos = wxTOP, int dir = 0 ); - /** Iterate to the next property. - */ + // Iterate to the next property. void Next( bool iterateChildren = true ); - /** Iterate to the previous property. - */ + // Iterate to the previous property. void Prev(); - /** - Set base parent, i.e. a property when, in which iteration returns, it - ends. - - Default base parent is the root of the used wxPropertyGridPageState. - */ + // Set base parent, i.e. 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; } @@ -293,16 +258,9 @@ private: } -/** @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} -*/ +// Preferable way to iterate through contents of wxPropertyGrid, +// wxPropertyGridManager, and wxPropertyGridPage. +// See wxPropertyGridInterface::GetIterator() for more information about usage. class WXDLLIMPEXP_PROPGRID wxPropertyGridIterator : public wxPropertyGridIteratorBase { @@ -325,17 +283,13 @@ public: const wxPGProperty, const wxPropertyGridPageState) - /** - Additional copy constructor. - */ + // Additional copy constructor. wxPropertyGridConstIterator( const wxPropertyGridIterator& other ) { Assign(other); } - /** - Additional assignment operator. - */ + // Additional assignment operator. const wxPropertyGridConstIterator& operator=( const wxPropertyGridIterator& it ) { Assign(it); @@ -347,8 +301,7 @@ protected: // ----------------------------------------------------------------------- -/** Base class to derive new viterators. -*/ +// Base class to derive new viterators. class WXDLLIMPEXP_PROPGRID wxPGVIteratorBase : public wxObjectRefData { friend class wxPGVIterator; @@ -361,13 +314,10 @@ protected: wxPropertyGridIterator m_it; }; -/** @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. -*/ +// 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: @@ -399,22 +349,14 @@ protected: // ----------------------------------------------------------------------- -/** @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} -*/ +// 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. +// - In separate wxPropertyGrid component this class was known as +// wxPropertyGridState. +// - Currently this class is not implemented in wxPython. class WXDLLIMPEXP_PROPGRID wxPropertyGridPageState { friend class wxPGProperty; @@ -425,46 +367,38 @@ class WXDLLIMPEXP_PROPGRID wxPropertyGridPageState friend class wxPropertyGridManager; public: - /** Default constructor. */ + // Default constructor. wxPropertyGridPageState(); - /** Destructor. */ + // Destructor. virtual ~wxPropertyGridPageState(); - /** Makes sure all columns have minimum width. - */ + // Makes sure all columns have minimum width. void CheckColumnWidths( int widthChange = 0 ); - /** - Override this member function to add custom behaviour on property - deletion. - */ + // Override this member function to add custom behaviour on property + // deletion. virtual void DoDelete( wxPGProperty* item, bool doDelete = true ); wxSize DoFitColumns( bool allowGridResize = false ); wxPGProperty* DoGetItemAtY( int y ) const; - /** - Override this member function to add custom behaviour on property - insertion. - */ + // Override this member function to add custom behaviour 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. - */ + // 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, int flags = 0 ); bool EnableCategories( bool enable ); - /** Make sure virtual height is up-to-date. - */ + // Make sure virtual height is up-to-date. void EnsureVirtualHeight() { if ( m_vhCalcPending ) @@ -474,26 +408,22 @@ public: } } - /** Returns (precalculated) height of contained visible properties. - */ + // Returns (precalculated) height of contained visible properties. unsigned int GetVirtualHeight() const { wxASSERT( !m_vhCalcPending ); return m_virtualHeight; } - /** Returns (precalculated) height of contained visible properties. - */ + // 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. - */ + // Returns actual height of contained visible properties. + // Mostly used for internal diagnostic purposes. inline unsigned int GetActualVirtualHeight() const; unsigned int GetColumnCount() const @@ -510,10 +440,7 @@ public: 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 - */ + // Returns last item which could be iterated using given flags. wxPGProperty* GetLastItem( int flags = wxPG_ITERATE_DEFAULT ); const wxPGProperty* GetLastItem( int flags = wxPG_ITERATE_DEFAULT ) const @@ -521,9 +448,7 @@ public: return ((wxPropertyGridPageState*)this)->GetLastItem(flags); } - /** - Returns currently selected property. - */ + // Returns currently selected property. wxPGProperty* GetSelection() const { return m_selection.empty()? NULL: m_selection[0]; @@ -574,12 +499,9 @@ public: return m_width; } - /** - Returns minimal width for given column so that all images and texts - will fit entirely. - - Used by SetSplitterLeft() and DoFitColumns(). - */ + // 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, @@ -587,18 +509,13 @@ public: int GetColumnFullWidth(wxClientDC &dc, wxPGProperty *p, unsigned int col); - /** - Returns information about arbitrary position in the grid. - - @param pt - Logical coordinates in the virtual grid space. Use - wxScrolled::CalcUnscrolledPosition() if you need to - translate a scrolled position into a logical one. - */ + // Returns information about arbitrary position in the grid. + // pt - Logical coordinates in the virtual grid space. Use + // wxScrolled::CalcUnscrolledPosition() if you need to + // translate a scrolled position into a logical one. wxPropertyGridHitTestResult HitTest( const wxPoint& pt ) const; - /** Returns true if page is visibly displayed. - */ + // Returns true if page is visibly displayed. inline bool IsDisplayed() const; bool IsInNonCatMode() const { return (bool)(m_properties == m_abcArray); } @@ -610,14 +527,12 @@ public: bool DoSelectProperty( wxPGProperty* p, unsigned int flags = 0 ); - /** widthChange is non-client. - */ + // widthChange is non-client. void OnClientWidthChange( int newWidth, int widthChange, bool fromOnResize = false ); - /** Recalculates m_virtualHeight. - */ + // Recalculates m_virtualHeight. void RecalculateVirtualHeight() { m_virtualHeight = GetActualVirtualHeight(); @@ -639,7 +554,7 @@ public: void SetSplitterLeft( bool subProps = false ); - /** Set virtual width for this particular page. */ + // Set virtual width for this particular page. void SetVirtualWidth( int width ); void DoSortChildren( wxPGProperty* p, int flags = 0 ); @@ -647,20 +562,19 @@ public: bool PrepareAfterItemsAdded(); - /** Called after virtual height needs to be recalculated. - */ + // Called after virtual height needs to be recalculated. void VirtualHeightChanged() { m_vhCalcPending = true; } - /** Base append. */ + // Base append. wxPGProperty* DoAppend( wxPGProperty* property ); - /** Returns property by its name. */ + // Returns property by its name. wxPGProperty* BaseGetPropertyByName( const wxString& name ) const; - /** Called in, for example, wxPropertyGrid::Clear. */ + // Called in, for example, wxPropertyGrid::Clear. void DoClear(); bool DoIsPropertySelected( wxPGProperty* prop ) const; @@ -680,120 +594,112 @@ 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. - */ + // Returns column at x coordinate (in GetGrid()->GetPanel()). + // pSplitterHit - Give pointer to int that receives index to splitter that is at x. + // pSplitterHitOffset - Distance from said splitter. int HitTestH( int x, int* pSplitterHit, int* pSplitterHitOffset ) const; bool PrepareToAddItem( wxPGProperty* property, wxPGProperty* scheduledParent ); - /** Returns property by its label. */ + // Returns property by its label. wxPGProperty* BaseGetPropertyByLabel( const wxString& label, wxPGProperty* parent = NULL ) const; - /** Unselect sub-properties */ + // Unselect sub-properties. void DoRemoveChildrenFromSelection(wxPGProperty* p, bool recursive, int selFlags); - /** Mark sub-properties as being deleted */ + // Mark sub-properties as being deleted. void DoMarkChildrenAsDeleted(wxPGProperty* p, bool recursive); - /** Rename the property - so it won't remain in the way of the user code. - */ + // Rename the property + // so it won't remain in the way of the user code. void DoInvalidatePropertyName(wxPGProperty* p); - /** Rename sub-properties - so it won't remain in the way of the user code. - */ + // Rename sub-properties + // so it won't remain in the way of the user code. void DoInvalidateChildrenNames(wxPGProperty* p, bool recursive); - /** Check if property contains given sub-category */ + // Check if property contains given sub-category. bool IsChildCategory(wxPGProperty* p, wxPropertyCategory* cat, bool recursive); - /** If visible, then this is pointer to wxPropertyGrid. - This shall *never* be NULL to indicate that this state is not visible. - */ + // 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. */ + // Pointer to currently used array. wxPGProperty* m_properties; - /** Array for categoric mode. */ + // Array for categoric mode. wxPGRootProperty m_regularArray; - /** Array for root of non-categoric mode. */ + // Array for root of non-categoric mode. wxPGRootProperty* m_abcArray; - /** Dictionary for name-based access. */ + // Dictionary for name-based access. wxPGHashMapS2P m_dictName; - /** List of column widths (first column does not include margin). */ + // List of column widths (first column does not include margin). wxArrayInt m_colWidths; - /** List of indices of columns the user can edit by clicking it. */ + // List of indices of columns the user can edit by clicking it. wxArrayInt m_editableColumns; - /** Column proportions */ + // Column proportions. wxArrayInt m_columnProportions; double m_fSplitterX; - /** Most recently added category. */ + // Most recently added category. wxPropertyCategory* m_currentCategory; - /** Array of selected property. */ + // Array of selected property. wxArrayPGProperty m_selection; - /** Virtual width. */ + // Virtual width. int m_width; - /** Indicates total virtual height of visible properties. */ + // Indicates total virtual height of visible properties. unsigned int m_virtualHeight; #if WXWIN_COMPATIBILITY_3_0 - /** 1 if m_lastCaption is also the bottommost caption. */ + // 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. - */ + // 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. */ + // 1 if any value is modified. unsigned char m_anyModified; unsigned char m_vhCalcPending; #else - /** True if m_lastCaption is also the bottommost caption. */ + // True if m_lastCaption is also the bottommost caption. bool m_lastCaptionBottomnest; - /** True: items appended/inserted, so stuff needs to be done before drawing; - If m_virtualHeight == 0, then calcylatey's must be done. - Otherwise just sort. - */ + // True: items appended/inserted, so stuff needs to be done before drawing; + // If m_virtualHeight == 0, then calcylatey's must be done. + // Otherwise just sort. bool m_itemsAdded; - /** True if any value is modified. */ + // True if any value is modified. bool m_anyModified; bool m_vhCalcPending; #endif // WXWIN_COMPATIBILITY_3_0 - /** True if splitter has been pre-set by the application. */ + // True if splitter has been pre-set by the application. bool m_isSplitterPreSet; - /** Used to (temporarily) disable splitter centering. */ + // Used to (temporarily) disable splitter centering. bool m_dontCenterSplitter; private: - /** Only inits arrays, doesn't migrate things or such. */ + // Only inits arrays, doesn't migrate things or such. void InitNonCatMode(); }; @@ -802,4 +708,3 @@ private: #endif // wxUSE_PROPGRID #endif // _WX_PROPGRID_PROPGRIDPAGESTATE_H_ - diff --git a/interface/wx/propgrid/propgridpagestate.h b/interface/wx/propgrid/propgridpagestate.h index cdc1eaa403..3f16b4faae 100644 --- a/interface/wx/propgrid/propgridpagestate.h +++ b/interface/wx/propgrid/propgridpagestate.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: property.h +// Name: propgridpagestate.h // Purpose: interface of wxPGProperty // Author: wxWidgets team // Licence: wxWindows licence @@ -12,29 +12,40 @@ A return value from wxPropertyGrid::HitTest(), contains all you need to know about an arbitrary location on the grid. */ -struct wxPropertyGridHitTestResult +class wxPropertyGridHitTestResult { + friend class wxPropertyGridPageState; public: + wxPropertyGridHitTestResult(); - wxPGProperty* GetProperty() const { return property; } + ~wxPropertyGridHitTestResult(); - /** Column. -1 for margin. */ - int column; + /** + Returns column hit. -1 for margin. + */ + int GetColumn() const; - /** Index of splitter hit, -1 for none. */ - int splitter; + /** + Returns property hit. NULL if empty space below + properties was hit instead. + */ + wxPGProperty* GetProperty() const; - /** If splitter hit, offset to that */ - int splitterHitOffset; + /** + Returns index of splitter hit, -1 for none. + */ + int GetSplitter() const; -private: - /** Property. NULL if empty space below properties was hit */ - wxPGProperty* property; + /** + If splitter hit, then this member function + returns offset to the exact splitter position. + */ + int GetSplitterHitOffset() const; }; // ----------------------------------------------------------------------- -#define wxPG_IT_CHILDREN(A) (A<<16) +#define wxPG_IT_CHILDREN(A) ((A)<<16) /** @section propgrid_iterator_flags wxPropertyGridIterator Flags @{ @@ -45,53 +56,106 @@ private: enum wxPG_ITERATOR_FLAGS { - -/** Iterate through 'normal' property items (does not include children of aggregate or hidden items by default). +/** + Iterate through 'normal' property items (does not include children of + aggregate or hidden items by default). + @hideinitializer */ -wxPG_ITERATE_PROPERTIES = (wxPG_PROP_PROPERTY|wxPG_PROP_MISC_PARENT|wxPG_PROP_AGGREGATE| \ - wxPG_PROP_COLLAPSED|((wxPG_PROP_MISC_PARENT|wxPG_PROP_CATEGORY)<<16)), +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. +/** + Iterate children of collapsed parents, and individual items that are hidden. + @hideinitializer */ -wxPG_ITERATE_HIDDEN = (wxPG_PROP_HIDDEN|wxPG_IT_CHILDREN(wxPG_PROP_COLLAPSED)), +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). +/** + Iterate children of parent that is an aggregate property (ie has fixed + children). + @hideinitializer */ -wxPG_ITERATE_FIXED_CHILDREN = (wxPG_IT_CHILDREN(wxPG_PROP_AGGREGATE)|wxPG_ITERATE_PROPERTIES), +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. +/** Iterate categories. + Note that even without this flag, children of categories are still iterated + through. + @hideinitializer */ -wxPG_ITERATE_CATEGORIES = (wxPG_PROP_CATEGORY|wxPG_IT_CHILDREN(wxPG_PROP_CATEGORY)|wxPG_PROP_COLLAPSED), +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), +/** + @hideinitializer +*/ +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)), +/** + @hideinitializer +*/ +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), +/** + @hideinitializer +*/ +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, +/** + @hideinitializer +*/ +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) +// (wxPG_PROP_MISC_PARENT|wxPG_PROP_AGGREGATE|wxPG_PROP_CATEGORY) +/** + @hideinitializer +*/ +wxPG_ITERATOR_MASK_OP_PARENT = wxPG_ITERATOR_FLAGS_ALL, -/** Combines all flags needed to iterate through visible properties +/** + Combines all flags needed to iterate through visible properties (ie. hidden properties and children of collapsed parents are skipped). + @hideinitializer */ -wxPG_ITERATE_VISIBLE = (wxPG_ITERATE_PROPERTIES|wxPG_PROP_CATEGORY|wxPG_IT_CHILDREN(wxPG_PROP_AGGREGATE)), +wxPG_ITERATE_VISIBLE = wxPG_ITERATE_PROPERTIES | + wxPG_PROP_CATEGORY | + wxPG_IT_CHILDREN(wxPG_PROP_AGGREGATE), -/** Iterate all items. +/** + Iterate all items. + @hideinitializer */ -wxPG_ITERATE_ALL = (wxPG_ITERATE_VISIBLE|wxPG_ITERATE_HIDDEN), +wxPG_ITERATE_ALL = wxPG_ITERATE_VISIBLE | + wxPG_ITERATE_HIDDEN, -/** Iterate through individual properties (ie. categories and children of +/** + Iterate through individual properties (ie categories and children of aggregate properties are skipped). + @hideinitializer */ -wxPG_ITERATE_NORMAL = (wxPG_ITERATE_PROPERTIES|wxPG_ITERATE_HIDDEN), +wxPG_ITERATE_NORMAL = wxPG_ITERATE_PROPERTIES | + wxPG_ITERATE_HIDDEN, -/** Default iterator flags. +/** + Default iterator flags. + @hideinitializer */ -wxPG_ITERATE_DEFAULT = wxPG_ITERATE_NORMAL +wxPG_ITERATE_DEFAULT = wxPG_ITERATE_NORMAL }; @@ -109,19 +173,35 @@ wxPG_ITERATE_DEFAULT = wxPG_ITERATE_NORMAL @library{wxpropgrid} @category{propgrid} + + @{ */ -class wxPropertyGridIterator : public wxPropertyGridIteratorBase +/** + Base for wxPropertyGridIterator classes. +*/ +class wxPropertyGridIteratorBase { public: + wxPropertyGridIteratorBase(); void Assign( const wxPropertyGridIteratorBase& it ); - bool AtEnd() const { return m_property == NULL; } + bool AtEnd() const; /** Get current property. */ - wxPGProperty* GetProperty() const { return m_property; } + wxPGProperty* GetProperty() const; + + 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. @@ -133,9 +213,40 @@ public: */ void Prev(); -protected: + /** + Set base parent, i.e. a property when, in which iteration returns, + it ends. + + Default base parent is the root of the used wxPropertyGridPageState. + */ + void SetBaseParent( wxPGProperty* baseParent ); }; +class wxPropertyGridIterator : public wxPropertyGridIteratorBase +{ +public: +}; + +/** + Const version of wxPropertyGridIterator. +*/ +class wxPropertyGridConstIterator : public wxPropertyGridIteratorBase +{ +public: + /** + Additional copy constructor. + */ + wxPropertyGridConstIterator( const wxPropertyGridIterator& other ); + + /** + Additional assignment operator. + */ + const wxPropertyGridConstIterator& operator=( const wxPropertyGridIterator& it ); +}; + +/** @} +*/ + // ----------------------------------------------------------------------- /** @@ -149,27 +260,256 @@ protected: 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; + wxPGVIterator(); + wxPGVIterator( wxPGVIteratorBase* obj ); + ~wxPGVIterator(); + void UnRef(); + wxPGVIterator( const wxPGVIterator& it ); + const wxPGVIterator& operator=( const wxPGVIterator& it ); + void Next(); + bool AtEnd() const; + wxPGProperty* GetProperty() const; }; +// ----------------------------------------------------------------------- +/** @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 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 behaviour on property + deletion. + */ + virtual void DoDelete( wxPGProperty* item, bool doDelete = true ); + + wxSize DoFitColumns( bool allowGridResize = false ); + + wxPGProperty* DoGetItemAtY( int y ) const; + + /** + Override this member function to add custom behaviour 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, + int flags = 0 ); + + bool EnableCategories( bool enable ); + + /** + Make sure virtual height is up-to-date. + */ + void EnsureVirtualHeight(); + + /** + Returns (precalculated) height of contained visible properties. + */ + unsigned int GetVirtualHeight() const; + + /** + Returns (precalculated) height of contained visible properties. + */ + unsigned int GetVirtualHeight(); + + /** + Returns actual height of contained visible properties. + @remarks + Mostly used for internal diagnostic purposes. + */ + inline unsigned int GetActualVirtualHeight() const; + + unsigned int GetColumnCount() const' + + int GetColumnMinWidth( int column ) const; + + int GetColumnWidth( unsigned int column ) const; + + wxPropertyGrid* GetGrid() const; + + /** + Returns last item which could be iterated using given flags. + @param flags + @ref propgrid_iterator_flags + */ + wxPGProperty* GetLastItem( int flags = wxPG_ITERATE_DEFAULT ); + + const wxPGProperty* GetLastItem( int flags = wxPG_ITERATE_DEFAULT ) const; + + /** + Returns currently selected property. + */ + wxPGProperty* GetSelection() const; + + void DoSetSelection( wxPGProperty* prop ); + + bool DoClearSelection(); + + void DoRemoveFromSelection( wxPGProperty* prop ); + + void DoSetColumnProportion( unsigned int column, int proportion ); + + int DoGetColumnProportion( unsigned int column ) const; + + void ResetColumnSizes( int setSplitterFlags ); + + wxPropertyCategory* GetPropertyCategory( const wxPGProperty* p ) const; + + wxVariant DoGetPropertyValues( const wxString& listname, + wxPGProperty* baseparent, + long flags ) const; + + wxPGProperty* DoGetRoot() const; + + void DoSetPropertyName( wxPGProperty* p, const wxString& newName ); + + /** + Returns combined width of margin and all the columns. + */ + int GetVirtualWidth() const; + + /** + 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; + + int GetColumnFullWidth(wxClientDC &dc, wxPGProperty *p, unsigned int col); + + /** + Returns information about arbitrary position in the grid. + + @param pt + Logical coordinates in the virtual grid space. Use + wxScrolled::CalcUnscrolledPosition() if you need to + translate a scrolled position into a logical one. + */ + wxPropertyGridHitTestResult HitTest( const wxPoint& pt ) const; + + /** + Returns true if page is visibly displayed. + */ + inline bool IsDisplayed() const; + + bool IsInNonCatMode() const; + + void DoLimitPropertyEditing( wxPGProperty* p, bool limit = true ); + + 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(); + + 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 SetSplitterLeft( bool subProps = false ); + + /** + Set virtual width for this particular page. + */ + void SetVirtualWidth( int width ); + + void DoSortChildren( wxPGProperty* p, int flags = 0 ); + void DoSort( int flags = 0 ); + + bool PrepareAfterItemsAdded(); + + /** + Called after virtual height needs to be recalculated. + */ + void VirtualHeightChanged(); + + /** + Base append. + */ + wxPGProperty* DoAppend( wxPGProperty* property ); + + /** + Returns property by its name. + */ + wxPGProperty* BaseGetPropertyByName( const wxString& name ) const; + + /** + Called in, for example, wxPropertyGrid::Clear. + */ + void DoClear(); + + bool DoIsPropertySelected( wxPGProperty* prop ) const; + + bool DoCollapse( wxPGProperty* p ); + + bool DoExpand( wxPGProperty* p ); + + void CalculateFontAndBitmapStuff( int vspacing ); +}: