2008-03-08 08:52:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: toplevel.h
|
2008-03-10 11:24:38 -04:00
|
|
|
// Purpose: interface of wxTopLevelWindow
|
2008-03-08 08:52:38 -05:00
|
|
|
// Author: wxWidgets team
|
|
|
|
// RCS-ID: $Id$
|
|
|
|
// Licence: wxWindows license
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
/**
|
|
|
|
@class wxTopLevelWindow
|
|
|
|
@wxheader{toplevel.h}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
wxTopLevelWindow is a common base class for wxDialog and
|
|
|
|
wxFrame. It is an abstract base class meaning that you never
|
|
|
|
work with objects of this class directly, but all of its methods are also
|
|
|
|
applicable for the two classes above.
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxcore}
|
|
|
|
@category{managedwnd}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-03-10 11:24:38 -04:00
|
|
|
@see wxTopLevelWindow::SetTransparent
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
class wxTopLevelWindow : public wxWindow
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
Returns @true if the platform supports making the window translucent.
|
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see SetTransparent()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
virtual bool CanSetTransparent();
|
|
|
|
|
|
|
|
/**
|
|
|
|
A synonym for CentreOnScreen().
|
|
|
|
*/
|
|
|
|
void CenterOnScreen(int direction);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Centres the window on screen.
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param direction
|
2008-03-09 08:33:59 -04:00
|
|
|
Specifies the direction for the centering. May be wxHORIZONTAL, wxVERTICAL
|
|
|
|
or wxBOTH.
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see wxWindow::CentreOnParent
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void CentreOnScreen(int direction = wxBOTH);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Enables or disables the Close button (most often in the right
|
|
|
|
upper corner of a dialog) and the Close entry of the system
|
|
|
|
menu (most often in the left upper corner of the dialog).
|
|
|
|
Currently only implemented for wxMSW and wxGTK. Returns
|
|
|
|
@true if operation was successful. This may be wrong on
|
|
|
|
X11 (including GTK+) where the window manager may not support
|
|
|
|
this operation and there is no way to find out.
|
|
|
|
*/
|
2008-03-09 08:33:59 -04:00
|
|
|
bool EnableCloseButton(bool enable = true);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns a pointer to the button which is the default for this window, or @c
|
|
|
|
@NULL.
|
|
|
|
The default button is the one activated by pressing the Enter key.
|
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
wxWindow* GetDefaultItem() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns the standard icon of the window. The icon will be invalid if it hadn't
|
|
|
|
been previously set by SetIcon().
|
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see GetIcons()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
const wxIcon GetIcon() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns all icons associated with the window, there will be none of them if
|
|
|
|
neither SetIcon() nor
|
|
|
|
SetIcons() had been called before.
|
|
|
|
Use GetIcon() to get the main icon of the
|
|
|
|
window.
|
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see wxIconBundle
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
const wxIconBundle GetIcons() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Gets a string containing the window title.
|
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see SetTitle()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
wxString GetTitle() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Unique to the wxWinCE port. Responds to showing/hiding SIP (soft input panel)
|
|
|
|
area and resize
|
|
|
|
window accordingly. Override this if you want to avoid resizing or do additional
|
|
|
|
operations.
|
|
|
|
*/
|
|
|
|
virtual bool HandleSettingChange(WXWPARAM wParam,
|
|
|
|
WXLPARAM lParam);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Iconizes or restores the window.
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param iconize
|
2008-03-09 08:33:59 -04:00
|
|
|
If @true, iconizes the window; if @false, shows and restores it.
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see IsIconized(), Maximize().
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void Iconize(bool iconize);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Returns @true if this window is currently active, i.e. if the user is
|
|
|
|
currently
|
|
|
|
working with it.
|
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
bool IsActive() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns @true if this window is expected to be always maximized, either due
|
|
|
|
to platform policy
|
|
|
|
or due to local policy regarding particular class.
|
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
virtual bool IsAlwaysMaximized() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns @true if the window is in fullscreen mode.
|
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see ShowFullScreen()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
bool IsFullScreen();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Returns @true if the window is iconized.
|
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
bool IsIconized() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns @true if the window is maximized.
|
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
bool IsMaximized() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
@b @c This method is specific to wxUniversal port
|
|
|
|
Returns @true if this window is using native decorations, @false if we draw
|
|
|
|
them ourselves.
|
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see UseNativeDecorations(),
|
|
|
|
UseNativeDecorationsByDefault()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
bool IsUsingNativeDecorations() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Maximizes or restores the window.
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param maximize
|
2008-03-09 08:33:59 -04:00
|
|
|
If @true, maximizes the window, otherwise it restores it.
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see Iconize()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void Maximize(bool maximize);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Use a system-dependent way to attract users attention to the window when it is
|
|
|
|
in background.
|
2008-03-09 08:33:59 -04:00
|
|
|
@a flags may have the value of either @c wxUSER_ATTENTION_INFO
|
2008-03-08 08:52:38 -05:00
|
|
|
(default) or @c wxUSER_ATTENTION_ERROR which results in a more drastic
|
|
|
|
action. When in doubt, use the default value.
|
|
|
|
Note that this function should normally be only used when the application is
|
|
|
|
not already in foreground.
|
|
|
|
This function is currently implemented for Win32 where it flashes the
|
|
|
|
window icon in the taskbar, and for wxGTK with task bars supporting it.
|
|
|
|
*/
|
|
|
|
void RequestUserAttention(int flags = wxUSER_ATTENTION_INFO);
|
|
|
|
|
|
|
|
/**
|
2008-03-09 08:33:59 -04:00
|
|
|
Changes the default item for the panel, usually @a win is a button.
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see GetDefaultItem()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetDefaultItem(wxWindow win);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the icon for this window.
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param icon
|
2008-03-09 08:33:59 -04:00
|
|
|
The icon to associate with this window.
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
@remarks The window takes a 'copy' of icon, but since it uses reference
|
2008-03-09 08:33:59 -04:00
|
|
|
counting, the copy is very quick. It is safe to delete
|
|
|
|
icon after calling this function.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetIcon(const wxIcon& icon);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets several icons of different sizes for this window: this allows to use
|
|
|
|
different icons for different situations (e.g. task switching bar, taskbar,
|
|
|
|
window title bar) instead of scaling, with possibly bad looking results, the
|
|
|
|
only icon set by SetIcon().
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param icons
|
2008-03-09 08:33:59 -04:00
|
|
|
The icons to associate with this window.
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see wxIconBundle.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetIcons(const wxIconBundle& icons);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets action or menu activated by pressing left hardware button on the smart
|
|
|
|
phones.
|
|
|
|
Unavailable on full keyboard machines.
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param id
|
2008-03-09 08:33:59 -04:00
|
|
|
Identifier for this button.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param label
|
2008-03-09 08:33:59 -04:00
|
|
|
Text to be displayed on the screen area dedicated to this hardware button.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param subMenu
|
2008-03-09 08:33:59 -04:00
|
|
|
The menu to be opened after pressing this hardware button.
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see SetRightMenu().
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetLeftMenu(int id = wxID_ANY,
|
|
|
|
const wxString& label = wxEmptyString,
|
2008-03-09 08:33:59 -04:00
|
|
|
wxMenu* subMenu = NULL);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
A simpler interface for setting the size hints than
|
|
|
|
SetSizeHints().
|
|
|
|
*/
|
|
|
|
void SetMaxSize(const wxSize& size);
|
|
|
|
|
|
|
|
/**
|
|
|
|
A simpler interface for setting the size hints than
|
|
|
|
SetSizeHints().
|
|
|
|
*/
|
|
|
|
void SetMinSize(const wxSize& size);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets action or menu activated by pressing right hardware button on the smart
|
|
|
|
phones.
|
|
|
|
Unavailable on full keyboard machines.
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param id
|
2008-03-09 08:33:59 -04:00
|
|
|
Identifier for this button.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param label
|
2008-03-09 08:33:59 -04:00
|
|
|
Text to be displayed on the screen area dedicated to this hardware button.
|
2008-03-08 09:43:31 -05:00
|
|
|
@param subMenu
|
2008-03-09 08:33:59 -04:00
|
|
|
The menu to be opened after pressing this hardware button.
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see SetLeftMenu().
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetRightMenu(int id = wxID_ANY,
|
|
|
|
const wxString& label = wxEmptyString,
|
2008-03-09 08:33:59 -04:00
|
|
|
wxMenu* subMenu = NULL);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
If the platform supports it, sets the shape of the window to that
|
|
|
|
depicted by @e region. The system will not display or
|
|
|
|
respond to any mouse event for the pixels that lie outside of the
|
|
|
|
region. To reset the window to the normal rectangular shape simply
|
|
|
|
call @e SetShape again with an empty region. Returns @true if the
|
|
|
|
operation is successful.
|
|
|
|
*/
|
|
|
|
bool SetShape(const wxRegion& region);
|
|
|
|
|
|
|
|
//@{
|
|
|
|
/**
|
|
|
|
Allows specification of minimum and maximum window sizes, and window size
|
|
|
|
increments.
|
|
|
|
If a pair of values is not set (or set to -1), no constraints will be used.
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param incW
|
2008-03-09 08:33:59 -04:00
|
|
|
Specifies the increment for sizing the width (GTK/Motif/Xt only).
|
2008-03-08 09:43:31 -05:00
|
|
|
@param incH
|
2008-03-09 08:33:59 -04:00
|
|
|
Specifies the increment for sizing the height (GTK/Motif/Xt only).
|
2008-03-08 09:43:31 -05:00
|
|
|
@param incSize
|
2008-03-09 08:33:59 -04:00
|
|
|
Increment size (only taken into account under X11-based
|
|
|
|
ports such as wxGTK/wxMotif/wxX11).
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
@remarks Notice that this function not only prevents the user from
|
2008-03-09 08:33:59 -04:00
|
|
|
resizing the window outside the given bounds but it
|
|
|
|
also prevents the program itself from doing it using
|
|
|
|
SetSize.
|
|
|
|
*/
|
|
|
|
virtual void SetSizeHints(int minW, int minH, int maxW = -1,
|
|
|
|
int maxH = -1,
|
|
|
|
int incW = -1,
|
|
|
|
int incH = -1);
|
2008-03-08 09:43:31 -05:00
|
|
|
void SetSizeHints(const wxSize& minSize,
|
2008-03-09 08:33:59 -04:00
|
|
|
const wxSize& maxSize = wxDefaultSize,
|
|
|
|
const wxSize& incSize = wxDefaultSize);
|
2008-03-08 08:52:38 -05:00
|
|
|
//@}
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the window title.
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param title
|
2008-03-09 08:33:59 -04:00
|
|
|
The window title.
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see GetTitle()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
virtual void SetTitle(const wxString& title);
|
|
|
|
|
|
|
|
/**
|
|
|
|
If the platform supports it will set the window to be translucent
|
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param alpha
|
2008-03-09 08:33:59 -04:00
|
|
|
Determines how opaque or transparent the window will
|
|
|
|
be, if the platform supports the opreration. A value of 0 sets the
|
|
|
|
window to be fully transparent, and a value of 255 sets the window
|
|
|
|
to be fully opaque.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
virtual bool SetTransparent(int alpha);
|
|
|
|
|
|
|
|
/**
|
|
|
|
This virtual function is not meant to be called directly but can be overridden
|
|
|
|
to return @false (it returns @true by default) to allow the application to
|
|
|
|
close even if this, presumably not very important, window is still opened.
|
|
|
|
By default, the application stays alive as long as there are any open top level
|
|
|
|
windows.
|
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
virtual bool ShouldPreventAppExit() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-03-09 08:33:59 -04:00
|
|
|
Depending on the value of @a show parameter the window is either shown full
|
|
|
|
screen or restored to its normal state. @a style is a bit list containing
|
2008-03-08 08:52:38 -05:00
|
|
|
some or all of the following values, which indicate what elements of the window
|
|
|
|
to hide in full-screen mode:
|
|
|
|
wxFULLSCREEN_NOMENUBAR
|
|
|
|
wxFULLSCREEN_NOTOOLBAR
|
|
|
|
wxFULLSCREEN_NOSTATUSBAR
|
|
|
|
wxFULLSCREEN_NOBORDER
|
|
|
|
wxFULLSCREEN_NOCAPTION
|
|
|
|
wxFULLSCREEN_ALL (all of the above)
|
|
|
|
This function has not been tested with MDI frames.
|
|
|
|
Note that showing a window full screen also actually
|
|
|
|
@ref wxWindow::show Show()s if it hadn't been shown yet.
|
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see IsFullScreen()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL);
|
|
|
|
|
|
|
|
/**
|
|
|
|
@b @c This method is specific to wxUniversal port
|
|
|
|
Use native or custom-drawn decorations for this window only. Notice that to
|
|
|
|
have any effect this method must be called before really creating the window,
|
|
|
|
i.e. two step creation must be used:
|
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see UseNativeDecorationsByDefault(),
|
|
|
|
IsUsingNativeDecorations()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-09 08:33:59 -04:00
|
|
|
void UseNativeDecorations(bool native = true);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
@b @c This method is specific to wxUniversal port
|
|
|
|
Top level windows in wxUniversal port can use either system-provided window
|
|
|
|
decorations (i.e. title bar and various icons, buttons and menus in it) or draw
|
|
|
|
the decorations themselves. By default the system decorations are used if they
|
2008-03-09 08:33:59 -04:00
|
|
|
are available, but this method can be called with @a native set to @false to
|
2008-03-08 08:52:38 -05:00
|
|
|
change this for all windows created after this point.
|
|
|
|
Also note that if @c WXDECOR environment variable is set, then custom
|
|
|
|
decorations are used by default and so it may make sense to call this method
|
|
|
|
with default argument if the application can't use custom decorations at all
|
|
|
|
for some reason.
|
|
|
|
*/
|
2008-03-09 08:33:59 -04:00
|
|
|
void UseNativeDecorationsByDefault(bool native = true);
|
2008-03-08 08:52:38 -05:00
|
|
|
};
|
2008-03-10 11:24:38 -04:00
|
|
|
|