1
/////////////////////////////////////////////////////////////////////////////
3
// Purpose: wxFrame class interface
4
// Author: Vadim Zeitlin
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
/////////////////////////////////////////////////////////////////////////////
12
#ifndef _WX_FRAME_H_BASE_
13
#define _WX_FRAME_H_BASE_
15
// ----------------------------------------------------------------------------
17
// ----------------------------------------------------------------------------
19
#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
20
#pragma interface "framebase.h"
23
#include "wx/toplevel.h" // the base class
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;
30
class WXDLLEXPORT wxFrame;
31
class WXDLLEXPORT wxMenuBar;
32
class WXDLLEXPORT wxStatusBar;
33
class WXDLLEXPORT wxToolBar;
35
// ----------------------------------------------------------------------------
37
// ----------------------------------------------------------------------------
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
45
// ----------------------------------------------------------------------------
46
// wxFrame is a top-level window with optional menubar, statusbar and toolbar
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
// ----------------------------------------------------------------------------
57
class WXDLLEXPORT wxFrameBase : public wxTopLevelWindow
62
virtual ~wxFrameBase();
64
wxFrame *New(wxWindow *parent,
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);
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;
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();
87
virtual void SetMenuBar(wxMenuBar *menubar);
88
virtual wxMenuBar *GetMenuBar() const { return m_frameMenuBar; }
91
// process menu command: returns true if processed
92
bool ProcessCommand(int winid);
94
// status bar functions
95
// --------------------
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,
107
const wxString& name);
108
// get the main status bar
109
virtual wxStatusBar *GetStatusBar() const { return m_frameStatusBar; }
111
// sets the main status bar
112
virtual void SetStatusBar(wxStatusBar *statBar);
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);
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
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,
136
const wxString& name );
138
// get/set the main toolbar
139
virtual wxToolBar *GetToolBar() const { return m_frameToolBar; }
140
virtual void SetToolBar(wxToolBar *toolbar);
141
#endif // wxUSE_TOOLBAR
143
// implementation only from now on
144
// -------------------------------
149
void OnMenuOpen(wxMenuEvent& event);
150
void OnMenuClose(wxMenuEvent& event);
151
void OnMenuHighlight(wxMenuEvent& event);
152
#endif // wxUSE_STATUSBAR
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
159
// do the UI update processing for this window
160
virtual void UpdateWindowUI(long flags = wxUPDATE_UI_NONE);
162
// Implement internal behaviour (menu updating on some platforms)
163
virtual void OnInternalIdle();
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)
172
virtual bool IsFullScreen() const
174
#endif // no wxTopLevelWindowNative
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);
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
186
// the frame main menu/status/tool bars
187
// ------------------------------------
189
// this (non virtual!) function should be called from dtor to delete the
190
// main menubar, statusbar and toolbar (if any)
191
void DeleteAllBars();
193
// test whether this window makes part of the frame
194
virtual bool IsOneOfBars(const wxWindow *win) const;
197
// override to update menu bar position when the frame size changes
198
virtual void PositionMenuBar() { }
200
// override to do something special when the menu bar is being removed
202
virtual void DetachMenuBar();
204
// override to do something special when the menu bar is attached to the
206
virtual void AttachMenuBar(wxMenuBar *menubar);
208
wxMenuBar *m_frameMenuBar;
211
// the saved status bar text overwritten by DoGiveHelp()
212
wxString m_oldStatusText;
213
#endif // wxUSE_STATUSBAR
214
#endif // wxUSE_MENUS
217
// override to update status bar position (or anything else) when
219
virtual void PositionStatusBar() { }
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);
225
wxStatusBar *m_frameStatusBar;
226
#endif // wxUSE_STATUSBAR
232
// override to update status bar position (or anything else) when
234
virtual void PositionToolBar() { }
236
wxToolBar *m_frameToolBar;
237
#endif // wxUSE_TOOLBAR
239
#if wxUSE_MENUS && wxUSE_STATUSBAR
240
DECLARE_EVENT_TABLE()
241
#endif // wxUSE_MENUS && wxUSE_STATUSBAR
243
DECLARE_NO_COPY_CLASS(wxFrameBase)
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"