home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wxos2233.zip / wxOS2-2_3_3.zip / wxWindows-2.3.3 / include / wx / frame.h < prev    next >
C/C++ Source or Header  |  2002-08-31  |  9KB  |  242 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 2002/08/31 11:29:10 GD 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.     // call this to simulate a menu command
  90.     bool Command(int id) { return ProcessCommand(id); }
  91.  
  92.     // process menu command: returns TRUE if processed
  93.     bool ProcessCommand(int id);
  94.  
  95.     // status bar functions
  96.     // --------------------
  97. #if wxUSE_STATUSBAR
  98.     // create the main status bar by calling OnCreateStatusBar()
  99.     virtual wxStatusBar* CreateStatusBar(int number = 1,
  100.                                          long style = wxST_SIZEGRIP,
  101.                                          wxWindowID id = 0,
  102.                                          const wxString& name =
  103.                                             wxStatusLineNameStr);
  104.     // return a new status bar
  105.     virtual wxStatusBar *OnCreateStatusBar(int number,
  106.                                            long style,
  107.                                            wxWindowID id,
  108.                                            const wxString& name);
  109.     // get the main status bar
  110.     virtual wxStatusBar *GetStatusBar() const { return m_frameStatusBar; }
  111.  
  112.     // sets the main status bar
  113.     void SetStatusBar(wxStatusBar *statBar) { m_frameStatusBar = statBar; }
  114.  
  115.     // forward these to status bar
  116.     virtual void SetStatusText(const wxString &text, int number = 0);
  117.     virtual void SetStatusWidths(int n, const int widths_field[]);
  118.     void PushStatusText(const wxString &text, int number = 0);
  119.     void PopStatusText(int number = 0);
  120.  
  121.     // set the status bar pane the help will be shown in
  122.     void SetStatusBarPane(int n) { m_statusBarPane = n; }
  123.     int GetStatusBarPane() const { return m_statusBarPane; }
  124. #endif // wxUSE_STATUSBAR
  125.  
  126.     // toolbar functions
  127.     // -----------------
  128. #if wxUSE_TOOLBAR
  129.     // create main toolbar bycalling OnCreateToolBar()
  130.     virtual wxToolBar* CreateToolBar(long style = wxNO_BORDER|wxTB_HORIZONTAL,
  131.                                      wxWindowID id = -1,
  132.                                      const wxString& name = wxToolBarNameStr);
  133.     // return a new toolbar
  134.     virtual wxToolBar *OnCreateToolBar(long style,
  135.                                        wxWindowID id,
  136.                                        const wxString& name );
  137.  
  138.     // get/set the main toolbar
  139.     virtual wxToolBar *GetToolBar() const { return m_frameToolBar; }
  140.     virtual void SetToolBar(wxToolBar *toolbar) { m_frameToolBar = toolbar; }
  141. #endif // wxUSE_TOOLBAR
  142.  
  143.     // implementation only from now on
  144.     // -------------------------------
  145.  
  146.     // event handlers
  147.     void OnIdle(wxIdleEvent& event);
  148.     void OnMenuHighlight(wxMenuEvent& event);
  149.  
  150. #if wxUSE_MENUS
  151.     // send wxUpdateUIEvents for all menu items (called from OnIdle())
  152.     void DoMenuUpdates();
  153.     void DoMenuUpdates(wxMenu* menu, wxWindow* focusWin);
  154. #endif // wxUSE_MENUS
  155.  
  156.     // if there is no real wxTopLevelWindow on this platform we have to define
  157.     // some wxTopLevelWindowBase pure virtual functions here to avoid breaking
  158.     // old ports (wxMotif) which don't define them in wxFrame
  159. #ifndef wxTopLevelWindowNative
  160.     virtual bool ShowFullScreen(bool WXUNUSED(show),
  161.                                 long WXUNUSED(style) = wxFULLSCREEN_ALL)
  162.         { return FALSE; }
  163.     virtual bool IsFullScreen() const
  164.         { return FALSE; }
  165. #endif // no wxTopLevelWindowNative
  166.  
  167.     // show help text (typically in the statusbar); show is FALSE
  168.     // if you are hiding the help, TRUE otherwise
  169.     virtual void DoGiveHelp(const wxString& text, bool show);
  170.  
  171. protected:
  172.     // the frame main menu/status/tool bars
  173.     // ------------------------------------
  174.  
  175.     // this (non virtual!) function should be called from dtor to delete the
  176.     // main menubar, statusbar and toolbar (if any)
  177.     void DeleteAllBars();
  178.  
  179.     // test whether this window makes part of the frame
  180.     virtual bool IsOneOfBars(const wxWindow *win) const;
  181.  
  182. #if wxUSE_MENUS
  183.     // override to update menu bar position when the frame size changes
  184.     virtual void PositionMenuBar() { }
  185.  
  186.     // override to do something special when the menu bar is being removed
  187.     // from the frame
  188.     virtual void DetachMenuBar();
  189.  
  190.     // override to do something special when the menu bar is attached to the
  191.     // frame
  192.     virtual void AttachMenuBar(wxMenuBar *menubar);
  193.  
  194.     wxMenuBar *m_frameMenuBar;
  195. #endif // wxUSE_MENUS
  196.  
  197. #if wxUSE_STATUSBAR
  198.     // override to update status bar position (or anything else) when
  199.     // something changes
  200.     virtual void PositionStatusBar() { }
  201.  
  202.     // show the help string for this menu item in the given status bar: the
  203.     // status bar pointer can be NULL; return TRUE if help was shown
  204.     bool ShowMenuHelp(wxStatusBar *statbar, int id);
  205.  
  206.     wxStatusBar *m_frameStatusBar;
  207. #endif // wxUSE_STATUSBAR
  208.  
  209.  
  210.     int m_statusBarPane;
  211.  
  212. #if wxUSE_TOOLBAR
  213.     // override to update status bar position (or anything else) when
  214.     // something changes
  215.     virtual void PositionToolBar() { }
  216.  
  217.     wxToolBar *m_frameToolBar;
  218. #endif // wxUSE_TOOLBAR
  219.  
  220.     DECLARE_EVENT_TABLE()
  221. };
  222.  
  223. // include the real class declaration
  224. #if defined(__WXUNIVERSAL__) // && !defined(__WXMICROWIN__)
  225.     #include "wx/univ/frame.h"
  226. #else // !__WXUNIVERSAL__
  227.     #if defined(__WXMSW__)
  228.         #include "wx/msw/frame.h"
  229.     #elif defined(__WXGTK__)
  230.         #include "wx/gtk/frame.h"
  231.     #elif defined(__WXMOTIF__)
  232.         #include "wx/motif/frame.h"
  233.     #elif defined(__WXMAC__)
  234.         #include "wx/mac/frame.h"
  235.     #elif defined(__WXPM__)
  236.         #include "wx/os2/frame.h"
  237.     #endif
  238. #endif
  239.  
  240. #endif
  241.     // _WX_FRAME_H_BASE_
  242.