1/////////////////////////////////////////////////////////////////////////////
2// Name:        wx/motif/frame.h
3// Purpose:     wxFrame class
4// Author:      Julian Smart
5// Modified by:
6// Created:     17/09/98
7// RCS-ID:      $Id: frame.h 35692 2005-09-25 20:29:58Z VZ $
8// Copyright:   (c) Julian Smart
9// Licence:     wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifndef _WX_MOTIF_FRAME_H_
13#define _WX_MOTIF_FRAME_H_
14
15class WXDLLEXPORT wxFrame : public wxFrameBase
16{
17public:
18    wxFrame() { Init(); }
19    wxFrame(wxWindow *parent,
20        wxWindowID id,
21        const wxString& title,
22        const wxPoint& pos = wxDefaultPosition,
23        const wxSize& size = wxDefaultSize,
24        long style = wxDEFAULT_FRAME_STYLE,
25        const wxString& name = wxFrameNameStr)
26    {
27        Init();
28
29        Create(parent, id, title, pos, size, style, name);
30    }
31
32    bool Create(wxWindow *parent,
33        wxWindowID id,
34        const wxString& title,
35        const wxPoint& pos = wxDefaultPosition,
36        const wxSize& size = wxDefaultSize,
37        long style = wxDEFAULT_FRAME_STYLE,
38        const wxString& name = wxFrameNameStr);
39
40    virtual ~wxFrame();
41
42    virtual bool Show(bool show = true);
43
44    // Set menu bar
45    void SetMenuBar(wxMenuBar *menu_bar);
46
47    // Set title
48    void SetTitle(const wxString& title);
49
50    // Set icon
51    virtual void SetIcon(const wxIcon& icon);
52    virtual void SetIcons(const wxIconBundle& icons);
53
54#if wxUSE_STATUSBAR
55    virtual void PositionStatusBar();
56#endif // wxUSE_STATUSBAR
57
58    // Create toolbar
59#if wxUSE_TOOLBAR
60    virtual wxToolBar* CreateToolBar(long style = -1,
61                                     wxWindowID id = wxID_ANY,
62                                     const wxString& name = wxToolBarNameStr);
63    virtual void SetToolBar(wxToolBar *toolbar);
64    virtual void PositionToolBar();
65#endif // wxUSE_TOOLBAR
66
67    // Implementation only from now on
68    // -------------------------------
69
70    void OnSysColourChanged(wxSysColourChangedEvent& event);
71    void OnActivate(wxActivateEvent& event);
72
73    virtual void ChangeFont(bool keepOriginalSize = true);
74    virtual void ChangeBackgroundColour();
75    virtual void ChangeForegroundColour();
76    WXWidget GetMenuBarWidget() const;
77    WXWidget GetShellWidget() const { return m_frameShell; }
78    WXWidget GetWorkAreaWidget() const { return m_workArea; }
79    WXWidget GetClientAreaWidget() const { return m_clientArea; }
80    WXWidget GetTopWidget() const { return m_frameShell; }
81
82    virtual WXWidget GetMainWidget() const { return m_mainWidget; }
83
84    // The widget that can have children on it
85    WXWidget GetClientWidget() const;
86    bool GetVisibleStatus() const { return m_visibleStatus; }
87    void SetVisibleStatus( bool status ) { m_visibleStatus = status; }
88
89    bool PreResize();
90
91    void SendSizeEvent();
92
93    // for generic/mdig.h
94    virtual void DoGetClientSize(int *width, int *height) const;
95private:
96    // common part of all ctors
97    void Init();
98
99    // set a single icon for the frame
100    void DoSetIcon( const wxIcon& icon );
101
102    //// Motif-specific
103    WXWidget              m_frameShell;
104    WXWidget              m_workArea;
105    WXWidget              m_clientArea;
106    bool                  m_visibleStatus;
107    bool                  m_iconized;
108
109    virtual void DoGetSize(int *width, int *height) const;
110    virtual void DoSetSize(int x, int y,
111        int width, int height,
112        int sizeFlags = wxSIZE_AUTO);
113    virtual void DoSetClientSize(int width, int height);
114
115private:
116    virtual bool XmDoCreateTLW(wxWindow* parent,
117                               wxWindowID id,
118                               const wxString& title,
119                               const wxPoint& pos,
120                               const wxSize& size,
121                               long style,
122                               const wxString& name);
123
124
125
126    DECLARE_EVENT_TABLE()
127    DECLARE_DYNAMIC_CLASS(wxFrame)
128};
129
130#endif // _WX_MOTIF_FRAME_H_
131
132