wxWidgets/include/wx/os2/toolbar.h
2002-08-25 18:20:22 +00:00

216 lines
8.0 KiB
C++

/////////////////////////////////////////////////////////////////////////////
// Name: toolbar.h
// Purpose: wxToolBar class
// Author: David Webster
// Modified by:
// Created: 10/17/98
// RCS-ID: $Id$
// Copyright: (c) David Webster
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_TOOLBAR_H_
#define _WX_TOOLBAR_H_
#if wxUSE_TOOLBAR
#include "wx/timer.h"
#include "wx/tbarbase.h"
#define ID_TOOLTIMER 100
#define ID_TOOLEXPTIMER 101
class WXDLLEXPORT wxToolBar: public wxToolBarBase
{
public:
/*
* Public interface
*/
wxToolBar()
: m_vToolTimer(this, ID_TOOLTIMER)
, m_vToolExpTimer(this, ID_TOOLEXPTIMER)
{ Init(); }
inline wxToolBar( wxWindow* pParent
,wxWindowID vId
,const wxPoint& rPos = wxDefaultPosition
,const wxSize& rSize = wxDefaultSize
,long lStyle = wxNO_BORDER | wxTB_HORIZONTAL
,const wxString& rName = wxToolBarNameStr
) : m_vToolTimer(this, ID_TOOLTIMER)
, m_vToolExpTimer(this, ID_TOOLEXPTIMER)
{
Init();
Create( pParent
,vId
,rPos
,rSize
,lStyle
,rName
);
}
virtual ~wxToolBar();
bool Create( wxWindow* pParent
,wxWindowID vId
,const wxPoint& rPos = wxDefaultPosition
,const wxSize& rSize = wxDefaultSize
,long lStyle = wxNO_BORDER | wxTB_HORIZONTAL
,const wxString& rName = wxToolBarNameStr
);
//
// Override/implement base class virtuals
//
virtual wxToolBarToolBase* FindToolForPosition( wxCoord vX
,wxCoord vY
) const;
virtual bool Realize(void);
virtual void SetRows(int nRows);
//
// Special overrides for OS/2
//
virtual wxToolBarToolBase* InsertControl( size_t nPos
,wxControl* pControl
);
virtual wxToolBarToolBase* InsertSeparator(size_t nPos);
virtual wxToolBarToolBase* InsertTool( size_t nPos
,int nId
,const wxString& rsLabel
,const wxBitmap& rBitmap
,const wxBitmap& rBmpDisabled = wxNullBitmap
,wxItemKind eKind = wxITEM_NORMAL
,const wxString& rsShortHelp = wxEmptyString
,const wxString& rsLongHelp = wxEmptyString
,wxObject* pClientData = NULL
);
wxToolBarToolBase* InsertTool( size_t nPos
,int nId
,const wxBitmap& rBitmap
,const wxBitmap& rBmpDisabled = wxNullBitmap
,bool bToggle = FALSE
,wxObject* pClientData = NULL
,const wxString& rsShortHelp = wxEmptyString
,const wxString& rsLongHelp = wxEmptyString
)
{
return InsertTool( nPos
,nId
,wxEmptyString
,rBitmap
,rBmpDisabled
,bToggle ? wxITEM_CHECK : wxITEM_NORMAL
,rsShortHelp
,rsLongHelp
,pClientData
);
}
virtual bool DeleteTool(int nId);
virtual bool DeleteToolByPos(size_t nPos);
//
// Event handlers
//
void OnPaint(wxPaintEvent& event);
void OnSize(wxSizeEvent& event);
void OnMouseEvent(wxMouseEvent& event);
void OnKillFocus(wxFocusEvent& event);
protected:
//
// Common part of all ctors
//
void Init();
//
// Implement base class pure virtuals
//
virtual wxToolBarToolBase* DoAddTool( int id
,const wxString& label
,const wxBitmap& bitmap
,const wxBitmap& bmpDisabled
,wxItemKind kind
,const wxString& shortHelp = wxEmptyString
,const wxString& longHelp = wxEmptyString
,wxObject *clientData = NULL
,wxCoord xPos = -1
,wxCoord yPos = -1
);
virtual bool DoInsertTool( size_t nPos
,wxToolBarToolBase* pTool
);
virtual bool DoDeleteTool( size_t nPos
, wxToolBarToolBase* pTool
);
virtual void DoEnableTool( wxToolBarToolBase* pTool
,bool bEnable
);
virtual void DoToggleTool( wxToolBarToolBase* pTool
,bool bToggle
);
virtual void DoSetToggle( wxToolBarToolBase* pTool
,bool bToggle
);
virtual wxToolBarToolBase* CreateTool( int vId
,const wxString& rsLabel
,const wxBitmap& rBmpNormal
,const wxBitmap& rBmpDisabled
,wxItemKind eKind
,wxObject* pClientData
,const wxString& rsShortHelp
,const wxString& rsLongHelp
);
virtual wxToolBarToolBase* CreateTool(wxControl* pControl);
//
// Helpers
//
void DrawTool(wxToolBarToolBase *tool);
virtual void DrawTool( wxDC& rDC
,wxToolBarToolBase* pTool
);
virtual void SpringUpButton(int nIndex);
int m_nCurrentRowsOrColumns;
int m_nPressedTool;
int m_nCurrentTool;
wxCoord m_vLastX;
wxCoord m_vLastY;
wxCoord m_vMaxWidth;
wxCoord m_vMaxHeight;
wxCoord m_vXPos;
wxCoord m_vYPos;
wxCoord m_vTextX;
wxCoord m_vTextY;
private:
void LowerTool( wxToolBarToolBase* pTool
,bool bLower = TRUE
);
void RaiseTool( wxToolBarToolBase* pTool
,bool bRaise = TRUE
);
void OnTimer(wxTimerEvent& rEvent);
static bool m_bInitialized;
wxTimer m_vToolTimer;
wxTimer m_vToolExpTimer;
wxToolTip* m_pToolTip;
wxCoord m_vXMouse;
wxCoord m_vYMouse;
DECLARE_EVENT_TABLE()
DECLARE_DYNAMIC_CLASS(wxToolBar)
};
#endif // wxUSE_TOOLBAR
#endif
// _WX_TOOLBAR_H_