]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/tbarbase.h
OnEnter/OnDragOver API update (compiles, links, somewhat runs under wxGTK)
[wxWidgets.git] / include / wx / tbarbase.h
index b410ac6a829aa13e3bdfd422d308370fe309ec3f..48f37f7e08c8c2b7f78938c67e0d5861836150b0 100644 (file)
@@ -9,35 +9,47 @@
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifndef __TBARBASEH__
-#define __TBARBASEH__
+#ifndef _WX_TBARBASE_H_
+#define _WX_TBARBASE_H_
 
 #ifdef __GNUG__
 #pragma interface "tbarbase.h"
 #endif
 
 
 #ifdef __GNUG__
 #pragma interface "tbarbase.h"
 #endif
 
+#include "wx/setup.h"
 #include "wx/defs.h"
 
 #include "wx/defs.h"
 
-#if USE_TOOLBAR
-
 #include "wx/bitmap.h"
 #include "wx/list.h"
 #include "wx/control.h"
 
 #include "wx/bitmap.h"
 #include "wx/list.h"
 #include "wx/control.h"
 
-WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr;
+WXDLLEXPORT_DATA(extern const wxChar*) wxToolBarNameStr;
 WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize;
 WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition;
 
 #define wxTOOL_STYLE_BUTTON          1
 #define wxTOOL_STYLE_SEPARATOR       2
 
 WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize;
 WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition;
 
 #define wxTOOL_STYLE_BUTTON          1
 #define wxTOOL_STYLE_SEPARATOR       2
 
+#ifdef __WXGTK__
+class WXDLLEXPORT wxToolBar;
+#endif
+
 class WXDLLEXPORT wxToolBarTool: public wxObject
 {
   DECLARE_DYNAMIC_CLASS(wxToolBarTool)
  public:
 class WXDLLEXPORT wxToolBarTool: public wxObject
 {
   DECLARE_DYNAMIC_CLASS(wxToolBarTool)
  public:
-  wxToolBarTool(int theIndex = 0, const wxBitmap& bitmap1 = wxNullBitmap, const wxBitmap& bitmap2 = wxNullBitmap,
+  wxToolBarTool() {}
+#ifdef __WXGTK__
+  wxToolBarTool(wxToolBar *owner, 
+                int theIndex = 0, const wxBitmap& bitmap1 = wxNullBitmap, const wxBitmap& bitmap2 = wxNullBitmap,
+                bool toggle = FALSE, wxObject *clientData = (wxObject *) NULL, 
+                const wxString& shortHelpString = "", const wxString& longHelpString = "",
+                GtkWidget *pixmap = (GtkWidget *) NULL );
+#else
+  wxToolBarTool(int theIndex, const wxBitmap& bitmap1 = wxNullBitmap, const wxBitmap& bitmap2 = wxNullBitmap,
                 bool toggle = FALSE, long xPos = -1, long yPos = -1,
                 bool toggle = FALSE, long xPos = -1, long yPos = -1,
-                const wxString& shortHelpString = "", const wxString& longHelpString = "");
+                const wxString& shortHelpString = wxEmptyString, const wxString& longHelpString = wxEmptyString);
+#endif
   ~wxToolBarTool ();
   inline void SetSize( long w, long h ) { m_width = w; m_height = h; }
   inline long GetWidth () const { return m_width; }
   ~wxToolBarTool ();
   inline void SetSize( long w, long h ) { m_width = w; m_height = h; }
   inline long GetWidth () const { return m_width; }
@@ -47,10 +59,10 @@ public:
   int                   m_toolStyle;
   wxObject *            m_clientData;
   int                   m_index;
   int                   m_toolStyle;
   wxObject *            m_clientData;
   int                   m_index;
-  long                 m_x;
-  long                 m_y;
-  long                 m_width;
-  long                 m_height;
+  long                  m_x;
+  long                  m_y;
+  long                  m_width;
+  long                  m_height;
   bool                  m_toggleState;
   bool                  m_isToggle;
   bool                  m_deleteSecondBitmap;
   bool                  m_toggleState;
   bool                  m_isToggle;
   bool                  m_deleteSecondBitmap;
@@ -60,11 +72,16 @@ public:
   bool                  m_isMenuCommand;
   wxString              m_shortHelpString;
   wxString              m_longHelpString;
   bool                  m_isMenuCommand;
   wxString              m_shortHelpString;
   wxString              m_longHelpString;
+#ifdef __WXGTK__
+  wxToolBar            *m_owner;
+  GtkWidget            *m_item;
+  GtkWidget            *m_pixmap;
+#endif
 };
 
 class WXDLLEXPORT wxToolBarBase : public wxControl
 {
 };
 
 class WXDLLEXPORT wxToolBarBase : public wxControl
 {
-  DECLARE_DYNAMIC_CLASS(wxToolBarBase)
+  DECLARE_ABSTRACT_CLASS(wxToolBarBase)
  public:
 
   wxToolBarBase(void);
  public:
 
   wxToolBarBase(void);
@@ -87,7 +104,7 @@ class WXDLLEXPORT wxToolBarBase : public wxControl
   // 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, long xPos = -1, long yPos = -1, wxObject *clientData = NULL,
   // 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, long xPos = -1, long yPos = -1, wxObject *clientData = NULL,
-               const wxString& helpString1 = "", const wxString& helpString2 = "");
+               const wxString& helpString1 = wxEmptyString, const wxString& helpString2 = wxEmptyString);
   virtual void AddSeparator(void);
   virtual void ClearTools(void);
 
   virtual void AddSeparator(void);
   virtual void ClearTools(void);
 
