]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/gtk/tbargtk.h
fixed bug with the caret positioning after SetValue() introduced by the last commit
[wxWidgets.git] / include / wx / gtk / tbargtk.h
index 3d7c30d434c9522e34e8bc7ddcec3b1fd3e4d042..5f02de2186da3a9d2e446da4c29d8add8663bea7 100644 (file)
 // Author:      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
+    #pragma interface "tbargtk.h"
 #endif
 
-#include "wx/defs.h"
-
 #if wxUSE_TOOLBAR
 
-#include "wx/control.h"
-#include "wx/bitmap.h"
-#include "wx/tbarbase.h"
-
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// wxToolBar
+// ----------------------------------------------------------------------------
 
-class wxToolBarTool;
-class wxToolBar;
+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();
+
+        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);
 
-//-----------------------------------------------------------------------------
-// constants
-//-----------------------------------------------------------------------------
+    virtual wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y) const;
 
-#define wxTOOL_STYLE_BUTTON          1
-#define wxTOOL_STYLE_SEPARATOR       2
+    virtual void SetToolShortHelp(int id, const wxString& helpString);
 
-//-----------------------------------------------------------------------------
-// global data
-//-----------------------------------------------------------------------------
+    // implementation from now on
+    // --------------------------
 
-extern const wxChar *wxToolBarNameStr;
+    GtkToolbar   *m_toolbar;
 
-//-----------------------------------------------------------------------------
-// wxToolBar
-//-----------------------------------------------------------------------------
+    GdkColor     *m_fg;
+    GdkColor     *m_bg;
 
-class wxToolBar: public wxControl
-{
-public:
-    wxToolBar();
-    wxToolBar( wxWindow *parent, wxWindowID id, 
-      const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-      long style = 0, const wxString& name = wxToolBarNameStr );
-   ~wxToolBar();
-
-   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,
-      wxCoord xPos = -1, wxCoord yPos = -1, wxObject *clientData = (wxObject *)NULL,
-      const wxString& helpString1 = "", const wxString& helpString2 = "");
-    
-    // Add arbitrary control
-    virtual bool AddControl(wxControl *control);
-      
-    // Add space
-    virtual void AddSeparator();
-    
-    // Delete tool by index (=id)
-    virtual bool DeleteTool(int toolIndex);
-
-    // Delete all tools
-    virtual void ClearTools();
-    
-    // Has to be called after adding tools or changing something
-    virtual bool Realize();
-
-    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;
+    bool          m_blockEvent;
 
-    virtual void SetMargins(int x, int y);
-    void SetMargins(const wxSize& size) { SetMargins(size.x, size.y); };
-    virtual wxSize GetToolMargins(void) { return wxSize(m_xMargin, m_yMargin); }
-    
-    virtual void SetToolPacking(int packing);
-    virtual void SetToolSeparation(int separation);
-    virtual int GetToolPacking();
-    virtual int GetToolSeparation();
-    
-    virtual wxString GetToolLongHelp(int toolIndex);
-    virtual wxString GetToolShortHelp(int toolIndex);
-    
-    virtual void SetToolLongHelp(int toolIndex, const wxString& helpString);
-    virtual void SetToolShortHelp(int toolIndex, const wxString& helpString);
-    
-    void OnIdle( wxIdleEvent &ievent );
-
-  // implementation
-  
-    GtkToolbar   *m_toolbar;
-    int           m_separation;
-    wxList        m_tools;
-    
-    GdkColor      *m_fg;
-    GdkColor      *m_bg;
-    int           m_xMargin;
-    int           m_yMargin;
-    bool          m_hasToolAlready;
-    bool          m_blockNextEvent;
-    
     void OnInternalIdle();
-    
+
+protected:
+    // common part of all ctors
+    void Init();
+
+    // 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 wxBitmap& bitmap1,
+                                          const wxBitmap& bitmap2,
+                                          bool toggle,
+                                          wxObject *clientData,
+                                          const wxString& shortHelpString,
+                                          const wxString& longHelpString);
+    virtual wxToolBarToolBase *CreateTool(wxControl *control);
+
 private:
-    DECLARE_EVENT_TABLE()
     DECLARE_DYNAMIC_CLASS(wxToolBar)
 };
 
-#endif
+#endif // wxUSE_TOOLBAR
 
 #endif
-    // __TBARGTKH__
+    // _WX_GTK_TBARGTK_H_