]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/gtk/tbargtk.h
Automatically adjust toolbar's tool size if the provided bitmaps
[wxWidgets.git] / include / wx / gtk / tbargtk.h
index b398eb45203c8aedfad2bb4b8a05ff6fd40cc558..07bff7128a392a882b595d133a685ddff5460d85 100644 (file)
 // Name:        tbargtk.h
 // Purpose:     GTK toolbar
 // Author:      Robert Roebling
 // Name:        tbargtk.h
 // Purpose:     GTK toolbar
 // Author:      Robert Roebling
-// Modified by:
-// Created:     01/02/97
 // RCS-ID:      $Id$
 // Copyright:   (c) Robert Roebling
 // RCS-ID:      $Id$
 // Copyright:   (c) Robert Roebling
-// Licence:    wxWindows licence
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 /////////////////////////////////////////////////////////////////////////////
 
-#ifndef __TBARGTKH__
-#define __TBARGTKH__
+#ifndef _WX_GTK_TBARGTK_H_
+#define _WX_GTK_TBARGTK_H_
 
 
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-#include "wx/defs.h"
-#include "wx/control.h"
-
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
-
-class wxToolBarTool;
-class wxToolBar;
-
-//-----------------------------------------------------------------------------
-// constants
-//-----------------------------------------------------------------------------
-
-#define wxTOOL_STYLE_BUTTON          1
-#define wxTOOL_STYLE_SEPARATOR       2
-
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+#if wxUSE_TOOLBAR
 
 
-extern const char *wxToolBarNameStr;
-
-//-----------------------------------------------------------------------------
-// wxToolBarTool
-//-----------------------------------------------------------------------------
-
-class wxToolBarTool: public wxObject
-{
-  DECLARE_DYNAMIC_CLASS(wxToolBarTool)
-  
-  public:
-
-    wxToolBarTool(void) {}; 
-    wxToolBarTool( wxToolBar *owner, int theIndex = 0, 
-      const wxBitmap& bitmap1 = wxNullBitmap, const wxBitmap& bitmap2 = wxNullBitmap,
-      bool toggle = FALSE, wxObject *clientData = NULL, 
-      const wxString& shortHelpString = "", const wxString& longHelpString = "");
-   ~wxToolBarTool(void);
-
-  public:
-  
-    int                   m_toolStyle;
-    wxObject             *m_clientData;
-    int                   m_index;
-    bool                  m_toggleState;
-    bool                  m_isToggle;
-    bool                  m_deleteSecondBitmap;
-    bool                  m_enabled;
-    wxBitmap              m_bitmap1;
-    wxBitmap              m_bitmap2;
-    bool                  m_isMenuCommand;
-    wxString              m_shortHelpString;
-    wxString              m_longHelpString;
-    wxToolBar            *m_owner;
-};
-
-//-----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
 // wxToolBar
 // wxToolBar
