]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/univ/toolbar.h
Support using GetTextExtent() with empty string to get descent in wxOSX.
[wxWidgets.git] / include / wx / univ / toolbar.h
index ff08ce21c0c8d9481fc4b78c365f3f74c0a9e403..4827311177e5abf862e664653fc99a0181f1b0cb 100644 (file)
@@ -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,26 +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;
-    wxCoord          m_maxWidth, m_maxHeight;
-    
-private:
-    void OnMouse( 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_