]> git.saurik.com Git - wxWidgets.git/blob - contrib/include/wx/fl/dyntbar.h
More NO_PTR -> PTR compilation fixes.
[wxWidgets.git] / contrib / include / wx / fl / dyntbar.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: dyntbar.h
3 // Purpose: wxDynamicToolBar header
4 // Author: Aleksandras Gluchovas
5 // Modified by:
6 // Created: ??/10/98
7 // RCS-ID: $Id$
8 // Copyright: (c) Aleksandras Gluchovas
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #ifndef __DYNTBAR_G__
13 #define __DYNTBAR_G__
14
15 #if defined(__GNUG__) && !defined(__APPLE__)
16 #pragma interface "dyntbar.h"
17 #endif
18
19 #include "wx/tbarbase.h"
20 #include "wx/dynarray.h"
21 #include "wx/fl/fldefs.h"
22
23 /*
24 Tool layout item.
25 */
26
27 class WXDLLIMPEXP_FL wxToolLayoutItem : public wxObject
28 {
29 DECLARE_DYNAMIC_CLASS(wxToolLayoutItem)
30
31 public:
32 wxRect mRect;
33 bool mIsSeparator;
34 };
35
36 class WXDLLIMPEXP_FL wxDynToolInfo;
37
38 typedef wxToolLayoutItem* wxToolLayoutItemPtrT;
39 typedef wxDynToolInfo* wxDynToolInfoPtrT;
40
41 WXFL_DEFINE_ARRAY_PTR( wxToolLayoutItemPtrT, wxLayoutItemArrayT );
42 WXFL_DEFINE_ARRAY_PTR( wxDynToolInfoPtrT, wxDynToolInfoArrayT );
43
44 /*
45 This is a base class for layout algorithm implementations.
46 */
47
48 class WXDLLIMPEXP_FL LayoutManagerBase
49 {
50 public:
51 // Constructor.
52 virtual void Layout( const wxSize& parentDim,
53 wxSize& resultingDim,
54 wxLayoutItemArrayT& items,
55 int horizGap,
56 int vertGap ) = 0;
57
58 // Destructor.
59 virtual ~LayoutManagerBase() {}
60 };
61
62 /*
63 BagLayout lays out items in left-to-right order from
64 top to bottom.
65 */
66
67 class WXDLLIMPEXP_FL BagLayout : public LayoutManagerBase
68 {
69 public:
70 // Constructor.
71 virtual void Layout( const wxSize& parentDim,
72 wxSize& resultingDim,
73 wxLayoutItemArrayT& items,
74 int horizGap,
75 int vertGap );
76 };
77
78 /*
79 This class holds dynamic toolbar item information.
80 */
81
82 class WXDLLIMPEXP_FL wxDynToolInfo : public wxToolLayoutItem
83 {
84 DECLARE_DYNAMIC_CLASS(wxDynToolInfo)
85
86 public:
87 wxWindow* mpToolWnd;
88 int mIndex;
89 wxSize mRealSize;
90 };
91
92 // Layout orientations for tools
93
94 #define LO_HORIZONTAL 0
95 #define LO_VERTICAL 1
96 #define LO_FIT_TO_WINDOW 2
97
98 /*
99 wxDynamicToolBar manages containment and layout of tool windows.
100 */
101
102 class WXDLLIMPEXP_FL wxDynamicToolBar : public wxToolBarBase
103 {
104 protected:
105 friend class wxDynamicToolBarSerializer;
106
107 wxDynToolInfoArrayT mTools;
108 LayoutManagerBase* mpLayoutMan;
109
110 protected:
111 // Internal function for sizing tool windows.
112 virtual void SizeToolWindows();
113
114 public: /* public properties */
115
116 int mSepartorSize; // default: 8
117 int mVertGap; // default: 0
118 int mHorizGap; // default: 0
119
120 public:
121 // Default constructor.
122
123 wxDynamicToolBar();
124
125 // Constructor: see the documentation for wxToolBar for details.
126
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);
130
131 // Destructor.
132
133 ~wxDynamicToolBar(void);
134
135 // Creation function: see the documentation for wxToolBar for details.
136
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);
139
140 // Adds a tool. See the documentation for wxToolBar for details.
141
142 virtual void AddTool( int toolIndex,
143 wxWindow* pToolWindow,
144 const wxSize& size = wxDefaultSize );
145
146 // Adds a tool. See the documentation for wxToolBar for details.
147
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.
154
155 virtual void AddTool( int toolIndex, wxBitmap labelBmp,
156 const wxString& labelText = wxT(""), bool alignTextRight = FALSE,
157 bool isFlat = TRUE );
158
159 // Method from wxToolBarBase (for compatibility), only
160 // the first two arguments are valid.
161 // See the documentation for wxToolBar for details.
162
163 virtual wxToolBarToolBase *AddTool(const int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap,
164 const bool toggle = FALSE, const long xPos = -1, const long yPos = -1, wxObject *clientData = NULL,
165 const wxString& helpString1 = wxT(""), const wxString& helpString2 = wxT(""));
166
167 // Adds a separator. See the documentation for wxToolBar for details.
168
169 virtual void AddSeparator( wxWindow* pSepartorWnd = NULL );
170
171 // Returns tool information for the given tool index.
172
173 wxDynToolInfo* GetToolInfo( int toolIndex );
174
175 // Removes the given tool. Misspelt in order not to clash with a similar function
176 // in the base class.
177
178 void RemveTool( int toolIndex );
179
180 // Draws a separator. The default implementation draws a shaded line.
181
182 virtual void DrawSeparator( wxDynToolInfo& info, wxDC& dc );
183
184 // Performs layout. See definitions of orientation types.
185
186 virtual bool Layout();
187
188 // Returns the preferred dimension, taking the given dimension and a reference to the result.
189
190 virtual void GetPreferredDim( const wxSize& givenDim, wxSize& prefDim );
191
192 // Creates the default layout (BagLayout).
193
194 virtual LayoutManagerBase* CreateDefaultLayout() { return new BagLayout(); }
195
196 // Sets the layout for this toolbar.
197
198 virtual void SetLayout( LayoutManagerBase* pLayout );
199
200 // Enables or disables the given tool.
201
202 virtual void EnableTool(int toolIndex, bool enable = TRUE);
203
204 // Responds to size events, calling Layout.
205
206 void OnSize( wxSizeEvent& event );
207
208 // Responds to paint events, drawing separators.
209
210 void OnPaint( wxPaintEvent& event );
211
212 // Responds to background erase events. Currently does nothing.
213
214 void OnEraseBackground( wxEraseEvent& event );
215
216 // Overriden from wxToolBarBase; does nothing.
217
218 virtual bool Realize(void);
219
220 // Finds a tool for the given position.
221
222 virtual wxToolBarToolBase *FindToolForPosition(wxCoord x,
223 wxCoord y) const;
224
225 // Inserts a tool at the given position.
226
227 virtual bool DoInsertTool(size_t pos, wxToolBarToolBase *tool);
228
229 // Deletes a tool. The tool is still in m_tools list when this function is called, and it will
230 // only be deleted from it if it succeeds.
231
232 virtual bool DoDeleteTool(size_t pos, wxToolBarToolBase *tool);
233
234 // Called when the tools enabled flag changes.
235
236 virtual void DoEnableTool(wxToolBarToolBase *tool, bool enable);
237
238 // Called when the tool is toggled.
239
240 virtual void DoToggleTool(wxToolBarToolBase *tool, bool toggle);
241
242 // Called when the tools 'can be toggled' flag changes.
243
244 virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle);
245
246 // Creates a toolbar tool.
247
248 virtual wxToolBarToolBase *CreateTool(int id,
249 const wxString& label,
250 const wxBitmap& bmpNormal,
251 const wxBitmap& bmpDisabled,
252 wxItemKind kind,
253 wxObject *clientData,
254 const wxString& shortHelp,
255 const wxString& longHelp);
256
257 // Creates a toolbar tool.
258
259 virtual wxToolBarToolBase *CreateTool(wxControl *control);
260
261 private:
262 DECLARE_EVENT_TABLE()
263 DECLARE_DYNAMIC_CLASS(wxDynamicToolBar)
264 };
265
266 #endif /* __DYNTBAR_G__ */
267