+
+ Connect( wxID_ANY,
+ wxEVT_COMMAND_WIDGETS_PAGE_CHANGED,
+ wxWidgetsbookEventHandler(WidgetsFrame::OnPageChanged) );
+
+#if USE_TREEBOOK
+ // for treebook page #0 is empty parent page only so select the first page
+ // with some contents
+ m_book->SetSelection(1);
+
+ // but ensure that the top of the tree is shown nevertheless
+ wxTreeCtrl * const tree = m_book->GetTreeCtrl();
+
+ wxTreeItemIdValue cookie;
+ tree->EnsureVisible(tree->GetFirstChild(tree->GetRootItem(), cookie));
+#else
+ // for other books set selection twice to force connected event handler
+ // to force lazy creation of initial visible content
+ m_book->SetSelection(1);
+ m_book->SetSelection(0);
+#endif // USE_TREEBOOK
+}
+
+WidgetsPage *WidgetsFrame::CurrentPage()
+{
+ wxWindow *page = m_book->GetCurrentPage();
+
+#if !USE_TREEBOOK
+ WidgetsBookCtrl *subBook = wxStaticCast(page, WidgetsBookCtrl);
+ wxCHECK_MSG( subBook, NULL, _T("no WidgetsBookCtrl?") );
+
+ page = subBook->GetCurrentPage();
+#endif // !USE_TREEBOOK
+
+ return wxStaticCast(page, WidgetsPage);