home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2240.zip / wxWindows-2.4.0 / include / wx / toplevel.h < prev    next >
C/C++ Source or Header  |  2002-08-31  |  7KB  |  208 lines

  1. ///////////////////////////////////////////////////////////////////////////////
  2. // Name:        wx/toplevel.h
  3. // Purpose:     declares wxTopLevelWindow class, the base class for all
  4. //              top level windows (such as frames and dialogs)
  5. // Author:      Vadim Zeitlin, Vaclav Slavik
  6. // Modified by:
  7. // Created:     06.08.01
  8. // RCS-ID:      $Id: toplevel.h,v 1.21 2002/08/31 11:29:11 GD Exp $
  9. // Copyright:   (c) 2001 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
  10. //                       Vaclav Slavik <vaclav@wxwindows.org>
  11. // Licence:     wxWindows licence
  12. ///////////////////////////////////////////////////////////////////////////////
  13.  
  14. #ifndef _WX_TOPLEVEL_BASE_H_
  15. #define _WX_TOPLEVEL_BASE_H_
  16.  
  17. #if defined(__GNUG__) && !defined(__APPLE__)
  18.     #pragma interface "toplevelbase.h"
  19. #endif
  20.  
  21. // ----------------------------------------------------------------------------
  22. // headers
  23. // ----------------------------------------------------------------------------
  24.  
  25. #include "wx/window.h"
  26. #include "wx/iconbndl.h"
  27.  
  28. // the default names for various classs
  29. WXDLLEXPORT_DATA(extern const wxChar*) wxFrameNameStr;
  30.  
  31. class WXDLLEXPORT wxTopLevelWindowBase;
  32.  
  33. // ----------------------------------------------------------------------------
  34. // constants
  35. // ----------------------------------------------------------------------------
  36.  
  37. // Dialogs are created in a special way
  38. #define wxTOPLEVEL_EX_DIALOG        0x00000008
  39.  
  40. // Styles for ShowFullScreen
  41. // (note that wxTopLevelWindow only handles wxFULLSCREEN_NOBORDER and
  42. //  wxFULLSCREEN_NOCAPTION; the rest is handled by wxTopLevelWindow)
  43. enum
  44. {
  45.     wxFULLSCREEN_NOMENUBAR   = 0x0001,
  46.     wxFULLSCREEN_NOTOOLBAR   = 0x0002,
  47.     wxFULLSCREEN_NOSTATUSBAR = 0x0004,
  48.     wxFULLSCREEN_NOBORDER    = 0x0008,
  49.     wxFULLSCREEN_NOCAPTION   = 0x0010,
  50.  
  51.     wxFULLSCREEN_ALL         = wxFULLSCREEN_NOMENUBAR | wxFULLSCREEN_NOTOOLBAR |
  52.                                wxFULLSCREEN_NOSTATUSBAR | wxFULLSCREEN_NOBORDER |
  53.                                wxFULLSCREEN_NOCAPTION
  54. };
  55.  
  56. // ----------------------------------------------------------------------------
  57. // wxTopLevelWindow: a top level (as opposed to child) window
  58. // ----------------------------------------------------------------------------
  59.  
  60. class WXDLLEXPORT wxTopLevelWindowBase : public wxWindow
  61. {
  62. public:
  63.     // construction
  64.     wxTopLevelWindowBase();
  65.     virtual ~wxTopLevelWindowBase();
  66.  
  67.     // top level wnd state
  68.     // --------------------
  69.  
  70.     // maximize = TRUE => maximize, otherwise - restore
  71.     virtual void Maximize(bool maximize = TRUE) = 0;
  72.  
  73.     // undo Maximize() or Iconize()
  74.     virtual void Restore() = 0;
  75.  
  76.     // iconize = TRUE => iconize, otherwise - restore
  77.     virtual void Iconize(bool iconize = TRUE) = 0;
  78.  
  79.     // return TRUE if the frame is maximized
  80.     virtual bool IsMaximized() const = 0;
  81.  
  82.     // return TRUE if the frame is iconized
  83.     virtual bool IsIconized() const = 0;
  84.  
  85.     // get the frame icon
  86.     const wxIcon& GetIcon() const { return m_icons.GetIcon( -1 ); }
  87.  
  88.     // get the frame icons
  89.     const wxIconBundle& GetIcons() const { return m_icons; }
  90.  
  91.     // set the frame icon
  92.     virtual void SetIcon(const wxIcon& icon) { m_icons = wxIconBundle( icon ); }
  93.  
  94.     // set the frame icons
  95.     virtual void SetIcons(const wxIconBundle& icons ) { m_icons = icons; }
  96.  
  97.     // maximize the window to cover entire screen
  98.     virtual bool ShowFullScreen(bool show, long style = wxFULLSCREEN_ALL) = 0;
  99.  
  100.     // return TRUE if the frame is in fullscreen mode
  101.     virtual bool IsFullScreen() const = 0;
  102.  
  103.     /*
  104.        for now we already have them in wxWindow, but this is wrong: these
  105.        methods really only make sense for wxTopLevelWindow!
  106.  
  107.     virtual void SetTitle(const wxString& title) = 0;
  108.     virtual wxString GetTitle() const = 0;
  109.      */
  110.  
  111.     // old functions, use the new ones instead!
  112. #if WXWIN_COMPATIBILITY_2
  113.     bool Iconized() const { return IsIconized(); }
  114. #endif // WXWIN_COMPATIBILITY_2
  115.  
  116.     // implementation only from now on
  117.     // -------------------------------
  118.  
  119.     // override some base class virtuals
  120.     virtual bool Destroy();
  121.     virtual bool IsTopLevel() const { return TRUE; }
  122.     virtual wxSize GetMaxSize() const;
  123.  
  124.     // event handlers
  125.     void OnCloseWindow(wxCloseEvent& event);
  126.     void OnSize(wxSizeEvent& event);
  127.  
  128.     // this should go away, but for now it's called from docview.cpp,
  129.     // so should be there for all platforms
  130.     void OnActivate(wxActivateEvent &WXUNUSED(event)) { }
  131.  
  132. protected:
  133.     // the frame client to screen translation should take account of the
  134.     // toolbar which may shift the origin of the client area
  135.     virtual void DoClientToScreen(int *x, int *y) const;
  136.     virtual void DoScreenToClient(int *x, int *y) const;
  137.  
  138.     // test whether this window makes part of the frame
  139.     // (menubar, toolbar and statusbar are excluded from automatic layout)
  140.     virtual bool IsOneOfBars(const wxWindow *WXUNUSED(win)) const
  141.         { return FALSE; }
  142.  
  143.     // check if we should exit the program after deleting this top level
  144.     // window (this is used in common dtor and wxMSW code)
  145.     bool IsLastBeforeExit() const;
  146.  
  147.     // send the iconize event, return TRUE if processed
  148.     bool SendIconizeEvent(bool iconized = TRUE);
  149.  
  150.     // the frame icon
  151.     wxIconBundle m_icons;
  152.  
  153.     DECLARE_EVENT_TABLE()
  154. };
  155.  
  156.  
  157. // include the real class declaration
  158. #if defined(__WXMSW__)
  159.     #include "wx/msw/toplevel.h"
  160.     #define wxTopLevelWindowNative wxTopLevelWindowMSW
  161. #elif defined(__WXGTK__)
  162.     #include "wx/gtk/toplevel.h"
  163.     #define wxTopLevelWindowNative wxTopLevelWindowGTK
  164. #elif defined(__WXX11__)
  165.     #include "wx/x11/toplevel.h"
  166.     #define wxTopLevelWindowNative wxTopLevelWindowX11
  167. #elif defined(__WXMGL__)
  168.     #include "wx/mgl/toplevel.h"
  169.     #define wxTopLevelWindowNative wxTopLevelWindowMGL
  170. #elif defined(__WXMAC__)
  171.     #include "wx/mac/toplevel.h"
  172.     #define wxTopLevelWindowNative wxTopLevelWindowMac
  173. #elif defined(__WXPM__)
  174.     #include "wx/os2/toplevel.h"
  175.     #define wxTopLevelWindowNative wxTopLevelWindowOS2
  176. #endif
  177.  
  178. #ifdef __WXUNIVERSAL__
  179.     #include "wx/univ/toplevel.h"
  180. #else // !__WXUNIVERSAL__
  181.     #ifdef wxTopLevelWindowNative
  182.         class WXDLLEXPORT wxTopLevelWindow : public wxTopLevelWindowNative
  183.         {
  184.         public:
  185.             // construction
  186.             wxTopLevelWindow() { Init(); }
  187.             wxTopLevelWindow(wxWindow *parent,
  188.                        wxWindowID id,
  189.                        const wxString& title,
  190.                        const wxPoint& pos = wxDefaultPosition,
  191.                        const wxSize& size = wxDefaultSize,
  192.                        long style = wxDEFAULT_FRAME_STYLE,
  193.                        const wxString& name = wxFrameNameStr)
  194.             {
  195.                 Init();
  196.                 Create(parent, id, title, pos, size, style, name);
  197.             }
  198.  
  199.             DECLARE_DYNAMIC_CLASS(wxTopLevelWindow)
  200.         };
  201.     #endif // wxTopLevelWindowNative
  202. #endif // __WXUNIVERSAL__/!__WXUNIVERSAL__
  203.  
  204.  
  205. #endif // _WX_TOPLEVEL_BASE_H_
  206.  
  207. // vi:sts=4:sw=4:et
  208.