home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2233.zip / wxOS2-2_3_3.zip / wxWindows-2.3.3 / src / common / nbkbase.cpp < prev    next >
C/C++ Source or Header  |  2002-01-14  |  4KB  |  160 lines

  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name:        src/common/nbkbase.cpp
  3. // Purpose:     common wxNotebook methods
  4. // Author:      Vadim Zeitlin
  5. // Modified by:
  6. // Created:     02.07.01
  7. // RCS-ID:      $Id: nbkbase.cpp,v 1.8 2002/01/11 14:34:37 RR Exp $
  8. // Copyright:   (c) 2001 Vadim Zeitlin
  9. // Licence:     wxWindows licence
  10. ///////////////////////////////////////////////////////////////////////////////
  11.  
  12. // ============================================================================
  13. // declarations
  14. // ============================================================================
  15.  
  16. // ----------------------------------------------------------------------------
  17. // headers
  18. // ----------------------------------------------------------------------------
  19.  
  20. #ifdef __GNUG__
  21.     #pragma implementation "notebookbase.h"
  22. #endif
  23.  
  24. // For compilers that support precompilation, includes "wx.h".
  25. #include "wx/wxprec.h"
  26.  
  27. #ifdef __BORLANDC__
  28.     #pragma hdrstop
  29. #endif
  30.  
  31. #if wxUSE_NOTEBOOK
  32.  
  33. #ifndef WX_PRECOMP
  34. #endif //WX_PRECOMP
  35.  
  36. #include "wx/imaglist.h"
  37. #include "wx/notebook.h"
  38.  
  39. // ============================================================================
  40. // implementation
  41. // ============================================================================
  42.  
  43. // ----------------------------------------------------------------------------
  44. // constructors and destructors
  45. // ----------------------------------------------------------------------------
  46.  
  47. void wxNotebookBase::Init()
  48. {
  49.     m_imageList = NULL;
  50.     m_ownsImageList = FALSE;
  51. }
  52.  
  53. wxNotebookBase::~wxNotebookBase()
  54. {
  55.     if ( m_ownsImageList )
  56.     {
  57.         // may be NULL, ok
  58.         delete m_imageList;
  59.     }
  60. }
  61.  
  62. // ----------------------------------------------------------------------------
  63. // image list
  64. // ----------------------------------------------------------------------------
  65.  
  66. void wxNotebookBase::SetImageList(wxImageList* imageList)
  67. {
  68.     if ( m_ownsImageList )
  69.     {
  70.         // may be NULL, ok
  71.         delete m_imageList;
  72.  
  73.         m_ownsImageList = FALSE;
  74.     }
  75.  
  76.     m_imageList = imageList;
  77. }
  78.  
  79. void wxNotebookBase::AssignImageList(wxImageList* imageList)
  80. {
  81.     SetImageList(imageList);
  82.     m_ownsImageList = TRUE;
  83. }
  84.  
  85. // ----------------------------------------------------------------------------
  86. // geometry
  87. // ----------------------------------------------------------------------------
  88.  
  89. wxSize wxNotebookBase::CalcSizeFromPage(const wxSize& sizePage)
  90. {
  91.     // this was just taken from wxNotebookSizer::CalcMin() and is, of
  92.     // course, totally bogus - just like the original code was
  93.     wxSize sizeTotal = sizePage;
  94.     
  95.     if ( HasFlag(wxNB_LEFT) || HasFlag(wxNB_RIGHT) )
  96.     {
  97.         sizeTotal.x += 90;
  98.         sizeTotal.y += 10;
  99.     }
  100.     else
  101.     {
  102.         sizeTotal.x += 10;
  103.         sizeTotal.y += 40;
  104.     }
  105.  
  106.     return sizeTotal;
  107. }
  108.  
  109. // ----------------------------------------------------------------------------
  110. // pages management
  111. // ----------------------------------------------------------------------------
  112.  
  113. bool wxNotebookBase::DeletePage(int nPage)
  114. {
  115.     wxNotebookPage *page = DoRemovePage(nPage);
  116.     if ( !page )
  117.         return FALSE;
  118.  
  119.     delete page;
  120.  
  121.     return TRUE;
  122. }
  123.  
  124. wxNotebookPage *wxNotebookBase::DoRemovePage(int nPage)
  125. {
  126.     wxCHECK_MSG( nPage >= 0 && (size_t)nPage < m_pages.GetCount(), NULL,
  127.                  _T("invalid page index in wxNotebookBase::DoRemovePage()") );
  128.  
  129.     wxNotebookPage *pageRemoved = m_pages[nPage];
  130.     m_pages.RemoveAt(nPage);
  131.  
  132.     return pageRemoved;
  133. }
  134.  
  135. int wxNotebookBase::GetNextPage(bool forward) const
  136. {
  137.     int nPage;
  138.  
  139.     int nMax = GetPageCount();
  140.     if ( nMax-- ) // decrement it to get the last valid index
  141.     {
  142.         int nSel = GetSelection();
  143.  
  144.         // change selection wrapping if it becomes invalid
  145.         nPage = forward ? nSel == nMax ? 0
  146.                                        : nSel + 1
  147.                         : nSel == 0 ? nMax
  148.                                     : nSel - 1;
  149.     }
  150.     else // notebook is empty, no next page
  151.     {
  152.         nPage = -1;
  153.     }
  154.  
  155.     return nPage;
  156. }
  157.  
  158. #endif // wxUSE_NOTEBOOK
  159.  
  160.