]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/gtk/tbargtk.h
Some refresh optimizations.
[wxWidgets.git] / include / wx / gtk / tbargtk.h
index adb04a56f0c31e8cec2d6ee44b8367a34893c4c1..7c46a9dc340260fbd37937eda1d99625f519d66c 100644 (file)
 // Name:        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
+    #pragma interface "tbargtk.h"
 #endif
 
-#include "wx/defs.h"
-#include "wx/control.h"
+#if wxUSE_TOOLBAR
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// wxToolBar
+// ----------------------------------------------------------------------------
 
-class wxToolBarTool;
-class wxToolBarGTK;
+class 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();
 
-//-----------------------------------------------------------------------------
-// constants
-//-----------------------------------------------------------------------------
+        Create(parent, id, pos, size, style, name);
+    }
 
-#define wxTOOL_STYLE_BUTTON          1
-#define wxTOOL_STYLE_SEPARATOR       2
+    bool Create( wxWindow *parent,
+                 wxWindowID id,
+                 const wxPoint& pos = wxDefaultPosition,
+                 const wxSize& size = wxDefaultSize,
+                 long style = 0,
+                 const wxString& name = wxToolBarNameStr );
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+    virtual ~wxToolBar();
 
-extern const char *wxToolBarNameStr;
+    // override base class virtuals
+    virtual void SetMargins(int x, int y);
+    virtual void SetToolSeparation(int separation);
 
-//-----------------------------------------------------------------------------
-// wxToolBarTool
-//-----------------------------------------------------------------------------
+    virtual wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y) const;
 
-class wxToolBarTool: public wxObject
-{
-  DECLARE_DYNAMIC_CLASS(wxToolBarTool)
-  
-  public:
-
-    wxToolBarTool(void) {}; 
-    wxToolBarTool( wxToolBarGTK *owner, const int theIndex = 0, 
-      const wxBitmap& bitmap1 = wxNullBitmap, const wxBitmap& bitmap2 = wxNullBitmap, 
-      const 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;
-    wxToolBarGTK         *m_owner;
-};
+    virtual void SetToolShortHelp(int id, const wxString& helpString);
 
-//-----------------------------------------------------------------------------
-// wxToolBarGTK
-//-----------------------------------------------------------------------------
+    virtual void SetWindowStyleFlag( long style );
+
+    // implementation from now on
+    // --------------------------
 
-class wxToolBarGTK: public wxControl
-{
-  DECLARE_DYNAMIC_CLASS(wxToolBarGTK)
-  
-  public:
-
-    wxToolBarGTK(void);
-    wxToolBarGTK( wxWindow *parent, const wxWindowID id, 
-      const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-      const long style = 0, const wxString& name = wxToolBarNameStr );
-   ~wxToolBarGTK(void);
-
-   bool Create( wxWindow *parent, const wxWindowID id, 
-     const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-     const 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( const int toolIndex, const wxBitmap& bitmap, 
-      const wxBitmap& pushedBitmap = wxNullBitmap, const bool toggle = FALSE,
-      const float xPos = -1, const float yPos = -1, wxObject *clientData = NULL,
-      const wxString& helpString1 = "", const wxString& helpString2 = "");
-    virtual void AddSeparator(void);
-    virtual void ClearTools(void);
-
-    virtual void EnableTool(const int toolIndex, const bool enable);
-    virtual void ToggleTool(const int toolIndex, const bool toggle); // toggle is TRUE if toggled on
-    virtual void SetToggle(const int toolIndex, const bool toggle); // Set this to be togglable (or not)
-    virtual wxObject *GetToolClientData(const int index) const;
-
-    virtual bool GetToolState(const int toolIndex) const;
-    virtual bool GetToolEnabled(const int toolIndex) const;
-
-    virtual void SetMargins(const int x, const int y);
-    void SetMargins(const wxSize& size) { SetMargins(size.x, size.y); };
-    virtual void SetToolPacking(const int packing);
-    virtual void SetToolSeparation(const int separation);
-  
-  public:
-  
     GtkToolbar   *m_toolbar;
-    wxList        m_tools;
-  
-  DECLARE_EVENT_TABLE()
+
+    GdkColor     *m_fg;
+    GdkColor     *m_bg;
+
+    bool          m_blockEvent;
+
+    void OnInternalIdle();
+
+protected:
+    // common part of all ctors
+    void Init();
+
+    // set the GTK toolbar style and orientation
+    void GtkSetStyle();
+
+    // 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);
+
+private:
+    DECLARE_DYNAMIC_CLASS(wxToolBar)
 };
 
-#endif
-    // __TBARGTKH__
+#endif // wxUSE_TOOLBAR
 
+#endif
+    // _WX_GTK_TBARGTK_H_