]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/gtk/tbargtk.h
Tried to make wxListBox::Update() work
[wxWidgets.git] / include / wx / gtk / tbargtk.h
index 39545eb984255743e3dda278ee51534246a29b36..279f5e924ea4729bc44394f198ac11e53c9af5ee 100644 (file)
 // Author:      Robert Roebling
 // RCS-ID:      $Id$
 // Copyright:   (c) Robert Roebling
 // 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
-#endif
-
-#include "wx/defs.h"
-#include "wx/control.h"
-#include "wx/bitmap.h"
-#include "wx/tbarbase.h"
+#if wxUSE_TOOLBAR
 
 
-//-----------------------------------------------------------------------------
-// classes
-//-----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+// wxToolBar
+// ----------------------------------------------------------------------------
 
 
-class wxToolBarTool;
-class wxToolBar;
+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 = 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 = 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
-//-----------------------------------------------------------------------------
+    virtual void SetWindowStyleFlag( long style );
 
 
-extern const wxChar *wxToolBarNameStr;
+    virtual void SetToolNormalBitmap(int id, const wxBitmap& bitmap);
+    virtual void SetToolDisabledBitmap(int id, const wxBitmap& bitmap);
 
 
-//-----------------------------------------------------------------------------
-// wxToolBar
-//-----------------------------------------------------------------------------
+    static wxVisualAttributes
+    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
 
 
-class wxToolBar: public wxControl
-{
-  DECLARE_EVENT_TABLE()
-  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 = (wxObject *)NULL,
-      const wxString& helpString1 = "", const wxString& helpString2 = "");
-    virtual void AddSeparator(void);
-    virtual void ClearTools(void);
-    
-    virtual bool 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;
+    // implementation from now on
+    // --------------------------
 
 
-    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;
     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_blockEvent;
+
+    void OnInternalIdle();
+
+protected:
+    // common part of all ctors
+    void Init();
+
+    // set the GTK toolbar style and orientation
+    void GtkSetStyle();
+
+    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:
+    DECLARE_DYNAMIC_CLASS(wxToolBar)
 };
 
 };
 
+#endif // wxUSE_TOOLBAR
+
 #endif
 #endif
-    // __TBARGTKH__
+    // _WX_GTK_TBARGTK_H_