/////////////////////////////////////////////////////////////////////////////
-// 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 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__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma interface "tbarmsw.h"
#endif
-#if USE_BUTTONBAR && USE_TOOLBAR
+#if wxUSE_TOOLBAR
+
#include "wx/tbarbase.h"
-WXDLLEXPORT_DATA(extern const char*) wxButtonBarNameStr;
+extern WXDLLEXPORT_DATA(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);
-
-#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, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
- const long style = wxNO_BORDER, const int orientation = wxVERTICAL,
- const int RowsOrColumns = 2, const wxString& name = wxButtonBarNameStr)
- {
- Create(parent, id, pos, size, style, orientation, RowsOrColumns, name);
- }
- bool Create(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
- const long style = wxNO_BORDER, const int orientation = wxVERTICAL,
- const 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(const int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap,
- const bool toggle = FALSE, const long xPos = -1, const 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(const int toolIndex, const 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 = 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)
};
-#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_