/////////////////////////////////////////////////////////////////////////////
-// Name: No names yet.
-// Purpose: Contrib. demo
+// Name: dyntbar.h
+// Purpose: wxDynamicToolBar header
// Author: Aleksandras Gluchovas
// Modified by:
// Created: ??/10/98
// RCS-ID: $Id$
// Copyright: (c) Aleksandras Gluchovas
-// Licence: wxWindows license
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __DYNTBAR_G__
#include "wx/tbarbase.h"
#include "wx/dynarray.h"
-// layout item
+/*
+Tool layout item.
+*/
class wxToolLayoutItem : public wxObject
{
+ DECLARE_DYNAMIC_CLASS(wxToolLayoutItem)
+
public:
- wxRect mRect;
- bool mIsSeparator;
+ wxRect mRect;
+ bool mIsSeparator;
};
class wxDynToolInfo;
typedef wxToolLayoutItem* wxToolLayoutItemPtrT;
typedef wxDynToolInfo* wxDynToolInfoPtrT;
-
WX_DEFINE_ARRAY( wxToolLayoutItemPtrT, wxLayoutItemArrayT );
WX_DEFINE_ARRAY( wxDynToolInfoPtrT, wxDynToolInfoArrayT );
-// base class for layouting algorithm implementations
+/*
+This is a base class for layout algorithm implementations.
+*/
class LayoutManagerBase
{
public:
- virtual void Layout( const wxSize& parentDim,
- wxSize& resultingDim,
- wxLayoutItemArrayT& items,
- int horizGap,
- int vertGap ) = 0;
-
- virtual ~LayoutManagerBase() {}
+ // Constructor.
+ virtual void Layout( const wxSize& parentDim,
+ wxSize& resultingDim,
+ wxLayoutItemArrayT& items,
+ int horizGap,
+ int vertGap ) = 0;
+
+ // Destructor.
+ virtual ~LayoutManagerBase() {}
};
-// layouts items in left-to-right order from
-// top towards bottom
+/*
+BagLayout lays out items in left-to-right order from
+top to bottom.
+*/
class BagLayout : public LayoutManagerBase
{
public:
- virtual void Layout( const wxSize& parentDim,
- wxSize& resultingDim,
- wxLayoutItemArrayT& items,
- int horizGap,
- int vertGap );
+ // Constructor.
+ virtual void Layout( const wxSize& parentDim,
+ wxSize& resultingDim,
+ wxLayoutItemArrayT& items,
+ int horizGap,
+ int vertGap );
};
+/*
+This class holds dynamic toolbar item information.
+*/
+
class wxDynToolInfo : public wxToolLayoutItem
{
- DECLARE_DYNAMIC_CLASS(wxDynToolInfo)
+ DECLARE_DYNAMIC_CLASS(wxDynToolInfo)
public:
- wxWindow* mpToolWnd;
- int mIndex;
- wxSize mRealSize;
+ wxWindow* mpToolWnd;
+ int mIndex;
+ wxSize mRealSize;
};
-// layouting orientations for tools
+// Layout orientations for tools
#define LO_HORIZONTAL 0
#define LO_VERTICAL 1
#define LO_FIT_TO_WINDOW 2
-// class manages containment and layouting of tool-windows
+/*
+wxDynamicToolBar manages containment and layout of tool windows.
+*/
class wxDynamicToolBar : public wxToolBarBase
{
- DECLARE_DYNAMIC_CLASS(wxDynamicToolBar)
protected:
+ friend class wxDynamicToolBarSerializer;
- friend class wxDynamicToolBarSerializer;
-
- wxDynToolInfoArrayT mTools;
- LayoutManagerBase* mpLayoutMan;
+ wxDynToolInfoArrayT mTools;
+ LayoutManagerBase* mpLayoutMan;
protected:
- virtual void SizeToolWindows();
+ // Internal function for sizing tool windows.
+ virtual void SizeToolWindows();
public: /* public properties */
- int mSepartorSize; // default: 8
- int mVertGap; // default: 0
- int mHorizGap; // default: 0
-
+ int mSepartorSize; // default: 8
+ int mVertGap; // default: 0
+ int mHorizGap; // default: 0
+
public:
- wxDynamicToolBar();
+ // Default constructor.
+
+ wxDynamicToolBar();
+
+ // Constructor: see the documentation for wxToolBar for details.
+
+ wxDynamicToolBar(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
+ const long style = wxNO_BORDER, const int orientation = wxVERTICAL,
+ const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
- wxDynamicToolBar(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
- const long style = wxNO_BORDER, const int orientation = wxVERTICAL,
- const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
+ // Destructor.
- ~wxDynamicToolBar(void);
+ ~wxDynamicToolBar(void);
- bool Create(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
- const long style = wxNO_BORDER, const int orientation = wxVERTICAL, const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
+ // Creation function: see the documentation for wxToolBar for details.
- // overridables
+ bool Create(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
+ const long style = wxNO_BORDER, const int orientation = wxVERTICAL, const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
- virtual void AddTool( int toolIndex,
- wxWindow* pToolWindow,
+ // Adds a tool. See the documentation for wxToolBar for details.
+
+ virtual void AddTool( int toolIndex,
+ wxWindow* pToolWindow,
const wxSize& size = wxDefaultSize );
- virtual void AddTool( int toolIndex,
+ // Adds a tool. See the documentation for wxToolBar for details.
+
+ virtual void AddTool( int toolIndex,
const wxString& imageFileName,
wxBitmapType imageFileType = wxBITMAP_TYPE_BMP,
const wxString& labelText = "", bool alignTextRight = FALSE,
bool isFlat = TRUE );
- virtual void AddTool( int toolIndex, wxBitmap labelBmp,
+ // Adds a tool. See the documentation for wxToolBar for details.
+
+ virtual void AddTool( int toolIndex, wxBitmap labelBmp,
const wxString& labelText = "", bool alignTextRight = FALSE,
bool isFlat = TRUE );
- // method from wxToolBarBase (for compatibility), only
- // first two arguments are valid
+ // Method from wxToolBarBase (for compatibility), only
+ // the first two arguments are valid.
+ // See the documentation for wxToolBar for details.
- virtual wxToolBarToolBase *AddTool(const int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap,
+ virtual wxToolBarToolBase *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( wxWindow* pSepartorWnd = NULL );
+ // Adds a separator. See the documentation for wxToolBar for details.
+
+ virtual void AddSeparator( wxWindow* pSepartorWnd = NULL );
+
+ // Returns tool information for the given tool index.
+
+ wxDynToolInfo* GetToolInfo( int toolIndex );
+
+ // Removes the given tool. Misspelt in order not to clash with a similar function
+ // in the base class.
+
+ void RemveTool( int toolIndex );
- wxDynToolInfo* GetToolInfo( int toolIndex );
+ // Draws a separator. The default implementation draws a shaded line.
- void RemveTool( int toolIndex );
+ virtual void DrawSeparator( wxDynToolInfo& info, wxDC& dc );
- // the default implementation draws shaded line
- virtual void DrawSeparator( wxDynToolInfo& info, wxDC& dc );
+ // Performs layout. See definitions of orientation types.
- // see definitions of orientation types
- virtual bool Layout();
+ virtual bool Layout();
- virtual void GetPreferredDim( const wxSize& givenDim, wxSize& prefDim );
+ // Returns the preferred dimension, taking the given dimension and a reference to the result.
- virtual LayoutManagerBase* CreateDefaulLayout() { return new BagLayout(); }
+ virtual void GetPreferredDim( const wxSize& givenDim, wxSize& prefDim );
- virtual void SetLayout( LayoutManagerBase* pLayout );
+ // Creates the default layout (BagLayout).
- virtual void EnableTool(const int toolIndex, const bool enable = TRUE);
+ virtual LayoutManagerBase* CreateDefaultLayout() { return new BagLayout(); }
- // event handlers
+ // Sets the layout for this toolbar.
- void OnSize( wxSizeEvent& event );
- void OnPaint( wxPaintEvent& event );
- void OnEraseBackground( wxEraseEvent& event );
+ virtual void SetLayout( LayoutManagerBase* pLayout );
- // overriden from wxToolBarBase
+ // Enables or disables the given tool.
- virtual bool Realize(void);
+ virtual void EnableTool(const int toolIndex, const bool enable = TRUE);
- // stuff from the 2.1.15
+ // Responds to size events, calling Layout.
+
+ void OnSize( wxSizeEvent& event );
+
+ // Responds to paint events, drawing separators.
+
+ void OnPaint( wxPaintEvent& event );
+
+ // Responds to background erase events. Currently does nothing.
+
+ void OnEraseBackground( wxEraseEvent& event );
+
+ // Overriden from wxToolBarBase; does nothing.
+
+ virtual bool Realize(void);
+
+ // Finds a tool for the given position.
virtual wxToolBarToolBase *FindToolForPosition(wxCoord x,
wxCoord y) const;
+ // Inserts a tool at the given position.
virtual bool DoInsertTool(size_t pos, wxToolBarToolBase *tool);
- // the tool is still in m_tools list when this function is called, it will
- // only be deleted from it if it succeeds
+ // Deletes a tool. The tool is still in m_tools list when this function is called, and it will
+ // only be deleted from it if it succeeds.
+
virtual bool DoDeleteTool(size_t pos, wxToolBarToolBase *tool);
- // called when the tools enabled flag changes
+ // Called when the tools enabled flag changes.
+
virtual void DoEnableTool(wxToolBarToolBase *tool, bool enable);
- // called when the tool is toggled
+ // Called when the tool is toggled.
+
virtual void DoToggleTool(wxToolBarToolBase *tool, bool toggle);
- // called when the tools "can be toggled" flag changes
+ // Called when the tools 'can be toggled' flag changes.
+
virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle);
- // the functions to create toolbar tools
+ // Creates a toolbar tool.
+
virtual wxToolBarToolBase *CreateTool(int id,
- const wxBitmap& bitmap1,
- const wxBitmap& bitmap2,
- bool toggle,
+ const wxString& label,
+ const wxBitmap& bmpNormal,
+ const wxBitmap& bmpDisabled,
+ wxItemKind kind,
wxObject *clientData,
- const wxString& shortHelpString,
- const wxString& longHelpString);
- virtual wxToolBarToolBase *CreateTool(wxControl *control);
+ const wxString& shortHelp,
+ const wxString& longHelp);
+ // Creates a toolbar tool.
+
+ virtual wxToolBarToolBase *CreateTool(wxControl *control);
- DECLARE_EVENT_TABLE()
+private:
+ DECLARE_EVENT_TABLE()
+ DECLARE_DYNAMIC_CLASS(wxDynamicToolBar)
};
#endif /* __DYNTBAR_G__ */