X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1e6d94998fcbdb3ce60774e38c0d4b6ee20c6798..c3952f6524b5827420836f856ef2074f20e72849:/src/generic/notebook.cpp diff --git a/src/generic/notebook.cpp b/src/generic/notebook.cpp index cced371845..4396754399 100644 --- a/src/generic/notebook.cpp +++ b/src/generic/notebook.cpp @@ -27,11 +27,12 @@ #pragma hdrstop #endif -#include -#include -#include -#include -#include +#include "wx/string.h" +#include "wx/log.h" +#include "wx/settings.h" +#include "wx/generic/imaglist.h" +#include "wx/notebook.h" +#include "wx/dcclient.h" // ---------------------------------------------------------------------------- // macros @@ -44,7 +45,9 @@ // event table // ---------------------------------------------------------------------------- -#if !USE_SHARED_LIBRARIES +DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED) +DEFINE_EVENT_TYPE(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGING) + BEGIN_EVENT_TABLE(wxNotebook, wxControl) EVT_NOTEBOOK_PAGE_CHANGED(-1, wxNotebook::OnSelChange) EVT_SIZE(wxNotebook::OnSize) @@ -52,12 +55,11 @@ BEGIN_EVENT_TABLE(wxNotebook, wxControl) EVT_MOUSE_EVENTS(wxNotebook::OnMouseEvent) EVT_SET_FOCUS(wxNotebook::OnSetFocus) EVT_NAVIGATION_KEY(wxNotebook::OnNavigationKey) - EVT_IDLE(wxNotebook::OnIdle) +// EVT_IDLE(wxNotebook::OnIdle) END_EVENT_TABLE() IMPLEMENT_DYNAMIC_CLASS(wxNotebook, wxControl) IMPLEMENT_DYNAMIC_CLASS(wxNotebookEvent, wxCommandEvent) -#endif // ============================================================================ // implementation @@ -108,9 +110,11 @@ bool wxNotebook::Create(wxWindow *parent, m_windowId = id == -1 ? NewControlId() : id; // It's like a normal window... - if (!wxWindow::Create(parent, id, pos, size, style, name)) + if (!wxWindow::Create(parent, id, pos, size, style|wxNO_BORDER, name)) return FALSE; + SetBackgroundColour(wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE)); + SetTabView(new wxNotebookTabView(this)); return TRUE; @@ -143,10 +147,13 @@ int wxNotebook::SetSelection(int nPage) wxASSERT( IS_VALID_PAGE(nPage) ); +#if defined (__WIN16__) + m_tabView->SetTabSelection(nPage); +#else wxNotebookPage* pPage = GetPage(nPage); m_tabView->SetTabSelection((int) (long) pPage); - +#endif // TODO return 0; } @@ -164,7 +171,11 @@ void wxNotebook::AdvanceSelection(bool bForward) bool wxNotebook::SetPageText(int nPage, const wxString& strText) { wxASSERT( IS_VALID_PAGE(nPage) ); - +#if defined (__WIN16__) + m_tabView->SetTabText(nPage, strText); + Refresh(); + return TRUE; +#else wxNotebookPage* page = GetPage(nPage); if (page) { @@ -172,7 +183,7 @@ bool wxNotebook::SetPageText(int nPage, const wxString& strText) Refresh(); return TRUE; } - +#endif return FALSE; } @@ -180,11 +191,15 @@ wxString wxNotebook::GetPageText(int nPage) const { wxASSERT( IS_VALID_PAGE(nPage) ); +#if defined (__WIN16__) + return m_tabView->GetTabText(nPage); +#else wxNotebookPage* page = ((wxNotebook*)this)->GetPage(nPage); if (page) return m_tabView->GetTabText((int) (long) page); else return wxEmptyString; +#endif } int wxNotebook::GetPageImage(int nPage) const @@ -204,7 +219,7 @@ bool wxNotebook::SetPageImage(int nPage, int nImage) } void wxNotebook::SetImageList(wxImageList* imageList) -{ +{ m_pImageList = imageList; // TODO } @@ -225,7 +240,11 @@ bool wxNotebook::DeletePage(int nPage) } wxNotebookPage* pPage = GetPage(nPage); +#if defined (__WIN16__) + m_tabView->RemoveTab(nPage); +#else m_tabView->RemoveTab((int) (long) pPage); +#endif delete m_aPages[nPage]; m_aPages.Remove(nPage); @@ -238,7 +257,11 @@ bool wxNotebook::DeletePage(int nPage) else if (m_nSelection > -1) { m_nSelection = -1; +#if defined (__WIN16__) + m_tabView->SetTabSelection(0, FALSE); +#else m_tabView->SetTabSelection((int) (long) GetPage(0), FALSE); +#endif if (m_nSelection != 0) ChangePage(-1, 0); } @@ -266,7 +289,11 @@ bool wxNotebook::RemovePage(int nPage) // m_aPages[nPage]->Lower(); wxNotebookPage* pPage = GetPage(nPage); +#if defined (__WIN16__) + m_tabView->RemoveTab(nPage); +#else m_tabView->RemoveTab((int) (long) pPage); +#endif m_aPages.Remove(nPage); @@ -354,7 +381,12 @@ bool wxNotebook::InsertPage(int nPage, wxASSERT( pPage != NULL ); wxCHECK( IS_VALID_PAGE(nPage) || nPage == GetPageCount(), FALSE ); +// For 16 bit integers (tabs limited to 32768) +#if defined (__WIN16__) + m_tabView->AddTab(nPage, strText); +#else m_tabView->AddTab((int) (long) pPage, strText); +#endif if (!bSelect) pPage->Show(FALSE); @@ -364,7 +396,11 @@ bool wxNotebook::InsertPage(int nPage, if (bSelect) { // This will cause ChangePage to be called, via OnSelPage +#if defined (__WIN16__) + m_tabView->SetTabSelection(nPage, TRUE); +#else m_tabView->SetTabSelection((int) (long) pPage, TRUE); +#endif } // some page must be selected: either this one or the first one if there is @@ -441,10 +477,10 @@ bool wxNotebook::RefreshLayout(bool force) rect.y = tabHeight + 4; rect.width = cw - 8; rect.height = ch - 4 - rect.y ; - + m_tabView->SetViewRect(rect); - m_tabView->Layout(); + m_tabView->LayoutTabs(); // Need to do it a 2nd time to get the tab height with // the new view width, since changing the view width changes the @@ -454,10 +490,10 @@ bool wxNotebook::RefreshLayout(bool force) rect.y = tabHeight + 4; rect.width = cw - 8; rect.height = ch - 4 - rect.y ; - + m_tabView->SetViewRect(rect); - m_tabView->Layout(); + m_tabView->LayoutTabs(); if (!force && (rect == oldRect)) return FALSE; @@ -534,7 +570,7 @@ bool wxNotebook::DoPhase(int /* nPhase */) return TRUE; } -void wxNotebook::Command(wxCommandEvent& event) +void wxNotebook::Command(wxCommandEvent& WXUNUSED(event)) { wxFAIL_MSG("wxNotebook::Command not implemented"); } @@ -559,12 +595,12 @@ void wxNotebook::ChangePage(int nOldSel, int nSel) wxRect clientRect = GetAvailableClientSize(); pPage->SetSize(clientRect.x, clientRect.y, clientRect.width, clientRect.height); + Refresh(); + pPage->Show(TRUE); pPage->Raise(); pPage->SetFocus(); - Refresh(); - m_nSelection = nSel; } @@ -601,7 +637,7 @@ wxRect wxNotebook::GetAvailableClientSize() /* * wxNotebookTabView */ - + IMPLEMENT_CLASS(wxNotebookTabView, wxTabView) wxNotebookTabView::wxNotebookTabView(wxNotebook *notebook, long style): wxTabView(style) @@ -625,6 +661,10 @@ void wxNotebookTabView::OnTabActivate(int activateId, int deactivateId) wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, m_notebook->GetId()); +#if defined (__WIN16__) + int activatePos = activateId; + int deactivatePos = deactivateId; +#else // Translate from wxTabView's ids (which aren't position-dependent) // to wxNotebook's (which are). wxNotebookPage* pActive = (wxNotebookPage*) activateId; @@ -633,6 +673,7 @@ void wxNotebookTabView::OnTabActivate(int activateId, int deactivateId) int activatePos = m_notebook->FindPagePosition(pActive); int deactivatePos = m_notebook->FindPagePosition(pDeactive); +#endif event.SetEventObject(m_notebook); event.SetSelection(activatePos); event.SetOldSelection(deactivatePos);