1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: Controls wxWidgets sample
4 // Author: Robert Roebling
7 // Copyright: (c) Robert Roebling, Julian Smart
8 // Licence: wxWindows licence
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
37 #include "icons/choice.xpm"
38 #include "icons/combo.xpm"
39 #include "icons/list.xpm"
40 #include "icons/radio.xpm"
41 #include "icons/text.xpm"
42 #include "icons/gauge.xpm"
46 #define wxUSE_SPINBTN 1
49 #include "wx/progdlg.h"
52 #include "wx/spinctrl.h"
53 #endif // wxUSE_SPINCTRL
56 #define wxToggleButton wxCheckBox
57 #define EVT_TOGGLEBUTTON EVT_CHECKBOX
60 #if !defined(__WXMSW__) && !defined(__WXPM__)
61 #include "../sample.xpm"
64 //----------------------------------------------------------------------
66 //----------------------------------------------------------------------
68 class MyApp
: public wxApp
74 class MyPanel
: public wxPanel
77 MyPanel(wxFrame
*frame
, int x
, int y
, int w
, int h
);
81 void SetAllToolTips();
82 #endif // wxUSE_TOOLTIPS
84 void OnIdle( wxIdleEvent
&event
);
85 void OnListBox( wxCommandEvent
&event
);
86 void OnListBoxDoubleClick( wxCommandEvent
&event
);
87 void OnListBoxButtons( wxCommandEvent
&event
);
89 void OnChoice( wxCommandEvent
&event
);
90 void OnChoiceButtons( wxCommandEvent
&event
);
92 void OnCombo( wxCommandEvent
&event
);
93 void OnComboTextChanged( wxCommandEvent
&event
);
94 void OnComboTextEnter( wxCommandEvent
&event
);
95 void OnComboButtons( wxCommandEvent
&event
);
96 void OnRadio( wxCommandEvent
&event
);
97 void OnRadioButtons( wxCommandEvent
&event
);
98 void OnRadioButton1( wxCommandEvent
&event
);
99 void OnRadioButton2( wxCommandEvent
&event
);
100 void OnSetFont( wxCommandEvent
&event
);
101 void OnPageChanged( wxBookCtrlEvent
&event
);
102 void OnPageChanging( wxBookCtrlEvent
&event
);
103 void OnSliderUpdate( wxCommandEvent
&event
);
104 void OnUpdateLabel( wxCommandEvent
&event
);
106 void OnSpinUp( wxSpinEvent
&event
);
107 void OnSpinDown( wxSpinEvent
&event
);
108 void OnSpinUpdate( wxSpinEvent
&event
);
109 #if wxUSE_PROGRESSDLG
110 void OnUpdateShowProgress( wxUpdateUIEvent
& event
);
111 void OnShowProgress( wxCommandEvent
&event
);
112 #endif // wxUSE_PROGRESSDLG
113 #endif // wxUSE_SPINBTN
114 void OnNewText( wxCommandEvent
&event
);
116 void OnSpinCtrl(wxSpinEvent
& event
);
117 void OnSpinCtrlUp(wxSpinEvent
& event
);
118 void OnSpinCtrlDown(wxSpinEvent
& event
);
119 void OnSpinCtrlText(wxCommandEvent
& event
);
120 #endif // wxUSE_SPINCTRL
122 void OnEnableAll(wxCommandEvent
& event
);
123 void OnChangeColour(wxCommandEvent
& event
);
124 void OnTestButton(wxCommandEvent
& event
);
125 void OnBmpButton(wxCommandEvent
& event
);
126 void OnBmpButtonToggle(wxCommandEvent
& event
);
128 void OnSizerCheck (wxCommandEvent
&event
);
130 wxListBox
*m_listbox
,
135 #endif // wxUSE_CHOICE
142 #endif // wxUSE_GAUGE
145 #endif // wxUSE_SLIDER
146 wxButton
*m_fontButton
;
147 wxButton
*m_lbSelectNum
;
148 wxButton
*m_lbSelectThis
;
150 wxSpinButton
*m_spinbutton
;
151 #if wxUSE_PROGRESSDLG
152 wxButton
*m_btnProgress
;
153 #endif // wxUSE_PROGRESSDLG
154 #endif // wxUSE_SPINBTN
155 wxStaticText
*m_wrappingText
;
156 wxStaticText
*m_nonWrappingText
;
159 wxSpinCtrl
*m_spinctrl
;
160 #endif // wxUSE_SPINCTRL
162 wxTextCtrl
*m_spintext
;
163 wxCheckBox
*m_checkbox
;
168 wxStaticText
*m_label
;
170 wxBoxSizer
*m_buttonSizer
;
171 wxButton
*m_sizerBtn1
;
172 wxButton
*m_sizerBtn2
;
173 wxButton
*m_sizerBtn3
;
174 wxButton
*m_sizerBtn4
;
175 wxBoxSizer
*m_hsizer
;
179 wxLog
*m_logTargetOld
;
181 DECLARE_EVENT_TABLE()
184 class MyFrame
: public wxFrame
187 MyFrame(const wxChar
*title
, int x
, int y
);
189 void OnQuit(wxCommandEvent
& event
);
190 void OnAbout(wxCommandEvent
& event
);
191 void OnClearLog(wxCommandEvent
& event
);
194 void OnSetTooltipDelay(wxCommandEvent
& event
);
195 void OnToggleTooltips(wxCommandEvent
& event
);
197 void OnSetMaxTooltipWidth(wxCommandEvent
& event
);
199 #endif // wxUSE_TOOLTIPS
201 void OnEnableAll(wxCommandEvent
& event
);
202 void OnHideAll(wxCommandEvent
& event
);
203 void OnHideList(wxCommandEvent
& event
);
204 void OnContextHelp(wxCommandEvent
& event
);
206 void OnIdle( wxIdleEvent
& event
);
207 void OnIconized( wxIconizeEvent
& event
);
208 void OnMaximized( wxMaximizeEvent
& event
);
209 void OnSize( wxSizeEvent
& event
);
210 void OnMove( wxMoveEvent
& event
);
212 MyPanel
*GetPanel() const { return m_panel
; }
216 void UpdateStatusBar(const wxPoint
& pos
, const wxSize
& size
)
218 if ( m_frameStatusBar
)
221 wxSize sizeAll
= GetSize(),
222 sizeCl
= GetClientSize();
223 msg
.Printf(_("pos=(%d, %d), size=%dx%d or %dx%d (client=%dx%d)"),
226 sizeAll
.x
, sizeAll
.y
,
228 SetStatusText(msg
, 1);
231 #endif // wxUSE_STATUSBAR
235 DECLARE_EVENT_TABLE()
238 // a button which intercepts double clicks (for testing...)
239 class MyButton
: public wxButton
242 MyButton(wxWindow
*parent
,
244 const wxString
& label
= wxEmptyString
,
245 const wxPoint
& pos
= wxDefaultPosition
,
246 const wxSize
& size
= wxDefaultSize
)
247 : wxButton(parent
, id
, label
, pos
, size
)
251 void OnDClick(wxMouseEvent
& event
)
253 wxLogMessage(wxT("MyButton::OnDClick"));
259 DECLARE_EVENT_TABLE()
262 // a combo which intercepts chars (to test Windows behaviour)
263 class MyComboBox
: public wxComboBox
266 MyComboBox(wxWindow
*parent
, wxWindowID id
,
267 const wxString
& value
= wxEmptyString
,
268 const wxPoint
& pos
= wxDefaultPosition
,
269 const wxSize
& size
= wxDefaultSize
,
270 int n
= 0, const wxString choices
[] = NULL
,
272 const wxValidator
& validator
= wxDefaultValidator
,
273 const wxString
& name
= wxComboBoxNameStr
)
274 : wxComboBox(parent
, id
, value
, pos
, size
, n
, choices
, style
,
278 void OnChar(wxKeyEvent
& event
);
279 void OnKeyDown(wxKeyEvent
& event
);
280 void OnKeyUp(wxKeyEvent
& event
);
281 void OnFocusGot(wxFocusEvent
& event
)
283 wxLogMessage(wxT("MyComboBox::OnFocusGot"));
289 DECLARE_EVENT_TABLE()
292 // a radiobox which handles focus set/kill (for testing)
293 class MyRadioBox
: public wxRadioBox
296 MyRadioBox(wxWindow
*parent
,
298 const wxString
& title
= wxEmptyString
,
299 const wxPoint
& pos
= wxDefaultPosition
,
300 const wxSize
& size
= wxDefaultSize
,
301 int n
= 0, const wxString choices
[] = NULL
,
303 long style
= wxRA_SPECIFY_COLS
,
304 const wxValidator
& validator
= wxDefaultValidator
,
305 const wxString
& name
= wxRadioBoxNameStr
)
306 : wxRadioBox(parent
, id
, title
, pos
, size
, n
, choices
, majorDim
,
307 style
, validator
, name
)
312 void OnFocusGot(wxFocusEvent
& event
)
314 wxLogMessage(wxT("MyRadioBox::OnFocusGot"));
319 void OnFocusLost(wxFocusEvent
& event
)
321 wxLogMessage(wxT("MyRadioBox::OnFocusLost"));
327 DECLARE_EVENT_TABLE()
330 // a choice which handles focus set/kill (for testing)
331 class MyChoice
: public wxChoice
334 MyChoice(wxWindow
*parent
,
336 const wxPoint
& pos
= wxDefaultPosition
,
337 const wxSize
& size
= wxDefaultSize
,
338 int n
= 0, const wxString choices
[] = NULL
,
340 const wxValidator
& validator
= wxDefaultValidator
,
341 const wxString
& name
= wxChoiceNameStr
)
342 : wxChoice(parent
, id
, pos
, size
, n
, choices
,
343 style
, validator
, name
) { }
346 void OnFocusGot(wxFocusEvent
& event
)
348 wxLogMessage(wxT("MyChoice::OnFocusGot"));
353 void OnFocusLost(wxFocusEvent
& event
)
355 wxLogMessage(wxT("MyChoice::OnFocusLost"));
361 DECLARE_EVENT_TABLE()
366 //----------------------------------------------------------------------
368 //----------------------------------------------------------------------
370 static void SetListboxClientData(const wxChar
*name
, wxListBox
*control
);
373 static void SetChoiceClientData(const wxChar
*name
, wxChoice
*control
);
374 #endif // wxUSE_CHOICE
378 //----------------------------------------------------------------------
380 //----------------------------------------------------------------------
384 CONTROLS_QUIT
= wxID_EXIT
,
385 CONTROLS_ABOUT
= wxID_ABOUT
,
390 CONTROLS_SET_TOOLTIP_DELAY
= 200,
391 CONTROLS_ENABLE_TOOLTIPS
,
392 CONTROLS_SET_TOOLTIPS_MAX_WIDTH
,
398 CONTROLS_CONTEXT_HELP
403 // use standard command line handling:
404 if ( !wxApp::OnInit() )
407 // parse the cmd line
412 wxSscanf(wxString(argv
[1]), wxT("%d"), &x
);
413 wxSscanf(wxString(argv
[2]), wxT("%d"), &y
);
417 wxHelpProvider::Set( new wxSimpleHelpProvider
);
420 // Create the main frame window
421 MyFrame
*frame
= new MyFrame(wxT("Controls wxWidgets App"), x
, y
);
427 //----------------------------------------------------------------------
429 //----------------------------------------------------------------------
431 const int ID_BOOK
= 1000;
433 const int ID_LISTBOX
= 130;
434 const int ID_LISTBOX_SEL_NUM
= 131;
435 const int ID_LISTBOX_SEL_STR
= 132;
436 const int ID_LISTBOX_CLEAR
= 133;
437 const int ID_LISTBOX_APPEND
= 134;
438 const int ID_LISTBOX_DELETE
= 135;
439 const int ID_LISTBOX_FONT
= 136;
440 const int ID_LISTBOX_ENABLE
= 137;
441 const int ID_LISTBOX_SORTED
= 138;
443 const int ID_CHOICE
= 120;
444 const int ID_CHOICE_SEL_NUM
= 121;
445 const int ID_CHOICE_SEL_STR
= 122;
446 const int ID_CHOICE_CLEAR
= 123;
447 const int ID_CHOICE_APPEND
= 124;
448 const int ID_CHOICE_DELETE
= 125;
449 const int ID_CHOICE_FONT
= 126;
450 const int ID_CHOICE_ENABLE
= 127;
451 const int ID_CHOICE_SORTED
= 128;
453 const int ID_COMBO
= 140;
454 const int ID_COMBO_SEL_NUM
= 141;
455 const int ID_COMBO_SEL_STR
= 142;
456 const int ID_COMBO_CLEAR
= 143;
457 const int ID_COMBO_APPEND
= 144;
458 const int ID_COMBO_DELETE
= 145;
459 const int ID_COMBO_FONT
= 146;
460 const int ID_COMBO_ENABLE
= 147;
461 const int ID_COMBO_SET_TEXT
= 148;
463 const int ID_RADIOBOX
= 160;
464 const int ID_RADIOBOX_SEL_NUM
= 161;
465 const int ID_RADIOBOX_SEL_STR
= 162;
466 const int ID_RADIOBOX_FONT
= 163;
467 const int ID_RADIOBOX_ENABLE
= 164;
468 const int ID_RADIOBOX2
= 165;
469 const int ID_RADIOBUTTON_1
= 166;
470 const int ID_RADIOBUTTON_2
= 167;
472 const int ID_SET_FONT
= 170;
475 const int ID_GAUGE
= 180;
476 #endif // wxUSE_GAUGE
479 const int ID_SLIDER
= 181;
480 #endif // wxUSE_SLIDER
482 const int ID_SPIN
= 182;
483 #if wxUSE_PROGRESSDLG
484 const int ID_BTNPROGRESS
= 183;
485 #endif // wxUSE_PROGRESSDLG
486 const int ID_BUTTON_LABEL
= 184;
487 const int ID_SPINCTRL
= 185;
488 const int ID_BTNNEWTEXT
= 186;
490 const int ID_BUTTON_TEST1
= 190;
491 const int ID_BUTTON_TEST2
= 191;
492 const int ID_BITMAP_BTN
= 192;
493 const int ID_BITMAP_BTN_ENABLE
= 193;
495 const int ID_CHANGE_COLOUR
= 200;
497 const int ID_SIZER_CHECK1
= 201;
498 const int ID_SIZER_CHECK2
= 202;
499 const int ID_SIZER_CHECK3
= 203;
500 const int ID_SIZER_CHECK4
= 204;
501 const int ID_SIZER_CHECK14
= 205;
502 const int ID_SIZER_CHECKBIG
= 206;
504 const int ID_HYPERLINK
= 300;
506 BEGIN_EVENT_TABLE(MyPanel
, wxPanel
)
507 EVT_IDLE ( MyPanel::OnIdle
)
508 EVT_BOOKCTRL_PAGE_CHANGING(ID_BOOK
, MyPanel::OnPageChanging
)
509 EVT_BOOKCTRL_PAGE_CHANGED(ID_BOOK
, MyPanel::OnPageChanged
)
510 EVT_LISTBOX (ID_LISTBOX
, MyPanel::OnListBox
)
511 EVT_LISTBOX (ID_LISTBOX_SORTED
, MyPanel::OnListBox
)
512 EVT_LISTBOX_DCLICK(ID_LISTBOX
, MyPanel::OnListBoxDoubleClick
)
513 EVT_BUTTON (ID_LISTBOX_SEL_NUM
, MyPanel::OnListBoxButtons
)
514 EVT_BUTTON (ID_LISTBOX_SEL_STR
, MyPanel::OnListBoxButtons
)
515 EVT_BUTTON (ID_LISTBOX_CLEAR
, MyPanel::OnListBoxButtons
)
516 EVT_BUTTON (ID_LISTBOX_APPEND
, MyPanel::OnListBoxButtons
)
517 EVT_BUTTON (ID_LISTBOX_DELETE
, MyPanel::OnListBoxButtons
)
518 EVT_BUTTON (ID_LISTBOX_FONT
, MyPanel::OnListBoxButtons
)
519 EVT_CHECKBOX (ID_LISTBOX_ENABLE
, MyPanel::OnListBoxButtons
)
521 EVT_CHOICE (ID_CHOICE
, MyPanel::OnChoice
)
522 EVT_CHOICE (ID_CHOICE_SORTED
, MyPanel::OnChoice
)
523 EVT_BUTTON (ID_CHOICE_SEL_NUM
, MyPanel::OnChoiceButtons
)
524 EVT_BUTTON (ID_CHOICE_SEL_STR
, MyPanel::OnChoiceButtons
)
525 EVT_BUTTON (ID_CHOICE_CLEAR
, MyPanel::OnChoiceButtons
)
526 EVT_BUTTON (ID_CHOICE_APPEND
, MyPanel::OnChoiceButtons
)
527 EVT_BUTTON (ID_CHOICE_DELETE
, MyPanel::OnChoiceButtons
)
528 EVT_BUTTON (ID_CHOICE_FONT
, MyPanel::OnChoiceButtons
)
529 EVT_CHECKBOX (ID_CHOICE_ENABLE
, MyPanel::OnChoiceButtons
)
531 EVT_COMBOBOX (ID_COMBO
, MyPanel::OnCombo
)
532 EVT_TEXT (ID_COMBO
, MyPanel::OnComboTextChanged
)
533 EVT_TEXT_ENTER(ID_COMBO
, MyPanel::OnComboTextEnter
)
534 EVT_BUTTON (ID_COMBO_SEL_NUM
, MyPanel::OnComboButtons
)
535 EVT_BUTTON (ID_COMBO_SEL_STR
, MyPanel::OnComboButtons
)
536 EVT_BUTTON (ID_COMBO_CLEAR
, MyPanel::OnComboButtons
)
537 EVT_BUTTON (ID_COMBO_APPEND
, MyPanel::OnComboButtons
)
538 EVT_BUTTON (ID_COMBO_DELETE
, MyPanel::OnComboButtons
)
539 EVT_BUTTON (ID_COMBO_FONT
, MyPanel::OnComboButtons
)
540 EVT_BUTTON (ID_COMBO_SET_TEXT
, MyPanel::OnComboButtons
)
541 EVT_CHECKBOX (ID_COMBO_ENABLE
, MyPanel::OnComboButtons
)
542 EVT_RADIOBOX (ID_RADIOBOX
, MyPanel::OnRadio
)
543 EVT_RADIOBOX (ID_RADIOBOX2
, MyPanel::OnRadio
)
544 EVT_BUTTON (ID_RADIOBOX_SEL_NUM
, MyPanel::OnRadioButtons
)
545 EVT_BUTTON (ID_RADIOBOX_SEL_STR
, MyPanel::OnRadioButtons
)
546 EVT_BUTTON (ID_RADIOBOX_FONT
, MyPanel::OnRadioButtons
)
547 EVT_CHECKBOX (ID_RADIOBOX_ENABLE
, MyPanel::OnRadioButtons
)
548 EVT_RADIOBUTTON(ID_RADIOBUTTON_1
, MyPanel::OnRadioButton1
)
549 EVT_RADIOBUTTON(ID_RADIOBUTTON_2
, MyPanel::OnRadioButton2
)
550 EVT_BUTTON (ID_SET_FONT
, MyPanel::OnSetFont
)
552 EVT_SLIDER (ID_SLIDER
, MyPanel::OnSliderUpdate
)
553 #endif // wxUSE_SLIDER
555 EVT_SPIN (ID_SPIN
, MyPanel::OnSpinUpdate
)
556 EVT_SPIN_UP (ID_SPIN
, MyPanel::OnSpinUp
)
557 EVT_SPIN_DOWN (ID_SPIN
, MyPanel::OnSpinDown
)
558 #if wxUSE_PROGRESSDLG
559 EVT_UPDATE_UI (ID_BTNPROGRESS
, MyPanel::OnUpdateShowProgress
)
560 EVT_BUTTON (ID_BTNPROGRESS
, MyPanel::OnShowProgress
)
561 #endif // wxUSE_PROGRESSDLG
562 #endif // wxUSE_SPINBTN
564 EVT_SPINCTRL (ID_SPINCTRL
, MyPanel::OnSpinCtrl
)
565 EVT_SPIN_UP (ID_SPINCTRL
, MyPanel::OnSpinCtrlUp
)
566 EVT_SPIN_DOWN (ID_SPINCTRL
, MyPanel::OnSpinCtrlDown
)
567 EVT_TEXT (ID_SPINCTRL
, MyPanel::OnSpinCtrlText
)
568 #endif // wxUSE_SPINCTRL
569 EVT_BUTTON (ID_BTNNEWTEXT
, MyPanel::OnNewText
)
570 EVT_TOGGLEBUTTON(ID_BUTTON_LABEL
, MyPanel::OnUpdateLabel
)
571 EVT_CHECKBOX (ID_CHANGE_COLOUR
, MyPanel::OnChangeColour
)
572 EVT_BUTTON (ID_BUTTON_TEST1
, MyPanel::OnTestButton
)
573 EVT_BUTTON (ID_BUTTON_TEST2
, MyPanel::OnTestButton
)
574 EVT_BUTTON (ID_BITMAP_BTN
, MyPanel::OnBmpButton
)
575 EVT_TOGGLEBUTTON(ID_BITMAP_BTN_ENABLE
, MyPanel::OnBmpButtonToggle
)
577 EVT_CHECKBOX (ID_SIZER_CHECK1
, MyPanel::OnSizerCheck
)
578 EVT_CHECKBOX (ID_SIZER_CHECK2
, MyPanel::OnSizerCheck
)
579 EVT_CHECKBOX (ID_SIZER_CHECK3
, MyPanel::OnSizerCheck
)
580 EVT_CHECKBOX (ID_SIZER_CHECK4
, MyPanel::OnSizerCheck
)
581 EVT_CHECKBOX (ID_SIZER_CHECK14
, MyPanel::OnSizerCheck
)
582 EVT_CHECKBOX (ID_SIZER_CHECKBIG
, MyPanel::OnSizerCheck
)
586 BEGIN_EVENT_TABLE(MyButton
, wxButton
)
587 EVT_LEFT_DCLICK(MyButton::OnDClick
)
590 BEGIN_EVENT_TABLE(MyComboBox
, wxComboBox
)
591 EVT_CHAR(MyComboBox::OnChar
)
592 EVT_KEY_DOWN(MyComboBox::OnKeyDown
)
593 EVT_KEY_UP(MyComboBox::OnKeyUp
)
595 EVT_SET_FOCUS(MyComboBox::OnFocusGot
)
598 BEGIN_EVENT_TABLE(MyRadioBox
, wxRadioBox
)
599 EVT_SET_FOCUS(MyRadioBox::OnFocusGot
)
600 EVT_KILL_FOCUS(MyRadioBox::OnFocusLost
)
603 BEGIN_EVENT_TABLE(MyChoice
, wxChoice
)
604 EVT_SET_FOCUS(MyChoice::OnFocusGot
)
605 EVT_KILL_FOCUS(MyChoice::OnFocusLost
)
608 // ============================================================================
610 // ============================================================================
612 MyPanel::MyPanel( wxFrame
*frame
, int x
, int y
, int w
, int h
)
613 : wxPanel( frame
, wxID_ANY
, wxPoint(x
, y
), wxSize(w
, h
) )
616 m_listboxSorted
= NULL
;
619 m_choiceSorted
= NULL
;
620 #endif // wxUSE_CHOICE
626 #endif // wxUSE_GAUGE
629 #endif // wxUSE_SLIDER
631 m_lbSelectNum
= NULL
;
632 m_lbSelectThis
= NULL
;
635 #if wxUSE_PROGRESSDLG
636 m_btnProgress
= NULL
;
637 #endif // wxUSE_PROGRESSDLG
638 #endif // wxUSE_SPINBTN
641 #endif // wxUSE_SPINCTRL
648 m_text
= new wxTextCtrl(this, wxID_ANY
, wxT("This is the log window.\n"),
649 wxPoint(0, 250), wxSize(100, 50), wxTE_MULTILINE
);
651 m_logTargetOld
= wxLog::SetActiveTarget(new wxLogTextCtrl(m_text
));
653 m_book
= new wxBookCtrl(this, ID_BOOK
);
659 wxT("one of my long and"),
675 #endif // wxUSE_GAUGE
679 // fill the image list
680 wxBitmap
bmp(list_xpm
);
682 wxImageList
*imagelist
= new wxImageList(bmp
.GetWidth(), bmp
.GetHeight());
684 imagelist
-> Add( bmp
);
685 imagelist
-> Add( wxBitmap( choice_xpm
));
686 imagelist
-> Add( wxBitmap( combo_xpm
));
687 imagelist
-> Add( wxBitmap( text_xpm
));
688 imagelist
-> Add( wxBitmap( radio_xpm
));
690 imagelist
-> Add( wxBitmap( gauge_xpm
));
691 #endif // wxUSE_GAUGE
692 m_book
->SetImageList(imagelist
);
694 // load images from resources
704 #endif // wxUSE_GAUGE
707 wxImageList
*imagelist
= new wxImageList(16, 16, false, Image_Max
);
709 static const wxChar
*s_iconNames
[Image_Max
] =
718 #endif // wxUSE_GAUGE
721 for ( size_t n
= 0; n
< Image_Max
; n
++ )
723 wxBitmap
bmp(s_iconNames
[n
]);
724 if ( !bmp
.Ok() || (imagelist
->Add(bmp
) == -1) )
726 wxLogWarning(wxT("Couldn't load the image '%s' for the book control page %d."),
731 m_book
->SetImageList(imagelist
);
734 wxPanel
*panel
= new wxPanel(m_book
);
735 m_listbox
= new wxListBox( panel
, ID_LISTBOX
,
736 wxPoint(10,10), wxSize(120,70),
737 5, choices
, wxLB_MULTIPLE
| wxLB_ALWAYS_SB
| wxHSCROLL
);
738 m_listboxSorted
= new wxListBox( panel
, ID_LISTBOX_SORTED
,
739 wxPoint(10,90), wxSize(120,70),
740 3, choices
, wxLB_SORT
);
742 SetListboxClientData(wxT("listbox"), m_listbox
);
743 SetListboxClientData(wxT("listbox"), m_listboxSorted
);
745 m_listbox
->SetCursor(*wxCROSS_CURSOR
);
747 m_lbSelectNum
= new wxButton( panel
, ID_LISTBOX_SEL_NUM
, wxT("Select #&2"), wxPoint(180,30), wxSize(140,30) );
748 m_lbSelectThis
= new wxButton( panel
, ID_LISTBOX_SEL_STR
, wxT("&Select 'This'"), wxPoint(340,30), wxSize(140,30) );
749 (void)new wxButton( panel
, ID_LISTBOX_CLEAR
, wxT("&Clear"), wxPoint(180,80), wxSize(140,30) );
750 (void)new MyButton( panel
, ID_LISTBOX_APPEND
, wxT("&Append 'Hi!'"), wxPoint(340,80), wxSize(140,30) );
751 (void)new wxButton( panel
, ID_LISTBOX_DELETE
, wxT("D&elete selected item"), wxPoint(180,130), wxSize(140,30) );
752 wxButton
*button
= new MyButton( panel
, ID_LISTBOX_FONT
, wxT("Set &Italic font"), wxPoint(340,130), wxSize(140,30) );
754 button
->SetDefault();
756 m_checkbox
= new wxCheckBox( panel
, ID_LISTBOX_ENABLE
, wxT("&Disable"), wxPoint(20,170) );
757 m_checkbox
->SetValue(false);
758 button
->MoveAfterInTabOrder(m_checkbox
);
759 (void)new wxCheckBox( panel
, ID_CHANGE_COLOUR
, wxT("&Toggle colour"),
761 panel
->SetCursor(wxCursor(wxCURSOR_HAND
));
762 m_book
->AddPage(panel
, wxT("wxListBox"), true, Image_List
);
765 panel
= new wxPanel(m_book
);
766 m_choice
= new MyChoice( panel
, ID_CHOICE
, wxPoint(10,10), wxSize(120,wxDefaultCoord
), 5, choices
);
767 m_choiceSorted
= new MyChoice( panel
, ID_CHOICE_SORTED
, wxPoint(10,70), wxSize(120,wxDefaultCoord
),
768 5, choices
, wxCB_SORT
);
770 SetChoiceClientData(wxT("choice"), m_choice
);
771 SetChoiceClientData(wxT("choice"), m_choiceSorted
);
773 m_choice
->SetSelection(2);
774 (void)new wxButton( panel
, ID_CHOICE_SEL_NUM
, wxT("Select #&2"), wxPoint(180,30), wxSize(140,30) );
775 (void)new wxButton( panel
, ID_CHOICE_SEL_STR
, wxT("&Select 'This'"), wxPoint(340,30), wxSize(140,30) );
776 (void)new wxButton( panel
, ID_CHOICE_CLEAR
, wxT("&Clear"), wxPoint(180,80), wxSize(140,30) );
777 (void)new wxButton( panel
, ID_CHOICE_APPEND
, wxT("&Append 'Hi!'"), wxPoint(340,80), wxSize(140,30) );
778 (void)new wxButton( panel
, ID_CHOICE_DELETE
, wxT("D&elete selected item"), wxPoint(180,130), wxSize(140,30) );
779 (void)new wxButton( panel
, ID_CHOICE_FONT
, wxT("Set &Italic font"), wxPoint(340,130), wxSize(140,30) );
780 (void)new wxCheckBox( panel
, ID_CHOICE_ENABLE
, wxT("&Disable"), wxPoint(20,130), wxSize(140,30) );
782 m_book
->AddPage(panel
, wxT("wxChoice"), false, Image_Choice
);
783 #endif // wxUSE_CHOICE
785 panel
= new wxPanel(m_book
);
786 (void)new wxStaticBox( panel
, wxID_ANY
, wxT("&Box around combobox"),
787 wxPoint(5, 5), wxSize(150, 100));
788 m_combo
= new MyComboBox( panel
, ID_COMBO
, wxT("This"),
789 wxPoint(20,25), wxSize(120, wxDefaultCoord
),
793 (void)new wxButton( panel
, ID_COMBO_SEL_NUM
, wxT("Select #&2"), wxPoint(180,30), wxSize(140,30) );
794 (void)new wxButton( panel
, ID_COMBO_SEL_STR
, wxT("&Select 'This'"), wxPoint(340,30), wxSize(140,30) );
795 (void)new wxButton( panel
, ID_COMBO_CLEAR
, wxT("&Clear"), wxPoint(180,80), wxSize(140,30) );
796 (void)new wxButton( panel
, ID_COMBO_APPEND
, wxT("&Append 'Hi!'"), wxPoint(340,80), wxSize(140,30) );
797 (void)new wxButton( panel
, ID_COMBO_DELETE
, wxT("D&elete selected item"), wxPoint(180,130), wxSize(140,30) );
798 (void)new wxButton( panel
, ID_COMBO_FONT
, wxT("Set &Italic font"), wxPoint(340,130), wxSize(140,30) );
799 (void)new wxButton( panel
, ID_COMBO_SET_TEXT
, wxT("Set 'Hi!' at #2"), wxPoint(340,180), wxSize(140,30) );
800 (void)new wxCheckBox( panel
, ID_COMBO_ENABLE
, wxT("&Disable"), wxPoint(20,130), wxSize(140,30) );
801 m_book
->AddPage(panel
, wxT("wxComboBox"), false, Image_Combo
);
803 wxString choices2
[] =
805 wxT("First"), wxT("Second"),
807 "Fourth", "Fifth", "Sixth",
808 "Seventh", "Eighth", "Nineth", "Tenth" */
811 panel
= new wxPanel(m_book
);
812 new MyRadioBox(panel
, ID_RADIOBOX2
, wxT("&That"),
813 wxPoint(10,160), wxDefaultSize
,
814 WXSIZEOF(choices2
), choices2
,
815 1, wxRA_SPECIFY_ROWS
);
816 m_radio
= new wxRadioBox(panel
, ID_RADIOBOX
, wxT("T&his"),
817 wxPoint(10,10), wxDefaultSize
,
818 WXSIZEOF(choices
), choices
,
819 1, wxRA_SPECIFY_COLS
);
822 for( unsigned int item
= 0; item
< WXSIZEOF(choices
); ++item
)
823 m_radio
->SetItemHelpText( item
, wxString::Format( wxT("Help text for \"%s\""), choices
[item
].c_str() ) );
825 // erase help text for the second item
826 m_radio
->SetItemHelpText( 1, wxT("") );
827 // set default help text for control
828 m_radio
->SetHelpText( wxT("Default helptext for wxRadioBox") );
831 (void)new wxButton( panel
, ID_RADIOBOX_SEL_NUM
, wxT("Select #&2"), wxPoint(180,30), wxSize(140,30) );
832 (void)new wxButton( panel
, ID_RADIOBOX_SEL_STR
, wxT("&Select 'This'"), wxPoint(180,80), wxSize(140,30) );
833 m_fontButton
= new wxButton( panel
, ID_SET_FONT
, wxT("Set &more Italic font"), wxPoint(340,30), wxSize(140,30) );
834 (void)new wxButton( panel
, ID_RADIOBOX_FONT
, wxT("Set &Italic font"), wxPoint(340,80), wxSize(140,30) );
835 (void)new wxCheckBox( panel
, ID_RADIOBOX_ENABLE
, wxT("&Disable"), wxPoint(340,130), wxDefaultSize
);
837 wxRadioButton
*rb
= new wxRadioButton( panel
, ID_RADIOBUTTON_1
, wxT("Radiobutton1"), wxPoint(210,170), wxDefaultSize
, wxRB_GROUP
);
838 rb
->SetValue( false );
839 (void)new wxRadioButton( panel
, ID_RADIOBUTTON_2
, wxT("&Radiobutton2"), wxPoint(340,170), wxDefaultSize
);
840 m_book
->AddPage(panel
, wxT("wxRadioBox"), false, Image_Radio
);
843 #if wxUSE_SLIDER && wxUSE_GAUGE
844 panel
= new wxPanel(m_book
);
846 wxBoxSizer
*main_sizer
= new wxBoxSizer( wxHORIZONTAL
);
847 panel
->SetSizer( main_sizer
);
849 wxStaticBoxSizer
*gauge_sizer
= new wxStaticBoxSizer( wxHORIZONTAL
, panel
, wxT("&wxGauge and wxSlider") );
850 main_sizer
->Add( gauge_sizer
, 0, wxALL
, 5 );
851 wxBoxSizer
*sz
= new wxBoxSizer( wxVERTICAL
);
852 gauge_sizer
->Add( sz
);
853 m_gauge
= new wxGauge( panel
, wxID_ANY
, 200, wxDefaultPosition
, wxSize(155, 30), wxGA_HORIZONTAL
|wxNO_BORDER
);
854 sz
->Add( m_gauge
, 0, wxALL
, 10 );
855 m_slider
= new wxSlider( panel
, ID_SLIDER
, 0, 0, 200,
856 wxDefaultPosition
, wxSize(155,wxDefaultCoord
),
857 wxSL_AUTOTICKS
| wxSL_LABELS
);
858 m_slider
->SetTickFreq(40, 0);
859 sz
->Add( m_slider
, 0, wxALL
, 10 );
861 m_gaugeVert
= new wxGauge( panel
, wxID_ANY
, 100,
862 wxDefaultPosition
, wxSize(wxDefaultCoord
, 90),
863 wxGA_VERTICAL
| wxGA_SMOOTH
| wxNO_BORDER
);
864 gauge_sizer
->Add( m_gaugeVert
, 0, wxALL
, 10 );
868 wxStaticBox
*sb
= new wxStaticBox( panel
, wxID_ANY
, wxT("&Explanation"),
869 wxDefaultPosition
, wxDefaultSize
); //, wxALIGN_CENTER );
870 wxStaticBoxSizer
*wrapping_sizer
= new wxStaticBoxSizer( sb
, wxVERTICAL
);
871 main_sizer
->Add( wrapping_sizer
, 0, wxALL
, 5 );
874 // No wrapping text in wxStaticText yet :-(
875 m_wrappingText
= new wxStaticText( panel
, wxID_ANY
,
876 wxT("Drag the slider!"),
878 wxSize(240, wxDefaultCoord
)
881 m_wrappingText
= new wxStaticText( panel
, wxID_ANY
,
882 wxT("In order see the gauge (aka progress bar) ")
883 wxT("control do something you have to drag the ")
884 wxT("handle of the slider to the right.")
886 wxT("This is also supposed to demonstrate how ")
887 wxT("to use static controls with line wrapping."),
889 wxSize(240, wxDefaultCoord
)
892 wrapping_sizer
->Add( m_wrappingText
);
894 wxStaticBoxSizer
*non_wrapping_sizer
= new wxStaticBoxSizer( wxVERTICAL
, panel
, wxT("Non-wrapping") );
895 main_sizer
->Add( non_wrapping_sizer
, 0, wxALL
, 5 );
897 m_nonWrappingText
= new wxStaticText( panel
, wxID_ANY
,
898 wxT("This static text has two lines.\nThey do not wrap."),
902 non_wrapping_sizer
->Add( m_nonWrappingText
);
904 (void)new wxButton( panel
, ID_BTNNEWTEXT
, wxT("New text"), wxPoint(450, 160) );
906 int initialSpinValue
= -5;
908 s
<< initialSpinValue
;
909 m_spintext
= new wxTextCtrl( panel
, wxID_ANY
, s
, wxPoint(20,160), wxSize(80,wxDefaultCoord
) );
911 m_spinbutton
= new wxSpinButton( panel
, ID_SPIN
, wxPoint(103,160), wxSize(-1, m_spintext
->GetSize().y
) );
912 m_spinbutton
->SetRange(-40,30);
913 m_spinbutton
->SetValue(initialSpinValue
);
915 #if wxUSE_PROGRESSDLG
916 m_btnProgress
= new wxButton( panel
, ID_BTNPROGRESS
, wxT("&Show progress dialog"),
918 #endif // wxUSE_PROGRESSDLG
919 #endif // wxUSE_SPINBTN
922 m_spinctrl
= new wxSpinCtrl( panel
, ID_SPINCTRL
, wxEmptyString
, wxPoint(200, 160), wxSize(80, wxDefaultCoord
) );
923 m_spinctrl
->SetRange(-10,30);
924 m_spinctrl
->SetValue(15);
925 #endif // wxUSE_SPINCTRL
927 m_book
->AddPage(panel
, wxT("wxGauge"), false, Image_Gauge
);
928 #endif // wxUSE_SLIDER && wxUSE_GAUGE
931 panel
= new wxPanel(m_book
);
933 #if !defined(__WXMOTIF__) // wxStaticBitmap not working under Motif yet.
934 wxIcon icon
= wxArtProvider::GetIcon(wxART_INFORMATION
);
935 (void) new wxStaticBitmap( panel
, wxID_ANY
, icon
, wxPoint(10, 10) );
937 // VZ: don't leak memory
938 // bmpStatic = new wxStaticBitmap(panel, wxID_ANY, wxNullIcon, wxPoint(50, 10));
939 // bmpStatic->SetIcon(wxArtProvider::GetIcon(wxART_QUESTION));
942 wxBitmap
bitmap( 100, 100 );
944 dc
.SelectObject( bitmap
);
945 dc
.SetBackground(*wxGREEN
);
946 dc
.SetPen(*wxRED_PEN
);
948 dc
.DrawEllipse(5, 5, 90, 90);
949 dc
.DrawText(wxT("Bitmap"), 30, 40);
950 dc
.SelectObject( wxNullBitmap
);
952 (void)new wxBitmapButton(panel
, ID_BITMAP_BTN
, bitmap
, wxPoint(100, 20));
953 (void)new wxToggleButton(panel
, ID_BITMAP_BTN_ENABLE
,
954 wxT("Enable/disable &bitmap"), wxPoint(100, 140));
956 #if defined(__WXMSW__) || defined(__WXMOTIF__)
957 // test for masked bitmap display
958 bitmap
= wxBitmap(wxT("test2.bmp"), wxBITMAP_TYPE_BMP
);
961 bitmap
.SetMask(new wxMask(bitmap
, *wxBLUE
));
963 (void)new wxStaticBitmap(panel
, wxID_ANY
, bitmap
, wxPoint(300, 120));
967 wxBitmap
bmp1(wxArtProvider::GetBitmap(wxART_INFORMATION
)),
968 bmp2(wxArtProvider::GetBitmap(wxART_WARNING
)),
969 bmp3(wxArtProvider::GetBitmap(wxART_QUESTION
));
970 wxBitmapButton
*bmpBtn
= new wxBitmapButton
977 bmpBtn
->SetBitmapSelected(bmp2
);
978 bmpBtn
->SetBitmapFocus(bmp3
);
980 (void)new wxToggleButton(panel
, ID_BUTTON_LABEL
,
981 wxT("&Toggle label"), wxPoint(250, 20));
983 m_label
= new wxStaticText(panel
, wxID_ANY
, wxT("Label with some long text"),
984 wxPoint(250, 60), wxDefaultSize
,
985 wxALIGN_RIGHT
/*| wxST_NO_AUTORESIZE*/);
986 m_label
->SetForegroundColour( *wxBLUE
);
988 m_book
->AddPage(panel
, wxT("wxBitmapXXX"));
991 panel
= new wxPanel(m_book
);
993 wxBoxSizer
*sizer
= new wxBoxSizer( wxVERTICAL
);
995 wxStaticBoxSizer
*csizer
=
996 new wxStaticBoxSizer (new wxStaticBox (panel
, wxID_ANY
, wxT("Show Buttons")), wxHORIZONTAL
);
998 wxCheckBox
*check1
, *check2
, *check3
, *check4
, *check14
, *checkBig
;
999 check1
= new wxCheckBox (panel
, ID_SIZER_CHECK1
, wxT("1"));
1000 check1
->SetValue (true);
1001 csizer
->Add (check1
);
1002 check2
= new wxCheckBox (panel
, ID_SIZER_CHECK2
, wxT("2"));
1003 check2
->SetValue (true);
1004 csizer
->Add (check2
);
1005 check3
= new wxCheckBox (panel
, ID_SIZER_CHECK3
, wxT("3"));
1006 check3
->SetValue (true);
1007 csizer
->Add (check3
);
1008 check4
= new wxCheckBox (panel
, ID_SIZER_CHECK4
, wxT("4"));
1009 check4
->SetValue (true);
1010 csizer
->Add (check4
);
1011 check14
= new wxCheckBox (panel
, ID_SIZER_CHECK14
, wxT("1-4"));
1012 check14
->SetValue (true);
1013 csizer
->Add (check14
);
1014 checkBig
= new wxCheckBox (panel
, ID_SIZER_CHECKBIG
, wxT("Big"));
1015 checkBig
->SetValue (true);
1016 csizer
->Add (checkBig
);
1018 sizer
->Add (csizer
);
1020 m_hsizer
= new wxBoxSizer( wxHORIZONTAL
);
1022 m_buttonSizer
= new wxBoxSizer (wxVERTICAL
);
1024 m_sizerBtn1
= new wxButton(panel
, wxID_ANY
, wxT("Test Button &1 (tab order 1)") );
1025 m_buttonSizer
->Add( m_sizerBtn1
, 0, wxALL
, 10 );
1026 m_sizerBtn2
= new wxButton(panel
, wxID_ANY
, wxT("Test Button &2 (tab order 3)") );
1027 m_buttonSizer
->Add( m_sizerBtn2
, 0, wxALL
, 10 );
1028 m_sizerBtn3
= new wxButton(panel
, wxID_ANY
, wxT("Test Button &3 (tab order 2)") );
1029 m_buttonSizer
->Add( m_sizerBtn3
, 0, wxALL
, 10 );
1030 m_sizerBtn4
= new wxButton(panel
, wxID_ANY
, wxT("Test Button &4 (tab order 4)") );
1031 m_buttonSizer
->Add( m_sizerBtn4
, 0, wxALL
, 10 );
1033 m_sizerBtn3
->MoveBeforeInTabOrder(m_sizerBtn2
);
1035 m_hsizer
->Add (m_buttonSizer
);
1036 m_hsizer
->Add( 20,20, 1 );
1037 m_bigBtn
= new wxButton(panel
, wxID_ANY
, wxT("Multiline\nbutton") );
1038 m_hsizer
->Add( m_bigBtn
, 3, wxGROW
|wxALL
, 10 );
1040 sizer
->Add (m_hsizer
, 1, wxGROW
);
1042 panel
->SetSizer( sizer
);
1044 m_book
->AddPage(panel
, wxT("wxSizer"));
1046 // set the sizer for the panel itself
1047 sizer
= new wxBoxSizer(wxVERTICAL
);
1048 sizer
->Add(m_book
, wxSizerFlags().Border().Expand());
1049 sizer
->Add(m_text
, wxSizerFlags(1).Border().Expand());
1054 #endif // wxUSE_TOOLTIPS
1062 void ResetToolTip(wxWindow
*win
, const char *tip
)
1064 wxCHECK_RET( win
, "NULL window?" );
1066 win
->UnsetToolTip();
1067 win
->SetToolTip(tip
);
1072 void MyPanel::SetAllToolTips()
1074 ResetToolTip(FindWindow(ID_LISTBOX_FONT
), "Press here to set italic font");
1075 ResetToolTip(m_checkbox
, "Click here to disable the listbox");
1076 ResetToolTip(m_listbox
, "This is a list box");
1077 ResetToolTip(m_combo
, "This is a natural\ncombobox - can you believe me?");
1078 ResetToolTip(m_slider
, "This is a sliding slider");
1079 ResetToolTip(FindWindow(ID_RADIOBOX2
), "Ever seen a radiobox?");
1081 //ResetToolTip(m_radio, "Tooltip for the entire radiobox");
1082 for ( unsigned int nb
= 0; nb
< m_radio
->GetCount(); nb
++ )
1084 m_radio
->SetItemToolTip(nb
, "");
1085 m_radio
->SetItemToolTip(nb
, "tooltip for\n" + m_radio
->GetString(nb
));
1088 // remove the tooltip for one of the items
1089 m_radio
->SetItemToolTip(2, "");
1091 #endif // wxUSE_TOOLTIPS
1093 void MyPanel::OnIdle(wxIdleEvent
& event
)
1095 static const int INVALID_SELECTION
= -2;
1097 static int s_selCombo
= INVALID_SELECTION
;
1099 if (!m_combo
|| !m_choice
)
1105 int sel
= m_combo
->GetSelection();
1106 if ( sel
!= s_selCombo
)
1108 if ( s_selCombo
!= INVALID_SELECTION
)
1110 wxLogMessage(wxT("EVT_IDLE: combobox selection changed from %d to %d"),
1117 static int s_selChoice
= INVALID_SELECTION
;
1118 sel
= m_choice
->GetSelection();
1119 if ( sel
!= s_selChoice
)
1121 if ( s_selChoice
!= INVALID_SELECTION
)
1123 wxLogMessage(wxT("EVT_IDLE: choice selection changed from %d to %d"),
1133 void MyPanel::OnPageChanging( wxBookCtrlEvent
&event
)
1135 int selOld
= event
.GetOldSelection();
1138 if ( wxMessageBox(wxT("This demonstrates how a program may prevent the\n")
1139 wxT("page change from taking place - if you select\n")
1140 wxT("[No] the current page will stay the third one\n"),
1141 wxT("Control sample"),
1142 wxICON_QUESTION
| wxYES_NO
, this) != wxYES
)
1150 *m_text
<< wxT("Book selection is being changed from ") << selOld
1151 << wxT(" to ") << event
.GetSelection()
1152 << wxT(" (current page from book is ")
1153 << m_book
->GetSelection() << wxT(")\n");
1156 void MyPanel::OnPageChanged( wxBookCtrlEvent
&event
)
1158 *m_text
<< wxT("Book selection is now ") << event
.GetSelection()
1159 << wxT(" (from book: ") << m_book
->GetSelection()
1163 void MyPanel::OnTestButton(wxCommandEvent
& event
)
1165 wxLogMessage(wxT("Button %c clicked."),
1166 event
.GetId() == ID_BUTTON_TEST1
? wxT('1') : wxT('2'));
1169 void MyPanel::OnBmpButton(wxCommandEvent
& WXUNUSED(event
))
1171 wxLogMessage(wxT("Bitmap button clicked."));
1174 void MyPanel::OnBmpButtonToggle(wxCommandEvent
& event
)
1176 FindWindow(ID_BITMAP_BTN
)->Enable(!event
.IsChecked());
1179 void MyPanel::OnChangeColour(wxCommandEvent
& WXUNUSED(event
))
1181 static wxColour s_colOld
;
1183 SetThemeEnabled(false);
1184 // test panel colour changing and propagation to the subcontrols
1185 if ( s_colOld
.Ok() )
1187 SetBackgroundColour(s_colOld
);
1188 s_colOld
= wxNullColour
;
1190 m_lbSelectThis
->SetForegroundColour(wxNullColour
);
1191 m_lbSelectThis
->SetBackgroundColour(wxNullColour
);
1195 s_colOld
= wxColour(wxT("red"));
1196 SetBackgroundColour(wxT("white"));
1198 m_lbSelectThis
->SetForegroundColour(wxT("white"));
1199 m_lbSelectThis
->SetBackgroundColour(wxT("red"));
1202 m_lbSelectThis
->Refresh();
1206 void MyPanel::OnListBox( wxCommandEvent
&event
)
1208 wxListBox
*listbox
= event
.GetId() == ID_LISTBOX
? m_listbox
1211 bool deselect
= false;
1212 if (listbox
->HasFlag(wxLB_MULTIPLE
) || listbox
->HasFlag(wxLB_EXTENDED
))
1214 deselect
= !event
.IsSelection();
1216 m_text
->AppendText( wxT("ListBox deselection event\n") );
1219 m_text
->AppendText( wxT("ListBox event selection string is: '") );
1220 m_text
->AppendText( event
.GetString() );
1221 m_text
->AppendText( wxT("'\n") );
1223 // can't use GetStringSelection() with multiple selections, there could be
1224 // more than one of them
1225 if ( !listbox
->HasFlag(wxLB_MULTIPLE
) && !listbox
->HasFlag(wxLB_EXTENDED
) )
1227 m_text
->AppendText( wxT("ListBox control selection string is: '") );
1228 m_text
->AppendText( listbox
->GetStringSelection() );
1229 m_text
->AppendText( wxT("'\n") );
1232 wxStringClientData
*obj
= ((wxStringClientData
*)event
.GetClientObject());
1233 m_text
->AppendText( wxT("ListBox event client data string is: '") );
1234 if (obj
) // BC++ doesn't like use of '? .. : .. ' in this context
1235 m_text
->AppendText( obj
->GetData() );
1237 m_text
->AppendText( wxString(wxT("none")) );
1239 m_text
->AppendText( wxT("'\n") );
1240 m_text
->AppendText( wxT("ListBox control client data string is: '") );
1241 obj
= (wxStringClientData
*)listbox
->GetClientObject(event
.GetInt());
1243 m_text
->AppendText( obj
->GetData() );
1245 m_text
->AppendText( wxString(wxT("none")) );
1246 m_text
->AppendText( wxT("'\n") );
1249 void MyPanel::OnListBoxDoubleClick( wxCommandEvent
&event
)
1251 m_text
->AppendText( wxT("ListBox double click string is: ") );
1252 m_text
->AppendText( event
.GetString() );
1253 m_text
->AppendText( wxT("\n") );
1256 void MyPanel::OnListBoxButtons( wxCommandEvent
&event
)
1258 switch (event
.GetId())
1260 case ID_LISTBOX_ENABLE
:
1262 m_text
->AppendText(wxT("Checkbox clicked.\n"));
1264 wxCheckBox
*cb
= (wxCheckBox
*)event
.GetEventObject();
1266 cb
->SetToolTip( wxT("Click to enable listbox") );
1268 cb
->SetToolTip( wxT("Click to disable listbox") );
1269 #endif // wxUSE_TOOLTIPS
1270 m_listbox
->Enable( event
.GetInt() == 0 );
1271 m_lbSelectThis
->Enable( event
.GetInt() == 0 );
1272 m_lbSelectNum
->Enable( event
.GetInt() == 0 );
1273 m_listboxSorted
->Enable( event
.GetInt() == 0 );
1274 FindWindow(ID_CHANGE_COLOUR
)->Enable( event
.GetInt() == 0 );
1277 case ID_LISTBOX_SEL_NUM
:
1279 if (m_listbox
->GetCount() > 2)
1280 m_listbox
->SetSelection( 2 );
1281 if (m_listboxSorted
->GetCount() > 2)
1282 m_listboxSorted
->SetSelection( 2 );
1283 m_lbSelectThis
->WarpPointer( 40, 14 );
1286 case ID_LISTBOX_SEL_STR
:
1288 if (m_listbox
->FindString(wxT("This")) != wxNOT_FOUND
)
1289 m_listbox
->SetStringSelection( wxT("This") );
1290 if (m_listboxSorted
->FindString(wxT("This")) != wxNOT_FOUND
)
1291 m_listboxSorted
->SetStringSelection( wxT("This") );
1292 m_lbSelectNum
->WarpPointer( 40, 14 );
1295 case ID_LISTBOX_CLEAR
:
1298 m_listboxSorted
->Clear();
1301 case ID_LISTBOX_APPEND
:
1303 m_listbox
->Append( wxT("Hi kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk!") );
1304 m_listboxSorted
->Append( wxT("Hi hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!") );
1307 case ID_LISTBOX_DELETE
:
1310 idx
= m_listbox
->GetSelection();
1311 if ( idx
!= wxNOT_FOUND
)
1312 m_listbox
->Delete( idx
);
1313 idx
= m_listboxSorted
->GetSelection();
1314 if ( idx
!= wxNOT_FOUND
)
1315 m_listboxSorted
->Delete( idx
);
1318 case ID_LISTBOX_FONT
:
1320 m_listbox
->SetFont( *wxITALIC_FONT
);
1321 m_listboxSorted
->SetFont( *wxITALIC_FONT
);
1322 m_checkbox
->SetFont( *wxITALIC_FONT
);
1330 static wxString
GetDataString(wxClientData
*data
)
1332 return data
? static_cast<wxStringClientData
*>(data
)->GetData()
1336 void MyPanel::OnChoice( wxCommandEvent
&event
)
1338 wxChoice
*choice
= event
.GetId() == ID_CHOICE
? m_choice
1341 const int sel
= choice
->GetSelection();
1343 wxClientData
*dataEvt
= event
.GetClientObject(),
1344 *dataCtrl
= choice
->GetClientObject(sel
);
1346 wxLogMessage(wxT("EVT_CHOICE: item %d/%d (event/control), ")
1347 wxT("string \"%s\"/\"%s\", ")
1348 wxT("data \"%s\"/\"%s\""),
1349 (int)event
.GetInt(),
1352 choice
->GetStringSelection(),
1353 GetDataString(dataEvt
),
1354 GetDataString(dataCtrl
));
1357 void MyPanel::OnChoiceButtons( wxCommandEvent
&event
)
1359 switch (event
.GetId())
1361 case ID_CHOICE_ENABLE
:
1363 m_choice
->Enable( event
.GetInt() == 0 );
1364 m_choiceSorted
->Enable( event
.GetInt() == 0 );
1367 case ID_CHOICE_SEL_NUM
:
1369 m_choice
->SetSelection( 2 );
1370 m_choiceSorted
->SetSelection( 2 );
1373 case ID_CHOICE_SEL_STR
:
1375 m_choice
->SetStringSelection( wxT("This") );
1376 m_choiceSorted
->SetStringSelection( wxT("This") );
1379 case ID_CHOICE_CLEAR
:
1382 m_choiceSorted
->Clear();
1385 case ID_CHOICE_APPEND
:
1387 m_choice
->Append( wxT("Hi!") );
1388 m_choiceSorted
->Append( wxT("Hi!") );
1391 case ID_CHOICE_DELETE
:
1393 int idx
= m_choice
->GetSelection();
1394 if ( idx
!= wxNOT_FOUND
)
1395 m_choice
->Delete( idx
);
1396 idx
= m_choiceSorted
->GetSelection();
1397 if ( idx
!= wxNOT_FOUND
)
1398 m_choiceSorted
->Delete( idx
);
1401 case ID_CHOICE_FONT
:
1403 m_choice
->SetFont( *wxITALIC_FONT
);
1404 m_choiceSorted
->SetFont( *wxITALIC_FONT
);
1409 #endif // wxUSE_CHOICE
1411 void MyPanel::OnCombo( wxCommandEvent
&event
)
1416 wxLogMessage(wxT("EVT_COMBOBOX: item %d/%d (event/control), string \"%s\"/\"%s\""),
1417 (int)event
.GetInt(),
1418 m_combo
->GetSelection(),
1419 event
.GetString().c_str(),
1420 m_combo
->GetStringSelection().c_str());
1423 void MyPanel::OnComboTextChanged(wxCommandEvent
& event
)
1427 wxLogMessage(wxT("EVT_TEXT for the combobox: \"%s\" (event) or \"%s\" (control)."),
1428 event
.GetString().c_str(),
1429 m_combo
->GetValue().c_str());
1433 void MyPanel::OnComboTextEnter(wxCommandEvent
& WXUNUSED(event
))
1437 wxLogMessage(wxT("Enter pressed in the combobox: value is '%s'."),
1438 m_combo
->GetValue().c_str());
1442 void MyPanel::OnComboButtons( wxCommandEvent
&event
)
1444 switch (event
.GetId())
1446 case ID_COMBO_ENABLE
:
1448 m_combo
->Enable( event
.GetInt() == 0 );
1451 case ID_COMBO_SEL_NUM
:
1453 m_combo
->SetSelection( 2 );
1456 case ID_COMBO_SEL_STR
:
1458 m_combo
->SetStringSelection( wxT("This") );
1461 case ID_COMBO_CLEAR
:
1466 case ID_COMBO_APPEND
:
1468 m_combo
->Append( wxT("Hi!") );
1471 case ID_COMBO_DELETE
:
1473 int idx
= m_combo
->GetSelection();
1474 m_combo
->Delete( idx
);
1479 m_combo
->SetFont( *wxITALIC_FONT
);
1482 case ID_COMBO_SET_TEXT
:
1484 m_combo
->SetString( 2, wxT("Hi!") );
1490 void MyPanel::OnRadio( wxCommandEvent
&event
)
1492 m_text
->AppendText( wxT("RadioBox selection string is: ") );
1493 m_text
->AppendText( event
.GetString() );
1494 m_text
->AppendText( wxT("\n") );
1497 void MyPanel::OnRadioButton1( wxCommandEvent
& WXUNUSED(event
) )
1499 wxMessageBox(wxT("First wxRadioButton selected."), wxT("wxControl sample"));
1502 void MyPanel::OnRadioButton2( wxCommandEvent
& WXUNUSED(event
) )
1504 m_text
->AppendText(wxT("Second wxRadioButton selected.\n"));
1507 void MyPanel::OnRadioButtons( wxCommandEvent
&event
)
1509 switch (event
.GetId())
1511 case ID_RADIOBOX_ENABLE
:
1512 m_radio
->Enable( event
.GetInt() == 0 );
1515 case ID_RADIOBOX_SEL_NUM
:
1516 m_radio
->SetSelection( 2 );
1519 case ID_RADIOBOX_SEL_STR
:
1520 m_radio
->SetStringSelection( wxT("This") );
1523 case ID_RADIOBOX_FONT
:
1524 m_radio
->SetFont( *wxITALIC_FONT
);
1529 void MyPanel::OnSetFont( wxCommandEvent
&WXUNUSED(event
) )
1531 m_fontButton
->SetFont( *wxITALIC_FONT
);
1532 m_text
->SetFont( *wxITALIC_FONT
);
1535 void MyPanel::OnUpdateLabel( wxCommandEvent
&event
)
1537 m_label
->SetLabel(event
.GetInt() ? wxT("Very very very very very long text.")
1538 : wxT("Shorter text."));
1543 void MyPanel::OnSliderUpdate( wxCommandEvent
&WXUNUSED(event
) )
1546 m_gauge
->SetValue( m_slider
->GetValue() );
1547 m_gaugeVert
->SetValue( m_slider
->GetValue() / 2 );
1548 #endif // wxUSE_GAUGE
1551 #endif // wxUSE_SLIDER
1555 void MyPanel::OnSpinCtrlText(wxCommandEvent
& event
)
1560 s
.Printf( wxT("Spin ctrl text changed: now %d (from event: %s)\n"),
1561 m_spinctrl
->GetValue(), event
.GetString().c_str() );
1562 m_text
->AppendText(s
);
1566 void MyPanel::OnSpinCtrl(wxSpinEvent
& event
)
1571 s
.Printf( wxT("Spin ctrl changed: now %d (from event: %d)\n"),
1572 m_spinctrl
->GetValue(), event
.GetInt() );
1573 m_text
->AppendText(s
);
1577 void MyPanel::OnSpinCtrlUp(wxSpinEvent
& event
)
1581 m_text
->AppendText( wxString::Format(
1582 wxT("Spin up: %d (from event: %d)\n"),
1583 m_spinctrl
->GetValue(), event
.GetInt() ) );
1587 void MyPanel::OnSpinCtrlDown(wxSpinEvent
& event
)
1591 m_text
->AppendText( wxString::Format(
1592 wxT("Spin down: %d (from event: %d)\n"),
1593 m_spinctrl
->GetValue(), event
.GetInt() ) );
1597 #endif // wxUSE_SPINCTRL
1600 void MyPanel::OnSpinUp( wxSpinEvent
&event
)
1603 value
.Printf( wxT("Spin control up: current = %d\n"),
1604 m_spinbutton
->GetValue());
1606 if ( event
.GetPosition() > 17 )
1608 value
+= wxT("Preventing the spin button from going above 17.\n");
1613 m_text
->AppendText(value
);
1616 void MyPanel::OnSpinDown( wxSpinEvent
&event
)
1619 value
.Printf( wxT("Spin control down: current = %d\n"),
1620 m_spinbutton
->GetValue());
1622 if ( event
.GetPosition() < -17 )
1624 value
+= wxT("Preventing the spin button from going below -17.\n");
1629 m_text
->AppendText(value
);
1632 void MyPanel::OnSpinUpdate( wxSpinEvent
&event
)
1635 value
.Printf( wxT("%d"), event
.GetPosition() );
1636 m_spintext
->SetValue( value
);
1638 value
.Printf( wxT("Spin control range: (%d, %d), current = %d\n"),
1639 m_spinbutton
->GetMin(), m_spinbutton
->GetMax(),
1640 m_spinbutton
->GetValue());
1642 m_text
->AppendText(value
);
1645 void MyPanel::OnNewText( wxCommandEvent
& /* event */)
1647 m_nonWrappingText
->SetLabel( wxT("This text is short\nbut still spans\nover three lines.") );
1648 m_wrappingText
->SetLabel( wxT("This text is short but will still be wrapped if it is too long.") );
1649 m_wrappingText
->GetParent()->Layout();
1652 #if wxUSE_PROGRESSDLG
1654 void MyPanel::OnUpdateShowProgress( wxUpdateUIEvent
& event
)
1656 event
.Enable( m_spinbutton
->GetValue() > 0 );
1659 void MyPanel::OnShowProgress( wxCommandEvent
& WXUNUSED(event
) )
1661 int max
= m_spinbutton
->GetValue();
1665 wxLogError(wxT("You must set positive range!"));
1669 wxProgressDialog
dialog(wxT("Progress dialog example"),
1670 wxT("An informative message"),
1677 wxPD_ESTIMATED_TIME
|
1678 wxPD_REMAINING_TIME
);
1682 for ( int i
= 0; i
<= max
&& cont
; i
++ )
1687 cont
= dialog
.Update(i
, wxT("That's all, folks!"));
1689 else if ( i
== max
/ 2 )
1691 cont
= dialog
.Update(i
, wxT("Only a half left (very long message)!"));
1695 cont
= dialog
.Update(i
);
1701 *m_text
<< wxT("Progress dialog aborted!\n");
1705 *m_text
<< wxT("Countdown from ") << max
<< wxT(" finished.\n");
1709 #endif // wxUSE_PROGRESSDLG
1710 #endif // wxUSE_SPINBTN
1712 void MyPanel::OnSizerCheck( wxCommandEvent
&event
)
1714 switch (event
.GetId ()) {
1715 case ID_SIZER_CHECK1
:
1716 m_buttonSizer
->Show (m_sizerBtn1
, event
.IsChecked ());
1717 m_buttonSizer
->Layout ();
1719 case ID_SIZER_CHECK2
:
1720 m_buttonSizer
->Show (m_sizerBtn2
, event
.IsChecked ());
1721 m_buttonSizer
->Layout ();
1723 case ID_SIZER_CHECK3
:
1724 m_buttonSizer
->Show (m_sizerBtn3
, event
.IsChecked ());
1725 m_buttonSizer
->Layout ();
1727 case ID_SIZER_CHECK4
:
1728 m_buttonSizer
->Show (m_sizerBtn4
, event
.IsChecked ());
1729 m_buttonSizer
->Layout ();
1731 case ID_SIZER_CHECK14
:
1732 m_hsizer
->Show (m_buttonSizer
, event
.IsChecked ());
1733 m_hsizer
->Layout ();
1735 case ID_SIZER_CHECKBIG
:
1736 m_hsizer
->Show (m_bigBtn
, event
.IsChecked ());
1737 m_hsizer
->Layout ();
1745 //wxLog::RemoveTraceMask(wxT("focus"));
1746 delete wxLog::SetActiveTarget(m_logTargetOld
);
1748 delete m_book
->GetImageList();
1751 //----------------------------------------------------------------------
1753 //----------------------------------------------------------------------
1755 BEGIN_EVENT_TABLE(MyFrame
, wxFrame
)
1756 EVT_MENU(CONTROLS_QUIT
, MyFrame::OnQuit
)
1757 EVT_MENU(CONTROLS_ABOUT
, MyFrame::OnAbout
)
1758 EVT_MENU(CONTROLS_CLEAR_LOG
, MyFrame::OnClearLog
)
1760 EVT_MENU(CONTROLS_SET_TOOLTIP_DELAY
, MyFrame::OnSetTooltipDelay
)
1761 EVT_MENU(CONTROLS_ENABLE_TOOLTIPS
, MyFrame::OnToggleTooltips
)
1763 EVT_MENU(CONTROLS_SET_TOOLTIPS_MAX_WIDTH
, MyFrame::OnSetMaxTooltipWidth
)
1765 #endif // wxUSE_TOOLTIPS
1767 EVT_MENU(CONTROLS_ENABLE_ALL
, MyFrame::OnEnableAll
)
1768 EVT_MENU(CONTROLS_HIDE_ALL
, MyFrame::OnHideAll
)
1769 EVT_MENU(CONTROLS_HIDE_LIST
, MyFrame::OnHideList
)
1770 EVT_MENU(CONTROLS_CONTEXT_HELP
, MyFrame::OnContextHelp
)
1772 EVT_ICONIZE(MyFrame::OnIconized
)
1773 EVT_MAXIMIZE(MyFrame::OnMaximized
)
1774 EVT_SIZE(MyFrame::OnSize
)
1775 EVT_MOVE(MyFrame::OnMove
)
1777 EVT_IDLE(MyFrame::OnIdle
)
1780 MyFrame::MyFrame(const wxChar
*title
, int x
, int y
)
1781 : wxFrame(NULL
, wxID_ANY
, title
, wxPoint(x
, y
), wxSize(700, 450))
1783 SetHelpText( wxT("Controls sample demonstrating various widgets") );
1786 // The wxICON() macros loads an icon from a resource under Windows
1787 // and uses an #included XPM image under GTK+ and Motif
1789 SetIcon( wxICON(sample
) );
1791 wxMenu
*file_menu
= new wxMenu
;
1793 file_menu
->Append(CONTROLS_CLEAR_LOG
, wxT("&Clear log\tCtrl-L"));
1794 file_menu
->AppendSeparator();
1795 file_menu
->Append(CONTROLS_ABOUT
, wxT("&About\tF1"));
1796 file_menu
->AppendSeparator();
1797 file_menu
->Append(CONTROLS_QUIT
, wxT("E&xit\tAlt-X"), wxT("Quit controls sample"));
1799 wxMenuBar
*menu_bar
= new wxMenuBar
;
1800 menu_bar
->Append(file_menu
, wxT("&File"));
1803 wxMenu
*tooltip_menu
= new wxMenu
;
1804 tooltip_menu
->Append(CONTROLS_SET_TOOLTIP_DELAY
, wxT("Set &delay\tCtrl-D"));
1805 tooltip_menu
->AppendSeparator();
1806 tooltip_menu
->Append(CONTROLS_ENABLE_TOOLTIPS
, wxT("&Toggle tooltips\tCtrl-T"),
1807 wxT("enable/disable tooltips"), true);
1808 tooltip_menu
->Check(CONTROLS_ENABLE_TOOLTIPS
, true);
1810 tooltip_menu
->Append(CONTROLS_SET_TOOLTIPS_MAX_WIDTH
, "Set maximal &width");
1812 menu_bar
->Append(tooltip_menu
, wxT("&Tooltips"));
1813 #endif // wxUSE_TOOLTIPS
1815 wxMenu
*panel_menu
= new wxMenu
;
1816 panel_menu
->Append(CONTROLS_ENABLE_ALL
, wxT("&Disable all\tCtrl-E"),
1817 wxT("Enable/disable all panel controls"), true);
1818 panel_menu
->Append(CONTROLS_HIDE_ALL
, wxT("&Hide all\tCtrl-I"),
1819 wxT("Show/hide thoe whole panel controls"), true);
1820 panel_menu
->Append(CONTROLS_HIDE_LIST
, wxT("Hide &list ctrl\tCtrl-S"),
1821 wxT("Enable/disable all panel controls"), true);
1822 panel_menu
->Append(CONTROLS_CONTEXT_HELP
, wxT("&Context help...\tCtrl-H"),
1823 wxT("Get context help for a control"));
1824 menu_bar
->Append(panel_menu
, wxT("&Panel"));
1826 SetMenuBar(menu_bar
);
1830 #endif // wxUSE_STATUSBAR
1832 m_panel
= new MyPanel( this, 10, 10, 300, 100 );
1835 void MyFrame::OnQuit (wxCommandEvent
& WXUNUSED(event
) )
1840 void MyFrame::OnAbout( wxCommandEvent
& WXUNUSED(event
) )
1844 wxMessageDialog
dialog(this, wxT("This is a control sample"), wxT("About Controls"), wxOK
);
1848 void MyFrame::OnClearLog(wxCommandEvent
& WXUNUSED(event
))
1850 m_panel
->m_text
->Clear();
1854 void MyFrame::OnSetTooltipDelay(wxCommandEvent
& WXUNUSED(event
))
1856 static long s_delay
= 5000;
1859 delay
.Printf( wxT("%ld"), s_delay
);
1861 delay
= wxGetTextFromUser(wxT("Enter delay (in milliseconds)"),
1862 wxT("Set tooltip delay"),
1866 return; // cancelled
1868 wxSscanf(delay
, wxT("%ld"), &s_delay
);
1870 wxToolTip::SetDelay(s_delay
);
1872 wxLogStatus(this, wxT("Tooltip delay set to %ld milliseconds"), s_delay
);
1875 void MyFrame::OnToggleTooltips(wxCommandEvent
& WXUNUSED(event
))
1877 static bool s_enabled
= true;
1879 s_enabled
= !s_enabled
;
1881 wxToolTip::Enable(s_enabled
);
1883 wxLogStatus(this, wxT("Tooltips %sabled"), s_enabled
? wxT("en") : wxT("dis") );
1888 void MyFrame::OnSetMaxTooltipWidth(wxCommandEvent
& WXUNUSED(event
))
1890 static int s_maxWidth
= 0;
1892 wxNumberEntryDialog dlg
1895 "Change maximal tooltip width",
1896 "&Width in pixels:",
1902 if ( dlg
.ShowModal() == wxID_CANCEL
)
1905 s_maxWidth
= dlg
.GetValue();
1906 wxToolTip::SetMaxWidth(s_maxWidth
);
1908 // we need to set the tooltip again to test the new width
1909 m_panel
->SetAllToolTips();
1914 #endif // wxUSE_TOOLTIPS
1916 void MyFrame::OnEnableAll(wxCommandEvent
& WXUNUSED(event
))
1918 static bool s_enable
= true;
1920 s_enable
= !s_enable
;
1921 m_panel
->Enable(s_enable
);
1922 static bool s_enableCheckbox
= true;
1925 // this is a test for correct behaviour of either enabling or disabling
1926 // a child when its parent is disabled: the checkbox should have the
1927 // correct state when the parent is enabled back
1928 m_panel
->m_checkbox
->Enable(s_enableCheckbox
);
1929 s_enableCheckbox
= !s_enableCheckbox
;
1933 void MyFrame::OnHideAll(wxCommandEvent
& WXUNUSED(event
))
1935 static bool s_show
= true;
1938 m_panel
->Show(s_show
);
1941 void MyFrame::OnHideList(wxCommandEvent
& WXUNUSED(event
))
1943 static bool s_show
= true;
1946 m_panel
->m_listbox
->Show(s_show
);
1949 void MyFrame::OnContextHelp(wxCommandEvent
& WXUNUSED(event
))
1951 // starts a local event loop
1952 wxContextHelp
chelp(this);
1955 void MyFrame::OnMove( wxMoveEvent
& event
)
1958 UpdateStatusBar(event
.GetPosition(), GetSize());
1959 #endif // wxUSE_STATUSBAR
1964 void MyFrame::OnIconized( wxIconizeEvent
& event
)
1966 wxLogMessage(wxT("Frame %s"), event
.IsIconized() ? wxT("iconized")
1971 void MyFrame::OnMaximized( wxMaximizeEvent
& WXUNUSED(event
) )
1973 wxLogMessage(wxT("Frame maximized"));
1976 void MyFrame::OnSize( wxSizeEvent
& event
)
1979 UpdateStatusBar(GetPosition(), event
.GetSize());
1980 #endif // wxUSE_STATUSBAR
1985 void MyFrame::OnIdle( wxIdleEvent
& WXUNUSED(event
) )
1987 // track the window which has the focus in the status bar
1988 static wxWindow
*s_windowFocus
= NULL
;
1989 wxWindow
*focus
= wxWindow::FindFocus();
1990 if ( focus
!= s_windowFocus
)
1992 s_windowFocus
= focus
;
2002 , s_windowFocus
->GetName().c_str()
2004 , (unsigned int) s_windowFocus
->GetHWND()
2010 msg
= wxT("No focus");
2015 #endif // wxUSE_STATUSBAR
2019 void MyComboBox::OnChar(wxKeyEvent
& event
)
2021 wxLogMessage(wxT("MyComboBox::OnChar"));
2023 if ( event
.GetKeyCode() == 'w' )
2025 wxLogMessage(wxT("MyComboBox: 'w' will be ignored."));
2033 void MyComboBox::OnKeyDown(wxKeyEvent
& event
)
2035 wxLogMessage(wxT("MyComboBox::OnKeyDown"));
2037 if ( event
.GetKeyCode() == 'w' )
2039 wxLogMessage(wxT("MyComboBox: 'w' will be ignored."));
2047 void MyComboBox::OnKeyUp(wxKeyEvent
& event
)
2049 wxLogMessage(wxT("MyComboBox::OnKeyUp"));
2054 static void SetListboxClientData(const wxChar
*name
, wxListBox
*control
)
2056 size_t count
= control
->GetCount();
2057 for ( size_t n
= 0; n
< count
; n
++ )
2060 s
.Printf(wxT("%s client data for '%s'"),
2061 name
, control
->GetString(n
).c_str());
2063 control
->SetClientObject(n
, new wxStringClientData(s
));
2069 static void SetChoiceClientData(const wxChar
*name
, wxChoice
*control
)
2071 size_t count
= control
->GetCount();
2072 for ( size_t n
= 0; n
< count
; n
++ )
2075 s
.Printf(wxT("%s client data for '%s'"),
2076 name
, control
->GetString(n
).c_str());
2078 control
->SetClientObject(n
, new wxStringClientData(s
));
2082 #endif // wxUSE_CHOICE