Recursive wxSizer::Show for subsizer and return value if element was found.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29120 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Włodzimierz Skiba
2004-09-13 13:46:45 +00:00
parent 3778513ac1
commit 8b2bac626c
4 changed files with 88 additions and 63 deletions

View File

@@ -207,7 +207,6 @@ All:
- added wxMicroSleep() and wxMilliSleep() replacing deprecated wxUsleep() - added wxMicroSleep() and wxMilliSleep() replacing deprecated wxUsleep()
- basic UDP sockets support (Lenny Maiorani) - basic UDP sockets support (Lenny Maiorani)
- fixed wxDateTime::GetWeekDayName() for some dates (Daniel Kaps) - fixed wxDateTime::GetWeekDayName() for some dates (Daniel Kaps)
- support for comma in contrib gizmo wxLEDNumberCtrl (Grant Likely)
- deprecated wxDateTime::SetToTheWeek() in favour of SetToWeekOfYear() - deprecated wxDateTime::SetToTheWeek() in favour of SetToWeekOfYear()
All (GUI): All (GUI):
@@ -226,6 +225,8 @@ All (GUI):
- added samples/splash - added samples/splash
- added support for stock buttons - added support for stock buttons
- added wxTopLevelWindow::RequestUserAttention() - added wxTopLevelWindow::RequestUserAttention()
- support for comma in contrib gizmo wxLEDNumberCtrl (Grant Likely)
- recursive wxSizer::Show for subsizer and return value if element was found
Unix: Unix:

View File

@@ -391,14 +391,17 @@ minimal size. For windows with managed scrollbars this will set them appropriate
\membersection{wxSizer::Show}\label{wxsizershow} \membersection{wxSizer::Show}\label{wxsizershow}
\func{void}{Show}{\param{wxWindow* }{window}, \param{bool }{show = true}} \func{bool}{Show}{\param{wxWindow* }{window}, \param{bool }{show = true}, \param{bool }{recursive = false}}
\func{void}{Show}{\param{wxSizer* }{sizer}, \param{bool }{show = true}} \func{bool}{Show}{\param{wxSizer* }{sizer}, \param{bool }{show = true}, \param{bool }{recursive = false}}
\func{void}{Show}{\param{size\_t }{index}, \param{bool }{show = true}} \func{bool}{Show}{\param{size\_t }{index}, \param{bool }{show = true}}
Shows or hides the {\it window}, {\it sizer}, or item at {\it index}. Shows or hides the {\it window}, {\it sizer}, or item at {\it index}.
To make a sizer item disappear or reappear, use Show() followed by Layout(). To make a sizer item disappear or reappear, use Show() followed by Layout().
Use parameter {\it recursive} to show or hide elements found in subsizers.
Returns true if the child item was found, false otherwise.
Note that this only works with wxBoxSizer and wxFlexGridSizer, since they Note that this only works with wxBoxSizer and wxFlexGridSizer, since they
are the only two sizer classes that can size rows/columns independently. are the only two sizer classes that can size rows/columns independently.

View File

@@ -308,16 +308,16 @@ public:
// Manage whether individual scene items are considered // Manage whether individual scene items are considered
// in the layout calculations or not. // in the layout calculations or not.
void Show( wxWindow *window, bool show = true ); bool Show( wxWindow *window, bool show = true, bool recursive = false );
void Show( wxSizer *sizer, bool show = true ); bool Show( wxSizer *sizer, bool show = true, bool recursive = false );
void Show( size_t index, bool show = true ); bool Show( size_t index, bool show = true );
void Hide( wxSizer *sizer ) bool Hide( wxSizer *sizer, bool recursive = false )
{ Show( sizer, false ); } { return Show( sizer, false, recursive ); }
void Hide( wxWindow *window ) bool Hide( wxWindow *window, bool recursive = false )
{ Show( window, false ); } { return Show( window, false, recursive ); }
void Hide( size_t index ) bool Hide( size_t index )
{ Show( index, false ); } { return Show( index, false ); }
bool IsShown( wxWindow *window ) const; bool IsShown( wxWindow *window ) const;
bool IsShown( wxSizer *sizer ) const; bool IsShown( wxSizer *sizer ) const;

View File

@@ -858,7 +858,7 @@ bool wxSizer::DoSetItemMinSize( size_t index, int width, int height )
return true; return true;
} }
void wxSizer::Show( wxWindow *window, bool show ) bool wxSizer::Show( wxWindow *window, bool show, bool recursive )
{ {
wxASSERT_MSG( window, _T("Show for NULL window") ); wxASSERT_MSG( window, _T("Show for NULL window") );
@@ -870,13 +870,22 @@ void wxSizer::Show( wxWindow *window, bool show )
if (item->GetWindow() == window) if (item->GetWindow() == window)
{ {
item->Show( show ); item->Show( show );
break;
} return true;
node = node->GetNext();
} }
else if (recursive && item->IsSizer())
{
if (item->GetSizer()->Show(window, show, recursive))
return true;
} }
void wxSizer::Show( wxSizer *sizer, bool show ) node = node->GetNext();
}
return false;
}
bool wxSizer::Show( wxSizer *sizer, bool show, bool recursive )
{ {
wxASSERT_MSG( sizer, _T("Show for NULL sizer") ); wxASSERT_MSG( sizer, _T("Show for NULL sizer") );
@@ -888,18 +897,30 @@ void wxSizer::Show( wxSizer *sizer, bool show )
if (item->GetSizer() == sizer) if (item->GetSizer() == sizer)
{ {
item->Show( show ); item->Show( show );
break;
} return true;
node = node->GetNext();
} }
else if (recursive && item->IsSizer())
{
if (item->GetSizer()->Show(sizer, show, recursive))
return true;
} }
void wxSizer::Show( size_t index, bool show ) node = node->GetNext();
}
return false;
}
bool wxSizer::Show( size_t index, bool show)
{ {
wxCHECK_RET( index < m_children.GetCount(), wxCHECK_MSG( index < m_children.GetCount(),
false,
_T("Show index is out of range") ); _T("Show index is out of range") );
m_children.Item( index )->GetData()->Show( show ); m_children.Item( index )->GetData()->Show( show );
return true;
} }
void wxSizer::ShowItems( bool show ) void wxSizer::ShowItems( bool show )