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
|
2010-07-13 09:29:13 -04:00
|
|
|
// Licence: wxWindows licence
|
2008-03-08 08:52:38 -05:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
2008-05-08 16:46:34 -04:00
|
|
|
/**
|
|
|
|
Styles used with wxTopLevelWindow::RequestUserAttention().
|
|
|
|
*/
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
wxUSER_ATTENTION_INFO = 1, ///< Requests user attention,
|
|
|
|
wxUSER_ATTENTION_ERROR = 2 ///< Results in a more drastic action.
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
Styles used with wxTopLevelWindow::ShowFullScreen().
|
|
|
|
*/
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
wxFULLSCREEN_NOMENUBAR = 0x0001, ///< Don't display the menu bar.
|
|
|
|
wxFULLSCREEN_NOTOOLBAR = 0x0002, ///< Don't display toolbar bars.
|
|
|
|
wxFULLSCREEN_NOSTATUSBAR = 0x0004, ///< Don't display the status bar.
|
|
|
|
wxFULLSCREEN_NOBORDER = 0x0008, ///< Don't display any border.
|
|
|
|
wxFULLSCREEN_NOCAPTION = 0x0010, ///< Don't display a caption.
|
|
|
|
|
|
|
|
/**
|
|
|
|
Combination of all above, will display the least possible.
|
|
|
|
*/
|
|
|
|
wxFULLSCREEN_ALL = wxFULLSCREEN_NOMENUBAR | wxFULLSCREEN_NOTOOLBAR |
|
|
|
|
wxFULLSCREEN_NOSTATUSBAR | wxFULLSCREEN_NOBORDER |
|
|
|
|
wxFULLSCREEN_NOCAPTION
|
|
|
|
};
|
|
|
|
|
2011-12-30 01:14:17 -05:00
|
|
|
#define wxDEFAULT_FRAME_STYLE (wxSYSTEM_MENU | \
|
|
|
|
wxRESIZE_BORDER | \
|
|
|
|
wxMINIMIZE_BOX | \
|
|
|
|
wxMAXIMIZE_BOX | \
|
|
|
|
wxCLOSE_BOX | \
|
|
|
|
wxCAPTION | \
|
|
|
|
wxCLIP_CHILDREN)
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
@class wxTopLevelWindow
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-05-08 16:46:34 -04: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-11-22 08:12:32 -05:00
|
|
|
Note that the instances of wxTopLevelWindow are managed by wxWidgets in the
|
|
|
|
internal top level window list.
|
|
|
|
|
2009-02-18 12:58:51 -05:00
|
|
|
@beginEventEmissionTable
|
2011-03-09 04:40:04 -05:00
|
|
|
@event{EVT_MAXIMIZE(id, func)}
|
2009-02-18 12:58:51 -05:00
|
|
|
Process a @c wxEVT_MAXIMIZE event. See wxMaximizeEvent.
|
|
|
|
@event{EVT_MOVE(func)}
|
|
|
|
Process a @c wxEVT_MOVE event, which is generated when a window is moved.
|
|
|
|
See wxMoveEvent.
|
|
|
|
@event{EVT_MOVE_START(func)}
|
|
|
|
Process a @c wxEVT_MOVE_START event, which is generated when the user starts
|
|
|
|
to move or size a window. wxMSW only.
|
|
|
|
See wxMoveEvent.
|
|
|
|
@event{EVT_MOVE_END(func)}
|
|
|
|
Process a @c wxEVT_MOVE_END event, which is generated when the user stops
|
|
|
|
moving or sizing a window. wxMSW only.
|
|
|
|
See wxMoveEvent.
|
2010-08-15 17:14:11 -04:00
|
|
|
@event{EVT_SHOW(func)}
|
|
|
|
Process a @c wxEVT_SHOW event. See wxShowEvent.
|
2009-02-18 12:58:51 -05:00
|
|
|
@endEventTable
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@library{wxcore}
|
|
|
|
@category{managedwnd}
|
2008-03-08 09:43:31 -05:00
|
|
|
|
2008-05-08 16:46:34 -04:00
|
|
|
@see wxDialog, wxFrame
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2011-10-10 06:53:23 -04:00
|
|
|
class wxTopLevelWindow : public wxNonOwnedWindow
|
2008-03-08 08:52:38 -05:00
|
|
|
{
|
|
|
|
public:
|
2008-11-24 19:24:58 -05:00
|
|
|
/**
|
|
|
|
Default ctor.
|
|
|
|
*/
|
|
|
|
wxTopLevelWindow();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Constructor creating the top level window.
|
|
|
|
*/
|
|
|
|
wxTopLevelWindow(wxWindow *parent,
|
2010-12-27 15:47:12 -05:00
|
|
|
wxWindowID id,
|
2008-11-24 19:24:58 -05:00
|
|
|
const wxString& title,
|
|
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
|
|
const wxSize& size = wxDefaultSize,
|
|
|
|
long style = wxDEFAULT_FRAME_STYLE,
|
|
|
|
const wxString& name = wxFrameNameStr);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Destructor. Remember that wxTopLevelWindows do not get immediately
|
|
|
|
destroyed when the user (or the app) closes them; they have a
|
|
|
|
@b delayed destruction.
|
|
|
|
|
|
|
|
See @ref overview_windowdeletion for more info.
|
|
|
|
*/
|
|
|
|
virtual ~wxTopLevelWindow();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Creates the top level window.
|
|
|
|
*/
|
|
|
|
bool Create(wxWindow *parent,
|
|
|
|
wxWindowID id,
|
|
|
|
const wxString& title,
|
|
|
|
const wxPoint& pos = wxDefaultPosition,
|
|
|
|
const wxSize& size = wxDefaultSize,
|
|
|
|
long style = wxDEFAULT_FRAME_STYLE,
|
|
|
|
const wxString& name = wxFrameNameStr);
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
Returns @true if the platform supports making the window translucent.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
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().
|
|
|
|
*/
|
2012-07-12 16:50:31 -04:00
|
|
|
void CenterOnScreen(int direction = wxBOTH);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Centres the window on screen.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param direction
|
2008-05-08 16:46:34 -04:00
|
|
|
Specifies the direction for the centering. May be @c wxHORIZONTAL,
|
|
|
|
@c wxVERTICAL or @c wxBOTH.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
2008-05-08 16:46:34 -04:00
|
|
|
@see wxWindow::CentreOnParent()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void CentreOnScreen(int direction = wxBOTH);
|
|
|
|
|
|
|
|
/**
|
2008-05-08 16:46:34 -04:00
|
|
|
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).
|
|
|
|
|
|
|
|
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-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-13 07:09:56 -04:00
|
|
|
virtual bool EnableCloseButton(bool enable = true);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2015-09-06 08:17:46 -04:00
|
|
|
/**
|
|
|
|
Enables or disables the Maximize button (in the right or left upper
|
|
|
|
corner of a frame or dialog).
|
|
|
|
|
|
|
|
Currently only implemented for wxMSW and wxOSX.
|
|
|
|
|
|
|
|
The window style must contain wxMAXIMIZE_BOX.
|
|
|
|
|
|
|
|
Returns @true if operation was successful. Note that a successful
|
|
|
|
operation does not change the window style flags.
|
|
|
|
|
|
|
|
@since 3.1.0
|
|
|
|
*/
|
|
|
|
virtual bool EnableMaximizeButton(bool enable = true);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Enables or disables the Minimize button (in the right or left upper
|
|
|
|
corner of a frame or dialog).
|
|
|
|
|
|
|
|
Currently only implemented for wxMSW and wxOSX.
|
|
|
|
|
|
|
|
The window style must contain wxMINIMIZE_BOX.
|
|
|
|
|
|
|
|
Note that in wxMSW a successful operation will change the window
|
|
|
|
style flags.
|
|
|
|
|
|
|
|
Returns @true if operation was successful. Note that a successful
|
|
|
|
operation does not change the window style flags.
|
|
|
|
|
|
|
|
@since 3.1.0
|
|
|
|
*/
|
|
|
|
virtual bool EnableMinimizeButton(bool enable = true);
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
2008-05-08 16:46:34 -04: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-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
wxWindow* GetDefaultItem() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2010-08-11 12:03:55 -04:00
|
|
|
/**
|
|
|
|
Get the default size for a new top level window.
|
|
|
|
|
|
|
|
This is used internally by wxWidgets on some platforms to determine the
|
|
|
|
default size for a window created using ::wxDefaultSize so it is not
|
|
|
|
necessary to use it when creating a wxTopLevelWindow, however it may be
|
|
|
|
useful if a rough estimation of the window size is needed for some
|
|
|
|
other reason.
|
|
|
|
|
|
|
|
@since 2.9.2
|
|
|
|
*/
|
|
|
|
static wxSize GetDefaultSize();
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
2008-05-08 16:46:34 -04:00
|
|
|
Returns the standard icon of the window. The icon will be invalid if it
|
|
|
|
hadn't been previously set by SetIcon().
|
2008-03-20 09:45:17 -04:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see GetIcons()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-28 10:29:36 -04:00
|
|
|
wxIcon GetIcon() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-05-08 16:46:34 -04: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-20 09:45:17 -04:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see wxIconBundle
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-28 10:29:36 -04:00
|
|
|
const wxIconBundle& GetIcons() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Gets a string containing the window title.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see SetTitle()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-13 07:09:56 -04:00
|
|
|
virtual wxString GetTitle() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Iconizes or restores the window.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
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-20 09:45:17 -04:00
|
|
|
|
2014-02-17 18:52:50 -05:00
|
|
|
@see IsIconized(), Restore()(), wxIconizeEvent.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-28 10:29:36 -04:00
|
|
|
virtual void Iconize(bool iconize = true);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2012-11-30 19:14:07 -05:00
|
|
|
Returns @true if this window is currently active, i.e.\ if the user is
|
2008-05-08 16:46:34 -04:00
|
|
|
currently working with it.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-09-27 07:21:10 -04:00
|
|
|
virtual bool IsActive();
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-05-08 16:46:34 -04: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-08 08:52:38 -05:00
|
|
|
*/
|
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-20 09:45:17 -04:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see ShowFullScreen()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-13 07:09:56 -04:00
|
|
|
virtual bool IsFullScreen() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns @true if the window is iconized.
|
|
|
|
*/
|
2008-10-13 07:09:56 -04:00
|
|
|
virtual bool IsIconized() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
Returns @true if the window is maximized.
|
|
|
|
*/
|
2008-10-13 07:09:56 -04:00
|
|
|
virtual bool IsMaximized() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-05-08 16:46:34 -04:00
|
|
|
This method is specific to wxUniversal port.
|
|
|
|
|
|
|
|
Returns @true if this window is using native decorations, @false if we
|
|
|
|
draw them ourselves.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
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
|
|
|
|
2008-11-22 07:29:09 -05:00
|
|
|
/**
|
|
|
|
See wxWindow::SetAutoLayout(): when auto layout is on, this function gets
|
|
|
|
called automatically when the window is resized.
|
|
|
|
*/
|
|
|
|
virtual bool Layout();
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
Maximizes or restores the window.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
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-20 09:45:17 -04:00
|
|
|
|
2014-02-17 18:52:50 -05:00
|
|
|
@see Restore(), Iconize()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-28 10:29:36 -04:00
|
|
|
virtual void Maximize(bool maximize = true);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2011-08-08 05:32:42 -04:00
|
|
|
/**
|
|
|
|
MSW-specific function for accessing the system menu.
|
|
|
|
|
|
|
|
Returns a wxMenu pointer representing the system menu of the window
|
|
|
|
under MSW. The returned wxMenu may be used, if non-@c NULL, to add
|
2013-04-25 06:11:03 -04:00
|
|
|
extra items to the system menu. The usual @c wxEVT_MENU
|
2011-08-08 05:32:42 -04:00
|
|
|
events (that can be processed using @c EVT_MENU event table macro) will
|
|
|
|
then be generated for them. All the other wxMenu methods may be used as
|
|
|
|
well but notice that they won't allow you to access any standard system
|
|
|
|
menu items (e.g. they can't be deleted or modified in any way
|
|
|
|
currently).
|
|
|
|
|
|
|
|
Notice that because of the native system limitations the identifiers of
|
|
|
|
the items added to the system menu must be multiples of 16, otherwise
|
|
|
|
no events will be generated for them.
|
|
|
|
|
|
|
|
The returned pointer must @em not be deleted, it is owned by the window
|
|
|
|
and will be only deleted when the window itself is destroyed.
|
|
|
|
|
|
|
|
This function is not available in the other ports by design, any
|
2011-08-27 10:58:43 -04:00
|
|
|
occurrences of it in the portable code must be guarded by
|
|
|
|
@code #ifdef __WXMSW__ @endcode preprocessor guards.
|
2011-08-08 05:32:42 -04:00
|
|
|
|
|
|
|
@since 2.9.3
|
|
|
|
*/
|
|
|
|
wxMenu *MSWGetSystemMenu() const;
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
2008-05-08 16:46:34 -04:00
|
|
|
Use a system-dependent way to attract users attention to the window when
|
|
|
|
it is in background.
|
|
|
|
|
|
|
|
@a flags may have the value of either @c ::wxUSER_ATTENTION_INFO
|
|
|
|
(default) or @c ::wxUSER_ATTENTION_ERROR which results in a more drastic
|
2008-03-08 08:52:38 -05:00
|
|
|
action. When in doubt, use the default value.
|
2008-05-08 16:46:34 -04:00
|
|
|
|
|
|
|
|
|
|
|
@note 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.
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-09-27 07:21:10 -04:00
|
|
|
virtual void RequestUserAttention(int flags = wxUSER_ATTENTION_INFO);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2014-02-17 18:52:50 -05:00
|
|
|
/**
|
|
|
|
Restore a previously iconized or maximized window to its normal state.
|
|
|
|
|
|
|
|
In wxGTK this method currently doesn't return the maximized window to
|
|
|
|
its normal state and you must use Maximize() with @false argument
|
|
|
|
explicitly for this. In the other ports, it both unmaximizes the
|
|
|
|
maximized windows and uniconizes the iconized ones.
|
|
|
|
|
|
|
|
@see Iconize(), Maximize()
|
|
|
|
*/
|
|
|
|
void Restore();
|
|
|
|
|
2018-04-29 13:37:42 -04:00
|
|
|
/**
|
|
|
|
Class used with SaveGeometry() and RestoreToGeometry().
|
|
|
|
|
|
|
|
This is an abstract base class, i.e. to use it you must define a
|
|
|
|
derived class implementing the pure virtual SaveField() and
|
|
|
|
RestoreField() methods.
|
|
|
|
|
|
|
|
For example, if you wished to store the window geometry in a database,
|
|
|
|
you could derive a class saving fields such as "width" or "height" in a
|
|
|
|
table in this database and restoring them from it later.
|
|
|
|
|
|
|
|
@since 3.1.2
|
|
|
|
*/
|
|
|
|
class GeometrySerializer
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
Save a single field with the given value.
|
|
|
|
|
|
|
|
Note that if this function returns @false, SaveGeometry() supposes
|
|
|
|
that saving the geometry failed and returns @false itself, without
|
|
|
|
even trying to save anything else.
|
|
|
|
|
|
|
|
@param name uniquely identifies the field but is otherwise
|
|
|
|
arbitrary.
|
|
|
|
@param value value of the field (can be positive or negative, i.e.
|
|
|
|
it can't be assumed that a value like -1 is invalid).
|
|
|
|
|
|
|
|
@return @true if the field was saved or @false if saving it failed,
|
|
|
|
resulting in wxTopLevelWindow::SaveGeometry() failure.
|
|
|
|
*/
|
|
|
|
virtual bool SaveField(const wxString& name, int value) const = 0;
|
|
|
|
|
|
|
|
/**
|
|
|
|
Try to restore a single field.
|
|
|
|
|
|
|
|
Unlike for SaveField(), returning @false from this function may
|
|
|
|
indicate that the value simply wasn't present and doesn't prevent
|
|
|
|
RestoreToGeometry() from continuing with trying to restore the
|
|
|
|
other values.
|
|
|
|
|
|
|
|
@param name uniquely identifies the field
|
|
|
|
@param value non-@NULL pointer to the value to be filled by this
|
|
|
|
function
|
|
|
|
|
|
|
|
@return @true if the value was retrieved or @false if it wasn't
|
|
|
|
found or an error occurred.
|
|
|
|
*/
|
|
|
|
virtual bool RestoreField(const wxString& name, int* value) = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
Restores the window to the previously saved geometry.
|
|
|
|
|
|
|
|
This is a companion function to SaveGeometry() and can be called later
|
|
|
|
to restore the window to the geometry it had when it was saved.
|
|
|
|
|
|
|
|
@param ser An object implementing GeometrySerializer virtual methods.
|
|
|
|
|
|
|
|
@return @true if any (and, usually, but not necessarily, all) of the
|
|
|
|
window geometry attributes were restored or @false if there was no
|
|
|
|
saved geometry information at all or restoring it failed.
|
|
|
|
|
|
|
|
@since 3.1.2
|
|
|
|
*/
|
|
|
|
bool RestoreToGeometry(GeometrySerializer& ser);
|
|
|
|
|
|
|
|
/**
|
|
|
|
Save the current window geometry to allow restoring it later.
|
|
|
|
|
|
|
|
After calling this function, window geometry is saved in the provided
|
|
|
|
serializer and calling RestoreToGeometry() with the same serializer
|
|
|
|
later (i.e. usually during a subsequent program execution) would
|
|
|
|
restore the window to the same position, size, maximized/minimized
|
|
|
|
state etc.
|
|
|
|
|
|
|
|
This function is used by wxPersistentTLW, so it is not necessary to use
|
|
|
|
it if the goal is to just save and restore window geometry in the
|
|
|
|
simplest possible way. However is more flexibility is required, it can
|
|
|
|
be also used directly with a custom serializer object.
|
|
|
|
|
|
|
|
@param ser An object implementing GeometrySerializer virtual methods.
|
|
|
|
|
|
|
|
@return @true if the geometry was saved, @false if doing it failed
|
|
|
|
|
|
|
|
@since 3.1.2
|
|
|
|
*/
|
|
|
|
bool SaveGeometry(const GeometrySerializer& ser) const;
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
2008-03-09 08:33:59 -04:00
|
|
|
Changes the default item for the panel, usually @a win is a button.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
@see GetDefaultItem()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-28 10:29:36 -04:00
|
|
|
wxWindow* SetDefaultItem(wxWindow* win);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2019-01-30 11:28:08 -05:00
|
|
|
|
2010-12-27 15:47:12 -05:00
|
|
|
wxWindow* SetTmpDefaultItem(wxWindow * win);
|
|
|
|
wxWindow* GetTmpDefaultItem() const;
|
|
|
|
|
2019-01-30 11:28:08 -05:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
|
|
|
Sets the icon for this window.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param icon
|
2008-05-08 16:46:34 -04:00
|
|
|
The wxIcon to associate with this window.
|
|
|
|
|
|
|
|
@remarks The window takes a 'copy' of @a icon, but since it uses
|
|
|
|
reference counting, the copy is very quick. It is safe to
|
|
|
|
delete @a icon after calling this function.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
2008-10-16 15:13:32 -04:00
|
|
|
@note In wxMSW, @a icon must be either 16x16 or 32x32 icon.
|
|
|
|
|
|
|
|
@see wxIcon, SetIcons()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
|
|
|
void SetIcon(const wxIcon& icon);
|
|
|
|
|
|
|
|
/**
|
2019-01-25 21:14:20 -05:00
|
|
|
Sets several icons of different sizes for this window: this allows
|
|
|
|
using different icons for different situations (e.g. task switching bar,
|
2008-05-08 16:46:34 -04:00
|
|
|
taskbar, window title bar) instead of scaling, with possibly bad looking
|
|
|
|
results, the only icon set by SetIcon().
|
2008-03-20 09:45:17 -04:00
|
|
|
|
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-20 09:45:17 -04:00
|
|
|
|
2008-10-16 15:13:32 -04:00
|
|
|
@note In wxMSW, @a icons must contain a 16x16 or 32x32 icon,
|
|
|
|
preferably both.
|
|
|
|
|
|
|
|
@see wxIconBundle
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-09-27 07:21:10 -04:00
|
|
|
virtual void SetIcons(const wxIconBundle& icons);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-05-08 16:46:34 -04:00
|
|
|
A simpler interface for setting the size hints than SetSizeHints().
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-09-27 07:21:10 -04:00
|
|
|
virtual void SetMaxSize(const wxSize& size);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-05-08 16:46:34 -04:00
|
|
|
A simpler interface for setting the size hints than SetSizeHints().
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-09-27 07:21:10 -04:00
|
|
|
virtual void SetMinSize(const wxSize& size);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-05-08 16:46:34 -04:00
|
|
|
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-20 09:45:17 -04:00
|
|
|
|
2008-10-04 10:52:38 -04:00
|
|
|
@param minW
|
|
|
|
The minimum width.
|
|
|
|
@param minH
|
|
|
|
The minimum height.
|
|
|
|
@param maxW
|
|
|
|
The maximum width.
|
|
|
|
@param maxH
|
|
|
|
The maximum height.
|
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-20 09:45:17 -04:00
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
@remarks Notice that this function not only prevents the user from
|
2008-05-08 16:46:34 -04:00
|
|
|
resizing the window outside the given bounds but it also
|
|
|
|
prevents the program itself from doing it using
|
|
|
|
wxWindow::SetSize().
|
|
|
|
|
2008-03-09 08:33:59 -04:00
|
|
|
*/
|
2008-10-04 10:52:38 -04:00
|
|
|
virtual void SetSizeHints(int minW, int minH,
|
|
|
|
int maxW = -1, int maxH = -1,
|
|
|
|
int incW = -1, int incH = -1);
|
2008-05-08 16:46:34 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
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-10-04 10:52:38 -04:00
|
|
|
@param minSize
|
|
|
|
The minimum size of the window.
|
|
|
|
@param maxSize
|
|
|
|
The maximum size of the window.
|
2008-05-08 16:46:34 -04:00
|
|
|
@param incSize
|
|
|
|
Increment size (only taken into account under X11-based ports such
|
|
|
|
as wxGTK/wxMotif/wxX11).
|
|
|
|
|
|
|
|
@remarks Notice that this function not only prevents the user from
|
|
|
|
resizing the window outside the given bounds but it also
|
|
|
|
prevents the program itself from doing it using
|
|
|
|
wxWindow::SetSize().
|
|
|
|
*/
|
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-20 09:45:17 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param title
|
2008-03-09 08:33:59 -04:00
|
|
|
The window title.
|
2008-03-20 09:45:17 -04: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);
|
|
|
|
|
|
|
|
/**
|
2008-05-08 16:46:34 -04:00
|
|
|
If the platform supports it will set the window to be translucent.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
2008-03-08 09:43:31 -05:00
|
|
|
@param alpha
|
2008-05-08 16:46:34 -04:00
|
|
|
Determines how opaque or transparent the window will be, if the
|
2011-04-03 16:31:32 -04:00
|
|
|
platform supports the operation. A value of 0 sets the window to be
|
2008-05-08 16:46:34 -04:00
|
|
|
fully transparent, and a value of 255 sets the window to be fully
|
|
|
|
opaque.
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-28 10:29:36 -04:00
|
|
|
virtual bool SetTransparent(wxByte alpha);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-05-08 16:46:34 -04:00
|
|
|
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-08 08:52:38 -05:00
|
|
|
*/
|
2008-03-09 12:24:26 -04:00
|
|
|
virtual bool ShouldPreventAppExit() const;
|
2019-01-30 11:28:08 -05:00
|
|
|
|
2009-12-06 20:54:21 -05:00
|
|
|
/**
|
2009-12-09 00:25:32 -05:00
|
|
|
This function sets the wxTopLevelWindow's modified state on OS X,
|
|
|
|
which currently draws a black dot in the wxTopLevelWindow's close button.
|
|
|
|
On other platforms, this method does nothing.
|
2019-01-30 11:28:08 -05:00
|
|
|
|
2009-12-09 00:25:32 -05:00
|
|
|
@see OSXIsModified()
|
2009-12-06 20:54:21 -05:00
|
|
|
*/
|
2009-12-09 00:25:32 -05:00
|
|
|
virtual void OSXSetModified(bool modified);
|
2019-01-30 11:28:08 -05:00
|
|
|
|
2009-12-06 20:54:21 -05:00
|
|
|
/**
|
2009-12-09 00:25:32 -05:00
|
|
|
Returns the current modified state of the wxTopLevelWindow on OS X.
|
|
|
|
On other platforms, this method does nothing.
|
2019-01-30 11:28:08 -05:00
|
|
|
|
2009-12-09 00:25:32 -05:00
|
|
|
@see OSXSetModified()
|
2009-12-06 20:54:21 -05:00
|
|
|
*/
|
2009-12-09 00:25:32 -05:00
|
|
|
virtual bool OSXIsModified() const;
|
2008-03-08 08:52:38 -05:00
|
|
|
|
2012-01-08 09:52:47 -05:00
|
|
|
/**
|
|
|
|
Sets the file name represented by this wxTopLevelWindow.
|
|
|
|
|
|
|
|
Under OS X, this file name is used to set the "proxy icon", which
|
|
|
|
appears in the window title bar near its title, corresponding to this
|
|
|
|
file name. Under other platforms it currently doesn't do anything but
|
|
|
|
it is harmless to call it now and it might be implemented to do
|
|
|
|
something useful in the future so you're encouraged to use it for any
|
|
|
|
window representing a file-based document.
|
|
|
|
|
|
|
|
@since 2.9.4
|
|
|
|
*/
|
|
|
|
virtual void SetRepresentedFilename(const wxString& filename);
|
|
|
|
|
2012-09-20 12:42:27 -04:00
|
|
|
/**
|
|
|
|
Show the wxTopLevelWindow, but do not give it keyboard focus. This can be
|
|
|
|
used for pop up or notification windows that should not steal the current
|
|
|
|
focus.
|
|
|
|
*/
|
|
|
|
virtual void ShowWithoutActivating();
|
2014-05-11 18:41:13 -04:00
|
|
|
|
|
|
|
/**
|
2019-01-30 11:28:08 -05:00
|
|
|
Enables the maximize button to toggle full screen mode. Prior to
|
2015-08-03 08:39:38 -04:00
|
|
|
OS X 10.10 a full screen button is added to the right upper corner
|
|
|
|
of a window's title bar.
|
2014-05-11 18:41:13 -04:00
|
|
|
|
|
|
|
Currently only available for wxOSX/Cocoa.
|
|
|
|
|
|
|
|
@param enable
|
|
|
|
If @true (default) adds the full screen button in the title bar;
|
|
|
|
if @false the button is removed.
|
|
|
|
|
|
|
|
@return @true if the button was added or removed, @false if running
|
2015-08-03 08:39:38 -04:00
|
|
|
under another OS.
|
2014-05-11 18:41:13 -04:00
|
|
|
|
|
|
|
@note Having the button is also required to let ShowFullScreen()
|
|
|
|
make use of the full screen API available since OS X 10.7: a full
|
|
|
|
screen window gets its own space and entering and exiting the mode
|
|
|
|
is animated.
|
|
|
|
If the button is not present the old way of switching to full screen
|
|
|
|
is used.
|
|
|
|
|
|
|
|
@onlyfor{wxosx}
|
|
|
|
|
|
|
|
@see ShowFullScreen()
|
|
|
|
|
|
|
|
@since 3.1.0
|
|
|
|
*/
|
|
|
|
virtual bool EnableFullScreenView(bool enable = true);
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
/**
|
2008-05-08 16:46:34 -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 some or all of the following values, which indicate what
|
|
|
|
elements of the window to hide in full-screen mode:
|
|
|
|
|
|
|
|
- @c ::wxFULLSCREEN_NOMENUBAR
|
|
|
|
- @c ::wxFULLSCREEN_NOTOOLBAR
|
|
|
|
- @c ::wxFULLSCREEN_NOSTATUSBAR
|
|
|
|
- @c ::wxFULLSCREEN_NOBORDER
|
|
|
|
- @c ::wxFULLSCREEN_NOCAPTION
|
|
|
|
- @c ::wxFULLSCREEN_ALL (all of the above)
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
This function has not been tested with MDI frames.
|
2008-05-08 16:46:34 -04:00
|
|
|
|
|
|
|
@note Showing a window full screen also actually @ref wxWindow::Show()
|
|
|
|
"Show()"s the window if it isn't shown.
|
2008-03-20 09:45:17 -04:00
|
|
|
|
2014-05-11 18:41:13 -04:00
|
|
|
@see EnableFullScreenView(), IsFullScreen()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
2008-10-13 07:09:56 -04:00
|
|
|
virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL);
|
2008-03-08 08:52:38 -05:00
|
|
|
|
|
|
|
/**
|
2008-05-08 16:46:34 -04:00
|
|
|
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:
|
|
|
|
|
|
|
|
@code
|
|
|
|
MyFrame *frame = new MyFrame; // use default ctor
|
|
|
|
frame->UseNativeDecorations(false); // change from default "true"
|
|
|
|
frame->Create(parent, title, ...); // really create the frame
|
|
|
|
@endcode
|
2008-03-20 09:45:17 -04:00
|
|
|
|
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
|
|
|
|
|
|
|
/**
|
2008-05-08 16:46:34 -04:00
|
|
|
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 are available, but this method can be
|
|
|
|
called with @a native set to @false to change this for all windows
|
|
|
|
created after this point.
|
|
|
|
|
2008-03-08 08:52:38 -05:00
|
|
|
Also note that if @c WXDECOR environment variable is set, then custom
|
2008-05-08 16:46:34 -04:00
|
|
|
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-10-04 10:52:38 -04:00
|
|
|
|
2008-05-08 16:46:34 -04:00
|
|
|
@see UseNativeDecorations()
|
2008-03-08 08:52:38 -05:00
|
|
|
*/
|
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
|
|
|
|