wxWidgets/include/wx/toolbook.h
Julian Smart 64d3ed176d Steps towards implementing native-style, non-top-level toolbars on Mac
by implementing a toolbar class that uses native buttons.
Ultimately this should allow wxToolbook and wxPropertySheetDialog
classes to look native, when we complete the button API improvements
to combine text, bitmaps and toggling.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38703 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2006-04-14 09:15:10 +00:00

151 lines
4.5 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Name: wx/toolbook.h
// Purpose: wxToolbook: wxToolBar and wxNotebook combination
// Author: Julian Smart
// Modified by:
// Created: 2006-01-29
// RCS-ID: $Id$
// Copyright: (c) 2006 Julian Smart
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_TOOLBOOK_H_
#define _WX_TOOLBOOK_H_
#include "wx/defs.h"
#if wxUSE_TOOLBOOK
#include "wx/bookctrl.h"
class WXDLLEXPORT wxToolBarBase;
class WXDLLEXPORT wxCommandEvent;
// Use wxButtonToolBar
#define wxBK_BUTTONBAR 0x0100
// ----------------------------------------------------------------------------
// wxToolbook
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxToolbook : public wxBookCtrlBase
{
public:
wxToolbook()
{
Init();
}
wxToolbook(wxWindow *parent,
wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxEmptyString)
{
Init();
(void)Create(parent, id, pos, size, style, name);
}
// quasi ctor
bool Create(wxWindow *parent,
wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = 0,
const wxString& name = wxEmptyString);
virtual int GetSelection() const;
virtual bool SetPageText(size_t n, const wxString& strText);
virtual wxString GetPageText(size_t n) const;
virtual int GetPageImage(size_t n) const;
virtual bool SetPageImage(size_t n, int imageId);
virtual wxSize CalcSizeFromPage(const wxSize& sizePage) const;
virtual bool InsertPage(size_t n,
wxWindow *page,
const wxString& text,
bool bSelect = false,
int imageId = -1);
virtual int SetSelection(size_t n);
virtual void SetImageList(wxImageList *imageList);
virtual bool DeleteAllPages();
wxToolBarBase* GetToolBar() const { return (wxToolBarBase*)m_bookctrl; }
// Not part of the wxBookctrl API, but must be called in OnIdle or
// by application to realize the toolbar and select the initial page.
void Realize();
protected:
virtual wxWindow *DoRemovePage(size_t page);
// get the size which the list control should have
virtual wxSize GetControllerSize() const;
// event handlers
void OnToolSelected(wxCommandEvent& event);
void OnSize(wxSizeEvent& event);
void OnIdle(wxIdleEvent& event);
// the currently selected page or wxNOT_FOUND if none
int m_selection;
// whether the toolbar needs to be realized
bool m_needsRealizing;
// maximum bitmap size
wxSize m_maxBitmapSize;
private:
// common part of all constructors
void Init();
DECLARE_EVENT_TABLE()
DECLARE_DYNAMIC_CLASS_NO_COPY(wxToolbook)
};
// ----------------------------------------------------------------------------
// listbook event class and related stuff
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxToolbookEvent : public wxBookCtrlBaseEvent
{
public:
wxToolbookEvent(wxEventType commandType = wxEVT_NULL, int id = 0,
int nSel = wxNOT_FOUND, int nOldSel = wxNOT_FOUND)
: wxBookCtrlBaseEvent(commandType, id, nSel, nOldSel)
{
}
wxToolbookEvent(const wxToolbookEvent& event)
: wxBookCtrlBaseEvent(event)
{
}
virtual wxEvent *Clone() const { return new wxToolbookEvent(*this); }
private:
DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxToolbookEvent)
};
extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGED;
extern WXDLLIMPEXP_CORE const wxEventType wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGING;
typedef void (wxEvtHandler::*wxToolbookEventFunction)(wxToolbookEvent&);
#define wxToolbookEventHandler(func) \
(wxObjectEventFunction)(wxEventFunction)wxStaticCastEvent(wxToolbookEventFunction, &func)
#define EVT_TOOLBOOK_PAGE_CHANGED(winid, fn) \
wx__DECLARE_EVT1(wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGED, winid, wxToolbookEventHandler(fn))
#define EVT_TOOLBOOK_PAGE_CHANGING(winid, fn) \
wx__DECLARE_EVT1(wxEVT_COMMAND_TOOLBOOK_PAGE_CHANGING, winid, wxToolbookEventHandler(fn))
#endif // wxUSE_TOOLBOOK
#endif // _WX_TOOLBOOK_H_