]> git.saurik.com Git - wxWidgets.git/blob - samples/controls/controls.cpp
52ef792d97da75ec7daf5be9d06118db2ad718c9
[wxWidgets.git] / samples / controls / controls.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: controls.cpp
3 // Purpose: Controls wxWindows sample
4 // Author: Robert Roebling
5 // Modified by:
6 // RCS-ID: $Id$
7 // Copyright: (c) Robert Roebling, Julian Smart
8 // Licence: wxWindows license
9 /////////////////////////////////////////////////////////////////////////////
10
11 #ifdef __GNUG__
12 #pragma implementation "controls.h"
13 #endif
14
15 // For compilers that support precompilation, includes "wx/wx.h".
16 #include "wx/wxprec.h"
17
18 #ifdef __BORLANDC__
19 #pragma hdrstop
20 #endif
21
22 #ifndef WX_PRECOMP
23 #include "wx/wx.h"
24 #endif
25
26 #include "wx/spinbutt.h"
27 #include "wx/notebook.h"
28 #include "wx/imaglist.h"
29 #include "wx/clipbrd.h"
30
31 // XPM doesn't seem to work under Windows at present. Or, wxNotebook images
32 // aren't working.
33 // Uncomment this line and comment out the next to try it.
34 // #if defined(__WXGTK__) || defined(__WXMOTIF__) || (defined(__WXMSW__) && wxUSE_XPM_IN_MSW)
35 #if defined(__WXGTK__) || defined(__WXMOTIF__)
36 #define USE_XPM
37 #endif
38
39 #ifdef USE_XPM
40 #include "mondrian.xpm"
41 #include "icons/choice.xpm"
42 #include "icons/combo.xpm"
43 #include "icons/list.xpm"
44 #include "icons/radio.xpm"
45 #include "icons/text.xpm"
46 #include "icons/gauge.xpm"
47 #endif
48
49 //----------------------------------------------------------------------
50 // class definitions
51 //----------------------------------------------------------------------
52
53 class MyApp: public wxApp
54 {
55 public:
56 bool OnInit(void);
57 };
58
59 class MyPanel: public wxPanel
60 {
61 public:
62
63 MyPanel(wxFrame *frame, int x, int y, int w, int h);
64 virtual ~MyPanel();
65
66 void OnSize( wxSizeEvent& event );
67 void OnListBox( wxCommandEvent &event );
68 void OnListBoxButtons( wxCommandEvent &event );
69 void OnChoice( wxCommandEvent &event );
70 void OnChoiceButtons( wxCommandEvent &event );
71 void OnCombo( wxCommandEvent &event );
72 void OnComboButtons( wxCommandEvent &event );
73 void OnRadio( wxCommandEvent &event );
74 void OnRadioButtons( wxCommandEvent &event );
75 void OnSetFont( wxCommandEvent &event );
76 void OnPageChanged( wxNotebookEvent &event );
77 void OnSliderUpdate( wxCommandEvent &event );
78 void OnSpinUpdate( wxSpinEvent &event );
79 void OnPasteFromClipboard( wxCommandEvent &event );
80 void OnCopyToClipboard( wxCommandEvent &event );
81 void OnCutToClipboard( wxCommandEvent &event );
82
83 wxListBox *m_listbox;
84 wxChoice *m_choice;
85 wxComboBox *m_combo;
86 wxRadioBox *m_radio;
87 wxGauge *m_gauge;
88 wxSlider *m_slider;
89 wxButton *m_fontButton;
90 wxSpinButton *m_spinbutton;
91 wxTextCtrl *m_spintext;
92 wxTextCtrl *m_multitext;
93 wxCheckBox *m_checkbox;
94
95 wxTextCtrl *m_text;
96 wxNotebook *m_notebook;
97
98 DECLARE_EVENT_TABLE()
99 };
100
101 class MyFrame: public wxFrame
102 {
103 public:
104
105 MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h);
106
107 public:
108
109 void OnQuit(wxCommandEvent& event);
110 void OnAbout(wxCommandEvent& event);
111 bool OnClose(void) { return TRUE; }
112
113 DECLARE_EVENT_TABLE()
114 };
115
116 //----------------------------------------------------------------------
117 // main()
118 //----------------------------------------------------------------------
119
120 IMPLEMENT_APP (MyApp)
121
122 //----------------------------------------------------------------------
123 // MyApp
124 //----------------------------------------------------------------------
125
126 const int MINIMAL_QUIT = 100;
127 const int MINIMAL_TEXT = 101;
128 const int MINIMAL_ABOUT = 102;
129
130 bool MyApp::OnInit(void)
131 {
132 // Create the main frame window
133 MyFrame *frame = new MyFrame((wxFrame *) NULL, (char *) "Controls wxWindows App", 50, 50, 530, 420 );
134
135 // Give it an icon
136 // The wxICON() macros loads an icon from a resource under Windows
137 // and uses an #included XPM image under GTK+ and Motif
138
139 frame->SetIcon( wxICON(mondrian) );
140
141 wxMenu *file_menu = new wxMenu;
142
143 file_menu->Append(MINIMAL_ABOUT, "&About");
144 file_menu->Append(MINIMAL_QUIT, "E&xit");
145 wxMenuBar *menu_bar = new wxMenuBar;
146 menu_bar->Append(file_menu, "&File");
147 frame->SetMenuBar(menu_bar);
148
149 frame->Show(TRUE);
150
151 SetTopWindow(frame);
152
153 return TRUE;
154 }
155
156 //----------------------------------------------------------------------
157 // MyPanel
158 //----------------------------------------------------------------------
159
160 const int ID_NOTEBOOK = 1000;
161
162 const int ID_LISTBOX = 130;
163 const int ID_LISTBOX_SEL_NUM = 131;
164 const int ID_LISTBOX_SEL_STR = 132;
165 const int ID_LISTBOX_CLEAR = 133;
166 const int ID_LISTBOX_APPEND = 134;
167 const int ID_LISTBOX_DELETE = 135;
168 const int ID_LISTBOX_FONT = 136;
169 const int ID_LISTBOX_ENABLE = 137;
170
171 const int ID_CHOICE = 120;
172 const int ID_CHOICE_SEL_NUM = 121;
173 const int ID_CHOICE_SEL_STR = 122;
174 const int ID_CHOICE_CLEAR = 123;
175 const int ID_CHOICE_APPEND = 124;
176 const int ID_CHOICE_DELETE = 125;
177 const int ID_CHOICE_FONT = 126;
178 const int ID_CHOICE_ENABLE = 127;
179
180 const int ID_COMBO = 140;
181 const int ID_COMBO_SEL_NUM = 141;
182 const int ID_COMBO_SEL_STR = 142;
183 const int ID_COMBO_CLEAR = 143;
184 const int ID_COMBO_APPEND = 144;
185 const int ID_COMBO_DELETE = 145;
186 const int ID_COMBO_FONT = 146;
187 const int ID_COMBO_ENABLE = 147;
188
189 const int ID_TEXT = 150;
190 const int ID_PASTE_TEXT = 151;
191 const int ID_COPY_TEXT = 152;
192 const int ID_CUT_TEXT = 153;
193
194 const int ID_RADIOBOX = 160;
195 const int ID_RADIOBOX_SEL_NUM = 161;
196 const int ID_RADIOBOX_SEL_STR = 162;
197 const int ID_RADIOBOX_FONT = 163;
198 const int ID_RADIOBOX_ENABLE = 164;
199
200 const int ID_SET_FONT = 170;
201
202 const int ID_GAUGE = 180;
203 const int ID_SLIDER = 181;
204
205 const int ID_SPIN = 182;
206
207
208 BEGIN_EVENT_TABLE(MyPanel, wxPanel)
209 EVT_SIZE ( MyPanel::OnSize)
210 EVT_NOTEBOOK_PAGE_CHANGED(ID_NOTEBOOK, MyPanel::OnPageChanged)
211 EVT_LISTBOX (ID_LISTBOX, MyPanel::OnListBox)
212 EVT_BUTTON (ID_LISTBOX_SEL_NUM, MyPanel::OnListBoxButtons)
213 EVT_BUTTON (ID_LISTBOX_SEL_STR, MyPanel::OnListBoxButtons)
214 EVT_BUTTON (ID_LISTBOX_CLEAR, MyPanel::OnListBoxButtons)
215 EVT_BUTTON (ID_LISTBOX_APPEND, MyPanel::OnListBoxButtons)
216 EVT_BUTTON (ID_LISTBOX_DELETE, MyPanel::OnListBoxButtons)
217 EVT_BUTTON (ID_LISTBOX_FONT, MyPanel::OnListBoxButtons)
218 EVT_CHECKBOX (ID_LISTBOX_ENABLE, MyPanel::OnListBoxButtons)
219 EVT_CHOICE (ID_CHOICE, MyPanel::OnChoice)
220 EVT_BUTTON (ID_CHOICE_SEL_NUM, MyPanel::OnChoiceButtons)
221 EVT_BUTTON (ID_CHOICE_SEL_STR, MyPanel::OnChoiceButtons)
222 EVT_BUTTON (ID_CHOICE_CLEAR, MyPanel::OnChoiceButtons)
223 EVT_BUTTON (ID_CHOICE_APPEND, MyPanel::OnChoiceButtons)
224 EVT_BUTTON (ID_CHOICE_DELETE, MyPanel::OnChoiceButtons)
225 EVT_BUTTON (ID_CHOICE_FONT, MyPanel::OnChoiceButtons)
226 EVT_CHECKBOX (ID_CHOICE_ENABLE, MyPanel::OnChoiceButtons)
227 EVT_CHOICE (ID_COMBO, MyPanel::OnCombo)
228 EVT_BUTTON (ID_COMBO_SEL_NUM, MyPanel::OnComboButtons)
229 EVT_BUTTON (ID_COMBO_SEL_STR, MyPanel::OnComboButtons)
230 EVT_BUTTON (ID_COMBO_CLEAR, MyPanel::OnComboButtons)
231 EVT_BUTTON (ID_COMBO_APPEND, MyPanel::OnComboButtons)
232 EVT_BUTTON (ID_COMBO_DELETE, MyPanel::OnComboButtons)
233 EVT_BUTTON (ID_COMBO_FONT, MyPanel::OnComboButtons)
234 EVT_CHECKBOX (ID_COMBO_ENABLE, MyPanel::OnComboButtons)
235 EVT_RADIOBOX (ID_RADIOBOX, MyPanel::OnRadio)
236 EVT_BUTTON (ID_RADIOBOX_SEL_NUM, MyPanel::OnRadioButtons)
237 EVT_BUTTON (ID_RADIOBOX_SEL_STR, MyPanel::OnRadioButtons)
238 EVT_BUTTON (ID_RADIOBOX_FONT, MyPanel::OnRadioButtons)
239 EVT_CHECKBOX (ID_RADIOBOX_ENABLE, MyPanel::OnRadioButtons)
240 EVT_BUTTON (ID_SET_FONT, MyPanel::OnSetFont)
241 EVT_SLIDER (ID_SLIDER, MyPanel::OnSliderUpdate)
242 EVT_SPIN (ID_SPIN, MyPanel::OnSpinUpdate)
243 EVT_BUTTON (ID_PASTE_TEXT, MyPanel::OnPasteFromClipboard)
244 EVT_BUTTON (ID_COPY_TEXT, MyPanel::OnCopyToClipboard)
245 EVT_BUTTON (ID_CUT_TEXT, MyPanel::OnCutToClipboard)
246 END_EVENT_TABLE()
247
248 MyPanel::MyPanel( wxFrame *frame, int x, int y, int w, int h ) :
249 wxPanel( frame, -1, wxPoint(x, y), wxSize(w, h) )
250 {
251 // SetBackgroundColour("cadet blue");
252
253 m_text = new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(0,50), wxSize(100,50), wxTE_MULTILINE );
254 // m_text->SetBackgroundColour("wheat");
255
256 m_notebook = new wxNotebook( this, ID_NOTEBOOK, wxPoint(0,0), wxSize(200,150) );
257
258 wxString choices[] =
259 {
260 "This",
261 "is one of my",
262 "really",
263 "wonderful",
264 "examples.",
265 };
266
267 #ifdef USE_XPM
268 // image ids and names
269 enum
270 {
271 Image_List, Image_Choice, Image_Combo, Image_Text, Image_Radio, Image_Gauge, Image_Max
272 };
273
274 // fill the image list
275 wxImageList *imagelist = new wxImageList(32, 32);
276
277 imagelist-> Add( wxBitmap( list_xpm ));
278 imagelist-> Add( wxBitmap( choice_xpm ));
279 imagelist-> Add( wxBitmap( combo_xpm ));
280 imagelist-> Add( wxBitmap( text_xpm ));
281 imagelist-> Add( wxBitmap( radio_xpm ));
282 imagelist-> Add( wxBitmap( gauge_xpm ));
283 m_notebook->SetImageList(imagelist);
284 #else
285
286 // No images for now
287 #define Image_List -1
288 #define Image_Choice -1
289 #define Image_Combo -1
290 #define Image_Text -1
291 #define Image_Radio -1
292 #define Image_Gauge -1
293 #define Image_Max -1
294
295 #endif
296
297 wxButton *button = (wxButton*)NULL;
298
299 // m_notebook->SetBackgroundColour("cadet blue");
300
301 wxPanel *panel = (wxPanel*) NULL;
302 panel = new wxPanel(m_notebook);
303 // panel->SetBackgroundColour("cadet blue");
304 // panel->SetForegroundColour("blue");
305 m_listbox = new wxListBox( panel, ID_LISTBOX, wxPoint(10,10), wxSize(120,70), 5, choices );
306 // m_listbox->SetBackgroundColour("wheat");
307 (void)new wxButton( panel, ID_LISTBOX_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) );
308 (void)new wxButton( panel, ID_LISTBOX_SEL_STR, "Select 'This'", wxPoint(340,30), wxSize(140,30) );
309 (void)new wxButton( panel, ID_LISTBOX_CLEAR, "Clear", wxPoint(180,80), wxSize(140,30) );
310 (void)new wxButton( panel, ID_LISTBOX_APPEND, "Append 'Hi!'", wxPoint(340,80), wxSize(140,30) );
311 (void)new wxButton( panel, ID_LISTBOX_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) );
312 button = new wxButton( panel, ID_LISTBOX_FONT, "Set Italic font", wxPoint(340,130), wxSize(140,30) );
313 // button->SetForegroundColour( "red" );
314 m_checkbox = new wxCheckBox( panel, ID_LISTBOX_ENABLE, "Disable", wxPoint(20,130), wxSize(140,30) );
315 m_notebook->AddPage(panel, "wxList", FALSE, Image_List);
316
317 panel = new wxPanel(m_notebook);
318 // panel->SetBackgroundColour("cadet blue");
319 // panel->SetForegroundColour("blue");
320 m_choice = new wxChoice( panel, ID_CHOICE, wxPoint(10,10), wxSize(120,-1), 5, choices );
321 // m_choice->SetBackgroundColour("wheat");
322 (void)new wxButton( panel, ID_CHOICE_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) );
323 (void)new wxButton( panel, ID_CHOICE_SEL_STR, "Select 'This'", wxPoint(340,30), wxSize(140,30) );
324 (void)new wxButton( panel, ID_CHOICE_CLEAR, "Clear", wxPoint(180,80), wxSize(140,30) );
325 (void)new wxButton( panel, ID_CHOICE_APPEND, "Append 'Hi!'", wxPoint(340,80), wxSize(140,30) );
326 (void)new wxButton( panel, ID_CHOICE_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) );
327 (void)new wxButton( panel, ID_CHOICE_FONT, "Set Italic font", wxPoint(340,130), wxSize(140,30) );
328 (void)new wxCheckBox( panel, ID_CHOICE_ENABLE, "Disable", wxPoint(20,130), wxSize(140,30) );
329 m_notebook->AddPage(panel, "wxChoice", FALSE, Image_Choice);
330
331 panel = new wxPanel(m_notebook);
332 // panel->SetBackgroundColour("cadet blue");
333 // panel->SetForegroundColour("blue");
334 m_combo = new wxComboBox( panel, ID_COMBO, "This", wxPoint(10,10), wxSize(120,-1), 5, choices );
335 // m_combo->SetBackgroundColour("wheat");
336 (void)new wxButton( panel, ID_COMBO_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) );
337 (void)new wxButton( panel, ID_COMBO_SEL_STR, "Select 'This'", wxPoint(340,30), wxSize(140,30) );
338 (void)new wxButton( panel, ID_COMBO_CLEAR, "Clear", wxPoint(180,80), wxSize(140,30) );
339 (void)new wxButton( panel, ID_COMBO_APPEND, "Append 'Hi!'", wxPoint(340,80), wxSize(140,30) );
340 (void)new wxButton( panel, ID_COMBO_DELETE, "Delete selected item", wxPoint(180,130), wxSize(140,30) );
341 (void)new wxButton( panel, ID_COMBO_FONT, "Set Italic font", wxPoint(340,130), wxSize(140,30) );
342 (void)new wxCheckBox( panel, ID_COMBO_ENABLE, "Disable", wxPoint(20,130), wxSize(140,30) );
343 m_notebook->AddPage(panel, "wxComboBox", FALSE, Image_Combo);
344
345 panel = new wxPanel(m_notebook);
346 // panel->SetBackgroundColour("cadet blue");
347 // panel->SetForegroundColour("blue");
348 wxTextCtrl *tc = new wxTextCtrl( panel, ID_TEXT, "Write text here.", wxPoint(10,10), wxSize(320,28));
349 (*tc) << " More text.";
350 // tc->SetBackgroundColour("wheat");
351 m_multitext = new wxTextCtrl( panel, ID_TEXT, "And here.", wxPoint(10,50), wxSize(320,160), wxTE_MULTILINE );
352 (*m_multitext) << " More text.";
353 // m_multitext->SetBackgroundColour("wheat");
354 (void)new wxStaticBox( panel, -1, "wxClipboard", wxPoint(345,50), wxSize(160,145) );
355 (void)new wxButton( panel, ID_COPY_TEXT, "Copy line 1", wxPoint(370,70), wxSize(110,30) );
356 (void)new wxButton( panel, ID_PASTE_TEXT, "Paste text", wxPoint(370,110), wxSize(110,30) );
357 (void)new wxButton( panel, ID_CUT_TEXT, "Cut line 1", wxPoint(370,150), wxSize(110,30) );
358 m_notebook->AddPage(panel, "wxTextCtrl" , FALSE, Image_Text);
359
360 wxString choices2[] =
361 {
362 "Wonderful",
363 "examples.",
364 };
365
366 panel = new wxPanel(m_notebook);
367 // panel->SetBackgroundColour("cadet blue");
368 // panel->SetForegroundColour("blue");
369 m_radio = new wxRadioBox( panel, ID_RADIOBOX, "That", wxPoint(10,160), wxSize(-1,-1), 2, choices2, 1, wxRA_VERTICAL );
370 // m_radio->SetBackgroundColour("wheat");
371 m_radio = new wxRadioBox( panel, ID_RADIOBOX, "This", wxPoint(10,10), wxSize(-1,-1), 5, choices, 1, wxRA_HORIZONTAL );
372 // m_radio->SetBackgroundColour("wheat");
373 (void)new wxButton( panel, ID_RADIOBOX_SEL_NUM, "Select #2", wxPoint(180,30), wxSize(140,30) );
374 (void)new wxButton( panel, ID_RADIOBOX_SEL_STR, "Select 'This'", wxPoint(180,80), wxSize(140,30) );
375 m_fontButton = new wxButton( panel, ID_SET_FONT, "Set more Italic font", wxPoint(340,30), wxSize(140,30) );
376 m_fontButton->SetForegroundColour("blue");
377 (void)new wxButton( panel, ID_RADIOBOX_FONT, "Set Italic font", wxPoint(340,80), wxSize(140,30) );
378 (void)new wxCheckBox( panel, ID_RADIOBOX_ENABLE, "Disable", wxPoint(340,130), wxSize(140,30) );
379 m_notebook->AddPage(panel, "wxRadioBox", FALSE, Image_Radio);
380
381 panel = new wxPanel(m_notebook);
382 // panel->SetBackgroundColour("cadet blue");
383 // panel->SetForegroundColour("blue");
384 (void)new wxStaticBox( panel, -1, "wxGauge and wxSlider", wxPoint(10,10), wxSize(180,130) );
385 m_gauge = new wxGauge( panel, -1, 200, wxPoint(18,50), wxSize(155,-1) );
386 // m_gauge->SetBackgroundColour("wheat");
387 m_slider = new wxSlider( panel, ID_SLIDER, 0, 0, 200, wxPoint(18,90), wxSize(155,-1) );
388 // m_slider->SetBackgroundColour("wheat");
389 (void)new wxStaticBox( panel, -1, "Explanation", wxPoint(200,10), wxSize(290,130) );
390 (void)new wxStaticText( panel, -1,
391 "In order see the gauge (aka progress bar)\n"
392 "control do something you have to drag the\n"
393 "handle of the slider to the right.\n"
394 "\n"
395 "This is also supposed to demonstrate how\n"
396 "to use static controls.\n",
397 wxPoint(208,25) );
398 m_spintext = new wxTextCtrl( panel, -1, "0", wxPoint(20,160), wxSize(80,-1) );
399 // m_spintext->SetBackgroundColour("wheat");
400 m_spinbutton = new wxSpinButton( panel, ID_SPIN, wxPoint(103,159), wxSize(-1,-1) );
401 // m_spinbutton->SetBackgroundColour("wheat");
402 m_spinbutton->SetRange(0,100);
403
404 m_notebook->AddPage(panel, "wxGauge", FALSE, Image_Gauge);
405 }
406
407 void MyPanel::OnPasteFromClipboard( wxCommandEvent &WXUNUSED(event) )
408 {
409 #ifdef __WXGTK__
410
411 if (!wxTheClipboard->IsSupportedFormat( wxDF_TEXT ))
412 {
413 *m_text << "The clipboard doesn't contain any data in the requested format." << "\n";
414
415 return;
416 }
417
418 if (!wxTheClipboard->Open())
419 {
420 *m_text << "Error opening the clipboard." << "\n";
421
422 return;
423 }
424 else
425 {
426 *m_text << "Successfully opened the clipboard." << "\n";
427 }
428
429 wxTextDataObject *data = new wxTextDataObject();
430
431 if (wxTheClipboard->GetData( data ))
432 {
433 *m_text << "Successfully retrieved data from the clipboard." << "\n";
434 *m_multitext << data->GetText() << "\n";
435 }
436 else
437 {
438 *m_text << "Error getting data from the clipboard." << "\n";
439 }
440
441 wxTheClipboard->Close();
442
443 *m_text << "Closed the clipboard." << "\n";
444
445 delete data;
446
447 #endif
448 }
449
450 void MyPanel::OnCopyToClipboard( wxCommandEvent &WXUNUSED(event) )
451 {
452 #ifdef __WXGTK__
453
454 wxString text( m_multitext->GetLineText(0) );
455
456 if (text.IsEmpty()) return;
457
458 wxTextDataObject *data = new wxTextDataObject( text );
459
460 if (!wxTheClipboard->Open())
461 {
462 *m_text << "Error opening the clipboard." << "\n";
463
464 return;
465 }
466 else
467 {
468 *m_text << "Successfully opened the clipboard." << "\n";
469 }
470
471 if (!wxTheClipboard->SetData( data ))
472 {
473 *m_text << "Error while copying to the clipboard." << "\n";
474 }
475 else
476 {
477 *m_text << "Successfully copied data to the clipboard." << "\n";
478 }
479
480 wxTheClipboard->Close();
481
482 *m_text << "Closed the clipboard." << "\n";
483
484 #endif
485 }
486
487 void MyPanel::OnCutToClipboard( wxCommandEvent &WXUNUSED(event) )
488 {
489 }
490
491 void MyPanel::OnSize( wxSizeEvent& WXUNUSED(event) )
492 {
493 int x = 0;
494 int y = 0;
495 GetClientSize( &x, &y );
496
497 if (m_notebook) m_notebook->SetSize( 2, 2, x-4, y*2/3-4 );
498 if (m_text) m_text->SetSize( 2, y*2/3+2, x-4, y/3-4 );
499 }
500
501 void MyPanel::OnPageChanged( wxNotebookEvent &event )
502 {
503 *m_text << "Notebook selection is " << event.GetSelection() << "\n";
504 }
505
506 void MyPanel::OnListBox( wxCommandEvent &event )
507 {
508 m_text->WriteText( "ListBox selection string is: " );
509 m_text->WriteText( event.GetString() );
510 m_text->WriteText( "\n" );
511 }
512
513 void MyPanel::OnListBoxButtons( wxCommandEvent &event )
514 {
515 switch (event.GetId())
516 {
517 case ID_LISTBOX_ENABLE:
518 {
519 m_listbox->Enable( !((bool)event.GetInt()) );
520 break;
521 }
522 case ID_LISTBOX_SEL_NUM:
523 {
524 m_listbox->SetSelection( 2 );
525 break;
526 }
527 case ID_LISTBOX_SEL_STR:
528 {
529 m_listbox->SetStringSelection( "This" );
530 break;
531 }
532 case ID_LISTBOX_CLEAR:
533 {
534 m_listbox->Clear();
535 break;
536 }
537 case ID_LISTBOX_APPEND:
538 {
539 m_listbox->Append( "Hi!" );
540 break;
541 }
542 case ID_LISTBOX_DELETE:
543 {
544 int idx = m_listbox->GetSelection();
545 m_listbox->Delete( idx );
546 break;
547 }
548 case ID_LISTBOX_FONT:
549 {
550 m_listbox->SetFont( *wxITALIC_FONT );
551 m_checkbox->SetFont( *wxITALIC_FONT );
552 break;
553 }
554 }
555 }
556
557 void MyPanel::OnChoice( wxCommandEvent &event )
558 {
559 m_text->WriteText( "Choice selection string is: " );
560 m_text->WriteText( event.GetString() );
561 m_text->WriteText( "\n" );
562 }
563
564 void MyPanel::OnChoiceButtons( wxCommandEvent &event )
565 {
566 switch (event.GetId())
567 {
568 case ID_CHOICE_ENABLE:
569 {
570 m_choice->Enable( !((bool)event.GetInt()) );
571 break;
572 }
573 case ID_CHOICE_SEL_NUM:
574 {
575 m_choice->SetSelection( 2 );
576 break;
577 }
578 case ID_CHOICE_SEL_STR:
579 {
580 m_choice->SetStringSelection( "This" );
581 break;
582 }
583 case ID_CHOICE_CLEAR:
584 {
585 m_choice->Clear();
586 break;
587 }
588 case ID_CHOICE_APPEND:
589 {
590 m_choice->Append( "Hi!" );
591 break;
592 }
593 case ID_CHOICE_DELETE:
594 {
595 int idx = m_choice->GetSelection();
596 m_choice->Delete( idx );
597 break;
598 }
599 case ID_CHOICE_FONT:
600 {
601 m_choice->SetFont( *wxITALIC_FONT );
602 break;
603 }
604 }
605 }
606
607 void MyPanel::OnCombo( wxCommandEvent &event )
608 {
609 m_text->WriteText( "ComboBox selection string is: " );
610 m_text->WriteText( event.GetString() );
611 m_text->WriteText( "\n" );
612 }
613
614 void MyPanel::OnComboButtons( wxCommandEvent &event )
615 {
616 switch (event.GetId())
617 {
618 case ID_COMBO_ENABLE:
619 {
620 m_combo->Enable( !((bool)event.GetInt()) );
621 break;
622 }
623 case ID_COMBO_SEL_NUM:
624 {
625 m_combo->SetSelection( 2 );
626 break;
627 }
628 case ID_COMBO_SEL_STR:
629 {
630 m_combo->SetStringSelection( "This" );
631 break;
632 }
633 case ID_COMBO_CLEAR:
634 {
635 m_combo->Clear();
636 break;
637 }
638 case ID_COMBO_APPEND:
639 {
640 m_combo->Append( "Hi!" );
641 break;
642 }
643 case ID_COMBO_DELETE:
644 {
645 int idx = m_combo->GetSelection();
646 m_combo->Delete( idx );
647 break;
648 }
649 case ID_COMBO_FONT:
650 {
651 m_combo->SetFont( *wxITALIC_FONT );
652 break;
653 }
654 }
655 }
656
657 void MyPanel::OnRadio( wxCommandEvent &event )
658 {
659 m_text->WriteText( "RadioBox selection string is: " );
660 m_text->WriteText( event.GetString() );
661 m_text->WriteText( "\n" );
662 }
663
664 void MyPanel::OnRadioButtons( wxCommandEvent &event )
665 {
666 switch (event.GetId())
667 {
668 case ID_RADIOBOX_ENABLE:
669 {
670 m_radio->Enable( !((bool)event.GetInt()) );
671 break;
672 }
673 case ID_RADIOBOX_SEL_NUM:
674 {
675 m_radio->SetSelection( 2 );
676 break;
677 }
678 case ID_RADIOBOX_SEL_STR:
679 {
680 m_radio->SetStringSelection( "This" );
681 break;
682 }
683 case ID_RADIOBOX_FONT:
684 {
685 m_radio->SetFont( *wxITALIC_FONT );
686 break;
687 }
688 }
689 }
690
691 void MyPanel::OnSetFont( wxCommandEvent &WXUNUSED(event) )
692 {
693 m_fontButton->SetFont( *wxITALIC_FONT );
694 m_text->SetFont( *wxITALIC_FONT );
695 }
696
697 void MyPanel::OnSliderUpdate( wxCommandEvent &WXUNUSED(event) )
698 {
699 m_gauge->SetValue( m_slider->GetValue() );
700 }
701
702 void MyPanel::OnSpinUpdate( wxSpinEvent &event )
703 {
704 wxString value;
705 value.sprintf( "%d", (int)event.GetPosition() );
706 m_spintext->SetValue( value );
707 }
708
709 MyPanel::~MyPanel()
710 {
711 delete m_notebook->GetImageList();
712 }
713
714 //----------------------------------------------------------------------
715 // MyFrame
716 //----------------------------------------------------------------------
717
718 BEGIN_EVENT_TABLE(MyFrame, wxFrame)
719 EVT_MENU(MINIMAL_QUIT, MyFrame::OnQuit)
720 EVT_MENU(MINIMAL_ABOUT, MyFrame::OnAbout)
721 END_EVENT_TABLE()
722
723 MyFrame::MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h):
724 wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h))
725 {
726 (void)new MyPanel( this, 10, 10, 300, 100 );
727 }
728
729 void MyFrame::OnQuit (wxCommandEvent& WXUNUSED(event) )
730 {
731 Close(TRUE);
732 }
733
734 void MyFrame::OnAbout( wxCommandEvent& WXUNUSED(event) )
735 {
736 wxMessageDialog dialog(this, "This is a control sample", "About Controls", wxOK );
737 dialog.ShowModal();
738 }