]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/os2/notebook.h
added wxMenu::AppendSubMenu() to avoid having to specify a dummy id when adding a...
[wxWidgets.git] / include / wx / os2 / notebook.h
index 39415272d8558a7ede9d03cac0263fd8e51dd2bd..30a3a810312a7f3415f97070f156a997206e8003 100644 (file)
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifndef _WX_NOTEBOOK_H_
-#define _WX_NOTEBOOK_H_
+#ifndef _NOTEBOOK_H
+#define _NOTEBOOK_H
+
+#if wxUSE_NOTEBOOK
 
 // ----------------------------------------------------------------------------
 // headers
 // ----------------------------------------------------------------------------
 
-#include "wx/dynarray.h"
-#include "wx/string.h"
 #include "wx/control.h"
 
-// ----------------------------------------------------------------------------
-// types
-// ----------------------------------------------------------------------------
-
-// fwd declarations
-class WXDLLEXPORT wxImageList;
-class WXDLLEXPORT wxWindow;
-
-// array of notebook pages
-typedef wxWindow WXDLLEXPORT wxNotebookPage;  // so far, any window can be a page
-WX_DEFINE_ARRAY(wxNotebookPage *, wxArrayNBPages);
-
 // ----------------------------------------------------------------------------
 // wxNotebook
 // ----------------------------------------------------------------------------
 
