]>
Commit | Line | Data |
---|---|---|
1c005ff7 RR |
1 | ///////////////////////////////////////////////////////////////////////////// |
2 | // Name: minimal.cpp | |
3 | // Purpose: Controls wxWindows sample | |
4 | // Author: Robert Roebling | |
5 | // Modified by: | |
6 | // RCS-ID: $Id$ | |
7 | // Copyright: (c) Robert Roebling, Julian Smart and Markus Holzem | |
8 | // Licence: wxWindows license | |
9 | ///////////////////////////////////////////////////////////////////////////// | |
10 | ||
11 | #ifdef __GNUG__ | |
12 | #pragma implementation "minimal.cpp" | |
13 | #pragma interface "minimal.cpp" | |
14 | #endif | |
15 | ||
16 | // For compilers that support precompilation, includes "wx/wx.h". | |
17 | #include "wx/wxprec.h" | |
18 | ||
19 | #ifdef __BORLANDC__ | |
20 | #pragma hdrstop | |
21 | #endif | |
22 | ||
23 | #ifndef WX_PRECOMP | |
24 | #include "wx/wx.h" | |
25 | #endif | |
26 | ||
53b28675 | 27 | #include "wx/notebook.h" |
1c005ff7 RR |
28 | |
29 | //---------------------------------------------------------------------- | |
30 | // class definitions | |
31 | //---------------------------------------------------------------------- | |
32 | ||
33 | class MyApp: public wxApp | |
34 | { | |
35 | public: | |
36 | bool OnInit(void); | |
37 | }; | |
38 | ||
39 | class MyPanel: public wxPanel | |
40 | { | |
41 | public: | |
42 | ||
43 | MyPanel(wxFrame *frame, int x, int y, int w, int h); | |
44 | ||
45 | void OnSize( wxSizeEvent& event ); | |
46 | void OnListBox( wxCommandEvent &event ); | |
47 | void OnListBoxButtons( wxCommandEvent &event ); | |
48 | ||
49 | wxListBox *m_listbox; | |
53010e52 RR |
50 | wxChoice *m_choice; |
51 | wxComboBox *m_combo; | |
1c005ff7 RR |
52 | |
53 | wxTextCtrl *m_text; | |
53b28675 | 54 | wxNotebook *m_notebook; |
1c005ff7 RR |
55 | |
56 | DECLARE_EVENT_TABLE() | |
57 | }; | |
58 | ||
59 | class MyFrame: public wxFrame | |
60 | { | |
61 | public: | |
62 | ||
63 | MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h); | |
64 | ||
65 | public: | |
66 | ||
67 | void OnQuit(wxCommandEvent& event); | |
68 | void OnAbout(wxCommandEvent& event); | |
69 | bool OnClose(void) { return TRUE; } | |
70 | ||
71 | DECLARE_EVENT_TABLE() | |
72 | }; | |
73 | ||
74 | //---------------------------------------------------------------------- | |
75 | // main() | |
76 | //---------------------------------------------------------------------- | |
77 | ||
78 | IMPLEMENT_APP (MyApp) | |
79 | ||
80 | //---------------------------------------------------------------------- | |
81 | // MyApp | |
82 | //---------------------------------------------------------------------- | |
83 | ||
84 | const MINIMAL_QUIT = 100; | |
85 | const MINIMAL_TEXT = 101; | |
86 | const MINIMAL_ABOUT = 102; | |
87 | ||
88 | bool MyApp::OnInit(void) | |
89 | { | |
90 | // Create the main frame window | |
91 | MyFrame *frame = new MyFrame(NULL, "Controls wxWindows App", 50, 50, 500, 420 ); | |
92 | ||
93 | // Give it an icon | |
94 | #ifdef __WINDOWS__ | |
95 | frame->SetIcon(wxIcon("mondrian")); | |
96 | #endif | |
97 | #ifdef __X__ | |
98 | frame->SetIcon(wxIcon("aiai.xbm")); | |
99 | #endif | |
100 | ||
101 | wxMenu *file_menu = new wxMenu; | |
102 | ||
103 | file_menu->Append(MINIMAL_ABOUT, "&About"); | |
104 | file_menu->Append(MINIMAL_QUIT, "E&xit"); | |
105 | wxMenuBar *menu_bar = new wxMenuBar; | |
106 | menu_bar->Append(file_menu, "&File"); | |
107 | frame->SetMenuBar(menu_bar); | |
108 | ||
109 | frame->Show(TRUE); | |
110 | ||
111 | SetTopWindow(frame); | |
112 | ||
113 | return TRUE; | |
114 | } | |
115 | ||
116 | //---------------------------------------------------------------------- | |
117 | // MyPanel | |
118 | //---------------------------------------------------------------------- | |
119 | ||
53b28675 | 120 | const ID_NOTEBOOK = 1000; |
1c005ff7 RR |
121 | |
122 | const ID_LISTBOX = 130; | |
123 | const ID_LISTBOX_SEL_NUM = 131; | |
124 | const ID_LISTBOX_SEL_STR = 132; | |
125 | const ID_LISTBOX_CLEAR = 133; | |
126 | const ID_LISTBOX_APPEND = 134; | |
127 | ||
53010e52 RR |
128 | const ID_CHOICE = 120; |
129 | const ID_CHOICE_SEL_NUM = 121; | |
130 | const ID_CHOICE_SEL_STR = 122; | |
131 | const ID_CHOICE_CLEAR = 123; | |
132 | const ID_CHOICE_APPEND = 124; | |
133 | ||
134 | const ID_COMBO = 140; | |
135 | ||
1c005ff7 RR |
136 | BEGIN_EVENT_TABLE(MyPanel, wxPanel) |
137 | EVT_SIZE ( MyPanel::OnSize) | |
138 | EVT_LISTBOX (ID_LISTBOX, MyPanel::OnListBox) | |
139 | EVT_BUTTON (ID_LISTBOX_SEL_NUM, MyPanel::OnListBoxButtons) | |
140 | EVT_BUTTON (ID_LISTBOX_SEL_STR, MyPanel::OnListBoxButtons) | |
141 | EVT_BUTTON (ID_LISTBOX_CLEAR, MyPanel::OnListBoxButtons) | |
142 | EVT_BUTTON (ID_LISTBOX_APPEND, MyPanel::OnListBoxButtons) | |
143 | END_EVENT_TABLE() | |
144 | ||
145 | MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) : | |
146 | wxPanel( frame, -1, wxPoint(x, y), wxSize(w, h) ) | |
147 | { | |
148 | m_text = new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(0,50), wxSize(100,50), wxTE_MULTILINE ); | |
149 | ||
53b28675 | 150 | m_notebook = new wxNotebook( this, ID_NOTEBOOK, wxPoint(0,0), wxSize(200,150) ); |
1c005ff7 | 151 | |
53010e52 | 152 | wxString choices[] = |
1c005ff7 RR |
153 | { |
154 | "This", | |
155 | "is", | |
156 | "a", | |
53010e52 RR |
157 | "wonderfull example.", |
158 | "Or", | |
159 | "what", | |
160 | "do", | |
161 | "you", | |
162 | "think?" | |
1c005ff7 RR |
163 | }; |
164 | ||
53b28675 | 165 | wxPanel *panel = m_notebook->CreatePage( 0, "wxList" ); |
1c005ff7 | 166 | |
53010e52 RR |
167 | m_listbox = new wxListBox( panel, ID_LISTBOX, wxPoint(10,10), wxSize(120,70), 9, choices ); |
168 | (void)new wxButton( panel, ID_LISTBOX_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(100,30) ); | |
169 | (void)new wxButton( panel, ID_LISTBOX_SEL_STR, "Select 'This'", wxPoint(300,30), wxSize(100,30) ); | |
170 | (void)new wxButton( panel, ID_LISTBOX_CLEAR, "Clear", wxPoint(180,80), wxSize(100,30) ); | |
171 | (void)new wxButton( panel, ID_LISTBOX_APPEND, "Append 'Hi!'", wxPoint(300,80), wxSize(100,30) ); | |
172 | ||
173 | panel = m_notebook->CreatePage( 1, "wxChoice" ); | |
174 | ||
175 | m_choice = new wxChoice( panel, ID_CHOICE, wxPoint(10,10), wxSize(120,-1), 9, choices ); | |
176 | ||
177 | panel = m_notebook->CreatePage( 2, "wxComboBox" ); | |
53b28675 | 178 | |
53010e52 | 179 | m_combo = new wxComboBox( panel, ID_COMBO, "This", wxPoint(10,10), wxSize(120,-1), 9, choices ); |
1c005ff7 RR |
180 | } |
181 | ||
182 | void MyPanel::OnSize( wxSizeEvent& WXUNUSED(event) ) | |
183 | { | |
184 | int x = 0; | |
185 | int y = 0; | |
186 | GetClientSize( &x, &y ); | |
187 | ||
53b28675 | 188 | if (m_notebook) m_notebook->SetSize( 2, 2, x-4, y/2-4 ); |
1c005ff7 RR |
189 | if (m_text) m_text->SetSize( 2, y/2+2, x-4, y/2-4 ); |
190 | } | |
191 | ||
192 | void MyPanel::OnListBox( wxCommandEvent &event ) | |
193 | { | |
194 | m_text->WriteText( "ListBox Event:\n"); | |
195 | m_text->WriteText( "ListBox selection string is: " ); | |
196 | m_text->WriteText( event.GetString() ); | |
197 | m_text->WriteText( "\n" ); | |
198 | } | |
199 | ||
200 | void MyPanel::OnListBoxButtons( wxCommandEvent &WXUNUSED(event) ) | |
201 | { | |
53010e52 | 202 | m_notebook->DeletePage( 1 ); |
1c005ff7 RR |
203 | } |
204 | ||
205 | //---------------------------------------------------------------------- | |
206 | // MyFrame | |
207 | //---------------------------------------------------------------------- | |
208 | ||
209 | BEGIN_EVENT_TABLE(MyFrame, wxFrame) | |
210 | EVT_MENU(MINIMAL_QUIT, MyFrame::OnQuit) | |
211 | EVT_MENU(MINIMAL_ABOUT, MyFrame::OnAbout) | |
212 | END_EVENT_TABLE() | |
213 | ||
214 | MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h): | |
215 | wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) | |
216 | { | |
217 | (void*) new MyPanel( this, 10, 10, 300, 100 ); | |
218 | } | |
219 | ||
220 | void MyFrame::OnQuit (wxCommandEvent& WXUNUSED(event) ) | |
221 | { | |
222 | Close(TRUE); | |
223 | } | |
224 | ||
225 | void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) ) | |
226 | { | |
227 | wxMessageDialog dialog(this, "This is a control sample", "About Controls", wxOK ); | |
228 | dialog.ShowModal(); | |
229 | } | |
230 | ||
231 |