]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/tbarbase.h
Since wxPanel is now AutoLayout aware, removed indirect auto layouting
[wxWidgets.git] / include / wx / tbarbase.h
index d12aec5677747e10b71b7f76834001d1ada46b1f..48f37f7e08c8c2b7f78938c67e0d5861836150b0 100644 (file)
@@ -9,37 +9,49 @@
 // Licence:    wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifndef __TBARBASEH__
-#define __TBARBASEH__
+#ifndef _WX_TBARBASE_H_
+#define _WX_TBARBASE_H_
 
 #ifdef __GNUG__
 #pragma interface "tbarbase.h"
 #endif
 
+#include "wx/setup.h"
 #include "wx/defs.h"
 
-#if USE_TOOLBAR
-
 #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
 
+#ifdef __WXGTK__
+class WXDLLEXPORT wxToolBar;
+#endif
+
 class WXDLLEXPORT wxToolBarTool: public wxObject
 {
   DECLARE_DYNAMIC_CLASS(wxToolBarTool)
  public:
-  wxToolBarTool(const int theIndex = 0, const wxBitmap& bitmap1 = wxNullBitmap, const wxBitmap& bitmap2 = wxNullBitmap,
-                const bool toggle = FALSE, const long xPos = -1, const long yPos = -1,
-                const wxString& shortHelpString = "", const wxString& longHelpString = "");
+  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,
+                const wxString& shortHelpString = wxEmptyString, const wxString& longHelpString = wxEmptyString);
+#endif
   ~wxToolBarTool ();
-  inline void SetSize( const long w, const long h ) { m_width = w; m_height = h; }
+  inline void SetSize( long w, long h ) { m_width = w; m_height = h; }
   inline long GetWidth () const { return m_width; }
   inline long GetHeight () const { return m_height; }
 
@@ -47,10 +59,10 @@ public:
   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;
@@ -60,11 +72,16 @@ public:
   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
 {
-  DECLARE_DYNAMIC_CLASS(wxToolBarBase)
+  DECLARE_ABSTRACT_CLASS(wxToolBarBase)
  public:
 
   wxToolBarBase(void);
@@ -85,16 +102,16 @@ class WXDLLEXPORT wxToolBarBase : public wxControl
   // 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 long xPos = -1, const long yPos = -1, wxObject *clientData = NULL,
-               const wxString& helpString1 = "", const wxString& helpString2 = "");
+  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 = wxEmptyString, const wxString& helpString2 = wxEmptyString);
   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 void EnableTool(int toolIndex, bool enable);
+  virtual void ToggleTool(int toolIndex, bool toggle); // toggle is TRUE if toggled on
+  virtual void SetToggle(int toolIndex, bool toggle); // Set this to be togglable (or not)
+  virtual wxObject *GetToolClientData(int index) const;
   inline wxList& GetTools(void) const { return (wxList&) m_tools; }
 
   // After the toolbar has initialized, this is the size the tools take up
@@ -104,47 +121,53 @@ class WXDLLEXPORT wxToolBarBase : public wxControl
 #endif
   virtual wxSize GetMaxSize ( void ) const;
 
-  virtual bool GetToolState(const int toolIndex) const;
-  virtual bool GetToolEnabled(const int toolIndex) const;
-  virtual wxToolBarTool *FindToolForPosition(const long x, const long y) const;
+  virtual bool GetToolState(int toolIndex) const;
+  virtual bool GetToolEnabled(int toolIndex) const;
+  virtual wxToolBarTool *FindToolForPosition(long x, long y) const;
 
-  virtual void SetToolShortHelp(const int toolIndex, const wxString& helpString);
-  virtual wxString GetToolShortHelp(const int toolIndex) const;
-  virtual void SetToolLongHelp(const int toolIndex, const wxString& helpString);
-  virtual wxString GetToolLongHelp(const int toolIndex) const;
+  virtual void SetToolShortHelp(int toolIndex, const wxString& helpString);
+  virtual wxString GetToolShortHelp(int toolIndex) const;
+  virtual void SetToolLongHelp(int toolIndex, const wxString& helpString);
+  virtual wxString GetToolLongHelp(int toolIndex) const;
 
-  virtual void SetMargins(const int x, const int y);
-  inline void SetMargins(const wxSize& size) { SetMargins(size.x, size.y); }
-  virtual void SetToolPacking(const int packing);
-  virtual void SetToolSeparation(const int separation);
+  virtual void SetMargins(int x, int y);
+  inline void SetMargins(const wxSize& size) { SetMargins((int) size.x, (int) size.y); }
+  virtual void SetToolPacking(int packing);
+  virtual void SetToolSeparation(int separation);
 
   inline virtual wxSize GetToolMargins(void) { return wxSize(m_xMargin, m_yMargin); }
   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.
-  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(const int w, const int h) { SetDefaultSize(wxSize(w, h)); }
+  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
-  virtual void Layout(void);
+  virtual void LayoutTools();
   
   // Add all the buttons: required for Win95.
-  // TODO: unify API so there's no ambiguity
   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
@@ -153,14 +176,14 @@ class WXDLLEXPORT wxToolBarBase : public wxControl
 
   // Number of pixels per user unit (0 or -1 for no scrollbar)
   // Length of virtual canvas in user units
-  virtual void SetScrollbars(const int horizontal, const int vertical,
-                             const int x_length, const int y_length,
-                             const int x_pos = 0, const int y_pos = 0);
+  virtual void SetScrollbars(int horizontal, int vertical,
+                             int x_length, int y_length,
+                             int x_pos = 0, int y_pos = 0);
 
   // Physically scroll the window
-  virtual void Scroll(const int x_pos, const int y_pos);
+  virtual void Scroll(int x_pos, int y_pos);
   virtual void GetScrollPixelsPerUnit(int *x_unit, int *y_unit) const;
-  virtual void EnableScrolling(const bool x_scrolling, const bool y_scrolling);
+  virtual void EnableScrolling(bool x_scrolling, bool y_scrolling);
   virtual void AdjustScrollbars(void);
 
   // Prepare the DC by translating it according to the current scroll position
@@ -178,26 +201,20 @@ class WXDLLEXPORT wxToolBarBase : public wxControl
   // Do the toolbar button updates (check for EVT_UPDATE_UI handlers)
   virtual void DoToolbarUpdates(void);
 
-/*
-  virtual void CalcScrolledPosition(const int x, const int y, int *xx, int *yy) const ;
-  virtual void CalcUnscrolledPosition(const int x, const 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);
 
-  // Required to force normal cursor-setting behaviour in Windows
-#ifdef __WINDOWS__
-  virtual void MSWOnMouseMove(const int x, const int y, const WXUINT flags);
-#endif
-
  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
@@ -234,7 +251,6 @@ public:
     DECLARE_EVENT_TABLE()
 };
 
-#endif // USE_TOOLBAR
 #endif
-    // __TBARBASEH__
+    // _WX_TBARBASE_H_