1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Controls wxWidgets sample
4 // Author: Robert Roebling
7 // Copyright: (c) Robert Roebling, Julian Smart
8 // Licence: wxWindows license
9 /////////////////////////////////////////////////////////////////////////////
11 // For compilers that support precompilation, includes "wx/wx.h".
12 #include "wx/wxprec.h"
22 #include "wx/spinbutt.h"
23 #include "wx/tglbtn.h"
24 #include "wx/bookctrl.h"
25 #include "wx/imaglist.h"
26 #include "wx/artprov.h"
27 #include "wx/cshelp.h"
30 #include "wx/tooltip.h"
32 #include "wx/numdlg.h"
34 #endif // wxUSE_TOOLTIPS
36 #if defined(__WXGTK__) || defined(__WXMOTIF__) || defined(__WXMAC__) || defined(__WXMGL__) || defined(__WXX11__)
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"
51 #define wxUSE_SPINBTN 1
54 #include "wx/progdlg.h"
57 #include "wx/spinctrl.h"
58 #endif // wxUSE_SPINCTRL
61 #define wxToggleButton wxCheckBox
62 #define EVT_TOGGLEBUTTON EVT_CHECKBOX
65 //----------------------------------------------------------------------
67 //----------------------------------------------------------------------
69 class MyApp
: public wxApp
75 class MyPanel
: public wxPanel
78 MyPanel(wxFrame
*frame
, int x
, int y
, int w
, int h
);
82 void SetAllToolTips();
83 #endif // wxUSE_TOOLTIPS
85 void OnIdle( wxIdleEvent
&event
);
86 void OnListBox( wxCommandEvent
&event
);
87 void OnListBoxDoubleClick( wxCommandEvent
&event
);
88 void OnListBoxButtons( wxCommandEvent
&event
);
90 void OnChoice( wxCommandEvent
&event
);
91 void OnChoiceButtons( wxCommandEvent
&event
);
93 void OnCombo( wxCommandEvent
&event
);
94 void OnComboTextChanged( wxCommandEvent
&event
);
95 void OnComboTextEnter( wxCommandEvent
&event
);
96 void OnComboButtons( wxCommandEvent
&event
);
97 void OnRadio( wxCommandEvent
&event
);
98 void OnRadioButtons( wxCommandEvent
&event
);
99 void OnRadioButton1( wxCommandEvent
&event
);
100 void OnRadioButton2( wxCommandEvent
&event
);
101 void OnSetFont( wxCommandEvent
&event
);
102 void OnPageChanged( wxBookCtrlEvent
&event
);
103 void OnPageChanging( wxBookCtrlEvent
&event
);
104 void OnSliderUpdate( wxCommandEvent
&event
);
105 void OnUpdateLabel( wxCommandEvent
&event
);
107 void OnSpinUp( wxSpinEvent
&event
);
108 void OnSpinDown( wxSpinEvent
&event
);
109 void OnSpinUpdate( wxSpinEvent
&event
);
110 #if wxUSE_PROGRESSDLG
111 void OnUpdateShowProgress( wxUpdateUIEvent
& event
);
112 void OnShowProgress( wxCommandEvent
&event
);
113 #endif // wxUSE_PROGRESSDLG
114 #endif // wxUSE_SPINBTN
115 void OnNewText( wxCommandEvent
&event
);
117 void OnSpinCtrl(wxSpinEvent
& event
);
118 void OnSpinCtrlUp(wxSpinEvent
& event
);
119 void OnSpinCtrlDown(wxSpinEvent
& event
);
120 void OnSpinCtrlText(wxCommandEvent
& event
);
121 #endif // wxUSE_SPINCTRL
123 void OnEnableAll(wxCommandEvent
& event
);
124 void OnChangeColour(wxCommandEvent
& event
);
125 void OnTestButton(wxCommandEvent
& event
);
126 void OnBmpButton(wxCommandEvent
& event
);
127 void OnBmpButtonToggle(wxCommandEvent
& event
);
129 void OnSizerCheck (wxCommandEvent
&event
);
131 wxListBox
*m_listbox
,
136 #endif // wxUSE_CHOICE
143 #endif // wxUSE_GAUGE
146 #endif // wxUSE_SLIDER
147 wxButton
*m_fontButton
;
148 wxButton
*m_lbSelectNum
;
149 wxButton
*m_lbSelectThis
;
151 wxSpinButton
*m_spinbutton
;
152 #if wxUSE_PROGRESSDLG
153 wxButton
*m_btnProgress
;
154 #endif // wxUSE_PROGRESSDLG
155 #endif // wxUSE_SPINBTN
156 wxStaticText
*m_wrappingText
;
157 wxStaticText
*m_nonWrappingText
;
160 wxSpinCtrl
*m_spinctrl
;
161 #endif // wxUSE_SPINCTRL
163 wxTextCtrl
*m_spintext
;
164 wxCheckBox
*m_checkbox
;
169 wxStaticText
*m_label
;
171 wxBoxSizer
*m_buttonSizer
;
172 wxButton
*m_sizerBtn1
;
173 wxButton
*m_sizerBtn2
;
174 wxButton
*m_sizerBtn3
;
175 wxButton
*m_sizerBtn4
;
176 wxBoxSizer
*m_hsizer
;
180 wxLog
*m_logTargetOld
;
182 DECLARE_EVENT_TABLE()
185 class MyFrame
: public wxFrame
188 MyFrame(const wxChar
*title
, int x
, int y
);
190 void OnQuit(wxCommandEvent
& event
);
191 void OnAbout(wxCommandEvent
& event
);
192 void OnClearLog(wxCommandEvent
& event
);
195 void OnSetTooltipDelay(wxCommandEvent
& event
);
196 void OnToggleTooltips(wxCommandEvent
& event
);
198 void OnSetMaxTooltipWidth(wxCommandEvent
& event
);
200 #endif // wxUSE_TOOLTIPS
202 void OnEnableAll(wxCommandEvent
& event
);
203 void OnHideAll(wxCommandEvent
& event
);
204 void OnHideList(wxCommandEvent
& event
);
205 void OnContextHelp(wxCommandEvent
& event
);
207 void OnIdle( wxIdleEvent
& event
);
208 void OnIconized( wxIconizeEvent
& event
);
209 void OnMaximized( wxMaximizeEvent
& event
);
210 void OnSize( wxSizeEvent
& event
);
211 void OnMove( wxMoveEvent
& event
);
213 MyPanel
*GetPanel() const { return m_panel
; }
217 void UpdateStatusBar(const wxPoint
& pos
, const wxSize
& size
)
219 if ( m_frameStatusBar
)
222 wxSize sizeAll
= GetSize(),
223 sizeCl
= GetClientSize();
224 msg
.Printf(_("pos=(%d, %d), size=%dx%d or %dx%d (client=%dx%d)"),
227 sizeAll
.x
, sizeAll
.y
,
229 SetStatusText(msg
, 1);
232 #endif // wxUSE_STATUSBAR
236 DECLARE_EVENT_TABLE()
239 // a button which intercepts double clicks (for testing...)
240 class MyButton
: public wxButton
243 MyButton(wxWindow
*parent
,
245 const wxString
& label
= wxEmptyString
,
246 const wxPoint
& pos
= wxDefaultPosition
,
247 const wxSize
& size
= wxDefaultSize
)
248 : wxButton(parent
, id
, label
, pos
, size
)
252 void OnDClick(wxMouseEvent
& event
)
254 wxLogMessage(wxT("MyButton::OnDClick"));
260 DECLARE_EVENT_TABLE()
263 // a combo which intercepts chars (to test Windows behaviour)
264 class MyComboBox
: public wxComboBox
267 MyComboBox(wxWindow
*parent
, wxWindowID id
,
268 const wxString
& value
= wxEmptyString
,
269 const wxPoint
& pos
= wxDefaultPosition
,
270 const wxSize
& size
= wxDefaultSize
,
271 int n
= 0, const wxString choices
[] = NULL
,
273 const wxValidator
& validator
= wxDefaultValidator
,
274 const wxString
& name
= wxComboBoxNameStr
)
275 : wxComboBox(parent
, id
, value
, pos
, size
, n
, choices
, style
,
279 void OnChar(wxKeyEvent
& event
);
280 void OnKeyDown(wxKeyEvent
& event
);
281 void OnKeyUp(wxKeyEvent
& event
);
282 void OnFocusGot(wxFocusEvent
& event
)
284 wxLogMessage(wxT("MyComboBox::OnFocusGot"));
290 DECLARE_EVENT_TABLE()
293 // a radiobox which handles focus set/kill (for testing)
294 class MyRadioBox
: public wxRadioBox
297 MyRadioBox(wxWindow
*parent
,
299 const wxString
& title
= wxEmptyString
,
300 const wxPoint
& pos
= wxDefaultPosition
,
301 const wxSize
& size
= wxDefaultSize
,
302 int n
= 0, const wxString choices
[] = NULL
,
304 long style
= wxRA_SPECIFY_COLS
,
305 const wxValidator
& validator
= wxDefaultValidator
,
306 const wxString
& name
= wxRadioBoxNameStr
)
307 : wxRadioBox(parent
, id
, title
, pos
, size
, n
, choices
, majorDim
,
308 style
, validator
, name
)
313 void OnFocusGot(wxFocusEvent
& event
)
315 wxLogMessage(wxT("MyRadioBox::OnFocusGot"));
320 void OnFocusLost(wxFocusEvent
& event
)
322 wxLogMessage(wxT("MyRadioBox::OnFocusLost"));
328 DECLARE_EVENT_TABLE()
331 // a choice which handles focus set/kill (for testing)
332 class MyChoice
: public wxChoice
335 MyChoice(wxWindow
*parent
,
337 const wxPoint
& pos
= wxDefaultPosition
,
338 const wxSize
& size
= wxDefaultSize
,
339 int n
= 0, const wxString choices
[] = NULL
,
341 const wxValidator
& validator
= wxDefaultValidator
,
342 const wxString
& name
= wxChoiceNameStr
)
343 : wxChoice(parent
, id
, pos
, size
, n
, choices
,
344 style
, validator
, name
) { }
347 void OnFocusGot(wxFocusEvent
& event
)
349 wxLogMessage(wxT("MyChoice::OnFocusGot"));
354 void OnFocusLost(wxFocusEvent
& event
)
356 wxLogMessage(wxT("MyChoice::OnFocusLost"));
362 DECLARE_EVENT_TABLE()
367 //----------------------------------------------------------------------
369 //----------------------------------------------------------------------
371 static void SetListboxClientData(const wxChar
*name
, wxListBox
*control
);
374 static void SetChoiceClientData(const wxChar
*name
, wxChoice
*control
);
375 #endif // wxUSE_CHOICE
379 //----------------------------------------------------------------------
381 //----------------------------------------------------------------------
385 CONTROLS_QUIT
= wxID_EXIT
,
386 CONTROLS_ABOUT
= wxID_ABOUT
,
391 CONTROLS_SET_TOOLTIP_DELAY
= 200,
392 CONTROLS_ENABLE_TOOLTIPS
,
393 CONTROLS_SET_TOOLTIPS_MAX_WIDTH
,
399 CONTROLS_CONTEXT_HELP
404 // use standard command line handling:
405 if ( !wxApp::OnInit() )
408 // parse the cmd line
413 wxSscanf(wxString(argv
[1]), wxT("%d"), &x
);
414 wxSscanf(wxString(argv
[2]), wxT("%d"), &y
);
418 wxHelpProvider::Set( new wxSimpleHelpProvider
);
421 // Create the main frame window
422 MyFrame
*frame
= new MyFrame(wxT("Controls wxWidgets App"), x
, y
);
428 //----------------------------------------------------------------------
430 //----------------------------------------------------------------------
432 const int ID_BOOK
= 1000;
434 const int ID_LISTBOX
= 130;
435 const int ID_LISTBOX_SEL_NUM
= 131;
436 const int ID_LISTBOX_SEL_STR
= 132;
437 const int ID_LISTBOX_CLEAR
= 133;
438 const int ID_LISTBOX_APPEND
= 134;
439 const int ID_LISTBOX_DELETE
= 135;
440 const int ID_LISTBOX_FONT
= 136;
441 const int ID_LISTBOX_ENABLE
= 137;
442 const int ID_LISTBOX_SORTED
= 138;
444 const int ID_CHOICE
= 120;
445 const int ID_CHOICE_SEL_NUM
= 121;
446 const int ID_CHOICE_SEL_STR
= 122;
447 const int ID_CHOICE_CLEAR
= 123;
448 const int ID_CHOICE_APPEND
= 124;
449 const int ID_CHOICE_DELETE
= 125;
450 const int ID_CHOICE_FONT
= 126;
451 const int ID_CHOICE_ENABLE
= 127;
452 const int ID_CHOICE_SORTED
= 128;
454 const int ID_COMBO
= 140;
455 const int ID_COMBO_SEL_NUM
= 141;
456 const int ID_COMBO_SEL_STR
= 142;
457 const int ID_COMBO_CLEAR
= 143;
458 const int ID_COMBO_APPEND
= 144;
459 const int ID_COMBO_DELETE
= 145;
460 const int ID_COMBO_FONT
= 146;
461 const int ID_COMBO_ENABLE
= 147;
462 const int ID_COMBO_SET_TEXT
= 148;
464 const int ID_RADIOBOX
= 160;
465 const int ID_RADIOBOX_SEL_NUM
= 161;
466 const int ID_RADIOBOX_SEL_STR
= 162;
467 const int ID_RADIOBOX_FONT
= 163;
468 const int ID_RADIOBOX_ENABLE
= 164;
469 const int ID_RADIOBOX2
= 165;
470 const int ID_RADIOBUTTON_1
= 166;
471 const int ID_RADIOBUTTON_2
= 167;
473 const int ID_SET_FONT
= 170;
476 const int ID_GAUGE
= 180;
477 #endif // wxUSE_GAUGE
480 const int ID_SLIDER
= 181;
481 #endif // wxUSE_SLIDER
483 const int ID_SPIN
= 182;
484 #if wxUSE_PROGRESSDLG
485 const int ID_BTNPROGRESS
= 183;
486 #endif // wxUSE_PROGRESSDLG
487 const int ID_BUTTON_LABEL
= 184;
488 const int ID_SPINCTRL
= 185;
489 const int ID_BTNNEWTEXT
= 186;
491 const int ID_BUTTON_TEST1
= 190;
492 const int ID_BUTTON_TEST2
= 191;
493 const int ID_BITMAP_BTN
= 192;
494 const int ID_BITMAP_BTN_ENABLE
= 193;
496 const int ID_CHANGE_COLOUR
= 200;
498 const int ID_SIZER_CHECK1
= 201;
499 const int ID_SIZER_CHECK2
= 202;
500 const int ID_SIZER_CHECK3
= 203;
501 const int ID_SIZER_CHECK4
= 204;
502 const int ID_SIZER_CHECK14
= 205;
503 const int ID_SIZER_CHECKBIG
= 206;
505 const int ID_HYPERLINK
= 300;
507 BEGIN_EVENT_TABLE(MyPanel
, wxPanel
)
508 EVT_IDLE ( MyPanel::OnIdle
)
509 EVT_BOOKCTRL_PAGE_CHANGING(ID_BOOK
, MyPanel::OnPageChanging
)
510 EVT_BOOKCTRL_PAGE_CHANGED(ID_BOOK
, MyPanel::OnPageChanged
)
511 EVT_LISTBOX (ID_LISTBOX
, MyPanel::OnListBox
)
512 EVT_LISTBOX (ID_LISTBOX_SORTED
, MyPanel::OnListBox
)
513 EVT_LISTBOX_DCLICK(ID_LISTBOX
, MyPanel::OnListBoxDoubleClick
)
514 EVT_BUTTON (ID_LISTBOX_SEL_NUM
, MyPanel::OnListBoxButtons
)
515 EVT_BUTTON (ID_LISTBOX_SEL_STR
, MyPanel::OnListBoxButtons
)
516 EVT_BUTTON (ID_LISTBOX_CLEAR
, MyPanel::OnListBoxButtons
)
517 EVT_BUTTON (ID_LISTBOX_APPEND
, MyPanel::OnListBoxButtons
)
518 EVT_BUTTON (ID_LISTBOX_DELETE
, MyPanel::OnListBoxButtons
)
519 EVT_BUTTON (ID_LISTBOX_FONT
, MyPanel::OnListBoxButtons
)
520 EVT_CHECKBOX (ID_LISTBOX_ENABLE
, MyPanel::OnListBoxButtons
)
522 EVT_CHOICE (ID_CHOICE
, MyPanel::OnChoice
)
523 EVT_CHOICE (ID_CHOICE_SORTED
, MyPanel::OnChoice
)
524 EVT_BUTTON (ID_CHOICE_SEL_NUM
, MyPanel::OnChoiceButtons
)
525 EVT_BUTTON (ID_CHOICE_SEL_STR
, MyPanel::OnChoiceButtons
)
526 EVT_BUTTON (ID_CHOICE_CLEAR
, MyPanel::OnChoiceButtons
)
527 EVT_BUTTON (ID_CHOICE_APPEND
, MyPanel::OnChoiceButtons
)
528 EVT_BUTTON (ID_CHOICE_DELETE
, MyPanel::OnChoiceButtons
)
529 EVT_BUTTON (ID_CHOICE_FONT
, MyPanel::OnChoiceButtons
)
530 EVT_CHECKBOX (ID_CHOICE_ENABLE
, MyPanel::OnChoiceButtons
)
532 EVT_COMBOBOX (ID_COMBO
, MyPanel::OnCombo
)
533 EVT_TEXT (ID_COMBO
, MyPanel::OnComboTextChanged
)
534 EVT_TEXT_ENTER(ID_COMBO
, MyPanel::OnComboTextEnter
)
535 EVT_BUTTON (ID_COMBO_SEL_NUM
, MyPanel::OnComboButtons
)
536 EVT_BUTTON (ID_COMBO_SEL_STR
, MyPanel::OnComboButtons
)
537 EVT_BUTTON (ID_COMBO_CLEAR
, MyPanel::OnComboButtons
)
538 EVT_BUTTON (ID_COMBO_APPEND
, MyPanel::OnComboButtons
)
539 EVT_BUTTON (ID_COMBO_DELETE
, MyPanel::OnComboButtons
)
540 EVT_BUTTON (ID_COMBO_FONT
, MyPanel::OnComboButtons
)
541 EVT_BUTTON (ID_COMBO_SET_TEXT
, MyPanel::OnComboButtons
)
542 EVT_CHECKBOX (ID_COMBO_ENABLE
, MyPanel::OnComboButtons
)
543 EVT_RADIOBOX (ID_RADIOBOX
, MyPanel::OnRadio
)
544 EVT_RADIOBOX (ID_RADIOBOX2
, MyPanel::OnRadio
)
545 EVT_BUTTON (ID_RADIOBOX_SEL_NUM
, MyPanel::OnRadioButtons
)
546 EVT_BUTTON (ID_RADIOBOX_SEL_STR
, MyPanel::OnRadioButtons
)
547 EVT_BUTTON (ID_RADIOBOX_FONT
, MyPanel::OnRadioButtons
)
548 EVT_CHECKBOX (ID_RADIOBOX_ENABLE
, MyPanel::OnRadioButtons
)
549 EVT_RADIOBUTTON(ID_RADIOBUTTON_1
, MyPanel::OnRadioButton1
)
550 EVT_RADIOBUTTON(ID_RADIOBUTTON_2
, MyPanel::OnRadioButton2
)
551 EVT_BUTTON (ID_SET_FONT
, MyPanel::OnSetFont
)
553 EVT_SLIDER (ID_SLIDER
, MyPanel::OnSliderUpdate
)
554 #endif // wxUSE_SLIDER
556 EVT_SPIN (ID_SPIN
, MyPanel::OnSpinUpdate
)
557 EVT_SPIN_UP (ID_SPIN
, MyPanel::OnSpinUp
)
558 EVT_SPIN_DOWN (ID_SPIN
, MyPanel::OnSpinDown
)
559 #if wxUSE_PROGRESSDLG
560 EVT_UPDATE_UI (ID_BTNPROGRESS
, MyPanel::OnUpdateShowProgress
)
561 EVT_BUTTON (ID_BTNPROGRESS
, MyPanel::OnShowProgress
)
562 #endif // wxUSE_PROGRESSDLG
563 #endif // wxUSE_SPINBTN
565 EVT_SPINCTRL (ID_SPINCTRL
, MyPanel::OnSpinCtrl
)
566 EVT_SPIN_UP (ID_SPINCTRL
, MyPanel::OnSpinCtrlUp
)
567 EVT_SPIN_DOWN (ID_SPINCTRL
, MyPanel::OnSpinCtrlDown
)
568 EVT_TEXT (ID_SPINCTRL
, MyPanel::OnSpinCtrlText
)
569 #endif // wxUSE_SPINCTRL
570 EVT_BUTTON (ID_BTNNEWTEXT
, MyPanel::OnNewText
)
571 EVT_TOGGLEBUTTON(ID_BUTTON_LABEL
, MyPanel::OnUpdateLabel
)
572 EVT_CHECKBOX (ID_CHANGE_COLOUR
, MyPanel::OnChangeColour
)
573 EVT_BUTTON (ID_BUTTON_TEST1
, MyPanel::OnTestButton
)
574 EVT_BUTTON (ID_BUTTON_TEST2
, MyPanel::OnTestButton
)
575 EVT_BUTTON (ID_BITMAP_BTN
, MyPanel::OnBmpButton
)
576 EVT_TOGGLEBUTTON(ID_BITMAP_BTN_ENABLE
, MyPanel::OnBmpButtonToggle
)
578 EVT_CHECKBOX (ID_SIZER_CHECK1
, MyPanel::OnSizerCheck
)
579 EVT_CHECKBOX (ID_SIZER_CHECK2
, MyPanel::OnSizerCheck
)
580 EVT_CHECKBOX (ID_SIZER_CHECK3
, MyPanel::OnSizerCheck
)
581 EVT_CHECKBOX (ID_SIZER_CHECK4
, MyPanel::OnSizerCheck
)
582 EVT_CHECKBOX (ID_SIZER_CHECK14
, MyPanel::OnSizerCheck
)
583 EVT_CHECKBOX (ID_SIZER_CHECKBIG
, MyPanel::OnSizerCheck
)
587 BEGIN_EVENT_TABLE(MyButton
, wxButton
)
588 EVT_LEFT_DCLICK(MyButton::OnDClick
)
591 BEGIN_EVENT_TABLE(MyComboBox
, wxComboBox
)
592 EVT_CHAR(MyComboBox::OnChar
)
593 EVT_KEY_DOWN(MyComboBox::OnKeyDown
)
594 EVT_KEY_UP(MyComboBox::OnKeyUp
)
596 EVT_SET_FOCUS(MyComboBox::OnFocusGot
)
599 BEGIN_EVENT_TABLE(MyRadioBox
, wxRadioBox
)
600 EVT_SET_FOCUS(MyRadioBox::OnFocusGot
)
601 EVT_KILL_FOCUS(MyRadioBox::OnFocusLost
)
604 BEGIN_EVENT_TABLE(MyChoice
, wxChoice
)
605 EVT_SET_FOCUS(MyChoice::OnFocusGot
)
606 EVT_KILL_FOCUS(MyChoice::OnFocusLost
)
609 // ============================================================================
611 // ============================================================================
613 MyPanel::MyPanel( wxFrame
*frame
, int x
, int y
, int w
, int h
)
614 : wxPanel( frame
, wxID_ANY
, wxPoint(x
, y
), wxSize(w
, h
) )
617 m_listboxSorted
= NULL
;
620 m_choiceSorted
= NULL
;
621 #endif // wxUSE_CHOICE
627 #endif // wxUSE_GAUGE
630 #endif // wxUSE_SLIDER
632 m_lbSelectNum
= NULL
;
633 m_lbSelectThis
= NULL
;
636 #if wxUSE_PROGRESSDLG
637 m_btnProgress
= NULL
;
638 #endif // wxUSE_PROGRESSDLG
639 #endif // wxUSE_SPINBTN
642 #endif // wxUSE_SPINCTRL
649 m_text
= new wxTextCtrl(this, wxID_ANY
, wxT("This is the log window.\n"),
650 wxPoint(0, 250), wxSize(100, 50), wxTE_MULTILINE
);
652 m_logTargetOld
= wxLog::SetActiveTarget(new wxLogTextCtrl(m_text
));
654 m_book
= new wxBookCtrl(this, ID_BOOK
);
660 wxT("one of my long and"),
676 #endif // wxUSE_GAUGE
680 // fill the image list
681 wxBitmap
bmp(list_xpm
);
683 wxImageList
*imagelist
= new wxImageList(bmp
.GetWidth(), bmp
.GetHeight());
685 imagelist
-> Add( bmp
);
686 imagelist
-> Add( wxBitmap( choice_xpm
));
687 imagelist
-> Add( wxBitmap( combo_xpm
));
688 imagelist
-> Add( wxBitmap( text_xpm
));
689 imagelist
-> Add( wxBitmap( radio_xpm
));
691 imagelist
-> Add( wxBitmap( gauge_xpm
));
692 #endif // wxUSE_GAUGE
693 m_book
->SetImageList(imagelist
);
694 #elif defined(__WXMSW__)
695 // load images from resources
705 #endif // wxUSE_GAUGE
708 wxImageList
*imagelist
= new wxImageList(16, 16, false, Image_Max
);
710 static const wxChar
*s_iconNames
[Image_Max
] =
719 #endif // wxUSE_GAUGE
722 for ( size_t n
= 0; n
< Image_Max
; n
++ )
724 wxBitmap
bmp(s_iconNames
[n
]);
725 if ( !bmp
.Ok() || (imagelist
->Add(bmp
) == -1) )
727 wxLogWarning(wxT("Couldn't load the image '%s' for the book control page %d."),
732 m_book
->SetImageList(imagelist
);
736 #define Image_List -1
737 #define Image_Choice -1
738 #define Image_Combo -1
739 #define Image_Text -1
740 #define Image_Radio -1
742 #define Image_Gauge -1
743 #endif // wxUSE_GAUGE
748 wxPanel
*panel
= new wxPanel(m_book
);
749 m_listbox
= new wxListBox( panel
, ID_LISTBOX
,
750 wxPoint(10,10), wxSize(120,70),
751 5, choices
, wxLB_MULTIPLE
| wxLB_ALWAYS_SB
| wxHSCROLL
);
752 m_listboxSorted
= new wxListBox( panel
, ID_LISTBOX_SORTED
,
753 wxPoint(10,90), wxSize(120,70),
754 3, choices
, wxLB_SORT
);
756 SetListboxClientData(wxT("listbox"), m_listbox
);
757 SetListboxClientData(wxT("listbox"), m_listboxSorted
);
759 m_listbox
->SetCursor(*wxCROSS_CURSOR
);
761 m_lbSelectNum
= new wxButton( panel
, ID_LISTBOX_SEL_NUM
, wxT("Select #&2"), wxPoint(180,30), wxSize(140,30) );
762 m_lbSelectThis
= new wxButton( panel
, ID_LISTBOX_SEL_STR
, wxT("&Select 'This'"), wxPoint(340,30), wxSize(140,30) );
763 (void)new wxButton( panel
, ID_LISTBOX_CLEAR
, wxT("&Clear"), wxPoint(180,80), wxSize(140,30) );
764 (void)new MyButton( panel
, ID_LISTBOX_APPEND
, wxT("&Append 'Hi!'"), wxPoint(340,80), wxSize(140,30) );
765 (void)new wxButton( panel
, ID_LISTBOX_DELETE
, wxT("D&elete selected item"), wxPoint(180,130), wxSize(140,30) );
766 wxButton
*button
= new MyButton( panel
, ID_LISTBOX_FONT
, wxT("Set &Italic font"), wxPoint(340,130), wxSize(140,30) );
768 button
->SetDefault();
770 m_checkbox
= new wxCheckBox( panel
, ID_LISTBOX_ENABLE
, wxT("&Disable"), wxPoint(20,170) );
771 m_checkbox
->SetValue(false);
772 button
->MoveAfterInTabOrder(m_checkbox
);
773 (void)new wxCheckBox( panel
, ID_CHANGE_COLOUR
, wxT("&Toggle colour"),
775 panel
->SetCursor(wxCursor(wxCURSOR_HAND
));
776 m_book
->AddPage(panel
, wxT("wxListBox"), true, Image_List
);
779 panel
= new wxPanel(m_book
);
780 m_choice
= new MyChoice( panel
, ID_CHOICE
, wxPoint(10,10), wxSize(120,wxDefaultCoord
), 5, choices
);
781 m_choiceSorted
= new MyChoice( panel
, ID_CHOICE_SORTED
, wxPoint(10,70), wxSize(120,wxDefaultCoord
),
782 5, choices
, wxCB_SORT
);
784 SetChoiceClientData(wxT("choice"), m_choice
);
785 SetChoiceClientData(wxT("choice"), m_choiceSorted
);
787 m_choice
->SetSelection(2);
788 (void)new wxButton( panel
, ID_CHOICE_SEL_NUM
, wxT("Select #&2"), wxPoint(180,30), wxSize(140,30) );
789 (void)new wxButton( panel
, ID_CHOICE_SEL_STR
, wxT("&Select 'This'"), wxPoint(340,30), wxSize(140,30) );
790 (void)new wxButton( panel
, ID_CHOICE_CLEAR
, wxT("&Clear"), wxPoint(180,80), wxSize(140,30) );
791 (void)new wxButton( panel
, ID_CHOICE_APPEND
, wxT("&Append 'Hi!'"), wxPoint(340,80), wxSize(140,30) );
792 (void)new wxButton( panel
, ID_CHOICE_DELETE
, wxT("D&elete selected item"), wxPoint(180,130), wxSize(140,30) );
793 (void)new wxButton( panel
, ID_CHOICE_FONT
, wxT("Set &Italic font"), wxPoint(340,130), wxSize(140,30) );
794 (void)new wxCheckBox( panel
, ID_CHOICE_ENABLE
, wxT("&Disable"), wxPoint(20,130), wxSize(140,30) );
796 m_book
->AddPage(panel
, wxT("wxChoice"), false, Image_Choice
);
797 #endif // wxUSE_CHOICE
799 panel
= new wxPanel(m_book
);
800 (void)new wxStaticBox( panel
, wxID_ANY
, wxT("&Box around combobox"),
801 wxPoint(5, 5), wxSize(150, 100));
802 m_combo
= new MyComboBox( panel
, ID_COMBO
, wxT("This"),
803 wxPoint(20,25), wxSize(120, wxDefaultCoord
),
807 (void)new wxButton( panel
, ID_COMBO_SEL_NUM
, wxT("Select #&2"), wxPoint(180,30), wxSize(140,30) );
808 (void)new wxButton( panel
, ID_COMBO_SEL_STR
, wxT("&Select 'This'"), wxPoint(340,30), wxSize(140,30) );
809 (void)new wxButton( panel
, ID_COMBO_CLEAR
, wxT("&Clear"), wxPoint(180,80), wxSize(140,30) );
810 (void)new wxButton( panel
, ID_COMBO_APPEND
, wxT("&Append 'Hi!'"), wxPoint(340,80), wxSize(140,30) );
811 (void)new wxButton( panel
, ID_COMBO_DELETE
, wxT("D&elete selected item"), wxPoint(180,130), wxSize(140,30) );
812 (void)new wxButton( panel
, ID_COMBO_FONT
, wxT("Set &Italic font"), wxPoint(340,130), wxSize(140,30) );
813 (void)new wxButton( panel
, ID_COMBO_SET_TEXT
, wxT("Set 'Hi!' at #2"), wxPoint(340,180), wxSize(140,30) );
814 (void)new wxCheckBox( panel
, ID_COMBO_ENABLE
, wxT("&Disable"), wxPoint(20,130), wxSize(140,30) );
815 m_book
->AddPage(panel
, wxT("wxComboBox"), false, Image_Combo
);
817 wxString choices2
[] =
819 wxT("First"), wxT("Second"),
821 "Fourth", "Fifth", "Sixth",
822 "Seventh", "Eighth", "Nineth", "Tenth" */
825 panel
= new wxPanel(m_book
);
826 new MyRadioBox(panel
, ID_RADIOBOX2
, wxT("&That"),
827 wxPoint(10,160), wxDefaultSize
,
828 WXSIZEOF(choices2
), choices2
,
829 1, wxRA_SPECIFY_ROWS
);
830 m_radio
= new wxRadioBox(panel
, ID_RADIOBOX
, wxT("T&his"),
831 wxPoint(10,10), wxDefaultSize
,
832 WXSIZEOF(choices
), choices
,
833 1, wxRA_SPECIFY_COLS
);
836 for( unsigned int item
= 0; item
< WXSIZEOF(choices
); ++item
)
837 m_radio
->SetItemHelpText( item
, wxString::Format( wxT("Help text for \"%s\""), choices
[item
].c_str() ) );
839 // erase help text for the second item
840 m_radio
->SetItemHelpText( 1, wxT("") );
841 // set default help text for control
842 m_radio
->SetHelpText( wxT("Default helptext for wxRadioBox") );
845 (void)new wxButton( panel
, ID_RADIOBOX_SEL_NUM
, wxT("Select #&2"), wxPoint(180,30), wxSize(140,30) );
846 (void)new wxButton( panel
, ID_RADIOBOX_SEL_STR
, wxT("&Select 'This'"), wxPoint(180,80), wxSize(140,30) );
847 m_fontButton
= new wxButton( panel
, ID_SET_FONT
, wxT("Set &more Italic font"), wxPoint(340,30), wxSize(140,30) );
848 (void)new wxButton( panel
, ID_RADIOBOX_FONT
, wxT("Set &Italic font"), wxPoint(340,80), wxSize(140,30) );
849 (void)new wxCheckBox( panel
, ID_RADIOBOX_ENABLE
, wxT("&Disable"), wxPoint(340,130), wxDefaultSize
);
851 wxRadioButton
*rb
= new wxRadioButton( panel
, ID_RADIOBUTTON_1
, wxT("Radiobutton1"), wxPoint(210,170), wxDefaultSize
, wxRB_GROUP
);
852 rb
->SetValue( false );
853 (void)new wxRadioButton( panel
, ID_RADIOBUTTON_2
, wxT("&Radiobutton2"), wxPoint(340,170), wxDefaultSize
);
854 m_book
->AddPage(panel
, wxT("wxRadioBox"), false, Image_Radio
);
857 #if wxUSE_SLIDER && wxUSE_GAUGE
858 panel
= new wxPanel(m_book
);
860 wxBoxSizer
*main_sizer
= new wxBoxSizer( wxHORIZONTAL
);
861 panel
->SetSizer( main_sizer
);
863 wxStaticBoxSizer
*gauge_sizer
= new wxStaticBoxSizer( wxHORIZONTAL
, panel
, wxT("&wxGauge and wxSlider") );
864 main_sizer
->Add( gauge_sizer
, 0, wxALL
, 5 );
865 wxBoxSizer
*sz
= new wxBoxSizer( wxVERTICAL
);
866 gauge_sizer
->Add( sz
);
867 m_gauge
= new wxGauge( panel
, wxID_ANY
, 200, wxDefaultPosition
, wxSize(155, 30), wxGA_HORIZONTAL
|wxNO_BORDER
);
868 sz
->Add( m_gauge
, 0, wxALL
, 10 );
869 m_slider
= new wxSlider( panel
, ID_SLIDER
, 0, 0, 200,
870 wxDefaultPosition
, wxSize(155,wxDefaultCoord
),
871 wxSL_AUTOTICKS
| wxSL_LABELS
);
872 m_slider
->SetTickFreq(40, 0);
873 sz
->Add( m_slider
, 0, wxALL
, 10 );
875 m_gaugeVert
= new wxGauge( panel
, wxID_ANY
, 100,
876 wxDefaultPosition
, wxSize(wxDefaultCoord
, 90),
877 wxGA_VERTICAL
| wxGA_SMOOTH
| wxNO_BORDER
);
878 gauge_sizer
->Add( m_gaugeVert
, 0, wxALL
, 10 );
882 wxStaticBox
*sb
= new wxStaticBox( panel
, wxID_ANY
, wxT("&Explanation"),
883 wxDefaultPosition
, wxDefaultSize
); //, wxALIGN_CENTER );
884 wxStaticBoxSizer
*wrapping_sizer
= new wxStaticBoxSizer( sb
, wxVERTICAL
);
885 main_sizer
->Add( wrapping_sizer
, 0, wxALL
, 5 );
888 // No wrapping text in wxStaticText yet :-(
889 m_wrappingText
= new wxStaticText( panel
, wxID_ANY
,
890 wxT("Drag the slider!"),
892 wxSize(240, wxDefaultCoord
)
895 m_wrappingText
= new wxStaticText( panel
, wxID_ANY
,
896 wxT("In order see the gauge (aka progress bar) ")
897 wxT("control do something you have to drag the ")
898 wxT("handle of the slider to the right.")
900 wxT("This is also supposed to demonstrate how ")
901 wxT("to use static controls with line wrapping."),
903 wxSize(240, wxDefaultCoord
)
906 wrapping_sizer
->Add( m_wrappingText
);
908 wxStaticBoxSizer
*non_wrapping_sizer
= new wxStaticBoxSizer( wxVERTICAL
, panel
, wxT("Non-wrapping") );
909 main_sizer
->Add( non_wrapping_sizer
, 0, wxALL
, 5 );
911 m_nonWrappingText
= new wxStaticText( panel
, wxID_ANY
,
912 wxT("This static text has two lines.\nThey do not wrap."),
916 non_wrapping_sizer
->Add( m_nonWrappingText
);
918 (void)new wxButton( panel
, ID_BTNNEWTEXT
, wxT("New text"), wxPoint(450, 160) );
920 int initialSpinValue
= -5;
922 s
<< initialSpinValue
;
923 m_spintext
= new wxTextCtrl( panel
, wxID_ANY
, s
, wxPoint(20,160), wxSize(80,wxDefaultCoord
) );
925 m_spinbutton
= new wxSpinButton( panel
, ID_SPIN
, wxPoint(103,160), wxSize(-1, m_spintext
->GetSize().y
) );
926 m_spinbutton
->SetRange(-40,30);
927 m_spinbutton
->SetValue(initialSpinValue
);
929 #if wxUSE_PROGRESSDLG
930 m_btnProgress
= new wxButton( panel
, ID_BTNPROGRESS
, wxT("&Show progress dialog"),
932 #endif // wxUSE_PROGRESSDLG
933 #endif // wxUSE_SPINBTN
936 m_spinctrl
= new wxSpinCtrl( panel
, ID_SPINCTRL
, wxEmptyString
, wxPoint(200, 160), wxSize(80, wxDefaultCoord
) );
937 m_spinctrl
->SetRange(-10,30);
938 m_spinctrl
->SetValue(15);
939 #endif // wxUSE_SPINCTRL
941 m_book
->AddPage(panel
, wxT("wxGauge"), false, Image_Gauge
);
942 #endif // wxUSE_SLIDER && wxUSE_GAUGE
945 panel
= new wxPanel(m_book
);
947 #if !defined(__WXMOTIF__) // wxStaticBitmap not working under Motif yet.
948 wxIcon icon
= wxArtProvider::GetIcon(wxART_INFORMATION
);
949 (void) new wxStaticBitmap( panel
, wxID_ANY
, icon
, wxPoint(10, 10) );
951 // VZ: don't leak memory
952 // bmpStatic = new wxStaticBitmap(panel, wxID_ANY, wxNullIcon, wxPoint(50, 10));
953 // bmpStatic->SetIcon(wxArtProvider::GetIcon(wxART_QUESTION));
956 wxBitmap
bitmap( 100, 100 );
958 dc
.SelectObject( bitmap
);
959 dc
.SetBackground(*wxGREEN
);
960 dc
.SetPen(*wxRED_PEN
);
962 dc
.DrawEllipse(5, 5, 90, 90);
963 dc
.DrawText(wxT("Bitmap"), 30, 40);
964 dc
.SelectObject( wxNullBitmap
);
966 (void)new wxBitmapButton(panel
, ID_BITMAP_BTN
, bitmap
, wxPoint(100, 20));
967 (void)new wxToggleButton(panel
, ID_BITMAP_BTN_ENABLE
,
968 wxT("Enable/disable &bitmap"), wxPoint(100, 140));
970 #if defined(__WXMSW__) || defined(__WXMOTIF__)
971 // test for masked bitmap display
972 bitmap
= wxBitmap(wxT("test2.bmp"), wxBITMAP_TYPE_BMP
);
975 bitmap
.SetMask(new wxMask(bitmap
, *wxBLUE
));
977 (void)new wxStaticBitmap(panel
, wxID_ANY
, bitmap
, wxPoint(300, 120));
981 wxBitmap
bmp1(wxArtProvider::GetBitmap(wxART_INFORMATION
)),
982 bmp2(wxArtProvider::GetBitmap(wxART_WARNING
)),
983 bmp3(wxArtProvider::GetBitmap(wxART_QUESTION
));
984 wxBitmapButton
*bmpBtn
= new wxBitmapButton
991 bmpBtn
->SetBitmapSelected(bmp2
);
992 bmpBtn
->SetBitmapFocus(bmp3
);
994 (void)new wxToggleButton(panel
, ID_BUTTON_LABEL
,
995 wxT("&Toggle label"), wxPoint(250, 20));
997 m_label
= new wxStaticText(panel
, wxID_ANY
, wxT("Label with some long text"),
998 wxPoint(250, 60), wxDefaultSize
,
999 wxALIGN_RIGHT
/*| wxST_NO_AUTORESIZE*/);
1000 m_label
->SetForegroundColour( *wxBLUE
);
1002 m_book
->AddPage(panel
, wxT("wxBitmapXXX"));
1005 panel
= new wxPanel(m_book
);
1007 wxBoxSizer
*sizer
= new wxBoxSizer( wxVERTICAL
);
1009 wxStaticBoxSizer
*csizer
=
1010 new wxStaticBoxSizer (new wxStaticBox (panel
, wxID_ANY
, wxT("Show Buttons")), wxHORIZONTAL
);
1012 wxCheckBox
*check1
, *check2
, *check3
, *check4
, *check14
, *checkBig
;
1013 check1
= new wxCheckBox (panel
, ID_SIZER_CHECK1
, wxT("1"));
1014 check1
->SetValue (true);
1015 csizer
->Add (check1
);
1016 check2
= new wxCheckBox (panel
, ID_SIZER_CHECK2
, wxT("2"));
1017 check2
->SetValue (true);
1018 csizer
->Add (check2
);
1019 check3
= new wxCheckBox (panel
, ID_SIZER_CHECK3
, wxT("3"));
1020 check3
->SetValue (true);
1021 csizer
->Add (check3
);
1022 check4
= new wxCheckBox (panel
, ID_SIZER_CHECK4
, wxT("4"));
1023 check4
->SetValue (true);
1024 csizer
->Add (check4
);
1025 check14
= new wxCheckBox (panel
, ID_SIZER_CHECK14
, wxT("1-4"));
1026 check14
->SetValue (true);
1027 csizer
->Add (check14
);
1028 checkBig
= new wxCheckBox (panel
, ID_SIZER_CHECKBIG
, wxT("Big"));
1029 checkBig
->SetValue (true);
1030 csizer
->Add (checkBig
);
1032 sizer
->Add (csizer
);
1034 m_hsizer
= new wxBoxSizer( wxHORIZONTAL
);
1036 m_buttonSizer
= new wxBoxSizer (wxVERTICAL
);
1038 m_sizerBtn1
= new wxButton(panel
, wxID_ANY
, wxT("Test Button &1 (tab order 1)") );
1039 m_buttonSizer
->Add( m_sizerBtn1
, 0, wxALL
, 10 );
1040 m_sizerBtn2
= new wxButton(panel
, wxID_ANY
, wxT("Test Button &2 (tab order 3)") );
1041 m_buttonSizer
->Add( m_sizerBtn2
, 0, wxALL
, 10 );
1042 m_sizerBtn3
= new wxButton(panel
, wxID_ANY
, wxT("Test Button &3 (tab order 2)") );
1043 m_buttonSizer
->Add( m_sizerBtn3
, 0, wxALL
, 10 );
1044 m_sizerBtn4
= new wxButton(panel
, wxID_ANY
, wxT("Test Button &4 (tab order 4)") );
1045 m_buttonSizer
->Add( m_sizerBtn4
, 0, wxALL
, 10 );
1047 m_sizerBtn3
->MoveBeforeInTabOrder(m_sizerBtn2
);
1049 m_hsizer
->Add (m_buttonSizer
);
1050 m_hsizer
->Add( 20,20, 1 );
1051 m_bigBtn
= new wxButton(panel
, wxID_ANY
, wxT("Multiline\nbutton") );
1052 m_hsizer
->Add( m_bigBtn
, 3, wxGROW
|wxALL
, 10 );
1054 sizer
->Add (m_hsizer
, 1, wxGROW
);
1056 panel
->SetSizer( sizer
);
1058 m_book
->AddPage(panel
, wxT("wxSizer"));
1060 // set the sizer for the panel itself
1061 sizer
= new wxBoxSizer(wxVERTICAL
);
1062 sizer
->Add(m_book
, wxSizerFlags().Border().Expand());
1063 sizer
->Add(m_text
, wxSizerFlags(1).Border().Expand());
1068 #endif // wxUSE_TOOLTIPS
1076 void ResetToolTip(wxWindow
*win
, const char *tip
)
1078 wxCHECK_RET( win
, "NULL window?" );
1080 win
->UnsetToolTip();
1081 win
->SetToolTip(tip
);
1086 void MyPanel::SetAllToolTips()
1088 ResetToolTip(FindWindow(ID_LISTBOX_FONT
), "Press here to set italic font");
1089 ResetToolTip(m_checkbox
, "Click here to disable the listbox");
1090 ResetToolTip(m_listbox
, "This is a list box");
1091 ResetToolTip(m_combo
, "This is a natural\ncombobox - can you believe me?");
1092 ResetToolTip(m_slider
, "This is a sliding slider");
1093 ResetToolTip(FindWindow(ID_RADIOBOX2
), "Ever seen a radiobox?");
1095 //ResetToolTip(m_radio, "Tooltip for the entire radiobox");
1096 for ( unsigned int nb
= 0; nb
< m_radio
->GetCount(); nb
++ )
1098 m_radio
->SetItemToolTip(nb
, "");
1099 m_radio
->SetItemToolTip(nb
, "tooltip for\n" + m_radio
->GetString(nb
));
1102 // remove the tooltip for one of the items
1103 m_radio
->SetItemToolTip(2, "");
1105 #endif // wxUSE_TOOLTIPS
1107 void MyPanel::OnIdle(wxIdleEvent
& event
)
1109 static const int INVALID_SELECTION
= -2;
1111 static int s_selCombo
= INVALID_SELECTION
;
1113 if (!m_combo
|| !m_choice
)
1119 int sel
= m_combo
->GetSelection();
1120 if ( sel
!= s_selCombo
)
1122 if ( s_selCombo
!= INVALID_SELECTION
)
1124 wxLogMessage(wxT("EVT_IDLE: combobox selection changed from %d to %d"),
1131 static int s_selChoice
= INVALID_SELECTION
;
1132 sel
= m_choice
->GetSelection();
1133 if ( sel
!= s_selChoice
)
1135 if ( s_selChoice
!= INVALID_SELECTION
)
1137 wxLogMessage(wxT("EVT_IDLE: choice selection changed from %d to %d"),
1147 void MyPanel::OnPageChanging( wxBookCtrlEvent
&event
)
1149 int selOld
= event
.GetOldSelection();
1152 if ( wxMessageBox(wxT("This demonstrates how a program may prevent the\n")
1153 wxT("page change from taking place - if you select\n")
1154 wxT("[No] the current page will stay the third one\n"),
1155 wxT("Control sample"),
1156 wxICON_QUESTION
| wxYES_NO
, this) != wxYES
)
1164 *m_text
<< wxT("Book selection is being changed from ") << selOld
1165 << wxT(" to ") << event
.GetSelection()
1166 << wxT(" (current page from book is ")
1167 << m_book
->GetSelection() << wxT(")\n");
1170 void MyPanel::OnPageChanged( wxBookCtrlEvent
&event
)
1172 *m_text
<< wxT("Book selection is now ") << event
.GetSelection()
1173 << wxT(" (from book: ") << m_book
->GetSelection()
1177 void MyPanel::OnTestButton(wxCommandEvent
& event
)
1179 wxLogMessage(wxT("Button %c clicked."),
1180 event
.GetId() == ID_BUTTON_TEST1
? wxT('1') : wxT('2'));
1183 void MyPanel::OnBmpButton(wxCommandEvent
& WXUNUSED(event
))
1185 wxLogMessage(wxT("Bitmap button clicked."));
1188 void MyPanel::OnBmpButtonToggle(wxCommandEvent
& event
)
1190 FindWindow(ID_BITMAP_BTN
)->Enable(!event
.IsChecked());
1193 void MyPanel::OnChangeColour(wxCommandEvent
& WXUNUSED(event
))
1195 static wxColour s_colOld
;
1197 SetThemeEnabled(false);
1198 // test panel colour changing and propagation to the subcontrols
1199 if ( s_colOld
.Ok() )
1201 SetBackgroundColour(s_colOld
);
1202 s_colOld
= wxNullColour
;
1204 m_lbSelectThis
->SetForegroundColour(wxNullColour
);
1205 m_lbSelectThis
->SetBackgroundColour(wxNullColour
);
1209 s_colOld
= wxColour(wxT("red"));
1210 SetBackgroundColour(wxT("white"));
1212 m_lbSelectThis
->SetForegroundColour(wxT("white"));
1213 m_lbSelectThis
->SetBackgroundColour(wxT("red"));
1216 m_lbSelectThis
->Refresh();
1220 void MyPanel::OnListBox( wxCommandEvent
&event
)
1222 wxListBox
*listbox
= event
.GetId() == ID_LISTBOX
? m_listbox
1225 bool deselect
= false;
1226 if (listbox
->HasFlag(wxLB_MULTIPLE
) || listbox
->HasFlag(wxLB_EXTENDED
))
1228 deselect
= !event
.IsSelection();
1230 m_text
->AppendText( wxT("ListBox deselection event\n") );
1233 m_text
->AppendText( wxT("ListBox event selection string is: '") );
1234 m_text
->AppendText( event
.GetString() );
1235 m_text
->AppendText( wxT("'\n") );
1237 // can't use GetStringSelection() with multiple selections, there could be
1238 // more than one of them
1239 if ( !listbox
->HasFlag(wxLB_MULTIPLE
) && !listbox
->HasFlag(wxLB_EXTENDED
) )
1241 m_text
->AppendText( wxT("ListBox control selection string is: '") );
1242 m_text
->AppendText( listbox
->GetStringSelection() );
1243 m_text
->AppendText( wxT("'\n") );
1246 wxStringClientData
*obj
= ((wxStringClientData
*)event
.GetClientObject());
1247 m_text
->AppendText( wxT("ListBox event client data string is: '") );
1248 if (obj
) // BC++ doesn't like use of '? .. : .. ' in this context
1249 m_text
->AppendText( obj
->GetData() );
1251 m_text
->AppendText( wxString(wxT("none")) );
1253 m_text
->AppendText( wxT("'\n") );
1254 m_text
->AppendText( wxT("ListBox control client data string is: '") );
1255 obj
= (wxStringClientData
*)listbox
->GetClientObject(event
.GetInt());
1257 m_text
->AppendText( obj
->GetData() );
1259 m_text
->AppendText( wxString(wxT("none")) );
1260 m_text
->AppendText( wxT("'\n") );
1263 void MyPanel::OnListBoxDoubleClick( wxCommandEvent
&event
)
1265 m_text
->AppendText( wxT("ListBox double click string is: ") );
1266 m_text
->AppendText( event
.GetString() );
1267 m_text
->AppendText( wxT("\n") );
1270 void MyPanel::OnListBoxButtons( wxCommandEvent
&event
)
1272 switch (event
.GetId())
1274 case ID_LISTBOX_ENABLE
:
1276 m_text
->AppendText(wxT("Checkbox clicked.\n"));
1278 wxCheckBox
*cb
= (wxCheckBox
*)event
.GetEventObject();
1280 cb
->SetToolTip( wxT("Click to enable listbox") );
1282 cb
->SetToolTip( wxT("Click to disable listbox") );
1283 #endif // wxUSE_TOOLTIPS
1284 m_listbox
->Enable( event
.GetInt() == 0 );
1285 m_lbSelectThis
->Enable( event
.GetInt() == 0 );
1286 m_lbSelectNum
->Enable( event
.GetInt() == 0 );
1287 m_listboxSorted
->Enable( event
.GetInt() == 0 );
1288 FindWindow(ID_CHANGE_COLOUR
)->Enable( event
.GetInt() == 0 );
1291 case ID_LISTBOX_SEL_NUM
:
1293 if (m_listbox
->GetCount() > 2)
1294 m_listbox
->SetSelection( 2 );
1295 if (m_listboxSorted
->GetCount() > 2)
1296 m_listboxSorted
->SetSelection( 2 );
1297 m_lbSelectThis
->WarpPointer( 40, 14 );
1300 case ID_LISTBOX_SEL_STR
:
1302 if (m_listbox
->FindString(wxT("This")) != wxNOT_FOUND
)
1303 m_listbox
->SetStringSelection( wxT("This") );
1304 if (m_listboxSorted
->FindString(wxT("This")) != wxNOT_FOUND
)
1305 m_listboxSorted
->SetStringSelection( wxT("This") );
1306 m_lbSelectNum
->WarpPointer( 40, 14 );
1309 case ID_LISTBOX_CLEAR
:
1312 m_listboxSorted
->Clear();
1315 case ID_LISTBOX_APPEND
:
1317 m_listbox
->Append( wxT("Hi kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk!") );
1318 m_listboxSorted
->Append( wxT("Hi hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!") );
1321 case ID_LISTBOX_DELETE
:
1324 idx
= m_listbox
->GetSelection();
1325 if ( idx
!= wxNOT_FOUND
)
1326 m_listbox
->Delete( idx
);
1327 idx
= m_listboxSorted
->GetSelection();
1328 if ( idx
!= wxNOT_FOUND
)
1329 m_listboxSorted
->Delete( idx
);
1332 case ID_LISTBOX_FONT
:
1334 m_listbox
->SetFont( *wxITALIC_FONT
);
1335 m_listboxSorted
->SetFont( *wxITALIC_FONT
);
1336 m_checkbox
->SetFont( *wxITALIC_FONT
);
1344 static wxString
GetDataString(wxClientData
*data
)
1346 return data
? static_cast<wxStringClientData
*>(data
)->GetData()
1350 void MyPanel::OnChoice( wxCommandEvent
&event
)
1352 wxChoice
*choice
= event
.GetId() == ID_CHOICE
? m_choice
1355 const int sel
= choice
->GetSelection();
1357 wxClientData
*dataEvt
= event
.GetClientObject(),
1358 *dataCtrl
= choice
->GetClientObject(sel
);
1360 wxLogMessage(wxT("EVT_CHOICE: item %d/%d (event/control), ")
1361 wxT("string \"%s\"/\"%s\", ")
1362 wxT("data \"%s\"/\"%s\""),
1363 (int)event
.GetInt(),
1366 choice
->GetStringSelection(),
1367 GetDataString(dataEvt
),
1368 GetDataString(dataCtrl
));
1371 void MyPanel::OnChoiceButtons( wxCommandEvent
&event
)
1373 switch (event
.GetId())
1375 case ID_CHOICE_ENABLE
:
1377 m_choice
->Enable( event
.GetInt() == 0 );
1378 m_choiceSorted
->Enable( event
.GetInt() == 0 );
1381 case ID_CHOICE_SEL_NUM
:
1383 m_choice
->SetSelection( 2 );
1384 m_choiceSorted
->SetSelection( 2 );
1387 case ID_CHOICE_SEL_STR
:
1389 m_choice
->SetStringSelection( wxT("This") );
1390 m_choiceSorted
->SetStringSelection( wxT("This") );
1393 case ID_CHOICE_CLEAR
:
1396 m_choiceSorted
->Clear();
1399 case ID_CHOICE_APPEND
:
1401 m_choice
->Append( wxT("Hi!") );
1402 m_choiceSorted
->Append( wxT("Hi!") );
1405 case ID_CHOICE_DELETE
:
1407 int idx
= m_choice
->GetSelection();
1408 if ( idx
!= wxNOT_FOUND
)
1409 m_choice
->Delete( idx
);
1410 idx
= m_choiceSorted
->GetSelection();
1411 if ( idx
!= wxNOT_FOUND
)
1412 m_choiceSorted
->Delete( idx
);
1415 case ID_CHOICE_FONT
:
1417 m_choice
->SetFont( *wxITALIC_FONT
);
1418 m_choiceSorted
->SetFont( *wxITALIC_FONT
);
1423 #endif // wxUSE_CHOICE
1425 void MyPanel::OnCombo( wxCommandEvent
&event
)
1430 wxLogMessage(wxT("EVT_COMBOBOX: item %d/%d (event/control), string \"%s\"/\"%s\""),
1431 (int)event
.GetInt(),
1432 m_combo
->GetSelection(),
1433 event
.GetString().c_str(),
1434 m_combo
->GetStringSelection().c_str());
1437 void MyPanel::OnComboTextChanged(wxCommandEvent
& event
)
1441 wxLogMessage(wxT("EVT_TEXT for the combobox: \"%s\" (event) or \"%s\" (control)."),
1442 event
.GetString().c_str(),
1443 m_combo
->GetValue().c_str());
1447 void MyPanel::OnComboTextEnter(wxCommandEvent
& WXUNUSED(event
))
1451 wxLogMessage(wxT("Enter pressed in the combobox: value is '%s'."),
1452 m_combo
->GetValue().c_str());
1456 void MyPanel::OnComboButtons( wxCommandEvent
&event
)
1458 switch (event
.GetId())
1460 case ID_COMBO_ENABLE
:
1462 m_combo
->Enable( event
.GetInt() == 0 );
1465 case ID_COMBO_SEL_NUM
:
1467 m_combo
->SetSelection( 2 );
1470 case ID_COMBO_SEL_STR
:
1472 m_combo
->SetStringSelection( wxT("This") );
1475 case ID_COMBO_CLEAR
:
1480 case ID_COMBO_APPEND
:
1482 m_combo
->Append( wxT("Hi!") );
1485 case ID_COMBO_DELETE
:
1487 int idx
= m_combo
->GetSelection();
1488 m_combo
->Delete( idx
);
1493 m_combo
->SetFont( *wxITALIC_FONT
);
1496 case ID_COMBO_SET_TEXT
:
1498 m_combo
->SetString( 2, wxT("Hi!") );
1504 void MyPanel::OnRadio( wxCommandEvent
&event
)
1506 m_text
->AppendText( wxT("RadioBox selection string is: ") );
1507 m_text
->AppendText( event
.GetString() );
1508 m_text
->AppendText( wxT("\n") );
1511 void MyPanel::OnRadioButton1( wxCommandEvent
& WXUNUSED(event
) )
1513 wxMessageBox(wxT("First wxRadioButton selected."), wxT("wxControl sample"));
1516 void MyPanel::OnRadioButton2( wxCommandEvent
& WXUNUSED(event
) )
1518 m_text
->AppendText(wxT("Second wxRadioButton selected.\n"));
1521 void MyPanel::OnRadioButtons( wxCommandEvent
&event
)
1523 switch (event
.GetId())
1525 case ID_RADIOBOX_ENABLE
:
1526 m_radio
->Enable( event
.GetInt() == 0 );
1529 case ID_RADIOBOX_SEL_NUM
:
1530 m_radio
->SetSelection( 2 );
1533 case ID_RADIOBOX_SEL_STR
:
1534 m_radio
->SetStringSelection( wxT("This") );
1537 case ID_RADIOBOX_FONT
:
1538 m_radio
->SetFont( *wxITALIC_FONT
);
1543 void MyPanel::OnSetFont( wxCommandEvent
&WXUNUSED(event
) )
1545 m_fontButton
->SetFont( *wxITALIC_FONT
);
1546 m_text
->SetFont( *wxITALIC_FONT
);
1549 void MyPanel::OnUpdateLabel( wxCommandEvent
&event
)
1551 m_label
->SetLabel(event
.GetInt() ? wxT("Very very very very very long text.")
1552 : wxT("Shorter text."));
1557 void MyPanel::OnSliderUpdate( wxCommandEvent
&WXUNUSED(event
) )
1560 m_gauge
->SetValue( m_slider
->GetValue() );
1561 m_gaugeVert
->SetValue( m_slider
->GetValue() / 2 );
1562 #endif // wxUSE_GAUGE
1565 #endif // wxUSE_SLIDER
1569 void MyPanel::OnSpinCtrlText(wxCommandEvent
& event
)
1574 s
.Printf( wxT("Spin ctrl text changed: now %d (from event: %s)\n"),
1575 m_spinctrl
->GetValue(), event
.GetString().c_str() );
1576 m_text
->AppendText(s
);
1580 void MyPanel::OnSpinCtrl(wxSpinEvent
& event
)
1585 s
.Printf( wxT("Spin ctrl changed: now %d (from event: %d)\n"),
1586 m_spinctrl
->GetValue(), event
.GetInt() );
1587 m_text
->AppendText(s
);
1591 void MyPanel::OnSpinCtrlUp(wxSpinEvent
& event
)
1595 m_text
->AppendText( wxString::Format(
1596 wxT("Spin up: %d (from event: %d)\n"),
1597 m_spinctrl
->GetValue(), event
.GetInt() ) );
1601 void MyPanel::OnSpinCtrlDown(wxSpinEvent
& event
)
1605 m_text
->AppendText( wxString::Format(
1606 wxT("Spin down: %d (from event: %d)\n"),
1607 m_spinctrl
->GetValue(), event
.GetInt() ) );
1611 #endif // wxUSE_SPINCTRL
1614 void MyPanel::OnSpinUp( wxSpinEvent
&event
)
1617 value
.Printf( wxT("Spin control up: current = %d\n"),
1618 m_spinbutton
->GetValue());
1620 if ( event
.GetPosition() > 17 )
1622 value
+= wxT("Preventing the spin button from going above 17.\n");
1627 m_text
->AppendText(value
);
1630 void MyPanel::OnSpinDown( wxSpinEvent
&event
)
1633 value
.Printf( wxT("Spin control down: current = %d\n"),
1634 m_spinbutton
->GetValue());
1636 if ( event
.GetPosition() < -17 )
1638 value
+= wxT("Preventing the spin button from going below -17.\n");
1643 m_text
->AppendText(value
);
1646 void MyPanel::OnSpinUpdate( wxSpinEvent
&event
)
1649 value
.Printf( wxT("%d"), event
.GetPosition() );
1650 m_spintext
->SetValue( value
);
1652 value
.Printf( wxT("Spin control range: (%d, %d), current = %d\n"),
1653 m_spinbutton
->GetMin(), m_spinbutton
->GetMax(),
1654 m_spinbutton
->GetValue());
1656 m_text
->AppendText(value
);
1659 void MyPanel::OnNewText( wxCommandEvent
& /* event */)
1661 m_nonWrappingText
->SetLabel( wxT("This text is short\nbut still spans\nover three lines.") );
1662 m_wrappingText
->SetLabel( wxT("This text is short but will still be wrapped if it is too long.") );
1663 m_wrappingText
->GetParent()->Layout();
1666 #if wxUSE_PROGRESSDLG
1668 void MyPanel::OnUpdateShowProgress( wxUpdateUIEvent
& event
)
1670 event
.Enable( m_spinbutton
->GetValue() > 0 );
1673 void MyPanel::OnShowProgress( wxCommandEvent
& WXUNUSED(event
) )
1675 int max
= m_spinbutton
->GetValue();
1679 wxLogError(wxT("You must set positive range!"));
1683 wxProgressDialog
dialog(wxT("Progress dialog example"),
1684 wxT("An informative message"),
1691 wxPD_ESTIMATED_TIME
|
1692 wxPD_REMAINING_TIME
);
1696 for ( int i
= 0; i
<= max
&& cont
; i
++ )
1701 cont
= dialog
.Update(i
, wxT("That's all, folks!"));
1703 else if ( i
== max
/ 2 )
1705 cont
= dialog
.Update(i
, wxT("Only a half left (very long message)!"));
1709 cont
= dialog
.Update(i
);
1715 *m_text
<< wxT("Progress dialog aborted!\n");
1719 *m_text
<< wxT("Countdown from ") << max
<< wxT(" finished.\n");
1723 #endif // wxUSE_PROGRESSDLG
1724 #endif // wxUSE_SPINBTN
1726 void MyPanel::OnSizerCheck( wxCommandEvent
&event
)
1728 switch (event
.GetId ()) {
1729 case ID_SIZER_CHECK1
:
1730 m_buttonSizer
->Show (m_sizerBtn1
, event
.IsChecked ());
1731 m_buttonSizer
->Layout ();
1733 case ID_SIZER_CHECK2
:
1734 m_buttonSizer
->Show (m_sizerBtn2
, event
.IsChecked ());
1735 m_buttonSizer
->Layout ();
1737 case ID_SIZER_CHECK3
:
1738 m_buttonSizer
->Show (m_sizerBtn3
, event
.IsChecked ());
1739 m_buttonSizer
->Layout ();
1741 case ID_SIZER_CHECK4
:
1742 m_buttonSizer
->Show (m_sizerBtn4
, event
.IsChecked ());
1743 m_buttonSizer
->Layout ();
1745 case ID_SIZER_CHECK14
:
1746 m_hsizer
->Show (m_buttonSizer
, event
.IsChecked ());
1747 m_hsizer
->Layout ();
1749 case ID_SIZER_CHECKBIG
:
1750 m_hsizer
->Show (m_bigBtn
, event
.IsChecked ());
1751 m_hsizer
->Layout ();
1759 //wxLog::RemoveTraceMask(wxT("focus"));
1760 delete wxLog::SetActiveTarget(m_logTargetOld
);
1762 delete m_book
->GetImageList();
1765 //----------------------------------------------------------------------
1767 //----------------------------------------------------------------------
1769 BEGIN_EVENT_TABLE(MyFrame
, wxFrame
)
1770 EVT_MENU(CONTROLS_QUIT
, MyFrame::OnQuit
)
1771 EVT_MENU(CONTROLS_ABOUT
, MyFrame::OnAbout
)
1772 EVT_MENU(CONTROLS_CLEAR_LOG
, MyFrame::OnClearLog
)
1774 EVT_MENU(CONTROLS_SET_TOOLTIP_DELAY
, MyFrame::OnSetTooltipDelay
)
1775 EVT_MENU(CONTROLS_ENABLE_TOOLTIPS
, MyFrame::OnToggleTooltips
)
1777 EVT_MENU(CONTROLS_SET_TOOLTIPS_MAX_WIDTH
, MyFrame::OnSetMaxTooltipWidth
)
1779 #endif // wxUSE_TOOLTIPS
1781 EVT_MENU(CONTROLS_ENABLE_ALL
, MyFrame::OnEnableAll
)
1782 EVT_MENU(CONTROLS_HIDE_ALL
, MyFrame::OnHideAll
)
1783 EVT_MENU(CONTROLS_HIDE_LIST
, MyFrame::OnHideList
)
1784 EVT_MENU(CONTROLS_CONTEXT_HELP
, MyFrame::OnContextHelp
)
1786 EVT_ICONIZE(MyFrame::OnIconized
)
1787 EVT_MAXIMIZE(MyFrame::OnMaximized
)
1788 EVT_SIZE(MyFrame::OnSize
)
1789 EVT_MOVE(MyFrame::OnMove
)
1791 EVT_IDLE(MyFrame::OnIdle
)
1794 MyFrame::MyFrame(const wxChar
*title
, int x
, int y
)
1795 : wxFrame(NULL
, wxID_ANY
, title
, wxPoint(x
, y
), wxSize(700, 450))
1797 SetHelpText( wxT("Controls sample demonstrating various widgets") );
1800 // The wxICON() macros loads an icon from a resource under Windows
1801 // and uses an #included XPM image under GTK+ and Motif
1804 SetIcon( wxICON(mondrian
) );
1807 wxMenu
*file_menu
= new wxMenu
;
1809 file_menu
->Append(CONTROLS_CLEAR_LOG
, wxT("&Clear log\tCtrl-L"));
1810 file_menu
->AppendSeparator();
1811 file_menu
->Append(CONTROLS_ABOUT
, wxT("&About\tF1"));
1812 file_menu
->AppendSeparator();
1813 file_menu
->Append(CONTROLS_QUIT
, wxT("E&xit\tAlt-X"), wxT("Quit controls sample"));
1815 wxMenuBar
*menu_bar
= new wxMenuBar
;
1816 menu_bar
->Append(file_menu
, wxT("&File"));
1819 wxMenu
*tooltip_menu
= new wxMenu
;
1820 tooltip_menu
->Append(CONTROLS_SET_TOOLTIP_DELAY
, wxT("Set &delay\tCtrl-D"));
1821 tooltip_menu
->AppendSeparator();
1822 tooltip_menu
->Append(CONTROLS_ENABLE_TOOLTIPS
, wxT("&Toggle tooltips\tCtrl-T"),
1823 wxT("enable/disable tooltips"), true);
1824 tooltip_menu
->Check(CONTROLS_ENABLE_TOOLTIPS
, true);
1826 tooltip_menu
->Append(CONTROLS_SET_TOOLTIPS_MAX_WIDTH
, "Set maximal &width");
1828 menu_bar
->Append(tooltip_menu
, wxT("&Tooltips"));
1829 #endif // wxUSE_TOOLTIPS
1831 wxMenu
*panel_menu
= new wxMenu
;
1832 panel_menu
->Append(CONTROLS_ENABLE_ALL
, wxT("&Disable all\tCtrl-E"),
1833 wxT("Enable/disable all panel controls"), true);
1834 panel_menu
->Append(CONTROLS_HIDE_ALL
, wxT("&Hide all\tCtrl-I"),
1835 wxT("Show/hide thoe whole panel controls"), true);
1836 panel_menu
->Append(CONTROLS_HIDE_LIST
, wxT("Hide &list ctrl\tCtrl-S"),
1837 wxT("Enable/disable all panel controls"), true);
1838 panel_menu
->Append(CONTROLS_CONTEXT_HELP
, wxT("&Context help...\tCtrl-H"),
1839 wxT("Get context help for a control"));
1840 menu_bar
->Append(panel_menu
, wxT("&Panel"));
1842 SetMenuBar(menu_bar
);
1846 #endif // wxUSE_STATUSBAR
1848 m_panel
= new MyPanel( this, 10, 10, 300, 100 );
1851 void MyFrame::OnQuit (wxCommandEvent
& WXUNUSED(event
) )
1856 void MyFrame::OnAbout( wxCommandEvent
& WXUNUSED(event
) )
1860 wxMessageDialog
dialog(this, wxT("This is a control sample"), wxT("About Controls"), wxOK
);
1864 void MyFrame::OnClearLog(wxCommandEvent
& WXUNUSED(event
))
1866 m_panel
->m_text
->Clear();
1870 void MyFrame::OnSetTooltipDelay(wxCommandEvent
& WXUNUSED(event
))
1872 static long s_delay
= 5000;
1875 delay
.Printf( wxT("%ld"), s_delay
);
1877 delay
= wxGetTextFromUser(wxT("Enter delay (in milliseconds)"),
1878 wxT("Set tooltip delay"),
1882 return; // cancelled
1884 wxSscanf(delay
, wxT("%ld"), &s_delay
);
1886 wxToolTip::SetDelay(s_delay
);
1888 wxLogStatus(this, wxT("Tooltip delay set to %ld milliseconds"), s_delay
);
1891 void MyFrame::OnToggleTooltips(wxCommandEvent
& WXUNUSED(event
))
1893 static bool s_enabled
= true;
1895 s_enabled
= !s_enabled
;
1897 wxToolTip::Enable(s_enabled
);
1899 wxLogStatus(this, wxT("Tooltips %sabled"), s_enabled
? wxT("en") : wxT("dis") );
1904 void MyFrame::OnSetMaxTooltipWidth(wxCommandEvent
& WXUNUSED(event
))
1906 static int s_maxWidth
= 0;
1908 wxNumberEntryDialog dlg
1911 "Change maximal tooltip width",
1912 "&Width in pixels:",
1918 if ( dlg
.ShowModal() == wxID_CANCEL
)
1921 s_maxWidth
= dlg
.GetValue();
1922 wxToolTip::SetMaxWidth(s_maxWidth
);
1924 // we need to set the tooltip again to test the new width
1925 m_panel
->SetAllToolTips();
1930 #endif // wxUSE_TOOLTIPS
1932 void MyFrame::OnEnableAll(wxCommandEvent
& WXUNUSED(event
))
1934 static bool s_enable
= true;
1936 s_enable
= !s_enable
;
1937 m_panel
->Enable(s_enable
);
1938 static bool s_enableCheckbox
= true;
1941 // this is a test for correct behaviour of either enabling or disabling
1942 // a child when its parent is disabled: the checkbox should have the
1943 // correct state when the parent is enabled back
1944 m_panel
->m_checkbox
->Enable(s_enableCheckbox
);
1945 s_enableCheckbox
= !s_enableCheckbox
;
1949 void MyFrame::OnHideAll(wxCommandEvent
& WXUNUSED(event
))
1951 static bool s_show
= true;
1954 m_panel
->Show(s_show
);
1957 void MyFrame::OnHideList(wxCommandEvent
& WXUNUSED(event
))
1959 static bool s_show
= true;
1962 m_panel
->m_listbox
->Show(s_show
);
1965 void MyFrame::OnContextHelp(wxCommandEvent
& WXUNUSED(event
))
1967 // starts a local event loop
1968 wxContextHelp
chelp(this);
1971 void MyFrame::OnMove( wxMoveEvent
& event
)
1974 UpdateStatusBar(event
.GetPosition(), GetSize());
1975 #endif // wxUSE_STATUSBAR
1980 void MyFrame::OnIconized( wxIconizeEvent
& event
)
1982 wxLogMessage(wxT("Frame %s"), event
.IsIconized() ? wxT("iconized")
1987 void MyFrame::OnMaximized( wxMaximizeEvent
& WXUNUSED(event
) )
1989 wxLogMessage(wxT("Frame maximized"));
1992 void MyFrame::OnSize( wxSizeEvent
& event
)
1995 UpdateStatusBar(GetPosition(), event
.GetSize());
1996 #endif // wxUSE_STATUSBAR
2001 void MyFrame::OnIdle( wxIdleEvent
& WXUNUSED(event
) )
2003 // track the window which has the focus in the status bar
2004 static wxWindow
*s_windowFocus
= NULL
;
2005 wxWindow
*focus
= wxWindow::FindFocus();
2006 if ( focus
!= s_windowFocus
)
2008 s_windowFocus
= focus
;
2018 , s_windowFocus
->GetName().c_str()
2020 , (unsigned int) s_windowFocus
->GetHWND()
2026 msg
= wxT("No focus");
2031 #endif // wxUSE_STATUSBAR
2035 void MyComboBox::OnChar(wxKeyEvent
& event
)
2037 wxLogMessage(wxT("MyComboBox::OnChar"));
2039 if ( event
.GetKeyCode() == 'w' )
2041 wxLogMessage(wxT("MyComboBox: 'w' will be ignored."));
2049 void MyComboBox::OnKeyDown(wxKeyEvent
& event
)
2051 wxLogMessage(wxT("MyComboBox::OnKeyDown"));
2053 if ( event
.GetKeyCode() == 'w' )
2055 wxLogMessage(wxT("MyComboBox: 'w' will be ignored."));
2063 void MyComboBox::OnKeyUp(wxKeyEvent
& event
)
2065 wxLogMessage(wxT("MyComboBox::OnKeyUp"));
2070 static void SetListboxClientData(const wxChar
*name
, wxListBox
*control
)
2072 size_t count
= control
->GetCount();
2073 for ( size_t n
= 0; n
< count
; n
++ )
2076 s
.Printf(wxT("%s client data for '%s'"),
2077 name
, control
->GetString(n
).c_str());
2079 control
->SetClientObject(n
, new wxStringClientData(s
));
2085 static void SetChoiceClientData(const wxChar
*name
, wxChoice
*control
)
2087 size_t count
= control
->GetCount();
2088 for ( size_t n
= 0; n
< count
; n
++ )
2091 s
.Printf(wxT("%s client data for '%s'"),
2092 name
, control
->GetString(n
).c_str());
2094 control
->SetClientObject(n
, new wxStringClientData(s
));
2098 #endif // wxUSE_CHOICE