~ubuntu-dev/wxwidgets2.6/upstream-debian

1 by Daniel T Chen
Import Debian 2.6.3.2.1
1
/////////////////////////////////////////////////////////////////////////////
2
// Name:        dyntbar.h
3
// Purpose:     wxDynamicToolBar header
4
// Author:      Aleksandras Gluchovas
5
// Modified by:
6
// Created:     ??/10/98
7
// RCS-ID:      $Id: dyntbar.h,v 1.16 2004/07/20 10:08:27 ABX Exp $
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
        // Unhide method from parent.
160
161
    virtual wxToolBarToolBase *AddTool (wxToolBarToolBase *tool)
162
                              { return wxToolBarBase::AddTool(tool); };
163
164
    // Method from wxToolBarBase (for compatibility), only
165
    // the first two arguments are valid.
166
    // See the documentation for wxToolBar for details.
167
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(""));
171
172
        // Adds a separator. See the documentation for wxToolBar for details.
173
174
    virtual void AddSeparator( wxWindow* pSepartorWnd );
175
176
        // Unhide method from parent.
177
178
    virtual wxToolBarToolBase *AddSeparator()
179
                              { return wxToolBarBase::AddSeparator(); };
180
181
        // Returns tool information for the given tool index.
182
183
    wxDynToolInfo* GetToolInfo( int toolIndex );
184
185
        // Removes the given tool. Misspelt in order not to clash with a similar function
186
        // in the base class.
187
188
    void RemveTool( int toolIndex );
189
190
        // Draws a separator. The default implementation draws a shaded line.
191
192
    virtual void DrawSeparator( wxDynToolInfo& info, wxDC& dc );
193
194
        // Performs layout. See definitions of orientation types.
195
196
    virtual bool Layout();
197
198
        // Returns the preferred dimension, taking the given dimension and a reference to the result.
199
200
    virtual void GetPreferredDim( const wxSize& givenDim, wxSize& prefDim );
201
202
        // Creates the default layout (BagLayout).
203
204
    virtual LayoutManagerBase* CreateDefaultLayout() { return new BagLayout(); }
205
206
        // Sets the layout for this toolbar.
207
208
    virtual void SetLayout( LayoutManagerBase* pLayout );
209
210
        // Enables or disables the given tool.
211
212
    virtual void EnableTool(int toolIndex, bool enable = true);
213
214
        // Responds to size events, calling Layout.
215
216
    void OnSize( wxSizeEvent& event );
217
218
        // Responds to paint events, drawing separators.
219
220
    void OnPaint( wxPaintEvent& event );
221
222
        // Responds to background erase events. Currently does nothing.
223
224
    void OnEraseBackground( wxEraseEvent& event );
225
226
        // Overriden from wxToolBarBase; does nothing.
227
228
    virtual bool Realize(void);
229
230
        // Finds a tool for the given position.
231
232
    virtual wxToolBarToolBase *FindToolForPosition(wxCoord x,
233
                                                   wxCoord y) const;
234
235
        // Inserts a tool at the given position.
236
237
    virtual bool DoInsertTool(size_t pos, wxToolBarToolBase *tool);
238
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.
241
242
    virtual bool DoDeleteTool(size_t pos, wxToolBarToolBase *tool);
243
244
        // Called when the tools enabled flag changes.
245
246
    virtual void DoEnableTool(wxToolBarToolBase *tool, bool enable);
247
248
        // Called when the tool is toggled.
249
250
    virtual void DoToggleTool(wxToolBarToolBase *tool, bool toggle);
251
252
        // Called when the tools 'can be toggled' flag changes.
253
254
    virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle);
255
256
        // Creates a toolbar tool.
257
258
    virtual wxToolBarToolBase *CreateTool(int id,
259
                                          const wxString& label,
260
                                          const wxBitmap& bmpNormal,
261
                                          const wxBitmap& bmpDisabled,
262
                                          wxItemKind kind,
263
                                          wxObject *clientData,
264
                                          const wxString& shortHelp,
265
                                          const wxString& longHelp);
266
267
        // Creates a toolbar tool.
268
269
    virtual wxToolBarToolBase *CreateTool(wxControl *control);
270
271
private:
272
    DECLARE_EVENT_TABLE()
273
    DECLARE_DYNAMIC_CLASS(wxDynamicToolBar)
274
};
275
276
#endif /* __DYNTBAR_G__ */
277