-// FIXME this class should really derive from wxTabCtrl, but the interface is not
-//       exactly the same, so I can't do it right now and instead we reimplement
-//       part of wxTabCtrl here
-class WXDLLEXPORT wxNotebook : public wxControl
+class WXDLLEXPORT wxNotebook : public wxNotebookBase
 {
 public:
-  // ctors
-  // -----
-    // default for dynamic class
-  wxNotebook();
-    // the same arguments as for wxControl (@@@ any special styles?)
-  wxNotebook(wxWindow *parent,
-             wxWindowID id,
-             const wxPoint& pos = wxDefaultPosition,
-             const wxSize& size = wxDefaultSize,
-             long style = 0,
-             const wxString& name = "notebook");
-    // Create() function
-  bool Create(wxWindow *parent,
-              wxWindowID id,
-              const wxPoint& pos = wxDefaultPosition,
-              const wxSize& size = wxDefaultSize,
-              long style = 0,
-              const wxString& name = "notebook");
-    // dtor
-  ~wxNotebook();
-
-  // accessors
-  // ---------
-    // get number of pages in the dialog
-  int GetPageCount() const;
-
-    // set the currently selected page, return the index of the previously
+    //
+    // Ctors
+    // -----
+    // Default for dynamic class
+    //
+    wxNotebook();
+
+    //
+    // the same arguments as for wxControl
+    //
+    wxNotebook( wxWindow*       pParent
+               ,wxWindowID      vId
+               ,const wxPoint&  rPos = wxDefaultPosition
+               ,const wxSize&   rSize = wxDefaultSize
+               ,long            lStyle = 0
+               ,const wxString& rsName = wxNotebookNameStr
+              );
+
+    bool Create( wxWindow*       pParent
+                ,wxWindowID      vId
+                ,const wxPoint&  rPos = wxDefaultPosition
+                ,const wxSize&   rSize = wxDefaultSize
+                ,long            lStyle = 0
+                ,const wxString& rsName = wxNotebookNameStr
+               );
+
+    //
+    // Accessors
+    // ---------
+    // Get number of pages in the dialog
+    //
+    virtual size_t GetPageCount(void) const;
+
+    //
+    // Set the currently selected page, return the index of the previously
     // selected one (or -1 on error)
     // NB: this function will _not_ generate wxEVT_NOTEBOOK_PAGE_xxx events
-  int SetSelection(int nPage);
-    // cycle thru the tabs
-  void AdvanceSelection(bool bForward = TRUE);
-    // get the currently selected page
-  int GetSelection() const { return m_nSelection; }
-
-    // set/get the title of a page
-  bool SetPageText(int nPage, const wxString& strText);
-  wxString GetPageText(int nPage) const;
-
-  // image list stuff: each page may have an image associated with it. All
-  // the images belong to an image list, so you have to
-  // 1) create an image list
-  // 2) associate it with the notebook
-  // 3) set for each page it's image
+    //
+    int      SetSelection(size_t nPage);
+
+    //
+    // Get the currently selected page
+    //
+    inline int      GetSelection(void) const { return m_nSelection; }
+
+    //
+    // Set/Get the title of a page
+    //
+    bool     SetPageText( size_t             nPage
+                         ,const wxString& sStrText
+                        );
+    wxString GetPageText(size_t nPage) const;
+
+    //
+    // Image list stuff: each page may have an image associated with it. All
+    // the images belong to an image list, so you have to
+    // 1) create an image list
+    // 2) associate it with the notebook
+    // 3) set for each page it's image
     // associate image list with a control
-  void SetImageList(wxImageList* imageList);
-    // get pointer (may be NULL) to the associated image list
-  wxImageList* GetImageList() const { return m_pImageList; }
-
-    // sets/returns item's image index in the current image list
-  int  GetPageImage(int nPage) const;
-  bool SetPageImage(int nPage, int nImage);
-
-    // currently it's always 1 because wxGTK doesn't support multi-row
+    //
+           void     SetImageList(wxImageList* pImageList);
+
+    //
+    // Sets/returns item's image index in the current image list
+    //
+    int      GetPageImage(size_t nPage) const;
+    bool     SetPageImage( size_t nPage
+                          ,int nImage
+                         );
+
+    //
+    // Currently it's always 1 because wxGTK doesn't support multi-row
     // tab controls
-  int GetRowCount() const;
+    //
+           int      GetRowCount(void) const;
 
-  // control the appearance of the notebook pages
+    //
+    // control the appearance of the notebook pages
     // set the size (the same for all pages)
-  void SetPageSize(const wxSize& size);
-    // set the padding between tabs (in pixels)
-  void SetPadding(const wxSize& padding);
-
-  // operations
-  // ----------
-    // remove one page from the notebook
-  bool DeletePage(int nPage);
-    // remove one page from the notebook, without deleting
-  bool RemovePage(int nPage);
-    // remove all pages
-  bool DeleteAllPages();
-    // adds a new page to the notebook (it will be deleted ny the notebook,
+    //
+           void     SetPageSize(const wxSize& rSize);
+
+    //
+    // Set the padding between tabs (in pixels)
+    //
+           void     SetPadding(const wxSize& rPadding);
+
+    //
+    // Operations
+    // ----------
+    // Remove all pages
+    //
+           bool     DeleteAllPages(void);
+
+    //
+    // Adds a new page to the notebook (it will be deleted ny the notebook,
     // don't delete it yourself). If bSelect, this page becomes active.
-  bool AddPage(wxNotebookPage *pPage,
-               const wxString& strText,
-               bool bSelect = FALSE,
-               int imageId = -1);
-    // the same as AddPage(), but adds it at the specified position
-  bool InsertPage(int nPage,
-                  wxNotebookPage *pPage,
-                  const wxString& strText,
-                  bool bSelect = FALSE,
-                  int imageId = -1);
-    // get the panel which represents the given page
-  wxNotebookPage *GetPage(int nPage) { return m_aPages[nPage]; }
-
+    //
+           bool     AddPage( wxNotebookPage* pPage
+                            ,const wxString& rsStrText
+                            ,bool            bSelect = false
+                            ,int             nImageId = -1
+                           );
+
+    //
+    // The same as AddPage(), but adds it at the specified position
+    //
+    bool     InsertPage( size_t nPage
+                        ,wxNotebookPage* pPage
+                        ,const wxString& rsStrText
+                        ,bool            bSelect = false
+                        ,int             nImageId = -1
+                       );
+
+    //
     // Windows-only at present. Also, you must use the wxNB_FIXEDWIDTH
     // style.
-  void SetTabSize(const wxSize& sz);
+    //
+           void     SetTabSize(const wxSize& rSize);
+
+    //
+    // Callbacks
+    // ---------
+    //
+    void OnSize(wxSizeEvent& rEvent);
+    void OnSelChange(wxNotebookEvent& rEvent);
+    void OnSetFocus(wxFocusEvent& rEvent);
+    void OnNavigationKey(wxNavigationKeyEvent& rEvent);
+
+    //
+    // Base class virtuals
+    // -------------------
+    //
+    virtual bool OS2OnScroll( int    nOrientation
+                             ,WXWORD wSBCode
+                             ,WXWORD wPos
+                             ,WXHWND hControl
+                            );
+    virtual void SetConstraintSizes(bool bRecurse = true);
+    virtual bool DoPhase(int nPhase);
 
-  // callbacks
-  // ---------
-  void OnSize(wxSizeEvent& event);
-  void OnSelChange(wxNotebookEvent& event);
-  void OnSetFocus(wxFocusEvent& event);
-  void OnNavigationKey(wxNavigationKeyEvent& event);
+protected:
+    //
+    // Common part of all ctors
+    //
+    void                    Init(void);
 
-  // base class virtuals
-  // -------------------
-  virtual bool OS2OnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
-  virtual void SetConstraintSizes(bool recurse = TRUE);
-  virtual bool DoPhase(int nPhase);
+    //
+    // Translate wxWin styles to the PM ones
+    //
+    virtual WXDWORD         OS2GetStyle( long     lFlags
+                                        ,WXDWORD* pwExstyle = NULL
+                                       ) const;
 
-protected:
-  // common part of all ctors
-  void Init();
+    //
+    // Remove one page from the notebook, without deleting
+    //
+    virtual wxNotebookPage* DoRemovePage(size_t nPage);
+
+    //
+    // Helper functions
+    //
 
-  // helper functions
-  void ChangePage(int nOldSel, int nSel); // change pages
+    int                     m_nSelection; // The current selection (-1 if none)
 
-  wxImageList  *m_pImageList; // we can have an associated image list
-  wxArrayNBPages  m_aPages;     // array of pages
+private:
+    wxArrayLong                     m_alPageId;
+    int                             m_nTabSize; // holds the largest tab size
 
-  int m_nSelection;           // the current selection (-1 if none)
+    DECLARE_DYNAMIC_CLASS(wxNotebook)
+    DECLARE_EVENT_TABLE()
+}; // end of CLASS wxNotebook
 
-  DECLARE_DYNAMIC_CLASS(wxNotebook)
-  DECLARE_EVENT_TABLE()
-};
+#endif // wxUSE_NOTEBOOK
 
-#endif // _WX_NOTEBOOK_H_
+#endif // _NOTEBOOK_H