| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: notebook.h
- // Purpose: interface of wxNotebook
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- enum
- {
- wxNB_HITTEST_NOWHERE = wxBK_HITTEST_NOWHERE,
- wxNB_HITTEST_ONICON = wxBK_HITTEST_ONICON,
- wxNB_HITTEST_ONLABEL = wxBK_HITTEST_ONLABEL,
- wxNB_HITTEST_ONITEM = wxBK_HITTEST_ONITEM,
- wxNB_HITTEST_ONPAGE = wxBK_HITTEST_ONPAGE
- };
- #define wxNB_DEFAULT wxBK_DEFAULT
- #define wxNB_TOP wxBK_TOP
- #define wxNB_BOTTOM wxBK_BOTTOM
- #define wxNB_LEFT wxBK_LEFT
- #define wxNB_RIGHT wxBK_RIGHT
- #define wxNB_FIXEDWIDTH 0x0100
- #define wxNB_MULTILINE 0x0200
- #define wxNB_NOPAGETHEME 0x0400
- #define wxNB_FLAT 0x0800
- wxEventType wxEVT_NOTEBOOK_PAGE_CHANGED;
- wxEventType wxEVT_NOTEBOOK_PAGE_CHANGING;
- /**
- @class wxNotebook
- This class represents a notebook control, which manages multiple windows with
- associated tabs.
- To use the class, create a wxNotebook object and call wxNotebook::AddPage
- or wxNotebook::InsertPage, passing a window to be used as the page.
- Do not explicitly delete the window for a page that is currently managed by
- wxNotebook.
- @b wxNotebookPage is a typedef for wxWindow.
- @beginStyleTable
- @style{wxNB_TOP}
- Place tabs on the top side.
- @style{wxNB_LEFT}
- Place tabs on the left side.
- @style{wxNB_RIGHT}
- Place tabs on the right side.
- @style{wxNB_BOTTOM}
- Place tabs under instead of above the notebook pages.
- @style{wxNB_FIXEDWIDTH}
- (Windows only) All tabs will have same width.
- @style{wxNB_MULTILINE}
- (Windows only) There can be several rows of tabs.
- @style{wxNB_NOPAGETHEME}
- (Windows only) Display a solid colour on notebook pages, and not a
- gradient, which can reduce performance.
- @style{wxNB_FLAT}
- (Windows CE only) Show tabs in a flat style.
- @endStyleTable
- The styles wxNB_LEFT, RIGHT and BOTTOM are not supported under
- Microsoft Windows XP when using visual themes.
- @beginEventEmissionTable{wxBookCtrlEvent}
- @event{EVT_NOTEBOOK_PAGE_CHANGED(id, func)}
- The page selection was changed.
- Processes a @c wxEVT_NOTEBOOK_PAGE_CHANGED event.
- @event{EVT_NOTEBOOK_PAGE_CHANGING(id, func)}
- The page selection is about to be changed.
- Processes a @c wxEVT_NOTEBOOK_PAGE_CHANGING event.
- This event can be vetoed.
- @endEventTable
- @section notebook_bg Page backgrounds
- On Windows XP, the default theme paints a gradient on the notebook's pages.
- If you wish to suppress this theme, for aesthetic or performance reasons,
- there are three ways of doing it.
- You can use @c wxNB_NOPAGETHEME to disable themed drawing for a particular
- notebook, you can call wxSystemOptions::SetOption to disable it for the
- whole application, or you can disable it for individual pages by using
- SetBackgroundColour().
- To disable themed pages globally:
- @code
- wxSystemOptions::SetOption("msw.notebook.themed-background", 0);
- @endcode
- Set the value to 1 to enable it again.
- To give a single page a solid background that more or less fits in with the
- overall theme, use:
- @code
- wxColour col = notebook->GetThemeBackgroundColour();
- if (col.IsOk())
- {
- page->SetBackgroundColour(col);
- }
- @endcode
- On platforms other than Windows, or if the application is not using Windows
- themes, GetThemeBackgroundColour() will return an uninitialised colour object,
- and the above code will therefore work on all platforms.
- @library{wxcore}
- @category{bookctrl}
- @appearance{notebook}
- @see wxBookCtrl, wxBookCtrlEvent, wxImageList, @ref page_samples_notebook
- */
- class wxNotebook : public wxBookCtrlBase
- {
- public:
- /**
- Constructs a notebook control.
- */
- wxNotebook();
- /**
- Constructs a notebook control.
- Note that sometimes you can reduce flicker by passing the wxCLIP_CHILDREN
- window style.
- @param parent
- The parent window. Must be non-@NULL.
- @param id
- The window identifier.
- @param pos
- The window position.
- @param size
- The window size.
- @param style
- The window style. See wxNotebook.
- @param name
- The name of the control.
- */
- wxNotebook(wxWindow* parent, wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxNotebookNameStr);
- /**
- Destroys the wxNotebook object.
- */
- virtual ~wxNotebook();
- /**
- Creates a notebook control.
- See wxNotebook() for a description of the parameters.
- */
- bool Create(wxWindow* parent, wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0,
- const wxString& name = wxNotebookNameStr);
- /**
- Returns the number of rows in the notebook control.
- */
- virtual int GetRowCount() const;
- /**
- If running under Windows and themes are enabled for the application, this
- function returns a suitable colour for painting the background of a notebook
- page, and can be passed to SetBackgroundColour().
- Otherwise, an uninitialised colour will be returned.
- */
- virtual wxColour GetThemeBackgroundColour() const;
- /**
- An event handler function, called when the page selection is changed.
- @see wxBookCtrlEvent
- */
- void OnSelChange(wxBookCtrlEvent& event);
- /**
- Sets the amount of space around each page's icon and label, in pixels.
- @note The vertical padding cannot be changed in wxGTK.
- */
- virtual void SetPadding(const wxSize& padding);
- // implementations of pure virtuals
- virtual int GetPageImage(size_t nPage) const;
- virtual bool SetPageImage(size_t page, int image);
- virtual wxString GetPageText(size_t nPage) const;
- virtual bool SetPageText(size_t page, const wxString& text);
- virtual int GetSelection() const;
- virtual int SetSelection(size_t page);
- virtual int ChangeSelection(size_t page);
- virtual bool InsertPage(size_t index, wxWindow * page, const wxString & text,
- bool select = false, int imageId = NO_IMAGE);
- };
|