]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/gtk1/tbargtk.h
Prevent seg fault for older GTK+
[wxWidgets.git] / include / wx / gtk1 / tbargtk.h
index 369ca4e9ca3e7343cf29e4abd35b35351f0e4dde..9055c1fc1e4b3d07b48218590d78754ac75258c1 100644 (file)
 /////////////////////////////////////////////////////////////////////////////
-// Name:        tbargtk.h
+// Name:        wx/gtk1/tbargtk.h
 // Purpose:     GTK toolbar
 // Author:      Robert Roebling
-// Modified by:
-// Created:     01/02/97
 // 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
+#if wxUSE_TOOLBAR
 
-#include "wx/defs.h"
-#include "wx/control.h"
+// ----------------------------------------------------------------------------
+// wxToolBar
+// ----------------------------------------------------------------------------
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+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 )
+    {
+        Init();
+
+        Create(parent, id, pos, size, style, name);
+    }
+
+    bool Create( wxWindow *parent,
+                 wxWindowID id,
+                 const wxPoint& pos = wxDefaultPosition,
+                 const wxSize& size = wxDefaultSize,
+                 long style = 0,
+                 const wxString& name = wxToolBarNameStr );
+
+    virtual ~wxToolBar();
+
+    // override base class virtuals
+    virtual void SetMargins(int x, int y);
+    virtual void SetToolSeparation(int separation);
 
-class wxToolBarTool;
-class wxToolBar;
+    virtual wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y) const;
 
-//-----------------------------------------------------------------------------
-// constants
-//-----------------------------------------------------------------------------
+    virtual void SetToolShortHelp(int id, const wxString& helpString);
 
-#define wxTOOL_STYLE_BUTTON          1
-#define wxTOOL_STYLE_SEPARATOR       2
+    virtual void SetWindowStyleFlag( long style );
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+    static wxVisualAttributes
+    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 
-extern const char *wxToolBarNameStr;
+    // implementation from now on
+    // --------------------------
 
-//-----------------------------------------------------------------------------
-// wxToolBarTool
-//-----------------------------------------------------------------------------
+    GtkToolbar   *m_toolbar;
 
-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 = "",
-      GtkWidget *item = NULL );
-   ~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;
-    GtkWidget            *m_item;
-};
+    bool          m_blockEvent;
 
-//-----------------------------------------------------------------------------
-// wxToolBar
-//-----------------------------------------------------------------------------
+    void OnInternalIdle();
 
-class wxToolBar: public wxControl
-{
-  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;
+protected:
+    // common part of all ctors
+    void Init();
 
-    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);
+    // set the GTK toolbar style and orientation
+    void GtkSetStyle();
 
-  public:
-  
-    GtkToolbar   *m_toolbar;
-    wxList        m_tools;
-  
-  DECLARE_EVENT_TABLE()
+    // 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:
+    DECLARE_DYNAMIC_CLASS(wxToolBar)
 };
 
-#endif
-    // __TBARGTKH__
+#endif // wxUSE_TOOLBAR
 
+#endif
+    // _WX_GTK_TBARGTK_H_