added wxTreeCtrl::CollapseAll[Children]() and IsEmpty() methods; documented wxTreeItemId (patch 1622125)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44116 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2007-01-07 15:02:57 +00:00
parent 633f0196de
commit 9248adc8da
4 changed files with 126 additions and 2 deletions

View File

@@ -95,6 +95,7 @@ All:
- Fix compilation with wxUSE_STL=1
- wxGrid::GetBestSize() returns same size the grid would have after AutoSize()
- Added wxTreeCtrl::CollapseAll[Children]() and IsEmpty() (Francesco Montorsi)
wxMSW:

View File

@@ -13,7 +13,7 @@
A tree control presents information as a hierarchy, with items that may be expanded
to show further items. Items in a tree control are referenced by wxTreeItemId handles,
which may be tested for validity by calling wxTreeItemId::IsOk.
which may be tested for validity by calling \helpref{wxTreeItemId::IsOk}{wxtreeitemidisok}.
To intercept events from a tree control, use the event table macros described in \helpref{wxTreeEvent}{wxtreeevent}.
@@ -238,6 +238,28 @@ See also \helpref{SetStateImageList}{wxtreectrlsetstateimagelist}.
Collapses the given item.
\membersection{wxTreeCtrl::CollapseAll}\label{wxtreectrlcollapseall}
\func{void}{CollapseAll}{\void}
Collapses the root item.
\wxheading{See also}
\helpref{ExpandAll}{wxtreectrlexpandall}
\membersection{wxTreeCtrl::CollapseAllChildren}\label{wxtreectrlcollapseallchildren}
\func{void}{CollapseAllChildren}{\param{const wxTreeItemId\&}{ item}}
Collapses this item and all of its children, recursively.
\wxheading{See also}
\helpref{ExpandAllChildren}{wxtreectrlexpandallchildren}
\membersection{wxTreeCtrl::CollapseAndReset}\label{wxtreectrlcollapseandreset}
\func{void}{CollapseAndReset}{\param{const wxTreeItemId\&}{ item}}
@@ -333,7 +355,7 @@ Expands the given item.
\membersection{wxTreeCtrl::ExpandAll}\label{wxtreectrlexpandall}
\func{void}{Expand}{\void}
\func{void}{ExpandAll}{\void}
Expands all items in the tree.
@@ -728,6 +750,13 @@ Returns {\tt true} if the given item is in bold state.
See also: \helpref{SetItemBold}{wxtreectrlsetitembold}
\membersection{wxTreeCtrl::IsEmpty}\label{wxtreectrlisempty}
\constfunc{bool}{IsEmpty}{}
Returns \true if the control is empty (i.e. has no items, even no root one).
\membersection{wxTreeCtrl::IsExpanded}\label{wxtreectrlisexpanded}
\constfunc{bool}{IsExpanded}{\param{const wxTreeItemId\&}{ item}}
@@ -1023,3 +1052,59 @@ all items if it does have this style.
Unselects the given item. This works in multiselection controls only.
%% the wxTreeItemId opaque class
\section{\class{wxTreeItemId}}\label{wxtreeitemid}
An opaque reference to a tree item.
\wxheading{Derived from}
None
\wxheading{Include files}
<wx/treebase.h>
\wxheading{See also}
\helpref{wxTreeItemCtrl}{wxtreeitemctrl}, \helpref{wxTreeItemData}{wxtreeitemdata},\\
\helpref{wxTreeCtrl overview}{wxtreectrloverview}
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxTreeItemId::wxTreeItemId}\label{wxtreeitemidconstr}
\func{}{wxTreeItemId}{\void}
Default constructor. wxTreemItemIds are not meant to be constructed explicitly by
the user; they are returned by the \helpref{wxTreeItemCtrl}{wxtreeitemctrl} functions instead.
\membersection{wxTreeItemId::IsOk}\label{wxtreeitemidisok}
\constfunc{bool}{IsOk}{}
Returns \true if this instance is referencing a valid tree item.
\membersection{Operators}\label{wxtreeitemidoperators}
\constfunc{void}{operator $!$}{}
Synonim for \helpref{IsOk}{wxtreeitemidisok}
\constfunc{bool}{operator $==$}{\param{const wxTreeItemId\& }{item}}
\constfunc{bool}{operator $!=$}{\param{const wxTreeItemId\& }{item}}
Operators for comparison between \helpref{wxTreeItemId}{wxtreeitemid} objects.

View File

@@ -172,6 +172,9 @@ public:
virtual bool IsSelected(const wxTreeItemId& item) const = 0;
// is item text in bold font?
virtual bool IsBold(const wxTreeItemId& item) const = 0;
// is the control empty?
bool IsEmpty() const;
// number of children
// ------------------
@@ -293,6 +296,10 @@ public:
void ExpandAll();
// collapse the item without removing its children
virtual void Collapse(const wxTreeItemId& item) = 0;
// collapse the item and all its childs and thats childs
void CollapseAllChildren(const wxTreeItemId& item);
// collapse all items
void CollapseAll();
// collapse the item and remove all children
virtual void CollapseAndReset(const wxTreeItemId& item) = 0;
// toggles the current state

View File

@@ -183,6 +183,9 @@ wxSize wxTreeCtrlBase::DoGetBestSize() const
void wxTreeCtrlBase::ExpandAll()
{
if ( IsEmpty() )
return;
ExpandAllChildren(GetRootItem());
}
@@ -202,5 +205,33 @@ void wxTreeCtrlBase::ExpandAllChildren(const wxTreeItemId& item)
}
}
void wxTreeCtrlBase::CollapseAll()
{
if ( IsEmpty() )
return;
CollapseAllChildren(GetRootItem());
}
void wxTreeCtrlBase::CollapseAllChildren(const wxTreeItemId& item)
{
// first (recursively) collapse all the children
wxTreeItemIdValue cookie;
for ( wxTreeItemId idCurr = GetFirstChild(item, cookie);
idCurr.IsOk();
idCurr = GetNextChild(item, cookie) )
{
CollapseAllChildren(idCurr);
}
// then collapse this element too
Collapse(item);
}
bool wxTreeCtrlBase::IsEmpty() const
{
return !GetRootItem().IsOk();
}
#endif // wxUSE_TREECTRL