X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7c0ea335c7b1aa4ebd8b3a79dfb4be9fb20eefdb..8bf57c4f2eebf2d2988d6f573066164bcbaabe64:/include/wx/msw/tbarmsw.h diff --git a/include/wx/msw/tbarmsw.h b/include/wx/msw/tbarmsw.h index 75fe842966..aa83f500bf 100644 --- a/include/wx/msw/tbarmsw.h +++ b/include/wx/msw/tbarmsw.h @@ -1,22 +1,22 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: tbarmsw.h -// Purpose: wxToolBarMSW class +// Name: wx/msw/tbarmsw.h +// Purpose: wxToolBar for older Windowses // Author: Julian Smart -// Modified by: +// Modified by: 13.12.99 by VZ during toolbar classes reorganization // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) Julian Smart -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_TBARMSW_H_ #define _WX_TBARMSW_H_ -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "tbarmsw.h" #endif -#if wxUSE_BUTTONBAR && wxUSE_TOOLBAR +#if wxUSE_TOOLBAR #include "wx/tbarbase.h" @@ -24,121 +24,128 @@ WXDLLEXPORT_DATA(extern const wxChar*) wxButtonBarNameStr; class WXDLLEXPORT wxMemoryDC; -// Non-Win95 (WIN32, WIN16, UNIX) version +// ---------------------------------------------------------------------------- +// wxToolBar for older Windowses +// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxToolBarMSW: public wxToolBarBase +class WXDLLEXPORT wxToolBar : public wxToolBarBase { - DECLARE_DYNAMIC_CLASS(wxToolBarMSW) public: - /* - * Public interface - */ - wxToolBarMSW(void); - - inline wxToolBarMSW(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, const wxString& name = wxButtonBarNameStr) - { - Create(parent, id, pos, size, style, name); - } - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, const wxString& name = wxButtonBarNameStr); - - ~wxToolBarMSW(void); - - // Handle wxWindows events - void OnPaint(wxPaintEvent& event); - void OnSize(wxSizeEvent& event); - void OnMouseEvent(wxMouseEvent& event); - - // If pushedBitmap is NULL, a reversed version of bitmap is - // created and used as the pushed/toggled image. - // If toggle is TRUE, the button toggles between the two states. - wxToolBarTool *AddTool(int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap, - bool toggle = FALSE, long xPos = -1, long yPos = -1, wxObject *clientData = NULL, - const wxString& helpString1 = wxEmptyString, const wxString& helpString2 = wxEmptyString); - - void DrawTool(wxDC& dc, wxMemoryDC& memDc, wxToolBarTool *tool); - - // Set default bitmap size - virtual void SetToolBitmapSize(const wxSize& size); - void EnableTool(int toolIndex, bool enable); // additional drawing on enabling - - // The button size is bigger than the bitmap size - wxSize GetToolSize(void) const; - - void LayoutTools(); - - // The post-tool-addition call - bool Realize() { Layout(); return TRUE; }; - - protected: - void DrawTool(wxDC& dc, wxToolBarTool *tool, int state); - - void GetSysColors(void); - bool InitGlobalObjects(void); - void FreeGlobalObjects(void); - void PatB(WXHDC hdc,int x,int y,int dx,int dy, long rgb); - void CreateMask(WXHDC hDC, int xoffset, int yoffset, int dx, int dy); - void DrawBlankButton(WXHDC hdc, int x, int y, int dx, int dy, int state); - void DrawButton(WXHDC hdc, int x, int y, int dx, int dy, wxToolBarTool *tool, int state); - WXHBITMAP CreateDitherBitmap(); - bool CreateDitherBrush(void); - bool FreeDitherBrush(void); - WXHBITMAP CreateMappedBitmap(WXHINSTANCE hInstance, void *lpBitmapInfo); - WXHBITMAP CreateMappedBitmap(WXHINSTANCE hInstance, WXHBITMAP hBitmap); - -protected: - int m_currentRowsOrColumns; - long m_lastX, m_lastY; - - WXHBRUSH m_hbrDither; - WXDWORD m_rgbFace; - WXDWORD m_rgbShadow; - WXDWORD m_rgbHilight; - WXDWORD m_rgbFrame; - -// -// m_hdcMono is the DC that holds a mono bitmap, m_hbmMono -// that is used to create highlights -// of button faces. -// m_hbmDefault hold the default bitmap if there is one. -// - WXHDC m_hdcMono; - WXHBITMAP m_hbmMono; - WXHBITMAP m_hbmDefault; - -DECLARE_EVENT_TABLE() -}; - -// -// States (not all of them currently used) -// -#define wxTBSTATE_CHECKED 0x01 // radio button is checked -#define wxTBSTATE_PRESSED 0x02 // button is being depressed (any style) -#define wxTBSTATE_ENABLED 0x04 // button is enabled -#define wxTBSTATE_HIDDEN 0x08 // button is hidden -#define wxTBSTATE_INDETERMINATE 0x10 // button is indeterminate - -class WXDLLEXPORT wxToolBar : public wxToolBarMSW -{ -public: - wxToolBar() { } + // construction + wxToolBar() { Init(); } wxToolBar(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER | wxTB_HORIZONTAL, - const wxString& name = wxToolBarNameStr) - : wxToolBarMSW(parent, id, pos, size, style, name) + long style = wxNO_BORDER|wxTB_HORIZONTAL, + const wxString& name = wxButtonBarNameStr) { + Init(); + + Create(parent, id, pos, size, style, name); } + bool Create(wxWindow *parent, + wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxNO_BORDER|wxTB_HORIZONTAL, + const wxString& name = wxButtonBarNameStr); + + ~wxToolBar(); + + // implement/override base class (pure) virtuals + virtual wxToolBarToolBase *AddTool(int id, + const wxBitmap& bitmap, + const wxBitmap& pushedBitmap, + bool toggle, + wxCoord xPos, + wxCoord yPos = wxDefaultCoord, + wxObject *clientData = NULL, + const wxString& helpString1 = wxEmptyString, + const wxString& helpString2 = wxEmptyString); + + virtual wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y) const; + + virtual void SetToolBitmapSize(const wxSize& size); + virtual wxSize GetToolSize() const; + + virtual bool Realize(); + + // implementation only from now on + // ------------------------------- + + // Handle wxWidgets events + void OnPaint(wxPaintEvent& event); + void OnMouseEvent(wxMouseEvent& event); + +protected: + void Init(); + + virtual bool DoInsertTool(size_t pos, wxToolBarToolBase *tool); + virtual bool DoDeleteTool(size_t pos, wxToolBarToolBase *tool); + virtual void DoEnableTool(wxToolBarToolBase *tool, bool enable); + virtual void DoToggleTool(wxToolBarToolBase *tool, bool toggle); + virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle); + + virtual wxToolBarToolBase *CreateTool(int id, + const wxString& label, + const wxBitmap& bmpNormal, + const wxBitmap& bmpDisabled, + wxItemKind kind, + wxObject *clientData, + const wxString& shortHelp, + const wxString& longHelp); + virtual wxToolBarToolBase *CreateTool(wxControl *control); + + void DoRedrawTool(wxToolBarToolBase *tool); + + void DrawTool(wxDC& dc, wxToolBarToolBase *tool); + void DrawTool(wxDC& dc, wxToolBarToolBase *tool, int state); + + void GetSysColors(); + bool InitGlobalObjects(); + void FreeGlobalObjects(); + void PatB(WXHDC hdc,int x,int y,int dx,int dy, long rgb); + void CreateMask(WXHDC hDC, int xoffset, int yoffset, int dx, int dy); + void DrawBlankButton(WXHDC hdc, int x, int y, int dx, int dy, int state); + void DrawButton(WXHDC hdc, int x, int y, int dx, int dy, + wxToolBarToolBase *tool, int state); + WXHBITMAP CreateDitherBitmap(); + bool CreateDitherBrush(); + bool FreeDitherBrush(); + WXHBITMAP CreateMappedBitmap(WXHINSTANCE hInstance, void *lpBitmapInfo); + WXHBITMAP CreateMappedBitmap(WXHINSTANCE hInstance, WXHBITMAP hBitmap); + + int m_currentRowsOrColumns; + int m_pressedTool, m_currentTool; + + wxCoord m_xPos, m_yPos; + wxCoord m_lastX, m_lastY; + + WXHBRUSH m_hbrDither; + WXDWORD m_rgbFace; + WXDWORD m_rgbShadow; + WXDWORD m_rgbHilight; + WXDWORD m_rgbFrame; + + // + // m_hdcMono is the DC that holds a mono bitmap, m_hbmMono + // that is used to create highlights + // of button faces. + // m_hbmDefault hold the default bitmap if there is one. + // + WXHDC m_hdcMono; + WXHBITMAP m_hbmMono; + WXHBITMAP m_hbmDefault; + private: + DECLARE_EVENT_TABLE() DECLARE_DYNAMIC_CLASS(wxToolBar) }; -#endif // wxUSE_TOOL/BUTTONBAR +#endif // wxUSE_TOOLBAR #endif // _WX_TBARMSW_H_