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