X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/debe6624c1e9d4bf3243381153d1e173c849bcd8..794bcc2dea743ac907b839f54e451847c9ea4b72:/include/wx/msw/tbarmsw.h diff --git a/include/wx/msw/tbarmsw.h b/include/wx/msw/tbarmsw.h index 5d18fb450c..278353b88c 100644 --- a/include/wx/msw/tbarmsw.h +++ b/include/wx/msw/tbarmsw.h @@ -1,130 +1,150 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: tbarmsw.h -// Purpose: wxToolBarMSW class +// Name: wx/msw/tbarmsw.h +// Purpose: wxToolBar for Win16 // 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 and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifndef __TBARMSWH__ -#define __TBARMSWH__ +#ifndef _WX_TBARMSW_H_ +#define _WX_TBARMSW_H_ #ifdef __GNUG__ #pragma interface "tbarmsw.h" #endif -#if USE_BUTTONBAR && USE_TOOLBAR +#if wxUSE_TOOLBAR + #include "wx/tbarbase.h" -WXDLLEXPORT_DATA(extern const char*) wxButtonBarNameStr; +WXDLLEXPORT_DATA(extern const wxChar*) wxButtonBarNameStr; + +class WXDLLEXPORT wxMemoryDC; -// Non-Win95 (WIN32, WIN16, UNIX) version +// ---------------------------------------------------------------------------- +// wxToolBar for Win16 +// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxToolBarMSW: public wxToolBarBase +class WXDLLEXPORT wxToolBar : public wxToolBarBase { - DECLARE_DYNAMIC_CLASS(wxToolBarMSW) public: - /* - * Public interface - */ - wxToolBarMSW(void); - -#if WXWIN_COMPATIBILITY > 0 - inline wxToolBarMSW(wxWindow *parent, int x, int y, int w, int h, - long style = wxNO_BORDER, int orientation = wxVERTICAL, int RowsOrColumns = 2, - const char *name = wxButtonBarNameStr) - { - Create(parent, -1, wxPoint(x, y), wxSize(w, h), style, orientation, RowsOrColumns, name); - } -#endif - inline wxToolBarMSW(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER, int orientation = wxVERTICAL, - int RowsOrColumns = 2, const wxString& name = wxButtonBarNameStr) - { - Create(parent, id, pos, size, style, orientation, RowsOrColumns, name); - } - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER, int orientation = wxVERTICAL, - int RowsOrColumns = 2, 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 = "", const wxString& helpString2 = ""); - - void DrawTool(wxDC& dc, wxMemoryDC& memDc, wxToolBarTool *tool); - - // New members - // Set default bitmap size - virtual void SetDefaultSize(const wxSize& size); - void EnableTool(int toolIndex, bool enable); // additional drawing on enabling - - // The button size is bigger than the bitmap size - wxSize GetDefaultButtonSize(void) const; - 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: - - 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() + // 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 = 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 = -1, + 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 wxWindows 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 wxBitmap& bitmap1, + const wxBitmap& bitmap2, + bool toggle, + wxObject *clientData, + const wxString& shortHelpString, + const wxString& longHelpString); + 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) }; -#define DEFAULTBITMAPX 16 -#define DEFAULTBITMAPY 15 -#define DEFAULTBUTTONX 24 -#define DEFAULTBUTTONY 22 -#define DEFAULTBARHEIGHT 27 - -// -// 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 - -#endif // USE_TOOL/BUTTONBAR +#endif // wxUSE_TOOLBAR + #endif - // __TBARMSWH__ + // _WX_TBARMSW_H_