-//-----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
 
 
-class wxToolBar: public wxControl
+class WXDLLIMPEXP_CORE wxToolBar : public wxToolBarBase
 {
 {
-  DECLARE_DYNAMIC_CLASS(wxToolBar)
-  
-  public:
-
-    wxToolBar(void);
-    wxToolBar( wxWindow *parent, wxWindowID id, 
-      const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-      long style = 0, const wxString& name = wxToolBarNameStr );
-   ~wxToolBar(void);
-
-   bool Create( wxWindow *parent, wxWindowID id, 
-     const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-     long style = 0, const wxString& name = wxToolBarNameStr);
-
-    // Only allow toggle if returns TRUE. Call when left button up.
-    virtual bool OnLeftClick(int toolIndex, bool toggleDown);
-
-    // Call when right button down.
-    virtual void OnRightClick(int toolIndex, float x, float y);
-
-    // Called when the mouse cursor enters a tool bitmap.
-    // Argument is -1 if mouse is exiting the toolbar.
-    virtual void OnMouseEnter(int toolIndex);
-
-    // 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.
-    virtual wxToolBarTool *AddTool( int toolIndex, const wxBitmap& bitmap, 
-      const wxBitmap& pushedBitmap = wxNullBitmap, bool toggle = FALSE,
-      float xPos = -1, float yPos = -1, wxObject *clientData = NULL,
-      const wxString& helpString1 = "", const wxString& helpString2 = "");
-    virtual void AddSeparator(void);
-    virtual void ClearTools(void);
-    
-    virtual void Realize(void);
-
-    virtual void EnableTool(int toolIndex, bool enable);
-    virtual void ToggleTool(int toolIndex, bool toggle); // toggle is TRUE if toggled on
-    virtual wxObject *GetToolClientData(int index) const;
-
-    virtual bool GetToolState(int toolIndex) const;
-    virtual bool GetToolEnabled(int toolIndex) const;
-
-    virtual void SetMargins(int x, int y);
-    void SetMargins(const wxSize& size) { SetMargins(size.x, size.y); };
-    virtual void SetToolPacking(int packing);
-    virtual void SetToolSeparation(int separation);
-
-  public:
-  
-    GtkToolbar   *m_toolbar;
-    wxList        m_tools;
-  
-  DECLARE_EVENT_TABLE()
+public:
+    // construction/destruction
+    wxToolBar() { Init(); }
+    wxToolBar( wxWindow *parent,
+               wxWindowID id,
+               const wxPoint& pos = wxDefaultPosition,
+               const wxSize& size = wxDefaultSize,
+               long style = wxTB_HORIZONTAL,
+               const wxString& name = wxToolBarNameStr )
+    {
+        Init();
+
+        Create(parent, id, pos, size, style, name);
+    }
+
+    bool Create( wxWindow *parent,
+                 wxWindowID id,
+                 const wxPoint& pos = wxDefaultPosition,
+                 const wxSize& size = wxDefaultSize,
+                 long style = wxTB_HORIZONTAL,
+                 const wxString& name = wxToolBarNameStr );
+
+    virtual ~wxToolBar();
+
+    virtual wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y) const;
+
+    virtual void SetToolShortHelp(int id, const wxString& helpString);
+
+    virtual void SetWindowStyleFlag( long style );
+
+    virtual void SetToolNormalBitmap(int id, const wxBitmap& bitmap);
+    virtual void SetToolDisabledBitmap(int id, const wxBitmap& bitmap);
+
+    static wxVisualAttributes
+    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
+    // implementation from now on
+    // --------------------------
+
+    void OnInternalIdle();
+
+protected:
+    virtual wxSize DoGetBestSize() const;
+    virtual GdkWindow *GTKGetWindow(wxArrayGdkWindows& windows) const;
+
+    // implement base class pure virtuals
+    virtual bool DoInsertTool(size_t pos, wxToolBarToolBase *tool);
+    virtual bool DoDeleteTool(size_t pos, wxToolBarToolBase *tool);
+
+    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& bitmap1,
+                                          const wxBitmap& bitmap2,
+                                          wxItemKind kind,
+                                          wxObject *clientData,
+                                          const wxString& shortHelpString,
+                                          const wxString& longHelpString);
+    virtual wxToolBarToolBase *CreateTool(wxControl *control,
+                                          const wxString& label);
+
+private:
+    void Init();
+    void GtkSetStyle();
+    GSList* GetRadioGroup(size_t pos);
+    virtual void AddChildGTK(wxWindowGTK* child);
+
+    GtkToolbar* m_toolbar;
+    GtkTooltips* m_tooltips;
+
+    DECLARE_DYNAMIC_CLASS(wxToolBar)
 };
 
 };
 
-#endif
-    // __TBARGTKH__
+#endif // wxUSE_TOOLBAR
 
 
+#endif
+    // _WX_GTK_TBARGTK_H_