1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxDynamicToolBar header
4 // Author: Aleksandras Gluchovas
8 // Copyright: (c) Aleksandras Gluchovas
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
15 #if defined(__GNUG__) && !defined(__APPLE__)
16 #pragma interface "dyntbar.h"
19 #include "wx/tbarbase.h"
20 #include "wx/dynarray.h"
21 #include "wx/fl/fldefs.h"
27 class WXDLLIMPEXP_FL wxToolLayoutItem
: public wxObject
29 DECLARE_DYNAMIC_CLASS(wxToolLayoutItem
)
36 class WXDLLIMPEXP_FL wxDynToolInfo
;
38 typedef wxToolLayoutItem
* wxToolLayoutItemPtrT
;
39 typedef wxDynToolInfo
* wxDynToolInfoPtrT
;
41 WXFL_DEFINE_ARRAY_PTR( wxToolLayoutItemPtrT
, wxLayoutItemArrayT
);
42 WXFL_DEFINE_ARRAY_PTR( wxDynToolInfoPtrT
, wxDynToolInfoArrayT
);
45 This is a base class for layout algorithm implementations.
48 class WXDLLIMPEXP_FL LayoutManagerBase
52 virtual void Layout( const wxSize
& parentDim
,
54 wxLayoutItemArrayT
& items
,
59 virtual ~LayoutManagerBase() {}
63 BagLayout lays out items in left-to-right order from
67 class WXDLLIMPEXP_FL BagLayout
: public LayoutManagerBase
71 virtual void Layout( const wxSize
& parentDim
,
73 wxLayoutItemArrayT
& items
,
79 This class holds dynamic toolbar item information.
82 class WXDLLIMPEXP_FL wxDynToolInfo
: public wxToolLayoutItem
84 DECLARE_DYNAMIC_CLASS(wxDynToolInfo
)
92 // Layout orientations for tools
94 #define LO_HORIZONTAL 0
96 #define LO_FIT_TO_WINDOW 2
99 wxDynamicToolBar manages containment and layout of tool windows.
102 class WXDLLIMPEXP_FL wxDynamicToolBar
: public wxToolBarBase
105 friend class wxDynamicToolBarSerializer
;
107 wxDynToolInfoArrayT mTools
;
108 LayoutManagerBase
* mpLayoutMan
;
111 // Internal function for sizing tool windows.
112 virtual void SizeToolWindows();
114 public: /* public properties */
116 int mSepartorSize
; // default: 8
117 int mVertGap
; // default: 0
118 int mHorizGap
; // default: 0
121 // Default constructor.
125 // Constructor: see the documentation for wxToolBar for details.
127 wxDynamicToolBar(wxWindow
*parent
, const wxWindowID id
, const wxPoint
& pos
= wxDefaultPosition
, const wxSize
& size
= wxDefaultSize
,
128 const long style
= wxNO_BORDER
, const int orientation
= wxVERTICAL
,
129 const int RowsOrColumns
= 1, const wxString
& name
= wxToolBarNameStr
);
133 ~wxDynamicToolBar(void);
135 // Creation function: see the documentation for wxToolBar for details.
137 bool Create(wxWindow
*parent
, const wxWindowID id
, const wxPoint
& pos
= wxDefaultPosition
, const wxSize
& size
= wxDefaultSize
,
138 const long style
= wxNO_BORDER
, const int orientation
= wxVERTICAL
, const int RowsOrColumns
= 1, const wxString
& name
= wxToolBarNameStr
);
140 // Adds a tool. See the documentation for wxToolBar for details.
142 virtual void AddTool( int toolIndex
,
143 wxWindow
* pToolWindow
,
144 const wxSize
& size
= wxDefaultSize
);
146 // Adds a tool. See the documentation for wxToolBar for details.
148 virtual void AddTool( int toolIndex
,
149 const wxString
& imageFileName
,
150 wxBitmapType imageFileType
= wxBITMAP_TYPE_BMP
,
151 const wxString
& labelText
= wxT(""), bool alignTextRight
= false,
152 bool isFlat
= true );
153 // Adds a tool. See the documentation for wxToolBar for details.
155 virtual void AddTool( int toolIndex
, wxBitmap labelBmp
,
156 const wxString
& labelText
= wxT(""), bool alignTextRight
= false,
157 bool isFlat
= true );
159 // Unhide method from parent.
161 virtual wxToolBarToolBase
*AddTool (wxToolBarToolBase
*tool
)
162 { return wxToolBarBase::AddTool(tool
); };
164 // Method from wxToolBarBase (for compatibility), only
165 // the first two arguments are valid.
166 // See the documentation for wxToolBar for details.
168 virtual wxToolBarToolBase
*AddTool(const int toolIndex
, const wxBitmap
& bitmap
, const wxBitmap
& pushedBitmap
= wxNullBitmap
,
169 const bool toggle
= false, const long xPos
= wxDefaultCoord
, const long yPos
= wxDefaultCoord
, wxObject
*clientData
= NULL
,
170 const wxString
& helpString1
= wxT(""), const wxString
& helpString2
= wxT(""));
172 // Adds a separator. See the documentation for wxToolBar for details.
174 virtual void AddSeparator( wxWindow
* pSepartorWnd
);
176 // Unhide method from parent.
178 virtual wxToolBarToolBase
*AddSeparator()
179 { return wxToolBarBase::AddSeparator(); };
181 // Returns tool information for the given tool index.
183 wxDynToolInfo
* GetToolInfo( int toolIndex
);
185 // Removes the given tool. Misspelt in order not to clash with a similar function
186 // in the base class.
188 void RemveTool( int toolIndex
);
190 // Draws a separator. The default implementation draws a shaded line.
192 virtual void DrawSeparator( wxDynToolInfo
& info
, wxDC
& dc
);
194 // Performs layout. See definitions of orientation types.
196 virtual bool Layout();
198 // Returns the preferred dimension, taking the given dimension and a reference to the result.
200 virtual void GetPreferredDim( const wxSize
& givenDim
, wxSize
& prefDim
);
202 // Creates the default layout (BagLayout).
204 virtual LayoutManagerBase
* CreateDefaultLayout() { return new BagLayout(); }
206 // Sets the layout for this toolbar.
208 virtual void SetLayout( LayoutManagerBase
* pLayout
);
210 // Enables or disables the given tool.
212 virtual void EnableTool(int toolIndex
, bool enable
= true);
214 // Responds to size events, calling Layout.
216 void OnSize( wxSizeEvent
& event
);
218 // Responds to paint events, drawing separators.
220 void OnPaint( wxPaintEvent
& event
);
222 // Responds to background erase events. Currently does nothing.
224 void OnEraseBackground( wxEraseEvent
& event
);
226 // Overriden from wxToolBarBase; does nothing.
228 virtual bool Realize(void);
230 // Finds a tool for the given position.
232 virtual wxToolBarToolBase
*FindToolForPosition(wxCoord x
,
235 // Inserts a tool at the given position.
237 virtual bool DoInsertTool(size_t pos
, wxToolBarToolBase
*tool
);
239 // Deletes a tool. The tool is still in m_tools list when this function is called, and it will
240 // only be deleted from it if it succeeds.
242 virtual bool DoDeleteTool(size_t pos
, wxToolBarToolBase
*tool
);
244 // Called when the tools enabled flag changes.
246 virtual void DoEnableTool(wxToolBarToolBase
*tool
, bool enable
);
248 // Called when the tool is toggled.
250 virtual void DoToggleTool(wxToolBarToolBase
*tool
, bool toggle
);
252 // Called when the tools 'can be toggled' flag changes.
254 virtual void DoSetToggle(wxToolBarToolBase
*tool
, bool toggle
);
256 // Creates a toolbar tool.
258 virtual wxToolBarToolBase
*CreateTool(int id
,
259 const wxString
& label
,
260 const wxBitmap
& bmpNormal
,
261 const wxBitmap
& bmpDisabled
,
263 wxObject
*clientData
,
264 const wxString
& shortHelp
,
265 const wxString
& longHelp
);
267 // Creates a toolbar tool.
269 virtual wxToolBarToolBase
*CreateTool(wxControl
*control
);
272 DECLARE_EVENT_TABLE()
273 DECLARE_DYNAMIC_CLASS(wxDynamicToolBar
)
276 #endif /* __DYNTBAR_G__ */