@@ -114,7 +131,7 @@ class WXDLLEXPORT wxToolBarBase : public wxControl
   virtual wxString GetToolLongHelp(int toolIndex) const;
 
   virtual void SetMargins(int x, int y);
   virtual wxString GetToolLongHelp(int toolIndex) const;
 
   virtual void SetMargins(int x, int y);
-  inline void SetMargins(const wxSize& size) { SetMargins(size.x, size.y); }
+  inline void SetMargins(const wxSize& size) { SetMargins((int) size.x, (int) size.y); }
   virtual void SetToolPacking(int packing);
   virtual void SetToolSeparation(int separation);
 
   virtual void SetToolPacking(int packing);
   virtual void SetToolSeparation(int separation);
 
@@ -122,29 +139,35 @@ class WXDLLEXPORT wxToolBarBase : public wxControl
   inline virtual int GetToolPacking(void) { return m_toolPacking; }
   inline virtual int GetToolSeparation(void) { return m_toolSeparation; }
 
   inline virtual int GetToolPacking(void) { return m_toolPacking; }
   inline virtual int GetToolSeparation(void) { return m_toolSeparation; }
 
-  virtual void SetDefaultSize(const wxSize& size) { m_defaultWidth = size.x; m_defaultHeight = size.y; };
-  virtual wxSize GetDefaultSize(void) const { return wxSize(m_defaultWidth, m_defaultHeight); }
+  virtual void SetToolBitmapSize(const wxSize& size) { m_defaultWidth = size.x; m_defaultHeight = size.y; };
+  virtual wxSize GetToolBitmapSize(void) const { return wxSize(m_defaultWidth, m_defaultHeight); }
 
   // The button size (in some implementations) is bigger than the bitmap size: this returns
   // the total button size.
 
   // The button size (in some implementations) is bigger than the bitmap size: this returns
   // the total button size.
-  virtual wxSize GetDefaultButtonSize(void) const { return wxSize(m_defaultWidth, m_defaultHeight); } ;
+  virtual wxSize GetToolSize(void) const { return wxSize(m_defaultWidth, m_defaultHeight); } ;
 
   // Compatibility
 #if WXWIN_COMPATIBILITY
   inline void SetDefaultSize(int w, int h) { SetDefaultSize(wxSize(w, h)); }
   inline long GetDefaultWidth(void) const { return m_defaultWidth; }
   inline long GetDefaultHeight(void) const { return m_defaultHeight; }
 
   // Compatibility
 #if WXWIN_COMPATIBILITY
   inline void SetDefaultSize(int w, int h) { SetDefaultSize(wxSize(w, h)); }
   inline long GetDefaultWidth(void) const { return m_defaultWidth; }
   inline long GetDefaultHeight(void) const { return m_defaultHeight; }
