X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/10b959e3729a77b95ab15614d1bdce74da327d8b..79e4b6277eec63c346239e8957fed478f5daa6ab:/include/wx/tbarbase.h diff --git a/include/wx/tbarbase.h b/include/wx/tbarbase.h index d12aec5677..23247b43a1 100644 --- a/include/wx/tbarbase.h +++ b/include/wx/tbarbase.h @@ -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,15 +72,20 @@ 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); - ~wxToolBarBase(void); + wxToolBarBase(); + ~wxToolBarBase(); // Handle wxToolBar events @@ -85,17 +102,17 @@ 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 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; - inline wxList& GetTools(void) const { return (wxList&) m_tools; } + 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(); + virtual void ClearTools(); + + 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() const { return (wxList&) m_tools; } // After the toolbar has initialized, this is the size the tools take up #if WXWXIN_COMPATIBILITY @@ -104,46 +121,52 @@ 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; } + inline virtual wxSize GetToolMargins() { return wxSize(m_xMargin, m_yMargin); } + inline virtual int GetToolPacking() { return m_toolPacking; } + inline virtual int GetToolSeparation() { 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() 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() 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 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; }; + void SetDefaultSize(int w, int h) { SetDefaultSize(wxSize(w, h)); } + long GetDefaultWidth() const { return m_defaultWidth; } + long GetDefaultHeight() const { return m_defaultHeight; } + int GetDefaultButtonWidth() const { return (int) GetDefaultButtonSize().x; }; + int GetDefaultButtonHeight() const { return (int) GetDefaultButtonSize().y; }; + virtual void SetDefaultSize(const wxSize& size) { SetToolBitmapSize(size); } + virtual wxSize GetDefaultSize() const { return GetToolBitmapSize(); } + virtual wxSize GetDefaultButtonSize() 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; } + virtual bool CreateTools() { return TRUE; } + + // Calls the appropriate function after tools have been created. + // E.g. Layout, or CreateTools. + virtual bool Realize() = 0; void Command(wxCommandEvent& event); @@ -153,15 +176,15 @@ 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 AdjustScrollbars(void); + virtual void EnableScrolling(bool x_scrolling, bool y_scrolling); + virtual void AdjustScrollbars(); // Prepare the DC by translating it according to the current scroll position virtual void PrepareDC(wxDC& dc); @@ -176,28 +199,22 @@ class WXDLLEXPORT wxToolBarBase : public wxControl virtual void GetVirtualSize(int *x, int *y) const; // Do the toolbar button updates (check for EVT_UPDATE_UI handlers) - virtual void DoToolbarUpdates(void); + virtual void DoToolbarUpdates(); -/* - 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 @@ -205,13 +222,14 @@ class WXDLLEXPORT wxToolBarBase : public wxControl int m_yMargin; int m_toolPacking; int m_toolSeparation; - long m_defaultWidth; - long m_defaultHeight; + + wxCoord m_defaultWidth; + wxCoord m_defaultHeight; public: //////////////////////////////////////////////////////////////////////// //// IMPLEMENTATION - + // Calculate scroll increment virtual int CalcScrollInc(wxScrollEvent& event); @@ -234,7 +252,6 @@ public: DECLARE_EVENT_TABLE() }; -#endif // USE_TOOLBAR #endif - // __TBARBASEH__ + // _WX_TBARBASE_H_