X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/34138703c3997ce676a1e713d9ff9eb020640da7..29f82345dfcb88b1c24416a3dbdc126bfd2ef3db:/include/wx/tbarsmpl.h diff --git a/include/wx/tbarsmpl.h b/include/wx/tbarsmpl.h index add138a78d..3dbeac1ae7 100644 --- a/include/wx/tbarsmpl.h +++ b/include/wx/tbarsmpl.h @@ -1,79 +1,174 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: tbarsmpl.h +// Name: wx/tbarsmpl.h // Purpose: wxToolBarSimple class // Author: Julian Smart -// Modified by: +// Modified by: VZ on 14.12.99 during wxToolBar classes reorganization // Created: 01/02/97 // RCS-ID: $Id$ // Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// #ifndef _WX_TBARSMPLH__ #define _WX_TBARSMPLH__ -#ifdef __GNUG__ -#pragma interface "tbarsmpl.h" +#if defined(__GNUG__) && !defined(__APPLE__) + #pragma interface "tbarsmpl.h" #endif -#include "wx/defs.h" +#include "wx/tbarbase.h" -#if USE_TOOLBAR +#if wxUSE_TOOLBAR_SIMPLE -#include "wx/bitmap.h" -#include "wx/list.h" -#include "wx/tbarbase.h" +class WXDLLEXPORT wxMemoryDC; -WXDLLEXPORT_DATA(extern const char*) wxToolBarNameStr; -WXDLLEXPORT_DATA(extern const wxSize) wxDefaultSize; -WXDLLEXPORT_DATA(extern const wxPoint) wxDefaultPosition; +// ---------------------------------------------------------------------------- +// wxToolBarSimple is a generic toolbar implementation in pure wxWindows +// ---------------------------------------------------------------------------- -// XView can't cope properly with panels that behave like canvases -// (e.g. no scrollbars in panels) class WXDLLEXPORT wxToolBarSimple : public wxToolBarBase { - DECLARE_DYNAMIC_CLASS(wxToolBarSimple) +public: + // ctors and dtor + wxToolBarSimple() { Init(); } - public: + wxToolBarSimple(wxWindow *parent, + wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxNO_BORDER | wxTB_HORIZONTAL, + const wxString& name = wxToolBarNameStr) + { + Init(); - wxToolBarSimple(void); - inline wxToolBarSimple(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, - const wxString& name = wxToolBarNameStr) - { - Create(parent, id, pos, size, style, name); - } - ~wxToolBarSimple(void); + Create(parent, id, pos, size, style, name); + } - bool Create(wxWindow *parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, - long style = wxNO_BORDER|wxTB_HORIZONTAL, const wxString& name = wxToolBarNameStr); + bool Create(wxWindow *parent, + wxWindowID id, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxNO_BORDER | wxTB_HORIZONTAL, + const wxString& name = wxToolBarNameStr); - void OnPaint(wxPaintEvent& event); - void OnSize(wxSizeEvent& event); - void OnMouseEvent(wxMouseEvent& event); - void OnKillFocus(wxFocusEvent& event); + virtual ~wxToolBarSimple(); - // Handle wxToolBar events + // override/implement base class virtuals + virtual wxToolBarToolBase *FindToolForPosition(wxCoord x, wxCoord y) const; - virtual void DrawTool(wxDC& dc, wxMemoryDC& memDC, wxToolBarTool *tool); - virtual void ToggleTool(int toolIndex, bool toggle); // toggle is TRUE if toggled on + virtual bool Realize(); - virtual void SpringUpButton(int index); + virtual void SetRows(int nRows); - void Layout(void); + // implementation from now on + // -------------------------- - // The post-tool-addition call - bool Realize() { Layout(); return TRUE; }; + // SCROLLING: this has to be copied from wxScrolledWindow since + // wxToolBarBase inherits from wxControl. This could have been put into + // wxToolBarSimple, but we might want any derived toolbar class to be + // scrollable. -protected: - int m_currentRowsOrColumns; - long m_lastX, m_lastY; + // Number of pixels per user unit (0 or -1 for no scrollbar) + // Length of virtual canvas in user units + 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(int x_pos, int y_pos); + virtual void GetScrollPixelsPerUnit(int *x_unit, int *y_unit) const; + 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); + + int GetScrollPageSize(int orient) const ; + void SetScrollPageSize(int orient, int pageSize); -DECLARE_EVENT_TABLE() + // Get the view start + virtual void ViewStart(int *x, int *y) const; + // Actual size in pixels when scrolling is taken into account + virtual void GetVirtualSize(int *x, int *y) const; + + int CalcScrollInc(wxScrollEvent& event); + + // event handlers + void OnPaint(wxPaintEvent& event); + void OnSize(wxSizeEvent& event); + void OnMouseEvent(wxMouseEvent& event); + void OnKillFocus(wxFocusEvent& event); + void OnScroll(wxScrollEvent& event); + +protected: + // common part of all ctors + void Init(); + + // implement base class pure virtuals + virtual wxToolBarToolBase *DoAddTool + ( + int id, + const wxString& label, + const wxBitmap& bitmap, + const wxBitmap& bmpDisabled, + wxItemKind kind, + const wxString& shortHelp = wxEmptyString, + const wxString& longHelp = wxEmptyString, + wxObject *clientData = NULL, + wxCoord xPos = -1, + wxCoord yPos = -1 + ); + + 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& bmpNormal, + const wxBitmap& bmpDisabled, + wxItemKind kind, + wxObject *clientData, + const wxString& shortHelp, + const wxString& longHelp); + virtual wxToolBarToolBase *CreateTool(wxControl *control); + + // helpers + void DrawTool(wxToolBarToolBase *tool); + virtual void DrawTool(wxDC& dc, wxToolBarToolBase *tool); + virtual void SpringUpButton(int index); + + int m_currentRowsOrColumns; + + int m_pressedTool, m_currentTool; + + wxCoord m_lastX, m_lastY; + wxCoord m_maxWidth, m_maxHeight; + wxCoord m_xPos, m_yPos; + + // scrolling data + int m_xScrollPixelsPerLine; + int m_yScrollPixelsPerLine; + bool m_xScrollingEnabled; + bool m_yScrollingEnabled; + int m_xScrollPosition; + int m_yScrollPosition; + int m_xScrollLines; + int m_yScrollLines; + int m_xScrollLinesPerPage; + int m_yScrollLinesPerPage; + +private: + DECLARE_EVENT_TABLE() + DECLARE_DYNAMIC_CLASS(wxToolBarSimple) }; -#endif // USE_TOOLBAR +#endif // wxUSE_TOOLBAR_SIMPLE + #endif // _WX_TBARSMPLH__