wxWidgets/include/wx/toplevel.h
Ron Lee 34c3ffca5b Added GetMaxSize virtual method for use by sizers.
Modified wxSizer to use it instead of crushing all windows to
the display size.

Currently only top level windows are limited to display size,
all other windows are unlimited (inside the clipping region of
their tlw).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14511 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-03-09 02:58:13 +00:00

197 lines
6.3 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// Name: wx/toplevel.h
// Purpose: declares wxTopLevelWindow class, the base class for all
// top level windows (such as frames and dialogs)
// Author: Vadim Zeitlin, Vaclav Slavik
// Modified by:
// Created: 06.08.01
// RCS-ID: $Id$
// Copyright: (c) 2001 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
// Vaclav Slavik <vaclav@wxwindows.org>
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
#ifndef _WX_TOPLEVEL_BASE_H_
#define _WX_TOPLEVEL_BASE_H_
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
#ifdef __GNUG__
#pragma interface "toplevelbase.h"
#endif
#include "wx/window.h"
#include "wx/icon.h"
// the default names for various classs
WXDLLEXPORT_DATA(extern const wxChar*) wxFrameNameStr;
class WXDLLEXPORT wxTopLevelWindowBase;
// ----------------------------------------------------------------------------
// constants
// ----------------------------------------------------------------------------
// Dialogs are created in a special way
#define wxTOPLEVEL_EX_DIALOG 0x00000008
// Styles for ShowFullScreen
// (note that wxTopLevelWindow only handles wxFULLSCREEN_NOBORDER and
// wxFULLSCREEN_NOCAPTION; the rest is handled by wxTopLevelWindow)
enum
{
wxFULLSCREEN_NOMENUBAR = 0x0001,
wxFULLSCREEN_NOTOOLBAR = 0x0002,
wxFULLSCREEN_NOSTATUSBAR = 0x0004,
wxFULLSCREEN_NOBORDER = 0x0008,
wxFULLSCREEN_NOCAPTION = 0x0010,
wxFULLSCREEN_ALL = wxFULLSCREEN_NOMENUBAR | wxFULLSCREEN_NOTOOLBAR |
wxFULLSCREEN_NOSTATUSBAR | wxFULLSCREEN_NOBORDER |
wxFULLSCREEN_NOCAPTION
};
// ----------------------------------------------------------------------------
// wxTopLevelWindow: a top level (as opposed to child) window
// ----------------------------------------------------------------------------
class WXDLLEXPORT wxTopLevelWindowBase : public wxWindow
{
public:
// construction
wxTopLevelWindowBase();
virtual ~wxTopLevelWindowBase();
// top level wnd state
// --------------------
// maximize = TRUE => maximize, otherwise - restore
virtual void Maximize(bool maximize = TRUE) = 0;
// undo Maximize() or Iconize()
virtual void Restore() = 0;
// iconize = TRUE => iconize, otherwise - restore
virtual void Iconize(bool iconize = TRUE) = 0;
// return TRUE if the frame is maximized
virtual bool IsMaximized() const = 0;
// return TRUE if the frame is iconized
virtual bool IsIconized() const = 0;
// get the frame icon
const wxIcon& GetIcon() const { return m_icon; }
// set the frame icon
virtual void SetIcon(const wxIcon& icon) { m_icon = icon; }
// maximize the window to cover entire screen
virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL) = 0;
// return TRUE if the frame is in fullscreen mode
virtual bool IsFullScreen() const = 0;
/*
for now we already have them in wxWindow, but this is wrong: these
methods really only make sense for wxTopLevelWindow!
virtual void SetTitle(const wxString& title) = 0;
virtual wxString GetTitle() const = 0;
*/
// old functions, use the new ones instead!
#if WXWIN_COMPATIBILITY_2
bool Iconized() const { return IsIconized(); }
#endif // WXWIN_COMPATIBILITY_2
// implementation only from now on
// -------------------------------
// override some base class virtuals
virtual bool Destroy();
virtual bool IsTopLevel() const { return TRUE; }
virtual wxSize GetMaxSize() const;
// event handlers
void OnCloseWindow(wxCloseEvent& event);
void OnSize(wxSizeEvent& event);
// this should go away, but for now it's called from docview.cpp,
// so should be there for all platforms
void OnActivate(wxActivateEvent &WXUNUSED(event)) { }
protected:
// the frame client to screen translation should take account of the
// toolbar which may shift the origin of the client area
virtual void DoClientToScreen(int *x, int *y) const;
virtual void DoScreenToClient(int *x, int *y) const;
// send the iconize event, return TRUE if processed
bool SendIconizeEvent(bool iconized = TRUE);
// the frame icon
wxIcon m_icon;
// test whether this window makes part of the frame
// (menubar, toolbar and statusbar are excluded from automatic layout)
virtual bool IsOneOfBars(const wxWindow *WXUNUSED(win)) const { return FALSE; }
DECLARE_EVENT_TABLE()
};
// include the real class declaration
#if defined(__WXMSW__)
#include "wx/msw/toplevel.h"
#define wxTopLevelWindowNative wxTopLevelWindowMSW
#elif defined(__WXGTK__)
#include "wx/gtk/toplevel.h"
#define wxTopLevelWindowNative wxTopLevelWindowGTK
#elif defined(__WXX11__)
#include "wx/x11/toplevel.h"
#define wxTopLevelWindowNative wxTopLevelWindowX11
#elif defined(__WXMGL__)
#include "wx/mgl/toplevel.h"
#define wxTopLevelWindowNative wxTopLevelWindowMGL
#elif defined(__WXMAC__)
#include "wx/mac/toplevel.h"
#define wxTopLevelWindowNative wxTopLevelWindowMac
#elif defined(__WXPM__)
#include "wx/os2/toplevel.h"
#define wxTopLevelWindowNative wxTopLevelWindowOS2
#endif
#ifdef __WXUNIVERSAL__
#include "wx/univ/toplevel.h"
#else // !__WXUNIVERSAL__
#ifdef wxTopLevelWindowNative
class WXDLLEXPORT wxTopLevelWindow : public wxTopLevelWindowNative
{
public:
// construction
wxTopLevelWindow() { Init(); }
wxTopLevelWindow(wxWindow *parent,
wxWindowID id,
const wxString& title,
const wxPoint& pos = wxDefaultPosition,
const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_FRAME_STYLE,
const wxString& name = wxFrameNameStr)
{
Init();
Create(parent, id, title, pos, size, style, name);
}
DECLARE_DYNAMIC_CLASS(wxTopLevelWindow)
};
#endif // wxTopLevelWindowNative
#endif // __WXUNIVERSAL__/!__WXUNIVERSAL__
#endif // _WX_TOPLEVEL_BASE_H_
// vi:sts=4:sw=4:et