wxAuiTabArt* wxAuiDefaultTabArt::Clone()
{
- return static_cast<wxAuiTabArt*>(new wxAuiDefaultTabArt);
+ wxAuiDefaultTabArt* art = new wxAuiDefaultTabArt;
+ art->SetNormalFont(m_normal_font);
+ art->SetSelectedFont(m_selected_font);
+ art->SetMeasuringFont(m_measuring_font);
+
+ return art;
}
void wxAuiDefaultTabArt::SetFlags(unsigned int flags)
for (i = 0; i < count; ++i)
{
const wxAuiNotebookPage& page = pages.Item(i);
- menuPopup.AppendCheckItem(1000+i, page.caption);
+ wxString caption = page.caption;
+
+ // if there is no caption, make it a space. This will prevent
+ // an assert in the menu code.
+ if (caption.IsEmpty())
+ caption = wxT(" ");
+
+ menuPopup.AppendCheckItem(1000+i, caption);
}
if (active_idx != -1)
int wxAuiTabContainer::GetIdxFromWindow(wxWindow* wnd) const
{
- size_t i, page_count = m_pages.GetCount();
- for (i = 0; i < page_count; ++i)
+ const size_t page_count = m_pages.GetCount();
+ for ( size_t i = 0; i < page_count; ++i )
{
wxAuiNotebookPage& page = m_pages.Item(i);
if (page.window == wnd)
return i;
}
- return -1;
+ return wxNOT_FOUND;
}
wxAuiNotebookPage& wxAuiTabContainer::GetPage(size_t idx)
m_tab_ctrl_height = 20;
}
+ ~wxTabFrame()
+ {
+ wxDELETE(m_tabs);
+ }
+
void SetTabCtrlHeight(int h)
{
m_tab_ctrl_height = h;
if (select)
{
- int idx = m_tabs.GetIdxFromWindow(page);
- wxASSERT_MSG(idx != -1, wxT("Invalid Page index returned on wxAuiNotebook::InsertPage()"));
-
- SetSelection(idx);
+ SetSelectionToWindow(page);
}
return true;
if (new_active)
{
m_curpage = -1;
- SetSelection(m_tabs.GetIdxFromWindow(new_active));
+ SetSelectionToWindow(new_active);
}
return true;
return m_curpage;
}
+void wxAuiNotebook::SetSelectionToWindow(wxWindow *win)
+{
+ const int idx = m_tabs.GetIdxFromWindow(win);
+ wxCHECK_RET( idx != wxNOT_FOUND, _T("invalid notebook page") );
+
+ SetSelection(idx);
+}
+
// GetPageCount() returns the total number of
// pages managed by the multi-notebook
size_t wxAuiNotebook::GetPageCount() const
m_curpage = -1;
// set the active page to the one we just split off
- int idx = m_tabs.GetIdxFromWindow(page_info.window);
- if ( idx != wxNOT_FOUND )
- {
- SetSelection(idx);
- }
- else
- {
- wxFAIL_MSG( _T("just inserted window not found") );
- }
+ SetSelectionToPage(page_info);
UpdateHintWindowSize();
}
wxWindow* wnd = ctrl->GetWindowFromIdx(evt.GetSelection());
wxASSERT(wnd != NULL);
- int idx = m_tabs.GetIdxFromWindow(wnd);
- wxASSERT(idx != -1);
-
- SetSelection(idx);
+ SetSelectionToWindow(wnd);
}
void wxAuiNotebook::OnTabBeginDrag(wxCommandEvent&)
// get main index of the page
int main_idx = m_tabs.GetIdxFromWindow(src_page);
+ wxCHECK_RET( main_idx != wxNOT_FOUND, _T("no source page?") );
+
// make a copy of the page info
- wxAuiNotebookPage page_info = m_tabs.GetPage((size_t)main_idx);
+ wxAuiNotebookPage page_info = m_tabs.GetPage(main_idx);
// remove the page from the source notebook
RemovePage(main_idx);
dest_tabs->Refresh();
// set the selection in the destination tab control
- nb->SetSelection(nb->m_tabs.GetIdxFromWindow(page_info.window));
+ nb->SetSelectionToPage(page_info);
return;
}
m_curpage = -1;
// set the active page to the one we just split off
- SetSelection(m_tabs.GetIdxFromWindow(page_info.window));
+ SetSelectionToPage(page_info);
UpdateHintWindowSize();
}
{
close_wnd->Close();
}
- else
+ else
{
int main_idx = m_tabs.GetIdxFromWindow(close_wnd);
+ wxCHECK_RET( main_idx != wxNOT_FOUND, _T("no page to delete?") );
+
DeletePage(main_idx);
}
}
}
}
+// Sets the normal font
+void wxAuiNotebook::SetNormalFont(const wxFont& font)
+{
+ m_normal_font = font;
+ GetArtProvider()->SetNormalFont(font);
+}
+
+// Sets the selected tab font
+void wxAuiNotebook::SetSelectedFont(const wxFont& font)
+{
+ m_selected_font = font;
+ GetArtProvider()->SetSelectedFont(font);
+}
+
+// Sets the measuring font
+void wxAuiNotebook::SetMeasuringFont(const wxFont& font)
+{
+ GetArtProvider()->SetMeasuringFont(font);
+}
+
+// Sets the tab font
+bool wxAuiNotebook::SetFont(const wxFont& font)
+{
+ wxControl::SetFont(font);
+ wxFont normalFont(font);
+ wxFont selectedFont(normalFont);
+ selectedFont.SetWeight(wxBOLD);
+
+ SetNormalFont(normalFont);
+ SetSelectedFont(selectedFont);
+ SetMeasuringFont(selectedFont);
+
+ return true;
+}
+
+// Gets the tab control height
+int wxAuiNotebook::GetTabCtrlHeight() const
+{
+ return m_tab_ctrl_height;
+}
+
+// Gets the height of the notebook for a given page height
+int wxAuiNotebook::GetHeightForPageHeight(int pageHeight)
+{
+ UpdateTabCtrlHeight();
+
+ int tabCtrlHeight = GetTabCtrlHeight();
+ int decorHeight = 2;
+ return tabCtrlHeight + pageHeight + decorHeight;
+}
#endif // wxUSE_AUI