/////////////////////////////////////////////////////////////////////////////
// Name: wx/msw/tbar95.h
-// Purpose: wxToolBar95 (Windows 95 toolbar) class
+// Purpose: wxToolBar (Windows 95 toolbar) class
// Author: Julian Smart
// Modified by:
// Created: 01/02/97
#ifndef _WX_TBAR95_H_
#define _WX_TBAR95_H_
-#ifdef __GNUG__
-#pragma interface "tbar95.h"
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
+ #pragma interface "tbar95.h"
#endif
#if wxUSE_TOOLBAR
-#include "wx/tbarbase.h"
+#include "wx/dynarray.h"
-class WXDLLEXPORT wxToolBar95 : public wxToolBarBase
+class WXDLLEXPORT wxToolBar : public wxToolBarBase
{
public:
- wxToolBar95() { Init(); }
+ // ctors and dtor
+ wxToolBar() { Init(); }
- wxToolBar95(wxWindow *parent,
+ wxToolBar(wxWindow *parent,
wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
Create(parent, id, pos, size, style, name);
}
- ~wxToolBar95();
-
bool Create(wxWindow *parent,
wxWindowID id,
const wxPoint& pos = wxDefaultPosition,
long style = wxNO_BORDER | wxTB_HORIZONTAL,
const wxString& name = wxToolBarNameStr);
- // override base class virtuals
-
- virtual 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);
- virtual bool AddControl(wxControl *control);
-
- virtual void ClearTools();
+ virtual ~wxToolBar();
- virtual bool Realize() { return CreateTools(); };
+ // override/implement base class virtuals
+ virtual wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y) const;
- virtual void EnableTool(int toolIndex, bool enable);
- virtual void ToggleTool(int toolIndex, bool toggle);
+ virtual bool Realize();
virtual void SetToolBitmapSize(const wxSize& size);
virtual wxSize GetToolSize() const;
- virtual wxSize GetMaxSize() const;
- virtual bool GetToolState(int toolIndex) const;
-
- virtual bool CreateTools();
virtual void SetRows(int nRows);
- // IMPLEMENTATION
+ // implementation only from now on
+ // -------------------------------
+
+ virtual void SetWindowStyleFlag(long style);
+
virtual bool MSWCommand(WXUINT param, WXWORD id);
virtual bool MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result);
void OnMouseEvent(wxMouseEvent& event);
void OnSysColourChanged(wxSysColourChangedEvent& event);
+ void SetFocus() {}
+
+ static WXHBITMAP MapBitmap(WXHBITMAP bitmap, int width, int height);
+
protected:
// common part of all ctors
void Init();
- WXHBITMAP m_hBitmap;
+ // create the native toolbar control
+ bool MSWCreateToolbar(const wxPoint& pos, const wxSize& size);
- DECLARE_EVENT_TABLE()
-};
+ // recreate the control completely
+ void Recreate();
-class WXDLLEXPORT wxToolBar : public wxToolBar95
-{
-public:
- wxToolBar() { }
+ // implement base class pure virtuals
+ virtual bool DoInsertTool(size_t pos, wxToolBarToolBase *tool);
+ virtual bool DoDeleteTool(size_t pos, wxToolBarToolBase *tool);
- wxToolBar(wxWindow *parent,
- wxWindowID id,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = wxNO_BORDER | wxTB_HORIZONTAL,
- const wxString& name = wxToolBarNameStr)
- : wxToolBar95(parent, id, pos, size, style, name)
- {
- }
+ 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);
+
+ // override WndProc mainly to process WM_SIZE
+ virtual long MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam);
+
+ // return the appropriate size and flags for the toolbar control
+ virtual wxSize DoGetBestSize() const;
+ virtual WXDWORD MSWGetStyle(long style, WXDWORD *exstyle) const;
+
+ // handlers for various events
+ bool HandleSize(WXWPARAM wParam, WXLPARAM lParam);
+ bool HandlePaint(WXWPARAM wParam, WXLPARAM lParam);
+ void HandleMouseMove(WXWPARAM wParam, WXLPARAM lParam);
+
+ // should be called whenever the toolbar size changes
+ void UpdateSize();
+
+ // the big bitmap containing all bitmaps of the toolbar buttons
+ WXHBITMAP m_hBitmap;
+
+ // the total number of toolbar elements
+ size_t m_nButtons;
+
+ // the tool the cursor is in
+ wxToolBarToolBase *m_pInTool;
private:
+ DECLARE_EVENT_TABLE()
DECLARE_DYNAMIC_CLASS(wxToolBar)
+ DECLARE_NO_COPY_CLASS(wxToolBar)
};
#endif // wxUSE_TOOLBAR