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

« back to all changes in this revision

Viewing changes to contrib/include/wx/fl/dyntbar.h

  • Committer: Daniel T Chen
  • Date: 2006-06-26 10:15:11 UTC
  • Revision ID: crimsun@ubuntu.com-20060626101511-a4436cec4c6d9b35
ImportĀ DebianĀ 2.6.3.2.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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