- #endif
-
- // do we have _exactly_ one child?
- wxWindow *child = NULL;
- for ( wxNode *node = GetChildren().First(); node; node = node->Next() )
- {
- wxWindow *win = (wxWindow *)node->Data();
- if ( !win->IsKindOf(CLASSINFO(wxFrame)) &&
- !win->IsKindOf(CLASSINFO(wxDialog)) &&
- (win != GetStatusBar())
-#if wxUSE_TOOLBAR
- &&
- (win != GetToolBar())
-#endif
- )
- {
- if ( child )
- return; // it's our second subwindow - nothing to do
- child = win;
- }
- }
-
- if ( child ) {
- // we have exactly one child - set it's size to fill the whole frame
- int clientW, clientH;
- GetClientSize(&clientW, &clientH);
-
- int x = 0;
- int y = 0;
-
- child->SetSize(x, y, clientW, clientH);
- }
-}
-
-// Default activation behaviour - set the focus for the first child
-// subwindow found.
-void wxFrame::OnActivate(wxActivateEvent& event)
-{
- for(wxNode *node = GetChildren().First(); node; node = node->Next())
- {
- // Find a child that's a subwindow, but not a dialog box.
- wxWindow *child = (wxWindow *)node->Data();
- if (!child->IsKindOf(CLASSINFO(wxFrame)) &&
- !child->IsKindOf(CLASSINFO(wxDialog)))
- {
- child->SetFocus();
- return;
- }
- }
-}
-
-// The default implementation for the close window event.
-void wxFrame::OnCloseWindow(wxCloseEvent& event)
-{
- this->Destroy();
-}
-
-// Destroy the window (delayed, if a managed window)
-bool wxFrame::Destroy()
-{
- if (!wxPendingDelete.Member(this))
- wxPendingDelete.Append(this);
- return TRUE;
-}
-
-// Default menu selection behaviour - display a help string
-void wxFrame::OnMenuHighlight(wxMenuEvent& event)
-{
- if (GetStatusBar())
- {
- if (event.GetMenuId() == -1)
- SetStatusText("");
- else
- {
- wxMenuBar *menuBar = GetMenuBar();
- if (menuBar)
- {
- wxString helpString(menuBar->GetHelpString(event.GetMenuId()));
- if (helpString != "")
- SetStatusText(helpString);
- }
- }
- }
-}
-
-wxMenuBar *wxFrame::GetMenuBar() const
-{
- return m_frameMenuBar;
-}
-
-
-// Call this to simulate a menu command
-void wxFrame::Command(int id)
-{
- ProcessCommand(id);
-}
-
-void wxFrame::ProcessCommand(int id)
-{
- wxCommandEvent commandEvent(wxEVT_COMMAND_MENU_SELECTED, id);
- commandEvent.SetInt( id );
- commandEvent.SetEventObject( this );
-
- wxMenuBar *bar = GetMenuBar() ;
- if (!bar)
- return;
-
-/* TODO: check the menu item if required
- wxMenuItem *item = bar->FindItemForId(id) ;
- if (item && item->IsCheckable())
- {
- bar->Check(id,!bar->Checked(id)) ;
- }
-*/
-
- GetEventHandler()->ProcessEvent(commandEvent);
-}
-
-// Checks if there is a toolbar, and returns the first free client position
-wxPoint wxFrame::GetClientAreaOrigin() const
-{
- wxPoint pt(0, 0);
-#if wxUSE_TOOLBAR
- if (GetToolBar())
- {
- int w, h;
- GetToolBar()->GetSize(& w, & h);
-
- if (GetToolBar()->GetWindowStyleFlag() & wxTB_VERTICAL)
- {
- pt.x += w;
- }
- else