-  inline int GetDefaultButtonWidth(void) const { return GetDefaultButtonSize().x; };
-  inline int GetDefaultButtonHeight(void) const { return GetDefaultButtonSize().y; };
+  inline int GetDefaultButtonWidth(void) const { return (int) GetDefaultButtonSize().x; };
+  inline int GetDefaultButtonHeight(void) const { return (int) GetDefaultButtonSize().y; };
+  virtual void SetDefaultSize(const wxSize& size) { SetToolBitmapSize(size); }
+  virtual wxSize GetDefaultSize(void) const { return GetToolBitmapSize(); }
+  virtual wxSize GetDefaultButtonSize(void) const { return GetToolSize(); }
 #endif
 
   // Lay the tools out
 #endif
 
   // Lay the tools out
-  virtual void Layout(void);
+  virtual void LayoutTools();
   
   // Add all the buttons: required for Win95.
   
   // Add all the buttons: required for Win95.
-  // TODO: unify API so there's no ambiguity
   virtual bool CreateTools(void) { return TRUE; }
 
   virtual bool CreateTools(void) { return TRUE; }
 
+  // Calls the appropriate function after tools have been created.
+  // E.g. Layout, or CreateTools.
+  virtual bool Realize() = 0;
+
   void Command(wxCommandEvent& event);
 
   // SCROLLING: this has to be copied from wxScrolledWindow since wxToolBarBase
   void Command(wxCommandEvent& event);
 
   // SCROLLING: this has to be copied from wxScrolledWindow since wxToolBarBase
@@ -178,26 +201,20 @@ class WXDLLEXPORT wxToolBarBase : public wxControl
   // Do the toolbar button updates (check for EVT_UPDATE_UI handlers)
   virtual void DoToolbarUpdates(void);
 
   // Do the toolbar button updates (check for EVT_UPDATE_UI handlers)
   virtual void DoToolbarUpdates(void);
 
-/*
-  virtual void CalcScrolledPosition(int x, int y, int *xx, int *yy) const ;
-  virtual void CalcUnscrolledPosition(int x, int y, long *xx, long *yy) const ;
-*/
+  inline void SetMaxRowsCols(int rows, int cols) { m_maxRows = rows; m_maxCols = cols; }
+  inline int GetMaxRows() const { return m_maxRows; }
+  inline int GetMaxCols() const { return m_maxCols; }
 
   void OnScroll(wxScrollEvent& event);
   void OnSize(wxSizeEvent& event);
   void OnIdle(wxIdleEvent& event);
 
 
   void OnScroll(wxScrollEvent& event);
   void OnSize(wxSizeEvent& event);
   void OnIdle(wxIdleEvent& event);
 
-  // Required to force normal cursor-setting behaviour in Windows
-#ifdef __WINDOWS__
-  virtual void MSWOnMouseMove(int x, int y, const WXUINT flags);
-#endif
-
  protected:
   wxList                m_tools;
  protected:
   wxList                m_tools;
-  int                   m_tilingDirection;
-  int                   m_rowsOrColumns;
-  int                   m_currentRowsOrColumns;
-  long                  m_lastX, m_lastY;
+//  int                   m_tilingDirection;
+//  int                   m_rowsOrColumns;
+  int                   m_maxRows;
+  int                   m_maxCols;
   long                  m_maxWidth, m_maxHeight;
   int                   m_currentTool; // Tool where mouse currently is
   int                   m_pressedTool; // Tool where mouse pressed
   long                  m_maxWidth, m_maxHeight;
   int                   m_currentTool; // Tool where mouse currently is
   int                   m_pressedTool; // Tool where mouse pressed
@@ -234,7 +251,6 @@ public:
     DECLARE_EVENT_TABLE()
 };
 
     DECLARE_EVENT_TABLE()
 };
 
-#endif // USE_TOOLBAR
 #endif
 #endif
-    // __TBARBASEH__
+    // _WX_TBARBASE_H_