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

« back to all changes in this revision

Viewing changes to include/wx/frame.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:        wx/frame.h
 
3
// Purpose:     wxFrame class interface
 
4
// Author:      Vadim Zeitlin
 
5
// Modified by:
 
6
// Created:     15.11.99
 
7
// RCS-ID:      $Id: frame.h,v 1.55 2005/01/21 18:48:19 ABX Exp $
 
8
// Copyright:   (c) wxWidgets team
 
9
// Licence:     wxWindows licence
 
10
/////////////////////////////////////////////////////////////////////////////
 
11
 
 
12
#ifndef _WX_FRAME_H_BASE_
 
13
#define _WX_FRAME_H_BASE_
 
14
 
 
15
// ----------------------------------------------------------------------------
 
16
// headers
 
17
// ----------------------------------------------------------------------------
 
18
 
 
19
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 
20
    #pragma interface "framebase.h"
 
21
#endif
 
22
 
 
23
#include "wx/toplevel.h"      // the base class
 
24
 
 
25
// the default names for various classs
 
26
extern WXDLLEXPORT_DATA(const wxChar*) wxFrameNameStr;
 
27
extern WXDLLEXPORT_DATA(const wxChar*) wxStatusLineNameStr;
 
28
extern WXDLLEXPORT_DATA(const wxChar*) wxToolBarNameStr;
 
29
 
 
30
class WXDLLEXPORT wxFrame;
 
31
class WXDLLEXPORT wxMenuBar;
 
32
class WXDLLEXPORT wxStatusBar;
 
33
class WXDLLEXPORT wxToolBar;
 
34
 
 
35
// ----------------------------------------------------------------------------
 
36
// constants
 
37
// ----------------------------------------------------------------------------
 
38
 
 
39
// wxFrame-specific (i.e. not for wxDialog) styles
 
40
#define wxFRAME_NO_TASKBAR      0x0002  // No taskbar button (MSW only)
 
41
#define wxFRAME_TOOL_WINDOW     0x0004  // No taskbar button, no system menu
 
42
#define wxFRAME_FLOAT_ON_PARENT 0x0008  // Always above its parent
 
43
#define wxFRAME_SHAPED          0x0010  // Create a window that is able to be shaped
 
44
 
 
45
// ----------------------------------------------------------------------------
 
46
// wxFrame is a top-level window with optional menubar, statusbar and toolbar
 
47
//
 
48
// For each of *bars, a frame may have several of them, but only one is
 
49
// managed by the frame, i.e. resized/moved when the frame is and whose size
 
50
// is accounted for in client size calculations - all others should be taken
 
51
// care of manually. The CreateXXXBar() functions create this, main, XXXBar,
 
52
// but the actual creation is done in OnCreateXXXBar() functions which may be
 
53
// overridden to create custom objects instead of standard ones when
 
54
// CreateXXXBar() is called.
 
55
// ----------------------------------------------------------------------------
 
56
 
 
57
class WXDLLEXPORT wxFrameBase : public wxTopLevelWindow
 
