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);
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 wxPanel
*panel2
= new wxPanel(panel
, -1, wxPoint(100, 0), wxSize(100, 200));
953 (void)new wxBitmapButton(panel2
, ID_BITMAP_BTN
, bitmap
, wxPoint(0, 20));
954 (void)new wxToggleButton(panel2
, ID_BITMAP_BTN_ENABLE
,
955 wxT("Enable/disable &bitmap"), wxPoint(0, 140));
957 #if defined(__WXMSW__) || defined(__WXMOTIF__)
958 // test for masked bitmap display
959 bitmap
= wxBitmap(wxT("test2.bmp"), wxBITMAP_TYPE_BMP
);
962 bitmap
.SetMask(new wxMask(bitmap
, *wxBLUE
));
964 (void)new wxStaticBitmap(panel
, wxID_ANY
, bitmap
, wxPoint(300, 120));
968 wxBitmap
bmp1(wxArtProvider::GetBitmap(wxART_INFORMATION
)),
969 bmp2(wxArtProvider::GetBitmap(wxART_WARNING
)),
970 bmp3(wxArtProvider::GetBitmap(wxART_QUESTION
));
971 wxBitmapButton
*bmpBtn
= new wxBitmapButton
978 bmpBtn
->SetBitmapSelected(bmp2
);
979 bmpBtn
->SetBitmapFocus(bmp3
);
981 (void)new wxToggleButton(panel
, ID_BUTTON_LABEL
,
982 wxT("&Toggle label"), wxPoint(250, 20));
984 m_label
= new wxStaticText(panel
, wxID_ANY
, wxT("Label with some long text"),
985 wxPoint(250, 60), wxDefaultSize
,
986 wxALIGN_RIGHT
/*| wxST_NO_AUTORESIZE*/);
987 m_label
->SetForegroundColour( *wxBLUE
);
989 m_book
->AddPage(panel
, wxT("wxBitmapXXX"));
992 panel
= new wxPanel(m_book
);
994 wxBoxSizer
*sizer
= new wxBoxSizer( wxVERTICAL
);
996 wxStaticBoxSizer
*csizer
=
997 new wxStaticBoxSizer (new wxStaticBox (panel
, wxID_ANY
, wxT("Show Buttons")), wxHORIZONTAL
);
999 wxCheckBox
*check1
, *check2
, *check3
, *check4
, *check14
, *checkBig
;
1000 check1
= new wxCheckBox (panel
, ID_SIZER_CHECK1
, wxT("1"));
1001 check1
->SetValue (true);
1002 csizer
->Add (check1
);
1003 check2
= new wxCheckBox (panel
, ID_SIZER_CHECK2
, wxT("2"));
1004 check2
->SetValue (true);
1005 csizer
->Add (check2
);
1006 check3
= new wxCheckBox (panel
, ID_SIZER_CHECK3
, wxT("3"));
1007 check3
->SetValue (true);
1008 csizer
->Add (check3
);
1009 check4
= new wxCheckBox (panel
, ID_SIZER_CHECK4
, wxT("4"));
1010 check4
->SetValue (true);
1011 csizer
->Add (check4
);
1012 check14
= new wxCheckBox (panel
, ID_SIZER_CHECK14
, wxT("1-4"));
1013 check14
->SetValue (true);
1014 csizer
->Add (check14
);
1015 checkBig
= new wxCheckBox (panel
, ID_SIZER_CHECKBIG
, wxT("Big"));
1016 checkBig
->SetValue (true);
1017 csizer
->Add (checkBig
);
1019 sizer
->Add (csizer
);
1021 m_hsizer
= new wxBoxSizer( wxHORIZONTAL
);
1023 m_buttonSizer
= new wxBoxSizer (wxVERTICAL
);
1025 m_sizerBtn1
= new wxButton(panel
, wxID_ANY
, wxT("Test Button &1 (tab order 1)") );
1026 m_buttonSizer
->Add( m_sizerBtn1
, 0, wxALL
, 10 );
1027 m_sizerBtn2
= new wxButton(panel
, wxID_ANY
, wxT("Test Button &2 (tab order 3)") );
1028 m_buttonSizer
->Add( m_sizerBtn2
, 0, wxALL
, 10 );
1029 m_sizerBtn3
= new wxButton(panel
, wxID_ANY
, wxT("Test Button &3 (tab order 2)") );
1030 m_buttonSizer
->Add( m_sizerBtn3
, 0, wxALL
, 10 );
1031 m_sizerBtn4
= new wxButton(panel
, wxID_ANY
, wxT("Test Button &4 (tab order 4)") );
1032 m_buttonSizer
->Add( m_sizerBtn4
, 0, wxALL
, 10 );
1034 m_sizerBtn3
->MoveBeforeInTabOrder(m_sizerBtn2
);
1036 m_hsizer
->Add (m_buttonSizer
);
1037 m_hsizer
->Add( 20,20, 1 );
1038 m_bigBtn
= new wxButton(panel
, wxID_ANY
, wxT("Multiline\nbutton") );
1039 m_hsizer
->Add( m_bigBtn
, 3, wxGROW
|wxALL
, 10 );
1041 sizer
->Add (m_hsizer
, 1, wxGROW
);
1043 panel
->SetSizer( sizer
);
1045 m_book
->AddPage(panel
, wxT("wxSizer"));
1047 // set the sizer for the panel itself
1048 sizer
= new wxBoxSizer(wxVERTICAL
);
1049 sizer
->Add(m_book
, wxSizerFlags().Border().Expand());
1050 sizer
->Add(m_text
, wxSizerFlags(1).Border().Expand());
1055 #endif // wxUSE_TOOLTIPS
1063 void ResetToolTip(wxWindow
*win
, const char *tip
)
1065 wxCHECK_RET( win
, "NULL window?" );
1067 win
->UnsetToolTip();
1068 win
->SetToolTip(tip
);
1073 void MyPanel::SetAllToolTips()
1075 ResetToolTip(FindWindow(ID_LISTBOX_FONT
), "Press here to set italic font");
1076 ResetToolTip(m_checkbox
, "Click here to disable the listbox");
1077 ResetToolTip(m_listbox
, "This is a list box");
1078 ResetToolTip(m_combo
, "This is a natural\ncombobox - can you believe me?");
1079 ResetToolTip(m_slider
, "This is a sliding slider");
1080 ResetToolTip(FindWindow(ID_RADIOBOX2
), "Ever seen a radiobox?");
1082 //ResetToolTip(m_radio, "Tooltip for the entire radiobox");
1083 for ( unsigned int nb
= 0; nb
< m_radio
->GetCount(); nb
++ )
1085 m_radio
->SetItemToolTip(nb
, "");
1086 m_radio
->SetItemToolTip(nb
, "tooltip for\n" + m_radio
->GetString(nb
));
1089 // remove the tooltip for one of the items
1090 m_radio
->SetItemToolTip(2, "");
1092 #endif // wxUSE_TOOLTIPS
1094 void MyPanel::OnIdle(wxIdleEvent
& event
)
1096 static const int INVALID_SELECTION
= -2;
1098 static int s_selCombo
= INVALID_SELECTION
;
1100 if (!m_combo
|| !m_choice
)
1106 int sel
= m_combo
->GetSelection();
1107 if ( sel
!= s_selCombo
)
1109 if ( s_selCombo
!= INVALID_SELECTION
)
1111 wxLogMessage(wxT("EVT_IDLE: combobox selection changed from %d to %d"),
1118 static int s_selChoice
= INVALID_SELECTION
;
1119 sel
= m_choice
->GetSelection();
1120 if ( sel
!= s_selChoice
)
1122 if ( s_selChoice
!= INVALID_SELECTION
)
1124 wxLogMessage(wxT("EVT_IDLE: choice selection changed from %d to %d"),
1134 void MyPanel::OnPageChanging( wxBookCtrlEvent
&event
)
1136 int selOld
= event
.GetOldSelection();
1139 if ( wxMessageBox(wxT("This demonstrates how a program may prevent the\n")
1140 wxT("page change from taking place - if you select\n")
1141 wxT("[No] the current page will stay the third one\n"),
1142 wxT("Control sample"),
1143 wxICON_QUESTION
| wxYES_NO
, this) != wxYES
)
1151 *m_text
<< wxT("Book selection is being changed from ") << selOld
1152 << wxT(" to ") << event
.GetSelection()
1153 << wxT(" (current page from book is ")
1154 << m_book
->GetSelection() << wxT(")\n");
1157 void MyPanel::OnPageChanged( wxBookCtrlEvent
&event
)
1159 *m_text
<< wxT("Book selection is now ") << event
.GetSelection()
1160 << wxT(" (from book: ") << m_book
->GetSelection()
1164 void MyPanel::OnTestButton(wxCommandEvent
& event
)
1166 wxLogMessage(wxT("Button %c clicked."),
1167 event
.GetId() == ID_BUTTON_TEST1
? wxT('1') : wxT('2'));
1170 void MyPanel::OnBmpButton(wxCommandEvent
& WXUNUSED(event
))
1172 wxLogMessage(wxT("Bitmap button clicked."));
1175 void MyPanel::OnBmpButtonToggle(wxCommandEvent
& event
)
1177 FindWindow(ID_BITMAP_BTN
)->Enable(!event
.IsChecked());
1180 void MyPanel::OnChangeColour(wxCommandEvent
& WXUNUSED(event
))
1182 static wxColour s_colOld
;
1184 SetThemeEnabled(false);
1185 // test panel colour changing and propagation to the subcontrols
1186 if ( s_colOld
.Ok() )
1188 SetBackgroundColour(s_colOld
);
1189 s_colOld
= wxNullColour
;
1191 m_lbSelectThis
->SetForegroundColour(wxNullColour
);
1192 m_lbSelectThis
->SetBackgroundColour(wxNullColour
);
1196 s_colOld
= wxColour(wxT("red"));
1197 SetBackgroundColour(wxT("white"));
1199 m_lbSelectThis
->SetForegroundColour(wxT("white"));
1200 m_lbSelectThis
->SetBackgroundColour(wxT("red"));
1203 m_lbSelectThis
->Refresh();
1207 void MyPanel::OnListBox( wxCommandEvent
&event
)
1209 wxListBox
*listbox
= event
.GetId() == ID_LISTBOX
? m_listbox
1212 bool deselect
= false;
1213 if (listbox
->HasFlag(wxLB_MULTIPLE
) || listbox
->HasFlag(wxLB_EXTENDED
))
1215 deselect
= !event
.IsSelection();
1217 m_text
->AppendText( wxT("ListBox deselection event\n") );
1220 m_text
->AppendText( wxT("ListBox event selection string is: '") );
1221 m_text
->AppendText( event
.GetString() );
1222 m_text
->AppendText( wxT("'\n") );
1224 // can't use GetStringSelection() with multiple selections, there could be
1225 // more than one of them
1226 if ( !listbox
->HasFlag(wxLB_MULTIPLE
) && !listbox
->HasFlag(wxLB_EXTENDED
) )
1228 m_text
->AppendText( wxT("ListBox control selection string is: '") );
1229 m_text
->AppendText( listbox
->GetStringSelection() );
1230 m_text
->AppendText( wxT("'\n") );
1233 wxStringClientData
*obj
= ((wxStringClientData
*)event
.GetClientObject());
1234 m_text
->AppendText( wxT("ListBox event client data string is: '") );
1235 if (obj
) // BC++ doesn't like use of '? .. : .. ' in this context
1236 m_text
->AppendText( obj
->GetData() );
1238 m_text
->AppendText( wxString(wxT("none")) );
1240 m_text
->AppendText( wxT("'\n") );
1241 m_text
->AppendText( wxT("ListBox control client data string is: '") );
1242 obj
= (wxStringClientData
*)listbox
->GetClientObject(event
.GetInt());
1244 m_text
->AppendText( obj
->GetData() );
1246 m_text
->AppendText( wxString(wxT("none")) );
1247 m_text
->AppendText( wxT("'\n") );
1250 void MyPanel::OnListBoxDoubleClick( wxCommandEvent
&event
)
1252 m_text
->AppendText( wxT("ListBox double click string is: ") );
1253 m_text
->AppendText( event
.GetString() );
1254 m_text
->AppendText( wxT("\n") );
1257 void MyPanel::OnListBoxButtons( wxCommandEvent
&event
)
1259 switch (event
.GetId())
1261 case ID_LISTBOX_ENABLE
:
1263 m_text
->AppendText(wxT("Checkbox clicked.\n"));
1265 wxCheckBox
*cb
= (wxCheckBox
*)event
.GetEventObject();
1267 cb
->SetToolTip( wxT("Click to enable listbox") );
1269 cb
->SetToolTip( wxT("Click to disable listbox") );
1270 #endif // wxUSE_TOOLTIPS
1271 m_listbox
->Enable( event
.GetInt() == 0 );
1272 m_lbSelectThis
->Enable( event
.GetInt() == 0 );
1273 m_lbSelectNum
->Enable( event
.GetInt() == 0 );
1274 m_listboxSorted
->Enable( event
.GetInt() == 0 );
1275 FindWindow(ID_CHANGE_COLOUR
)->Enable( event
.GetInt() == 0 );
1278 case ID_LISTBOX_SEL_NUM
:
1280 if (m_listbox
->GetCount() > 2)
1281 m_listbox
->SetSelection( 2 );
1282 if (m_listboxSorted
->GetCount() > 2)
1283 m_listboxSorted
->SetSelection( 2 );
1284 m_lbSelectThis
->WarpPointer( 40, 14 );
1287 case ID_LISTBOX_SEL_STR
:
1289 if (m_listbox
->FindString(wxT("This")) != wxNOT_FOUND
)
1290 m_listbox
->SetStringSelection( wxT("This") );
1291 if (m_listboxSorted
->FindString(wxT("This")) != wxNOT_FOUND
)
1292 m_listboxSorted
->SetStringSelection( wxT("This") );
1293 m_lbSelectNum
->WarpPointer( 40, 14 );
1296 case ID_LISTBOX_CLEAR
:
1299 m_listboxSorted
->Clear();
1302 case ID_LISTBOX_APPEND
:
1304 m_listbox
->Append( wxT("Hi kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk!") );
1305 m_listboxSorted
->Append( wxT("Hi hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh!") );
1308 case ID_LISTBOX_DELETE
:
1311 idx
= m_listbox
->GetSelection();
1312 if ( idx
!= wxNOT_FOUND
)
1313 m_listbox
->Delete( idx
);
1314 idx
= m_listboxSorted
->GetSelection();
1315 if ( idx
!= wxNOT_FOUND
)
1316 m_listboxSorted
->Delete( idx
);
1319 case ID_LISTBOX_FONT
:
1321 m_listbox
->SetFont( *wxITALIC_FONT
);
1322 m_listboxSorted
->SetFont( *wxITALIC_FONT
);
1323 m_checkbox
->SetFont( *wxITALIC_FONT
);
1331 static wxString
GetDataString(wxClientData
*data
)
1333 return data
? static_cast<wxStringClientData
*>(data
)->GetData()
1337 void MyPanel::OnChoice( wxCommandEvent
&event
)
1339 wxChoice
*choice
= event
.GetId() == ID_CHOICE
? m_choice
1342 const int sel
= choice
->GetSelection();
1344 wxClientData
*dataEvt
= event
.GetClientObject(),
1345 *dataCtrl
= choice
->GetClientObject(sel
);
1347 wxLogMessage(wxT("EVT_CHOICE: item %d/%d (event/control), ")
1348 wxT("string \"%s\"/\"%s\", ")
1349 wxT("data \"%s\"/\"%s\""),
1350 (int)event
.GetInt(),
1353 choice
->GetStringSelection(),
1354 GetDataString(dataEvt
),
1355 GetDataString(dataCtrl
));
1358 void MyPanel::OnChoiceButtons( wxCommandEvent
&event
)
1360 switch (event
.GetId())
1362 case ID_CHOICE_ENABLE
:
1364 m_choice
->Enable( event
.GetInt() == 0 );
1365 m_choiceSorted
->Enable( event
.GetInt() == 0 );
1368 case ID_CHOICE_SEL_NUM
:
1370 m_choice
->SetSelection( 2 );
1371 m_choiceSorted
->SetSelection( 2 );
1374 case ID_CHOICE_SEL_STR
:
1376 m_choice
->SetStringSelection( wxT("This") );
1377 m_choiceSorted
->SetStringSelection( wxT("This") );
1380 case ID_CHOICE_CLEAR
:
1383 m_choiceSorted
->Clear();
1386 case ID_CHOICE_APPEND
:
1388 m_choice
->Append( wxT("Hi!") );
1389 m_choiceSorted
->Append( wxT("Hi!") );
1392 case ID_CHOICE_DELETE
:
1394 int idx
= m_choice
->GetSelection();
1395 if ( idx
!= wxNOT_FOUND
)
1396 m_choice
->Delete( idx
);
1397 idx
= m_choiceSorted
->GetSelection();
1398 if ( idx
!= wxNOT_FOUND
)
1399 m_choiceSorted
->Delete( idx
);
1402 case ID_CHOICE_FONT
:
1404 m_choice
->SetFont( *wxITALIC_FONT
);
1405 m_choiceSorted
->SetFont( *wxITALIC_FONT
);
1410 #endif // wxUSE_CHOICE
1412 void MyPanel::OnCombo( wxCommandEvent
&event
)
1417 wxLogMessage(wxT("EVT_COMBOBOX: item %d/%d (event/control), string \"%s\"/\"%s\""),
1418 (int)event
.GetInt(),
1419 m_combo
->GetSelection(),
1420 event
.GetString().c_str(),
1421 m_combo
->GetStringSelection().c_str());
1424 void MyPanel::OnComboTextChanged(wxCommandEvent
& event
)
1428 wxLogMessage(wxT("EVT_TEXT for the combobox: \"%s\" (event) or \"%s\" (control)."),
1429 event
.GetString().c_str(),
1430 m_combo
->GetValue().c_str());
1434 void MyPanel::OnComboTextEnter(wxCommandEvent
& WXUNUSED(event
))
1438 wxLogMessage(wxT("Enter pressed in the combobox: value is '%s'."),
1439 m_combo
->GetValue().c_str());
1443 void MyPanel::OnComboButtons( wxCommandEvent
&event
)
1445 switch (event
.GetId())
1447 case ID_COMBO_ENABLE
:
1449 m_combo
->Enable( event
.GetInt() == 0 );
1452 case ID_COMBO_SEL_NUM
:
1454 m_combo
->SetSelection( 2 );
1457 case ID_COMBO_SEL_STR
:
1459 m_combo
->SetStringSelection( wxT("This") );
1462 case ID_COMBO_CLEAR
:
1467 case ID_COMBO_APPEND
:
1469 m_combo
->Append( wxT("Hi!") );
1472 case ID_COMBO_DELETE
:
1474 int idx
= m_combo
->GetSelection();
1475 m_combo
->Delete( idx
);
1480 m_combo
->SetFont( *wxITALIC_FONT
);
1483 case ID_COMBO_SET_TEXT
:
1485 m_combo
->SetString( 2, wxT("Hi!") );
1491 void MyPanel::OnRadio( wxCommandEvent
&event
)
1493 m_text
->AppendText( wxT("RadioBox selection string is: ") );
1494 m_text
->AppendText( event
.GetString() );
1495 m_text
->AppendText( wxT("\n") );
1498 void MyPanel::OnRadioButton1( wxCommandEvent
& WXUNUSED(event
) )
1500 wxMessageBox(wxT("First wxRadioButton selected."), wxT("wxControl sample"));
1503 void MyPanel::OnRadioButton2( wxCommandEvent
& WXUNUSED(event
) )
1505 m_text
->AppendText(wxT("Second wxRadioButton selected.\n"));
1508 void MyPanel::OnRadioButtons( wxCommandEvent
&event
)
1510 switch (event
.GetId())
1512 case ID_RADIOBOX_ENABLE
:
1513 m_radio
->Enable( event
.GetInt() == 0 );
1516 case ID_RADIOBOX_SEL_NUM
:
1517 m_radio
->SetSelection( 2 );
1520 case ID_RADIOBOX_SEL_STR
:
1521 m_radio
->SetStringSelection( wxT("This") );
1524 case ID_RADIOBOX_FONT
:
1525 m_radio
->SetFont( *wxITALIC_FONT
);
1530 void MyPanel::OnSetFont( wxCommandEvent
&WXUNUSED(event
) )
1532 m_fontButton
->SetFont( *wxITALIC_FONT
);
1533 m_text
->SetFont( *wxITALIC_FONT
);
1536 void MyPanel::OnUpdateLabel( wxCommandEvent
&event
)
1538 m_label
->SetLabel(event
.GetInt() ? wxT("Very very very very very long text.")
1539 : wxT("Shorter text."));
1544 void MyPanel::OnSliderUpdate( wxCommandEvent
&WXUNUSED(event
) )
1547 m_gauge
->SetValue( m_slider
->GetValue() );
1548 m_gaugeVert
->SetValue( m_slider
->GetValue() / 2 );
1549 #endif // wxUSE_GAUGE
1552 #endif // wxUSE_SLIDER
1556 void MyPanel::OnSpinCtrlText(wxCommandEvent
& event
)
1561 s
.Printf( wxT("Spin ctrl text changed: now %d (from event: %s)\n"),
1562 m_spinctrl
->GetValue(), event
.GetString().c_str() );
1563 m_text
->AppendText(s
);
1567 void MyPanel::OnSpinCtrl(wxSpinEvent
& event
)
1572 s
.Printf( wxT("Spin ctrl changed: now %d (from event: %d)\n"),
1573 m_spinctrl
->GetValue(), event
.GetInt() );
1574 m_text
->AppendText(s
);
1578 void MyPanel::OnSpinCtrlUp(wxSpinEvent
& event
)
1582 m_text
->AppendText( wxString::Format(
1583 wxT("Spin up: %d (from event: %d)\n"),
1584 m_spinctrl
->GetValue(), event
.GetInt() ) );
1588 void MyPanel::OnSpinCtrlDown(wxSpinEvent
& event
)
1592 m_text
->AppendText( wxString::Format(
1593 wxT("Spin down: %d (from event: %d)\n"),
1594 m_spinctrl
->GetValue(), event
.GetInt() ) );
1598 #endif // wxUSE_SPINCTRL
1601 void MyPanel::OnSpinUp( wxSpinEvent
&event
)
1604 value
.Printf( wxT("Spin control up: current = %d\n"),
1605 m_spinbutton
->GetValue());
1607 if ( event
.GetPosition() > 17 )
1609 value
+= wxT("Preventing the spin button from going above 17.\n");
1614 m_text
->AppendText(value
);
1617 void MyPanel::OnSpinDown( wxSpinEvent
&event
)
1620 value
.Printf( wxT("Spin control down: current = %d\n"),
1621 m_spinbutton
->GetValue());
1623 if ( event
.GetPosition() < -17 )
1625 value
+= wxT("Preventing the spin button from going below -17.\n");
1630 m_text
->AppendText(value
);
1633 void MyPanel::OnSpinUpdate( wxSpinEvent
&event
)
1636 value
.Printf( wxT("%d"), event
.GetPosition() );
1637 m_spintext
->SetValue( value
);
1639 value
.Printf( wxT("Spin control range: (%d, %d), current = %d\n"),
1640 m_spinbutton
->GetMin(), m_spinbutton
->GetMax(),
1641 m_spinbutton
->GetValue());
1643 m_text
->AppendText(value
);
1646 void MyPanel::OnNewText( wxCommandEvent
& /* event */)
1648 m_nonWrappingText
->SetLabel( wxT("This text is short\nbut still spans\nover three lines.") );
1649 m_wrappingText
->SetLabel( wxT("This text is short but will still be wrapped if it is too long.") );
1650 m_wrappingText
->GetParent()->Layout();
1653 #if wxUSE_PROGRESSDLG
1655 void MyPanel::OnUpdateShowProgress( wxUpdateUIEvent
& event
)
1657 event
.Enable( m_spinbutton
->GetValue() > 0 );
1660 void MyPanel::OnShowProgress( wxCommandEvent
& WXUNUSED(event
) )
1662 int max
= m_spinbutton
->GetValue();
1666 wxLogError(wxT("You must set positive range!"));
1670 wxProgressDialog
dialog(wxT("Progress dialog example"),
1671 wxT("An informative message"),
1678 wxPD_ESTIMATED_TIME
|
1679 wxPD_REMAINING_TIME
);
1683 for ( int i
= 0; i
<= max
&& cont
; i
++ )
1688 cont
= dialog
.Update(i
, wxT("That's all, folks!"));
1690 else if ( i
== max
/ 2 )
1692 cont
= dialog
.Update(i
, wxT("Only a half left (very long message)!"));
1696 cont
= dialog
.Update(i
);
1702 *m_text
<< wxT("Progress dialog aborted!\n");
1706 *m_text
<< wxT("Countdown from ") << max
<< wxT(" finished.\n");
1710 #endif // wxUSE_PROGRESSDLG
1711 #endif // wxUSE_SPINBTN
1713 void MyPanel::OnSizerCheck( wxCommandEvent
&event
)
1715 switch (event
.GetId ()) {
1716 case ID_SIZER_CHECK1
:
1717 m_buttonSizer
->Show (m_sizerBtn1
, event
.IsChecked ());
1718 m_buttonSizer
->Layout ();
1720 case ID_SIZER_CHECK2
:
1721 m_buttonSizer
->Show (m_sizerBtn2
, event
.IsChecked ());
1722 m_buttonSizer
->Layout ();
1724 case ID_SIZER_CHECK3
:
1725 m_buttonSizer
->Show (m_sizerBtn3
, event
.IsChecked ());
1726 m_buttonSizer
->Layout ();
1728 case ID_SIZER_CHECK4
:
1729 m_buttonSizer
->Show (m_sizerBtn4
, event
.IsChecked ());
1730 m_buttonSizer
->Layout ();
1732 case ID_SIZER_CHECK14
:
1733 m_hsizer
->Show (m_buttonSizer
, event
.IsChecked ());
1734 m_hsizer
->Layout ();
1736 case ID_SIZER_CHECKBIG
:
1737 m_hsizer
->Show (m_bigBtn
, event
.IsChecked ());
1738 m_hsizer
->Layout ();
1746 //wxLog::RemoveTraceMask(wxT("focus"));
1747 delete wxLog::SetActiveTarget(m_logTargetOld
);
1749 delete m_book
->GetImageList();
1752 //----------------------------------------------------------------------
1754 //----------------------------------------------------------------------
1756 BEGIN_EVENT_TABLE(MyFrame
, wxFrame
)
1757 EVT_MENU(CONTROLS_QUIT
, MyFrame::OnQuit
)
1758 EVT_MENU(CONTROLS_ABOUT
, MyFrame::OnAbout
)
1759 EVT_MENU(CONTROLS_CLEAR_LOG
, MyFrame::OnClearLog
)
1761 EVT_MENU(CONTROLS_SET_TOOLTIP_DELAY
, MyFrame::OnSetTooltipDelay
)
1762 EVT_MENU(CONTROLS_ENABLE_TOOLTIPS
, MyFrame::OnToggleTooltips
)
1764 EVT_MENU(CONTROLS_SET_TOOLTIPS_MAX_WIDTH
, MyFrame::OnSetMaxTooltipWidth
)
1766 #endif // wxUSE_TOOLTIPS
1768 EVT_MENU(CONTROLS_ENABLE_ALL
, MyFrame::OnEnableAll
)
1769 EVT_MENU(CONTROLS_HIDE_ALL
, MyFrame::OnHideAll
)
1770 EVT_MENU(CONTROLS_HIDE_LIST
, MyFrame::OnHideList
)
1771 EVT_MENU(CONTROLS_CONTEXT_HELP
, MyFrame::OnContextHelp
)
1773 EVT_ICONIZE(MyFrame::OnIconized
)
1774 EVT_MAXIMIZE(MyFrame::OnMaximized
)
1775 EVT_SIZE(MyFrame::OnSize
)
1776 EVT_MOVE(MyFrame::OnMove
)
1778 EVT_IDLE(MyFrame::OnIdle
)
1781 MyFrame::MyFrame(const wxChar
*title
, int x
, int y
)
1782 : wxFrame(NULL
, wxID_ANY
, title
, wxPoint(x
, y
), wxSize(700, 450))
1784 SetHelpText( wxT("Controls sample demonstrating various widgets") );
1787 // The wxICON() macros loads an icon from a resource under Windows
1788 // and uses an #included XPM image under GTK+ and Motif
1790 SetIcon( wxICON(sample
) );
1792 wxMenu
*file_menu
= new wxMenu
;
1794 file_menu
->Append(CONTROLS_CLEAR_LOG
, wxT("&Clear log\tCtrl-L"));
1795 file_menu
->AppendSeparator();
1796 file_menu
->Append(CONTROLS_ABOUT
, wxT("&About\tF1"));
1797 file_menu
->AppendSeparator();
1798 file_menu
->Append(CONTROLS_QUIT
, wxT("E&xit\tAlt-X"), wxT("Quit controls sample"));
1800 wxMenuBar
*menu_bar
= new wxMenuBar
;
1801 menu_bar
->Append(file_menu
, wxT("&File"));
1804 wxMenu
*tooltip_menu
= new wxMenu
;
1805 tooltip_menu
->Append(CONTROLS_SET_TOOLTIP_DELAY
, wxT("Set &delay\tCtrl-D"));
1806 tooltip_menu
->AppendSeparator();
1807 tooltip_menu
->Append(CONTROLS_ENABLE_TOOLTIPS
, wxT("&Toggle tooltips\tCtrl-T"),
1808 wxT("enable/disable tooltips"), true);
1809 tooltip_menu
->Check(CONTROLS_ENABLE_TOOLTIPS
, true);
1811 tooltip_menu
->Append(CONTROLS_SET_TOOLTIPS_MAX_WIDTH
, "Set maximal &width");
1813 menu_bar
->Append(tooltip_menu
, wxT("&Tooltips"));
1814 #endif // wxUSE_TOOLTIPS
1816 wxMenu
*panel_menu
= new wxMenu
;
1817 panel_menu
->Append(CONTROLS_ENABLE_ALL
, wxT("&Disable all\tCtrl-E"),
1818 wxT("Enable/disable all panel controls"), true);
1819 panel_menu
->Append(CONTROLS_HIDE_ALL
, wxT("&Hide all\tCtrl-I"),
1820 wxT("Show/hide thoe whole panel controls"), true);
1821 panel_menu
->Append(CONTROLS_HIDE_LIST
, wxT("Hide &list ctrl\tCtrl-S"),
1822 wxT("Enable/disable all panel controls"), true);
1823 panel_menu
->Append(CONTROLS_CONTEXT_HELP
, wxT("&Context help...\tCtrl-H"),
1824 wxT("Get context help for a control"));
1825 menu_bar
->Append(panel_menu
, wxT("&Panel"));
1827 SetMenuBar(menu_bar
);
1831 #endif // wxUSE_STATUSBAR
1833 m_panel
= new MyPanel( this, 10, 10, 300, 100 );
1836 void MyFrame::OnQuit (wxCommandEvent
& WXUNUSED(event
) )
1841 void MyFrame::OnAbout( wxCommandEvent
& WXUNUSED(event
) )
1845 wxMessageDialog
dialog(this, wxT("This is a control sample"), wxT("About Controls"), wxOK
);
1849 void MyFrame::OnClearLog(wxCommandEvent
& WXUNUSED(event
))
1851 m_panel
->m_text
->Clear();
1855 void MyFrame::OnSetTooltipDelay(wxCommandEvent
& WXUNUSED(event
))
1857 static long s_delay
= 5000;
1860 delay
.Printf( wxT("%ld"), s_delay
);
1862 delay
= wxGetTextFromUser(wxT("Enter delay (in milliseconds)"),
1863 wxT("Set tooltip delay"),
1867 return; // cancelled
1869 wxSscanf(delay
, wxT("%ld"), &s_delay
);
1871 wxToolTip::SetDelay(s_delay
);
1873 wxLogStatus(this, wxT("Tooltip delay set to %ld milliseconds"), s_delay
);
1876 void MyFrame::OnToggleTooltips(wxCommandEvent
& WXUNUSED(event
))
1878 static bool s_enabled
= true;
1880 s_enabled
= !s_enabled
;
1882 wxToolTip::Enable(s_enabled
);
1884 wxLogStatus(this, wxT("Tooltips %sabled"), s_enabled
? wxT("en") : wxT("dis") );
1889 void MyFrame::OnSetMaxTooltipWidth(wxCommandEvent
& WXUNUSED(event
))
1891 static int s_maxWidth
= 0;
1893 wxNumberEntryDialog dlg
1896 "Change maximal tooltip width",
1897 "&Width in pixels:",
1903 if ( dlg
.ShowModal() == wxID_CANCEL
)
1906 s_maxWidth
= dlg
.GetValue();
1907 wxToolTip::SetMaxWidth(s_maxWidth
);
1909 // we need to set the tooltip again to test the new width
1910 m_panel
->SetAllToolTips();
1915 #endif // wxUSE_TOOLTIPS
1917 void MyFrame::OnEnableAll(wxCommandEvent
& WXUNUSED(event
))
1919 static bool s_enable
= true;
1921 s_enable
= !s_enable
;
1922 m_panel
->Enable(s_enable
);
1923 static bool s_enableCheckbox
= true;
1926 // this is a test for correct behaviour of either enabling or disabling
1927 // a child when its parent is disabled: the checkbox should have the
1928 // correct state when the parent is enabled back
1929 m_panel
->m_checkbox
->Enable(s_enableCheckbox
);
1930 s_enableCheckbox
= !s_enableCheckbox
;
1934 void MyFrame::OnHideAll(wxCommandEvent
& WXUNUSED(event
))
1936 static bool s_show
= true;
1939 m_panel
->Show(s_show
);
1942 void MyFrame::OnHideList(wxCommandEvent
& WXUNUSED(event
))
1944 static bool s_show
= true;
1947 m_panel
->m_listbox
->Show(s_show
);
1950 void MyFrame::OnContextHelp(wxCommandEvent
& WXUNUSED(event
))
1952 // starts a local event loop
1953 wxContextHelp
chelp(this);
1956 void MyFrame::OnMove( wxMoveEvent
& event
)
1959 UpdateStatusBar(event
.GetPosition(), GetSize());
1960 #endif // wxUSE_STATUSBAR
1965 void MyFrame::OnIconized( wxIconizeEvent
& event
)
1967 wxLogMessage(wxT("Frame %s"), event
.IsIconized() ? wxT("iconized")
1972 void MyFrame::OnMaximized( wxMaximizeEvent
& WXUNUSED(event
) )
1974 wxLogMessage(wxT("Frame maximized"));
1977 void MyFrame::OnSize( wxSizeEvent
& event
)
1980 UpdateStatusBar(GetPosition(), event
.GetSize());
1981 #endif // wxUSE_STATUSBAR
1986 void MyFrame::OnIdle( wxIdleEvent
& WXUNUSED(event
) )
1988 // track the window which has the focus in the status bar
1989 static wxWindow
*s_windowFocus
= NULL
;
1990 wxWindow
*focus
= wxWindow::FindFocus();
1991 if ( focus
!= s_windowFocus
)
1993 s_windowFocus
= focus
;
2003 , s_windowFocus
->GetName().c_str()
2005 , (unsigned int) s_windowFocus
->GetHWND()
2011 msg
= wxT("No focus");
2016 #endif // wxUSE_STATUSBAR
2020 void MyComboBox::OnChar(wxKeyEvent
& event
)
2022 wxLogMessage(wxT("MyComboBox::OnChar"));
2024 if ( event
.GetKeyCode() == 'w' )
2026 wxLogMessage(wxT("MyComboBox: 'w' will be ignored."));
2034 void MyComboBox::OnKeyDown(wxKeyEvent
& event
)
2036 wxLogMessage(wxT("MyComboBox::OnKeyDown"));
2038 if ( event
.GetKeyCode() == 'w' )
2040 wxLogMessage(wxT("MyComboBox: 'w' will be ignored."));
2048 void MyComboBox::OnKeyUp(wxKeyEvent
& event
)
2050 wxLogMessage(wxT("MyComboBox::OnKeyUp"));
2055 static void SetListboxClientData(const wxChar
*name
, wxListBox
*control
)
2057 size_t count
= control
->GetCount();
2058 for ( size_t n
= 0; n
< count
; n
++ )
2061 s
.Printf(wxT("%s client data for '%s'"),
2062 name
, control
->GetString(n
).c_str());
2064 control
->SetClientObject(n
, new wxStringClientData(s
));
2070 static void SetChoiceClientData(const wxChar
*name
, wxChoice
*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
));
2083 #endif // wxUSE_CHOICE