X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/bb312b54f6435cb677589ec4edfcbb9b00fbde1b..d642db66a5efc82d374b813022c72ba88bc50839:/include/wx/univ/toolbar.h diff --git a/include/wx/univ/toolbar.h b/include/wx/univ/toolbar.h index d797ffa0e1..4827311177 100644 --- a/include/wx/univ/toolbar.h +++ b/include/wx/univ/toolbar.h @@ -6,58 +6,42 @@ // Created: 10.09.00 // RCS-ID: $Id$ // Copyright: (c) Robert Roebling -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifndef _WX_UNIV_TOOLBAR_H_ #define _WX_UNIV_TOOLBAR_H_ -#ifdef __GNUG__ - #pragma interface "univtoolbar.h" -#endif +#include "wx/button.h" // for wxStdButtonInputHandler -#include "wx/window.h" +class WXDLLIMPEXP_FWD_CORE wxToolBarTool; // ---------------------------------------------------------------------------- -// wxToolbar +// the actions supported by this control // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxToolBarTool : public wxToolBarToolBase -{ -public: - wxToolBarTool( wxToolBarBase *tbar = (wxToolBarBase *)NULL, - int id = wxID_SEPARATOR, - const wxBitmap& bitmap1 = wxNullBitmap, - const wxBitmap& bitmap2 = wxNullBitmap, - bool toggle = FALSE, - wxObject *clientData = (wxObject *) NULL, - const wxString& shortHelpString = wxEmptyString, - const wxString& longHelpString = wxEmptyString ) : - wxToolBarToolBase( tbar, id, bitmap1, bitmap2, toggle, clientData, - shortHelpString, longHelpString ) - { - m_isDown = FALSE; - m_x = -1; - m_y = -1; - } +#define wxACTION_TOOLBAR_TOGGLE wxACTION_BUTTON_TOGGLE +#define wxACTION_TOOLBAR_PRESS wxACTION_BUTTON_PRESS +#define wxACTION_TOOLBAR_RELEASE wxACTION_BUTTON_RELEASE +#define wxACTION_TOOLBAR_CLICK wxACTION_BUTTON_CLICK +#define wxACTION_TOOLBAR_ENTER wxT("enter") // highlight the tool +#define wxACTION_TOOLBAR_LEAVE wxT("leave") // unhighlight the tool -public: - bool m_isDown; - int m_x; - int m_y; -}; +// ---------------------------------------------------------------------------- +// wxToolBar +// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxToolBar: public wxToolBarBase -{ +class WXDLLIMPEXP_CORE wxToolBar : public wxToolBarBase +{ public: // construction/destruction wxToolBar() { Init(); } - wxToolBar( wxWindow *parent, - wxWindowID id, - const wxPoint& pos = wxDefaultPosition, - const wxSize& size = wxDefaultSize, - long style = 0, - const wxString& name = wxToolBarNameStr ) + wxToolBar(wxWindow *parent, + wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = 0, + const wxString& name = wxToolBarNameStr) { Init(); @@ -70,17 +54,30 @@ public: const wxSize& size = wxDefaultSize, long style = 0, const wxString& name = wxToolBarNameStr ); - -#ifdef __DARWIN__ - virtual ~wxToolBar() { } -#endif + + virtual ~wxToolBar(); virtual bool Realize(); + virtual void SetWindowStyleFlag( long style ); + virtual wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y) const; virtual void SetToolShortHelp(int id, const wxString& helpString); + virtual void SetMargins(int x, int y); + void SetMargins(const wxSize& size) + { SetMargins((int) size.x, (int) size.y); } + + virtual bool PerformAction(const wxControlAction& action, + long numArg = -1, + const wxString& strArg = wxEmptyString); + static wxInputHandler *GetStdInputHandler(wxInputHandler *handlerDef); + virtual wxInputHandler *DoGetStdInputHandler(wxInputHandler *handlerDef) + { + return GetStdInputHandler(handlerDef); + } + protected: // common part of all ctors void Init(); @@ -94,29 +91,49 @@ protected: virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle); virtual wxToolBarToolBase *CreateTool(int id, - const wxBitmap& bitmap1, - const wxBitmap& bitmap2, - bool toggle, + const wxString& label, + const wxBitmap& bmpNormal, + const wxBitmap& bmpDisabled, + wxItemKind kind, wxObject *clientData, - const wxString& shortHelpString, - const wxString& longHelpString); - virtual wxToolBarToolBase *CreateTool(wxControl *control); + const wxString& shortHelp, + const wxString& longHelp); + virtual wxToolBarToolBase *CreateTool(wxControl *control, + const wxString& label); + + virtual wxSize DoGetBestClientSize() const; + virtual void DoSetSize(int x, int y, + int width, int height, + int sizeFlags = wxSIZE_AUTO); + virtual void DoDraw(wxControlRenderer *renderer); + + // get the bounding rect for the given tool + wxRect GetToolRect(wxToolBarToolBase *tool) const; + + // redraw the given tool + void RefreshTool(wxToolBarToolBase *tool); + + // (re)calculate the tool positions, should only be called if it is + // necessary to do it, i.e. m_needsLayout == true + void DoLayout(); + + // get the rect limits depending on the orientation: top/bottom for a + // vertical toolbar, left/right for a horizontal one + void GetRectLimits(const wxRect& rect, wxCoord *start, wxCoord *end) const; private: - wxToolBarTool *m_captured; - wxToolBarTool *m_underMouse; - wxCoord m_maxWidth, m_maxHeight; - -private: - void OnMouse( wxMouseEvent &event ); - void OnEnter( wxMouseEvent &event ); - void OnLeave( wxMouseEvent &event ); - void RefreshTool( wxToolBarTool *tool ); - void DrawToolBarTool( wxToolBarTool *tool, wxDC &dc, bool down ); - void OnPaint( wxPaintEvent &event ); + // have we calculated the positions of our tools? + bool m_needsLayout; + + // the width of a separator + wxCoord m_widthSeparator; + + // the total size of all toolbar elements + wxCoord m_maxWidth, + m_maxHeight; private: - DECLARE_EVENT_TABLE() + DECLARE_DYNAMIC_CLASS(wxToolBar) }; #endif // _WX_UNIV_TOOLBAR_H_