// headers
// ----------------------------------------------------------------------------
#ifdef __GNUG__
-#pragma implementation "notebook.h"
+ #pragma implementation "notebook.h"
#endif
-#include <wx/string.h>
-#include <wx/log.h>
-#include <wx/imaglist.h>
-#include <wx/notebook.h>
-#include <wx/mac/uma.h>
+#include "wx/string.h"
+#include "wx/log.h"
+#include "wx/imaglist.h"
+#include "wx/notebook.h"
+#include "wx/mac/uma.h"
// ----------------------------------------------------------------------------
// macros
// ----------------------------------------------------------------------------
// check that the page index is valid
#define IS_VALID_PAGE(nPage) (((nPage) >= 0) && ((nPage) < GetPageCount()))
-#ifdef __WXMAC_X__
- // I got these values for Mac OS X from the Appearance mgr docs. (Mark Newsam)
-const short kwxMacTabLeftMargin = 20 ;
-const short kwxMacTabTopMargin = 38 ;
-const short kwxMacTabRightMargin = 20 ;
-const short kwxMacTabBottomMargin = 12 ;
-#else
-const short kwxMacTabLeftMargin = 16 ;
-const short kwxMacTabTopMargin = 30 ;
-const short kwxMacTabRightMargin = 16 ;
-const short kwxMacTabBottomMargin = 16 ;
-#endif
+static bool constantsSet = false ;
+
+ short kwxMacTabLeftMargin = 0 ;
+ short kwxMacTabTopMargin = 0 ;
+ short kwxMacTabRightMargin = 0 ;
+ short kwxMacTabBottomMargin = 0 ;
// ----------------------------------------------------------------------------
// event table
// common part of all ctors
void wxNotebook::Init()
{
-#ifdef __WXMAC_X__
- m_macHorizontalBorder = 7;
- m_macVerticalBorder = 8;
-#endif
+ if ( !constantsSet )
+ {
+ if ( UMAHasAquaLayout() )
+ {
+ // I got these values for Mac OS X from the Appearance mgr docs. (Mark Newsam)
+ kwxMacTabLeftMargin = 20 ;
+ kwxMacTabTopMargin = 38 ;
+ kwxMacTabRightMargin = 20 ;
+ kwxMacTabBottomMargin = 12 ;
+ }
+ else
+ {
+ kwxMacTabLeftMargin = 16 ;
+ kwxMacTabTopMargin = 30 ;
+ kwxMacTabRightMargin = 16 ;
+ kwxMacTabBottomMargin = 16 ;
+ }
+ constantsSet = true ;
+ }
+ if ( UMAHasAquaLayout() )
+ {
+ m_macHorizontalBorder = 7;
+ m_macVerticalBorder = 8;
+ }
+
m_nSelection = -1;
}
MacPreControlCreate( parent , id , "" , pos , size ,style, wxDefaultValidator , name , &bounds , title ) ;
- m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1,
+ m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
kControlTabSmallProc , (long) this ) ;
MacPostControlCreate() ;
m_macControl = NULL ;
}
+wxSize wxNotebook::CalcSizeFromPage(const wxSize& sizePage)
+{
+ wxSize sizeTotal = sizePage;
+
+ int major,minor;
+ wxGetOsVersion( &major, &minor );
+
+ // Mac has large notebook borders. Aqua even more so.
+
+ if ( HasFlag(wxNB_LEFT) || HasFlag(wxNB_RIGHT) )
+ {
+ sizeTotal.x += 90;
+
+ if (major >= 10)
+ sizeTotal.y += 28;
+ else
+ sizeTotal.y += 20;
+ }
+ else
+ {
+ if (major >= 10)
+ {
+ sizeTotal.x += 34;
+ sizeTotal.y += 46;
+ }
+ else
+ {
+ sizeTotal.x += 22;
+ sizeTotal.y += 44;
+ }
+ }
+
+ return sizeTotal;
+}
+
// ----------------------------------------------------------------------------
// wxNotebook accessors
// ----------------------------------------------------------------------------
void wxNotebook::SetPadding(const wxSize& padding)
{
+ wxFAIL_MSG( wxT("wxNotebook::SetPadding not implemented") );
}
void wxNotebook::SetTabSize(const wxSize& sz)
{
+ wxFAIL_MSG( wxT("wxNotebook::SetTabSize not implemented") );
}
void wxNotebook::SetPageSize(const wxSize& size)
{
+ wxFAIL_MSG( wxT("wxNotebook::SetPageSize not implemented") );
}
int wxNotebook::SetSelection(int nPage)
{
- wxASSERT( IS_VALID_PAGE(nPage) );
+ if( !IS_VALID_PAGE(nPage) )
+ return m_nSelection ;
ChangePage(m_nSelection, nPage);
- SetControlValue( m_macControl , m_nSelection + 1 ) ;
+ SetControlValue( (ControlHandle) m_macControl , m_nSelection + 1 ) ;
return m_nSelection;
}
int wxNotebook::GetPageImage(int nPage) const
{
- wxASSERT( IS_VALID_PAGE(nPage) );
+ wxCHECK_MSG( IS_VALID_PAGE(nPage), -1, _T("invalid notebook page") );
- // TODO
- return 0;
+ return 0 ;
}
bool wxNotebook::SetPageImage(int nPage, int nImage)
{
- wxASSERT( IS_VALID_PAGE(nPage) );
+ wxCHECK_MSG( IS_VALID_PAGE(nPage), FALSE, _T("invalid notebook page") );
+
+ wxCHECK_MSG( m_imageList && nImage < m_imageList->GetImageCount(), FALSE,
+ _T("invalid image index in SetPageImage()") );
- // TODO
return FALSE;
}
{
wxCHECK( IS_VALID_PAGE(nPage), NULL );
wxNotebookPage* page = m_pages[nPage] ;
- m_pages.Remove(nPage);
+ m_pages.RemoveAt(nPage);
MacSetupTabs();
*/
void wxNotebook::MacSetupTabs()
{
- SetControlMaximum( m_macControl , GetPageCount() ) ;
+ SetControlMaximum( (ControlHandle) m_macControl , GetPageCount() ) ;
wxNotebookPage *page;
ControlTabInfoRec info;
strcpy( (char *) info.name , page->GetLabel() ) ;
c2pstr( (char *) info.name ) ;
#endif
- SetControlData( m_macControl, ii+1, kControlTabInfoTag,
+ SetControlData( (ControlHandle) m_macControl, ii+1, kControlTabInfoTag,
sizeof( ControlTabInfoRec) , (char*) &info ) ;
- SetControlData( m_macControl, ii+1, kControlTabEnabledFlagTag,
+ SetControlData( (ControlHandle) m_macControl, ii+1, kControlTabEnabledFlagTag,
sizeof( Boolean ), (Ptr)&enabled );
}
Rect bounds;
- GetControlBounds(m_macControl, &bounds);
- InvalWindowRect(GetMacRootWindow(), &bounds);
+ GetControlBounds((ControlHandle)m_macControl, &bounds);
+ InvalWindowRect((WindowRef)MacGetRootWindow(), &bounds);
}
// ----------------------------------------------------------------------------
// time because doing it in ::Create() doesn't work (for unknown reasons)
void wxNotebook::OnSize(wxSizeEvent& event)
{
- static bool s_bFirstTime = TRUE;
- if ( s_bFirstTime ) {
- // TODO: any first-time-size processing.
- s_bFirstTime = FALSE;
- }
-
- // TODO: all this may or may not be necessary for your platform
-
// emulate page change (it's esp. important to do it first time because
// otherwise our page would stay invisible)
int nSel = m_nSelection;
m_nSelection = nSel;
}
-void wxNotebook::MacHandleControlClick( ControlHandle control , SInt16 controlpart )
+void wxNotebook::MacHandleControlClick( WXWidget control , wxInt16 controlpart )
{
- wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, m_windowId , ::GetControlValue(m_macControl) - 1, m_nSelection);
+ wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED, m_windowId , ::GetControlValue((ControlHandle)m_macControl) - 1, m_nSelection);
event.SetEventObject(this);
ProcessEvent(event);