• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/ap/gpl/amule/wxWidgets-2.8.12/include/wx/mac/classic/
1/////////////////////////////////////////////////////////////////////////////
2// Name:        mdi.h
3// Purpose:     MDI (Multiple Document Interface) classes.
4//              This doesn't have to be implemented just like Windows,
5//              it could be a tabbed design as in wxGTK.
6// Author:      Stefan Csomor
7// Modified by:
8// Created:     1998-01-01
9// RCS-ID:      $Id: mdi.h 41020 2006-09-05 20:47:48Z VZ $
10// Copyright:   (c) Stefan Csomor
11// Licence:     wxWindows licence
12/////////////////////////////////////////////////////////////////////////////
13
14#ifndef _WX_MDI_H_
15#define _WX_MDI_H_
16
17#include "wx/frame.h"
18
19WXDLLEXPORT_DATA(extern const wxChar) wxFrameNameStr[];
20WXDLLEXPORT_DATA(extern const wxChar) wxStatusLineNameStr[];
21
22class WXDLLEXPORT wxMDIClientWindow;
23class WXDLLEXPORT wxMDIChildFrame;
24
25class WXDLLEXPORT wxMDIParentFrame: public wxFrame
26{
27  DECLARE_DYNAMIC_CLASS(wxMDIParentFrame)
28
29public:
30
31  wxMDIParentFrame();
32  inline wxMDIParentFrame(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 | wxVSCROLL | wxHSCROLL,  // Scrolling refers to client window
38           const wxString& name = wxFrameNameStr)
39  {
40      Create(parent, id, title, pos, size, style, name);
41  }
42
43  virtual ~wxMDIParentFrame();
44
45  bool Create(wxWindow *parent,
46           wxWindowID id,
47           const wxString& title,
48           const wxPoint& pos = wxDefaultPosition,
49           const wxSize& size = wxDefaultSize,
50           long style = wxDEFAULT_FRAME_STYLE | wxVSCROLL | wxHSCROLL,
51           const wxString& name = wxFrameNameStr);
52
53  // Mac OS activate event
54  virtual void MacActivate(long timestamp, bool activating);
55
56  // wxWidgets activate event
57  void OnActivate(wxActivateEvent& event);
58  void OnSysColourChanged(wxSysColourChangedEvent& event);
59
60  void SetMenuBar(wxMenuBar *menu_bar);
61
62  // Get the active MDI child window (Windows only)
63  wxMDIChildFrame *GetActiveChild() const ;
64
65  // Get the client window
66  inline wxMDIClientWindow *GetClientWindow() const { return m_clientWindow; };
67
68  // Create the client window class (don't Create the window,
69  // just return a new class)
70  virtual wxMDIClientWindow *OnCreateClient() ;
71
72  // MDI operations
73  virtual void Cascade();
74  virtual void Tile(wxOrientation WXUNUSED(orient) = wxHORIZONTAL);
75  virtual void ArrangeIcons();
76  virtual void ActivateNext();
77  virtual void ActivatePrevious();
78
79protected:
80
81  // TODO maybe have this member
82  wxMDIClientWindow     *m_clientWindow;
83  wxMDIChildFrame *               m_currentChild;
84    wxMenu*                         m_windowMenu;
85
86    // TRUE if MDI Frame is intercepting commands, not child
87    bool m_parentFrameActive;
88
89private:
90    friend class WXDLLEXPORT wxMDIChildFrame;
91DECLARE_EVENT_TABLE()
92};
93
94class WXDLLEXPORT wxMDIChildFrame: public wxFrame
95{
96DECLARE_DYNAMIC_CLASS(wxMDIChildFrame)
97public:
98
99  wxMDIChildFrame();
100  inline wxMDIChildFrame(wxMDIParentFrame *parent,
101           wxWindowID id,
102           const wxString& title,
103           const wxPoint& pos = wxDefaultPosition,
104           const wxSize& size = wxDefaultSize,
105           long style = wxDEFAULT_FRAME_STYLE,
106           const wxString& name = wxFrameNameStr)
107  {
108      Init() ;
109      Create(parent, id, title, pos, size, style, name);
110  }
111
112  virtual ~wxMDIChildFrame();
113
114  bool Create(wxMDIParentFrame *parent,
115           wxWindowID id,
116           const wxString& title,
117           const wxPoint& pos = wxDefaultPosition,
118           const wxSize& size = wxDefaultSize,
119           long style = wxDEFAULT_FRAME_STYLE,
120           const wxString& name = wxFrameNameStr);
121
122  // Mac OS activate event
123  virtual void MacActivate(long timestamp, bool activating);
124
125  // Set menu bar
126  void SetMenuBar(wxMenuBar *menu_bar);
127
128  // MDI operations
129  virtual void Maximize();
130  virtual void Maximize( bool ){ Maximize() ; } // this one is inherited from wxFrame
131  virtual void Restore();
132  virtual void Activate();
133protected:
134
135    // common part of all ctors
136    void Init();
137};
138
139/* The client window is a child of the parent MDI frame, and itself
140 * contains the child MDI frames.
141 * However, you create the MDI children as children of the MDI parent:
142 * only in the implementation does the client window become the parent
143 * of the children. Phew! So the children are sort of 'adopted'...
144 */
145
146class WXDLLEXPORT wxMDIClientWindow: public wxWindow
147{
148  DECLARE_DYNAMIC_CLASS(wxMDIClientWindow)
149 public:
150
151  wxMDIClientWindow() ;
152  inline wxMDIClientWindow(wxMDIParentFrame *parent, long style = 0)
153  {
154      CreateClient(parent, style);
155  }
156
157  virtual ~wxMDIClientWindow();
158
159  // Note: this is virtual, to allow overridden behaviour.
160  virtual bool CreateClient(wxMDIParentFrame *parent, long style = wxVSCROLL | wxHSCROLL);
161
162  // Gets the size available for subwindows after menu size, toolbar size
163  // and status bar size have been subtracted. If you want to manage your own
164  // toolbar(s), don't call SetToolBar.
165  void DoGetClientSize(int *width, int *height) const;
166
167  // Explicitly call default scroll behaviour
168  void OnScroll(wxScrollEvent& event);
169
170protected:
171
172DECLARE_EVENT_TABLE()
173};
174
175#endif
176    // _WX_MDI_H_
177