#include "wx/defs.h"
+#if wxUSE_TOOLBAR
+
#include "wx/bitmap.h"
#include "wx/list.h"
#include "wx/control.h"
wxToolBarBase *GetToolBar() const { return m_tbar; }
// style
- int IsButton() const { return m_toolStyle == wxTOOL_STYLE_BUTTON; }
- int IsControl() const { return m_toolStyle == wxTOOL_STYLE_CONTROL; }
- int IsSeparator() const { return m_toolStyle == wxTOOL_STYLE_SEPARATOR; }
+ bool IsButton() const { return m_toolStyle == wxTOOL_STYLE_BUTTON; }
+ bool IsControl() const { return m_toolStyle == wxTOOL_STYLE_CONTROL; }
+ bool IsSeparator() const { return m_toolStyle == wxTOOL_STYLE_SEPARATOR; }
int GetStyle() const { return m_toolStyle; }
// state
wxObject *GetClientData() const
{
- wxASSERT_MSG( m_toolStyle != wxTOOL_STYLE_CONTROL,
- _T("this toolbar tool doesn't have client data") );
-
- return m_clientData;
+ if ( m_toolStyle == wxTOOL_STYLE_CONTROL )
+ {
+ return (wxObject*)m_control->GetClientData();
+ }
+ else
+ {
+ return m_clientData;
+ }
}
// modifiers: return TRUE if the state really changed
void SetBitmap1(const wxBitmap& bmp) { m_bitmap1 = bmp; }
void SetBitmap2(const wxBitmap& bmp) { m_bitmap2 = bmp; }
+ void SetClientData(wxObject *clientData)
+ {
+ if ( m_toolStyle == wxTOOL_STYLE_CONTROL )
+ {
+ m_control->SetClientData(clientData);
+ }
+ else
+ {
+ m_clientData = clientData;
+ }
+ }
+
// add tool to/remove it from a toolbar
virtual void Detach() { m_tbar = (wxToolBarBase *)NULL; }
virtual void Attach(wxToolBarBase *tbar) { m_tbar = tbar; }
};
// a list of toolbar tools
-WX_DECLARE_LIST(wxToolBarToolBase, wxToolBarToolsList);
+WX_DECLARE_EXPORTED_LIST(wxToolBarToolBase, wxToolBarToolsList);
// ----------------------------------------------------------------------------
// the base class for all toolbars
// toolbar construction
// --------------------
+ // the most commonly used version of AddTool()
+ wxToolBarToolBase *AddTool(int id,
+ const wxBitmap& bitmap,
+ const wxString& shortHelpString = wxEmptyString,
+ const wxString& longHelpString = wxEmptyString)
+ {
+ return AddTool(id, bitmap, wxNullBitmap, FALSE, NULL,
+ shortHelpString, longHelpString);
+ }
+
// 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.
wxToolBarToolBase *AddTool(int id,
const wxBitmap& bitmap,
- const wxBitmap& pushedBitmap = wxNullBitmap,
+ const wxBitmap& pushedBitmap,
bool toggle = FALSE,
wxObject *clientData = NULL,
const wxString& shortHelpString = wxEmptyString,
// Set this to be togglable (or not)
virtual void SetToggle(int id, bool toggle);
- virtual wxObject *GetToolClientData(int index) const;
+ // set/get tools client data (not for controls)
+ virtual wxObject *GetToolClientData(int id) const;
+ virtual void SetToolClientData(int id, wxObject *clientData);
// return TRUE if the tool is toggled
virtual bool GetToolState(int id) const;
virtual void SetToolSeparation(int separation)
{ m_toolSeparation = separation; }
- virtual wxSize GetToolMargins() { return wxSize(m_xMargin, m_yMargin); }
+ virtual wxSize GetToolMargins() { return GetMargins(); }
virtual int GetToolPacking() { return m_toolPacking; }
virtual int GetToolSeparation() { return m_toolSeparation; }
+ // for compatibility
+ wxSize GetMargins() const { return wxSize(m_xMargin, m_yMargin); }
+
// toolbar geometry
// ----------------
// Do the toolbar button updates (check for EVT_UPDATE_UI handlers)
virtual void DoToolbarUpdates();
+ // don't want toolbars to accept the focus
+ virtual bool AcceptsFocus() const { return FALSE; }
+
protected:
// to implement in derived classes
// -------------------------------
private:
DECLARE_EVENT_TABLE()
+ DECLARE_CLASS(wxToolBarBase)
};
+#endif // wxUSE_TOOLBAR
+
#endif
// _WX_TBARBASE_H_