58
{
 
59
public:
 
60
    // construction
 
61
    wxFrameBase();
 
62
    virtual ~wxFrameBase();
 
63
 
 
64
    wxFrame *New(wxWindow *parent,
 
65
                 wxWindowID winid,
 
66
                 const wxString& title,
 
67
                 const wxPoint& pos = wxDefaultPosition,
 
68
                 const wxSize& size = wxDefaultSize,
 
69
                 long style = wxDEFAULT_FRAME_STYLE,
 
70
                 const wxString& name = wxFrameNameStr);
 
71
 
 
72
    // frame state
 
73
    // -----------
 
74
 
 
75
    // get the origin of the client area (which may be different from (0, 0)
 
76
    // if the frame has a toolbar) in client coordinates
 
77
    virtual wxPoint GetClientAreaOrigin() const;
 
78
 
 
79
    // sends a size event to the window using its current size -- this has an
 
80
    // effect of refreshing the window layout
 
81
    virtual void SendSizeEvent();
 
82
 
 
83
    // menu bar functions
 
84
    // ------------------
 
85
 
 
86
#if wxUSE_MENUS
 
87
    virtual void SetMenuBar(wxMenuBar *menubar);
 
88
    virtual wxMenuBar *GetMenuBar() const { return m_frameMenuBar; }
 
89
#endif // wxUSE_MENUS
 
90
 
 
91
    // process menu command: returns true if processed
 
92
    bool ProcessCommand(int winid);
 
93
 
 
94
    // status bar functions
 
95
    // --------------------
 
96
#if wxUSE_STATUSBAR
 
97
    // create the main status bar by calling OnCreateStatusBar()
 
98
    virtual wxStatusBar* CreateStatusBar(int number = 1,
 
99
                                         long style = wxST_SIZEGRIP|wxFULL_REPAINT_ON_RESIZE,
 
100
                                         wxWindowID winid = 0,
 
101
                                         const wxString& name =
 
102
                                            wxStatusLineNameStr);
 
103
    // return a new status bar
 
104
    virtual wxStatusBar *OnCreateStatusBar(int number,
 
105
                                           long style,
 
106
                                           wxWindowID winid,
 
107
                                           const wxString& name);
 
108
    // get the main status bar
 
109
    virtual wxStatusBar *GetStatusBar() const { return m_frameStatusBar; }
 
110
 
 
111
    // sets the main status bar
 
112
    virtual void SetStatusBar(wxStatusBar *statBar);
 
113
 
 
114
    // forward these to status bar
 
115
    virtual void SetStatusText(const wxString &text, int number = 0);
 
116
    virtual void SetStatusWidths(int n, const int widths_field[]);
 
117
    void PushStatusText(const wxString &text, int number = 0);
 
118
    void PopStatusText(int number = 0);
 
119
 
 
120
    // set the status bar pane the help will be shown in
 
121
    void SetStatusBarPane(int n) { m_statusBarPane = n; }
 
122
    int GetStatusBarPane() const { return m_statusBarPane; }
 
123
#endif // wxUSE_STATUSBAR
 
124
 
 
125
    // toolbar functions
 
126
    // -----------------
 
127
 
 
128
#if wxUSE_TOOLBAR
 
129
    // create main toolbar bycalling OnCreateToolBar()
 
130
    virtual wxToolBar* CreateToolBar(long style = -1,
 
131
                                     wxWindowID winid = wxID_ANY,
 
132
                                     const wxString& name = wxToolBarNameStr);
 
133
    // return a new toolbar
 
134
    virtual wxToolBar *OnCreateToolBar(long style,
 
135
                                       wxWindowID winid,
 
136
                                       const wxString& name );
 
137
 
 
138
    // get/set the main toolbar
 
139
    virtual wxToolBar *GetToolBar() const { return m_frameToolBar; }
 
140
    virtual void SetToolBar(wxToolBar *toolbar);
 
141
#endif // wxUSE_TOOLBAR
 
142
 
 
143
    // implementation only from now on
 
144
    // -------------------------------
 
145
 
 
146
    // event handlers
 
147
#if wxUSE_MENUS
 
148
#if wxUSE_STATUSBAR
 
149
    void OnMenuOpen(wxMenuEvent& event);
 
150
    void OnMenuClose(wxMenuEvent& event);
 
151
    void OnMenuHighlight(wxMenuEvent& event);
 
152
#endif // wxUSE_STATUSBAR
 
153
 
 
154
    // send wxUpdateUIEvents for all menu items in the menubar,
 
155
    // or just for menu if non-NULL
 
156
    virtual void DoMenuUpdates(wxMenu* menu = NULL);
 
157
#endif // wxUSE_MENUS
 
158
 
 
159
    // do the UI update processing for this window
 
160
    virtual void UpdateWindowUI(long flags = wxUPDATE_UI_NONE);
 
161
 
 
162
    // Implement internal behaviour (menu updating on some platforms)
 
163
    virtual void OnInternalIdle();
 
164
 
 
165
    // if there is no real wxTopLevelWindow on this platform we have to define
 
166
    // some wxTopLevelWindowBase pure virtual functions here to avoid breaking
 
167
    // old ports (wxMotif) which don't define them in wxFrame
 
168
#ifndef wxTopLevelWindowNative
 
169
    virtual bool ShowFullScreen(bool WXUNUSED(show),
 
170
                                long WXUNUSED(style) = wxFULLSCREEN_ALL)
 
171
        { return false; }
 
172
    virtual bool IsFullScreen() const
 
173
        { return false; }
 
174
#endif // no wxTopLevelWindowNative
 
175
 
 
176
    // show help text (typically in the statusbar); show is false
 
177
    // if you are hiding the help, true otherwise
 
178
    virtual void DoGiveHelp(const wxString& text, bool show);
 
179
 
 
180
#if WXWIN_COMPATIBILITY_2_2
 
181
    // call this to simulate a menu command
 
182
    wxDEPRECATED( bool Command(int winid) );
 
183
#endif // WXWIN_COMPATIBILITY_2_2
 
184
 
 
185
protected:
 
186
    // the frame main menu/status/tool bars
 
187
    // ------------------------------------
 
188
 
 
189
    // this (non virtual!) function should be called from dtor to delete the
 
190
    // main menubar, statusbar and toolbar (if any)
 
191
    void DeleteAllBars();
 
192
 
 
193
    // test whether this window makes part of the frame
 
194
    virtual bool IsOneOfBars(const wxWindow *win) const;
 
195
 
 
196
#if wxUSE_MENUS
 
197
    // override to update menu bar position when the frame size changes
 
198
    virtual void PositionMenuBar() { }
 
199
 
 
200
    // override to do something special when the menu bar is being removed
 
201
    // from the frame
 
202
    virtual void DetachMenuBar();
 
203
 
 
204
    // override to do something special when the menu bar is attached to the
 
205
    // frame
 
206
    virtual void AttachMenuBar(wxMenuBar *menubar);
 
207
 
 
208
    wxMenuBar *m_frameMenuBar;
 
209
 
 
210
#if wxUSE_STATUSBAR
 
211
    // the saved status bar text overwritten by DoGiveHelp()
 
212
    wxString m_oldStatusText;
 
213
#endif // wxUSE_STATUSBAR
 
214
#endif // wxUSE_MENUS
 
215
 
 
216
#if wxUSE_STATUSBAR
 
217
    // override to update status bar position (or anything else) when
 
218
    // something changes
 
219
    virtual void PositionStatusBar() { }
 
220
 
 
221
    // show the help string for this menu item in the given status bar: the
 
222
    // status bar pointer can be NULL; return true if help was shown
 
223
    bool ShowMenuHelp(wxStatusBar *statbar, int helpid);
 
224
 
 
225
    wxStatusBar *m_frameStatusBar;
 
226
#endif // wxUSE_STATUSBAR
 
227
 
 
228
 
 
229
    int m_statusBarPane;
 
230
 
 
231
#if wxUSE_TOOLBAR
 
232
    // override to update status bar position (or anything else) when
 
233
    // something changes
 
234
    virtual void PositionToolBar() { }
 
235
 
 
236
    wxToolBar *m_frameToolBar;
 
237
#endif // wxUSE_TOOLBAR
 
238
 
 
239
#if wxUSE_MENUS && wxUSE_STATUSBAR
 
240
    DECLARE_EVENT_TABLE()
 
241
#endif // wxUSE_MENUS && wxUSE_STATUSBAR
 
242
 
 
243
    DECLARE_NO_COPY_CLASS(wxFrameBase)
 
244
};
 
245
 
 
246
// include the real class declaration
 
247
#if defined(__WXUNIVERSAL__) // && !defined(__WXMICROWIN__)
 
248
    #include "wx/univ/frame.h"
 
249
#else // !__WXUNIVERSAL__
 
250
    #if defined(__WXPALMOS__)
 
251
        #include "wx/palmos/frame.h"
 
252
    #elif defined(__WXMSW__)
 
253
        #include "wx/msw/frame.h"
 
254
    #elif defined(__WXGTK__)
 
255
        #include "wx/gtk/frame.h"
 
256
    #elif defined(__WXMOTIF__)
 
257
        #include "wx/motif/frame.h"
 
258
    #elif defined(__WXMAC__)
 
259
        #include "wx/mac/frame.h"
 
260
    #elif defined(__WXCOCOA__)
 
261
        #include "wx/cocoa/frame.h"
 
262
    #elif defined(__WXPM__)
 
263
        #include "wx/os2/frame.h"
 
264
    #endif
 
265
#endif
 
266
 
 
267
#endif
 
268
    // _WX_FRAME_H_BASE_