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

  1. /////////////////////////////////////////////////////////////////////////////
  2. // Name:        wx/frame.h
  3. // Purpose:     wxFrame class interface
  4. // Author:      Vadim Zeitlin
  5. // Modified by:
  6. // Created:     15.11.99
  7. // RCS-ID:      $Id: frame.h,v 1.28.2.1 2002/10/02 23:33:01 VZ Exp $
  8. // Copyright:   (c) wxWindows team
  9. // Licence:     wxWindows license
  10. /////////////////////////////////////////////////////////////////////////////
  11.  
  12. #ifndef _WX_FRAME_H_BASE_
  13. #define _WX_FRAME_H_BASE_
  14.  
  15. // ----------------------------------------------------------------------------
  16. // headers
  17. // ----------------------------------------------------------------------------
  18.  
  19. #if defined(__GNUG__) && !defined(__APPLE__)
  20.     #pragma interface "framebase.h"
  21. #endif
  22.  
  23. #include "wx/toplevel.h"      // the base class
  24.  
  25. // the default names for various classs
  26. WXDLLEXPORT_DATA(extern const wxChar*) wxFrameNameStr;
  27. WXDLLEXPORT_DATA(extern const wxChar*) wxStatusLineNameStr;
  28. WXDLLEXPORT_DATA(extern const wxChar*) wxToolBarNameStr;
  29.  
  30. class WXDLLEXPORT wxFrame;
  31. class WXDLLEXPORT wxMenuBar;
  32. class WXDLLEXPORT wxStatusBar;
  33. class WXDLLEXPORT wxToolBar;
  34.  
  35. // ----------------------------------------------------------------------------
  36. // wxFrame is a top-level window with optional menubar, statusbar and toolbar
  37. //
  38. // For each of *bars, a frame may have several of them, but only one is
  39. // managed by the frame, i.e. resized/moved when the frame is and whose size
  40. // is accounted for in client size calculations - all others should be taken
  41. // care of manually. The CreateXXXBar() functions create this, main, XXXBar,
  42. // but the actual creation is done in OnCreateXXXBar() functions which may be
  43. // overridden to create custom objects instead of standard ones when
  44. // CreateXXXBar() is called.
  45. // ----------------------------------------------------------------------------
  46.  
  47. // FIXME - temporary hack in absence of wxTLW !!
  48. #ifndef wxTopLevelWindowNative
  49. class WXDLLEXPORT wxFrameBase : public wxTopLevelWindowBase
  50. #else
  51. class WXDLLEXPORT wxFrameBase : public wxTopLevelWindow
  52. #endif
  53. {
  54. public:
  55.     // construction
  56.     wxFrameBase();
  57.     virtual ~wxFrameBase();
  58.  
  59.     wxFrame *New(wxWindow *parent,
  60.                  wxWindowID id,
  61.                  const wxString& title,
  62.                  const wxPoint& pos = wxDefaultPosition,
  63.                  const wxSize& size = wxDefaultSize,
  64.                  long style = wxDEFAULT_FRAME_STYLE,
  65.                  const wxString& name = wxFrameNameStr);
  66.  
  67.     // frame state
  68.     // -----------
  69.  
  70.     // get the origin of the client area (which may be different from (0, 0)
  71.     // if the frame has a toolbar) in client coordinates
  72.     virtual wxPoint GetClientAreaOrigin() const;
  73.  
  74.     // sends a size event to the window using its current size -- this has an
  75.     // effect of refreshing the window layout
  76.     //
  77.     // currently it is only implemented under MSW but is declared here to make
  78.     // it possible to call it in portable code without using #ifdef's
  79.     virtual void SendSizeEvent() { }
  80.  
  81.     // menu bar functions
  82.     // ------------------
  83.  
  84. #if wxUSE_MENUS
  85.     virtual void SetMenuBar(wxMenuBar *menubar);
  86.     virtual wxMenuBar *GetMenuBar() const { return m_frameMenuBar; }
  87. #endif // wxUSE_MENUS
  88.  
  89. #ifdef WXWIN_COMPATIBILITY_2_2
  90.     // call this to simulate a menu command
  91.     bool Command(int id) { return ProcessCommand(id); }
  92. #endif // WXWIN_COMPATIBILITY_2_2
  93.  
  94.     // process menu command: returns TRUE if processed
  95.     bool ProcessCommand(int id);
  96.  
  97.     // status bar functions
  98.     // --------------------
  99. #if wxUSE_STATUSBAR
  100.     // create the main status bar by calling OnCreateStatusBar()
  101.     virtual wxStatusBar* CreateStatusBar(int number = 1,
  102.                                          long style = wxST_SIZEGRIP,
  103.                                          wxWindowID id = 0,
  104.                                          const wxString& name =
  105.                                             wxStatusLineNameStr);
  106.     // return a new status bar
  107.     virtual wxStatusBar *OnCreateStatusBar(int number,
  108.                                            long style,
  109.                                            wxWindowID id,
  110.                                            const wxString& name);
  111.     // get the main status bar
  112.     virtual wxStatusBar *GetStatusBar() const { return m_frameStatusBar; }
  113.  
  114.     // sets the main status bar
  115.     void SetStatusBar(wxStatusBar *statBar) { m_frameStatusBar = statBar; }
  116.  
  117.     // forward these to status bar
  118.     virtual void SetStatusText(const wxString &text, int number = 0);
  119.     virtual void SetStatusWidths(int n, const int widths_field[]);
  120.     void PushStatusText(const wxString &text, int number = 0);
  121.     void PopStatusText(int number = 0);
  122.  
  123.     // set the status bar pane the help will be shown in
  124.     void SetStatusBarPane(int n) { m_statusBarPane = n; }
  125.     int GetStatusBarPane() const { return m_statusBarPane; }
  126. #endif // wxUSE_STATUSBAR
  127.  
  128.     // toolbar functions
  129.     // -----------------
  130. #if wxUSE_TOOLBAR
  131.     // create main toolbar bycalling OnCreateToolBar()
  132.     virtual wxToolBar* CreateToolBar(long style = wxNO_BORDER|wxTB_HORIZONTAL,
  133.                                      wxWindowID id = -1,
  134.                                      const wxString& name = wxToolBarNameStr);
  135.     // return a new toolbar
  136.     virtual wxToolBar *OnCreateToolBar(long style,
  137.                                        wxWindowID id,
  138.                                        const wxString& name );
  139.  
  140.     // get/set the main toolbar
  141.     virtual wxToolBar *GetToolBar() const { return m_frameToolBar; }
  142.     virtual void SetToolBar(wxToolBar *toolbar) { m_frameToolBar = toolbar; }
  143. #endif // wxUSE_TOOLBAR
  144.  
  145.     // implementation only from now on
  146.     // -------------------------------
  147.  
  148.     // event handlers
  149.     void OnIdle(wxIdleEvent& event);
  150.     void OnMenuHighlight(wxMenuEvent& event);
  151.  
  152. #if wxUSE_MENUS
  153.     // send wxUpdateUIEvents for all menu items (called from OnIdle())
  154.     void DoMenuUpdates();
  155.     void DoMenuUpdates(wxMenu* menu, wxWindow* focusWin);
  156. #endif // wxUSE_MENUS
  157.  
  158.     // if there is no real wxTopLevelWindow on this platform we have to define
  159.     // some wxTopLevelWindowBase pure virtual functions here to avoid breaking
  160.     // old ports (wxMotif) which don't define them in wxFrame
  161. #ifndef wxTopLevelWindowNative
  162.     virtual bool ShowFullScreen(bool WXUNUSED(show),
  163.                                 long WXUNUSED(style) = wxFULLSCREEN_ALL)
  164.         { return FALSE; }
  165.     virtual bool IsFullScreen() const
  166.         { return FALSE; }
  167. #endif // no wxTopLevelWindowNative
  168.  
  169.     // show help text (typically in the statusbar); show is FALSE
  170.     // if you are hiding the help, TRUE otherwise
  171.     virtual void DoGiveHelp(const wxString& text, bool show);
  172.  
  173. protected:
  174.     // the frame main menu/status/tool bars
  175.     // ------------------------------------
  176.  
  177.     // this (non virtual!) function should be called from dtor to delete the
  178.     // main menubar, statusbar and toolbar (if any)
  179.     void DeleteAllBars();
  180.  
  181.     // test whether this window makes part of the frame
  182.     virtual bool IsOneOfBars(const wxWindow *win) const;
  183.  
  184. #if wxUSE_MENUS
  185.     // override to update menu bar position when the frame size changes
  186.     virtual void PositionMenuBar() { }
  187.  
  188.     // override to do something special when the menu bar is being removed
  189.     // from the frame
  190.     virtual void DetachMenuBar();
  191.  
  192.     // override to do something special when the menu bar is attached to the
  193.     // frame
  194.     virtual void AttachMenuBar(wxMenuBar *menubar);
  195.  
  196.     wxMenuBar *m_frameMenuBar;
  197. #endif // wxUSE_MENUS
  198.  
  199. #if wxUSE_STATUSBAR
  200.     // override to update status bar position (or anything else) when
  201.     // something changes
  202.     virtual void PositionStatusBar() { }
  203.  
  204.     // show the help string for this menu item in the given status bar: the
  205.     // status bar pointer can be NULL; return TRUE if help was shown
  206.     bool ShowMenuHelp(wxStatusBar *statbar, int id);
  207.  
  208.     wxStatusBar *m_frameStatusBar;
  209. #endif // wxUSE_STATUSBAR
  210.  
  211.  
  212.     int m_statusBarPane;
  213.  
  214. #if wxUSE_TOOLBAR
  215.     // override to update status bar position (or anything else) when
  216.     // something changes
  217.     virtual void PositionToolBar() { }
  218.  
  219.     wxToolBar *m_frameToolBar;
  220. #endif // wxUSE_TOOLBAR
  221.  
  222.     DECLARE_EVENT_TABLE()
  223. };
  224.  
  225. // include the real class declaration
  226. #if defined(__WXUNIVERSAL__) // && !defined(__WXMICROWIN__)
  227.     #include "wx/univ/frame.h"
  228. #else // !__WXUNIVERSAL__
  229.     #if defined(__WXMSW__)
  230.         #include "wx/msw/frame.h"
  231.     #elif defined(__WXGTK__)
  232.         #include "wx/gtk/frame.h"
  233.     #elif defined(__WXMOTIF__)
  234.         #include "wx/motif/frame.h"
  235.     #elif defined(__WXMAC__)
  236.         #include "wx/mac/frame.h"
  237.     #elif defined(__WXPM__)
  238.         #include "wx/os2/frame.h"
  239.     #endif
  240. #endif
  241.  
  242. #endif
  243.     // _WX_FRAME_H_BASE_
  244.