1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        layout.h
3 // Purpose:     Layout sample
4 // Author:      Julian Smart
5 // Modified by:
6 // Created:     04/01/98
7 // Copyright:   (c) Julian Smart
8 // Licence:     wxWindows licence
9 /////////////////////////////////////////////////////////////////////////////
10 
11 // Define a new application
12 class MyApp: public wxApp
13 {
14 public:
MyApp()15     MyApp(){};
16     bool OnInit();
17 };
18 
19 // the main frame class
20 class MyFrame : public wxFrame
21 {
22 public:
23     MyFrame();
24 
25     void TestProportions(wxCommandEvent& event);
26     void TestFlexSizers(wxCommandEvent& event);
27     void TestNotebookSizers(wxCommandEvent& event);
28     void TestGridBagSizer(wxCommandEvent& event);
29     void TestNested(wxCommandEvent& event);
30     void TestSetMinimal(wxCommandEvent& event);
31     void TestWrap(wxCommandEvent& event);
32 
33     void OnAbout(wxCommandEvent& event);
34     void OnQuit(wxCommandEvent& event);
35 
36 private:
37     wxDECLARE_EVENT_TABLE();
38 };
39 
40 // a frame showing the box sizer proportions
41 class MyProportionsFrame : public wxFrame
42 {
43 public:
44     MyProportionsFrame(wxFrame *parent);
45 
46 protected:
47     void UpdateProportions();
48 
49     void OnProportionChanged(wxSpinEvent& event);
50     void OnProportionUpdated(wxCommandEvent& event);
51 
52     wxSpinCtrl *m_spins[3]; // size can be changed without changing anything else
53     wxSizer *m_sizer;
54 };
55 
56 // a frame using flex sizers for layout
57 class MyFlexSizerFrame : public wxFrame
58 {
59 public:
60     MyFlexSizerFrame(wxFrame* parent);
61 
62 private:
63     void InitFlexSizer(wxFlexGridSizer *sizer, wxWindow* parent);
64 };
65 
66 
67 // a dialog using notebook sizer for layout
68 class MySizerDialog : public wxDialog
69 {
70 public:
71     MySizerDialog(wxWindow *parent, const wxString &title );
72 };
73 
74 
75 // a frame using wxGridBagSizer for layout
76 class MyGridBagSizerFrame : public wxFrame
77 {
78 public:
79     MyGridBagSizerFrame(wxFrame* parent);
80 
81     void OnHideBtn(wxCommandEvent&);
82     void OnShowBtn(wxCommandEvent&);
83     void OnMoveBtn(wxCommandEvent&);
84 
85 private:
86     wxGridBagSizer*     m_gbs;
87     wxPanel*            m_panel;
88     wxButton*           m_hideBtn;
89     wxButton*           m_showBtn;
90     wxTextCtrl*         m_hideTxt;
91 
92     wxButton*           m_moveBtn1;
93     wxButton*           m_moveBtn2;
94     wxGBPosition        m_lastPos;
95 
96     wxDECLARE_EVENT_TABLE();
97 };
98 
99 
100 // a frame for testing simple setting of "default size"
101 class MySimpleSizerFrame : public wxFrame
102 {
103 public:
104     MySimpleSizerFrame(wxFrame* parent);
105 
106     void OnSetSmallSize( wxCommandEvent &event);
107     void OnSetBigSize( wxCommandEvent &event);
108 
109 private:
110     wxTextCtrl  *m_target;
111 
112     wxDECLARE_EVENT_TABLE();
113 };
114 
115 
116 // a frame for testing simple setting of a frame containing
117 // a sizer containing a panel containing a sizer containing
118 // controls
119 class MyNestedSizerFrame : public wxFrame
120 {
121 public:
122     MyNestedSizerFrame(wxFrame* parent);
123 
124 
125 private:
126     wxTextCtrl  *m_target;
127 };
128 
129 // a frame with several wrapping sizers
130 
131 class MyWrapSizerFrame: public wxFrame
132 {
133 public:
134     MyWrapSizerFrame(wxFrame* parent);
135 
136 private:
137     void OnAddCheckbox(wxCommandEvent& event);
138     void OnRemoveCheckbox(wxCommandEvent& event);
139 
140     void DoAddCheckbox();
141 
142     wxWindow* m_checkboxParent;
143     wxSizer* m_wrapSizer;
144 
145     wxDECLARE_EVENT_TABLE();
146 };
147 
148 // controls and menu constants
149 enum
150 {
151     LAYOUT_TEST_SIZER = 101,
152     LAYOUT_TEST_NB_SIZER,
153     LAYOUT_TEST_GB_SIZER,
154     LAYOUT_TEST_PROPORTIONS,
155     LAYOUT_TEST_SET_MINIMAL,
156     LAYOUT_TEST_NESTED,
157     LAYOUT_TEST_WRAP,
158     LAYOUT_QUIT = wxID_EXIT,
159     LAYOUT_ABOUT = wxID_ABOUT
160 };
161 
162