+
+ m_book->SetImageList(imagelist);
+#else
+
+ // No images for now
+#define Image_List -1
+#define Image_Choice -1
+#define Image_Combo -1
+#define Image_Text -1
+#define Image_Radio -1
+#if wxUSE_GAUGE
+#define Image_Gauge -1
+#endif // wxUSE_GAUGE
+#define Image_Max -1
+
+#endif
+
+ wxPanel *panel = new wxPanel(m_book);
+ m_listbox = new wxListBox( panel, ID_LISTBOX,
+ wxPoint(10,10), wxSize(120,70),
+ 5, choices, wxLB_MULTIPLE |wxLB_ALWAYS_SB );
+ m_listboxSorted = new wxListBox( panel, ID_LISTBOX_SORTED,
+ wxPoint(10,90), wxSize(120,70),
+ 5, choices, wxLB_SORT );
+
+ SetListboxClientData(wxT("listbox"), m_listbox);
+ SetListboxClientData(wxT("listbox"), m_listboxSorted);
+
+ m_listbox->SetCursor(*wxCROSS_CURSOR);
+#if wxUSE_TOOLTIPS
+ m_listbox->SetToolTip( _T("This is a list box") );
+#endif // wxUSE_TOOLTIPS
+
+ m_lbSelectNum = new wxButton( panel, ID_LISTBOX_SEL_NUM, _T("Select #&2"), wxPoint(180,30), wxSize(140,30) );
+ m_lbSelectThis = new wxButton( panel, ID_LISTBOX_SEL_STR, _T("&Select 'This'"), wxPoint(340,30), wxSize(140,30) );
+ (void)new wxButton( panel, ID_LISTBOX_CLEAR, _T("&Clear"), wxPoint(180,80), wxSize(140,30) );
+ (void)new MyButton( panel, ID_LISTBOX_APPEND, _T("&Append 'Hi!'"), wxPoint(340,80), wxSize(140,30) );
+ (void)new wxButton( panel, ID_LISTBOX_DELETE, _T("D&elete selected item"), wxPoint(180,130), wxSize(140,30) );
+ wxButton *button = new MyButton( panel, ID_LISTBOX_FONT, _T("Set &Italic font"), wxPoint(340,130), wxSize(140,30) );
+
+ button->SetDefault();
+
+#if wxUSE_TOOLTIPS
+ button->SetToolTip( _T("Press here to set italic font") );
+#endif // wxUSE_TOOLTIPS
+
+ m_checkbox = new wxCheckBox( panel, ID_LISTBOX_ENABLE, _T("&Disable"), wxPoint(20,170) );
+ m_checkbox->SetValue(false);
+ button->MoveAfterInTabOrder(m_checkbox);
+#if wxUSE_TOOLTIPS
+ m_checkbox->SetToolTip( _T("Click here to disable the listbox") );
+#endif // wxUSE_TOOLTIPS
+ (void)new wxCheckBox( panel, ID_CHANGE_COLOUR, _T("&Toggle colour"),
+ wxPoint(110,170) );
+ panel->SetCursor(wxCursor(wxCURSOR_HAND));
+ m_book->AddPage(panel, _T("wxListBox"), true, Image_List);
+
+#if wxUSE_CHOICE
+ panel = new wxPanel(m_book);
+ m_choice = new MyChoice( panel, ID_CHOICE, wxPoint(10,10), wxSize(120,wxDefaultCoord), 5, choices );
+ m_choiceSorted = new MyChoice( panel, ID_CHOICE_SORTED, wxPoint(10,70), wxSize(120,wxDefaultCoord),
+ 5, choices, wxCB_SORT );
+
+ SetChoiceClientData(wxT("choice"), m_choice);
+ SetChoiceClientData(wxT("choice"), m_choiceSorted);
+
+ m_choice->SetSelection(2);
+ (void)new wxButton( panel, ID_CHOICE_SEL_NUM, _T("Select #&2"), wxPoint(180,30), wxSize(140,30) );
+ (void)new wxButton( panel, ID_CHOICE_SEL_STR, _T("&Select 'This'"), wxPoint(340,30), wxSize(140,30) );
+ (void)new wxButton( panel, ID_CHOICE_CLEAR, _T("&Clear"), wxPoint(180,80), wxSize(140,30) );
+ (void)new wxButton( panel, ID_CHOICE_APPEND, _T("&Append 'Hi!'"), wxPoint(340,80), wxSize(140,30) );
+ (void)new wxButton( panel, ID_CHOICE_DELETE, _T("D&elete selected item"), wxPoint(180,130), wxSize(140,30) );
+ (void)new wxButton( panel, ID_CHOICE_FONT, _T("Set &Italic font"), wxPoint(340,130), wxSize(140,30) );
+ (void)new wxCheckBox( panel, ID_CHOICE_ENABLE, _T("&Disable"), wxPoint(20,130), wxSize(140,30) );
+
+ m_book->AddPage(panel, _T("wxChoice"), false, Image_Choice);
+#endif // wxUSE_CHOICE
+
+ panel = new wxPanel(m_book);
+ (void)new wxStaticBox( panel, wxID_ANY, _T("&Box around combobox"),
+ wxPoint(5, 5), wxSize(150, 100));
+ m_combo = new MyComboBox( panel, ID_COMBO, _T("This"),
+ wxPoint(20,25), wxSize(120, wxDefaultCoord),
+ 5, choices,
+ wxTE_PROCESS_ENTER);
+
+ (void)new wxButton( panel, ID_COMBO_SEL_NUM, _T("Select #&2"), wxPoint(180,30), wxSize(140,30) );
+ (void)new wxButton( panel, ID_COMBO_SEL_STR, _T("&Select 'This'"), wxPoint(340,30), wxSize(140,30) );
+ (void)new wxButton( panel, ID_COMBO_CLEAR, _T("&Clear"), wxPoint(180,80), wxSize(140,30) );
+ (void)new wxButton( panel, ID_COMBO_APPEND, _T("&Append 'Hi!'"), wxPoint(340,80), wxSize(140,30) );
+ (void)new wxButton( panel, ID_COMBO_DELETE, _T("D&elete selected item"), wxPoint(180,130), wxSize(140,30) );
+ (void)new wxButton( panel, ID_COMBO_FONT, _T("Set &Italic font"), wxPoint(340,130), wxSize(140,30) );
+ (void)new wxButton( panel, ID_COMBO_SET_TEXT, _T("Set 'Hi!' at #2"), wxPoint(340,180), wxSize(140,30) );
+ (void)new wxCheckBox( panel, ID_COMBO_ENABLE, _T("&Disable"), wxPoint(20,130), wxSize(140,30) );
+ m_book->AddPage(panel, _T("wxComboBox"), false, Image_Combo);
+
+ wxString choices2[] =
+ {
+ _T("First"), _T("Second"),
+ /* "Third",
+ "Fourth", "Fifth", "Sixth",
+ "Seventh", "Eighth", "Nineth", "Tenth" */
+ };
+
+ panel = new wxPanel(m_book);
+ (void)new MyRadioBox( panel, ID_RADIOBOX, _T("&That"), wxPoint(10,160), wxDefaultSize, WXSIZEOF(choices2), choices2, 1, wxRA_SPECIFY_ROWS );
+ m_radio = new wxRadioBox( panel, ID_RADIOBOX, _T("T&his"), wxPoint(10,10), wxDefaultSize, WXSIZEOF(choices), choices, 1, wxRA_SPECIFY_COLS );
+
+#if wxUSE_TOOLTIPS
+ m_combo->SetToolTip(_T("This is a natural\ncombobox - can you believe me?"));
+ m_radio->SetToolTip(_T("Ever seen a radiobox?"));
+#endif // wxUSE_TOOLTIPS
+
+ (void)new wxButton( panel, ID_RADIOBOX_SEL_NUM, _T("Select #&2"), wxPoint(180,30), wxSize(140,30) );
+ (void)new wxButton( panel, ID_RADIOBOX_SEL_STR, _T("&Select 'This'"), wxPoint(180,80), wxSize(140,30) );
+ m_fontButton = new wxButton( panel, ID_SET_FONT, _T("Set &more Italic font"), wxPoint(340,30), wxSize(140,30) );
+ (void)new wxButton( panel, ID_RADIOBOX_FONT, _T("Set &Italic font"), wxPoint(340,80), wxSize(140,30) );
+ (void)new wxCheckBox( panel, ID_RADIOBOX_ENABLE, _T("&Disable"), wxPoint(340,130), wxDefaultSize );
+
+ wxRadioButton *rb = new wxRadioButton( panel, ID_RADIOBUTTON_1, _T("Radiobutton1"), wxPoint(210,170), wxDefaultSize, wxRB_GROUP );
+ rb->SetValue( false );
+ (void)new wxRadioButton( panel, ID_RADIOBUTTON_2, _T("&Radiobutton2"), wxPoint(340,170), wxDefaultSize );
+ m_book->AddPage(panel, _T("wxRadioBox"), false, Image_Radio);
+
+
+#if wxUSE_SLIDER && wxUSE_GAUGE
+ panel = new wxPanel(m_book);
+
+ wxBoxSizer *main_sizer = new wxBoxSizer( wxHORIZONTAL );
+ panel->SetSizer( main_sizer );
+
+ wxStaticBoxSizer *gauge_sizer = new wxStaticBoxSizer( wxHORIZONTAL, panel, _T("&wxGauge and wxSlider") );
+ main_sizer->Add( gauge_sizer, 0, wxALL, 5 );
+ wxBoxSizer *sz = new wxBoxSizer( wxVERTICAL );
+ gauge_sizer->Add( sz );
+ m_gauge = new wxGauge( panel, wxID_ANY, 200, wxDefaultPosition, wxSize(155, 30), wxGA_HORIZONTAL|wxNO_BORDER );
+ sz->Add( m_gauge, 0, wxALL, 10 );
+ m_slider = new wxSlider( panel, ID_SLIDER, 0, 0, 200,
+ wxDefaultPosition, wxSize(155,wxDefaultCoord),
+ wxSL_AUTOTICKS | wxSL_LABELS);
+ m_slider->SetTickFreq(40, 0);
+#if wxUSE_TOOLTIPS
+ m_slider->SetToolTip(_T("This is a sliding slider"));
+#endif // wxUSE_TOOLTIPS
+ sz->Add( m_slider, 0, wxALL, 10 );
+
+ m_gaugeVert = new wxGauge( panel, wxID_ANY, 100,
+ wxDefaultPosition, wxSize(wxDefaultCoord, 90),
+ wxGA_VERTICAL | wxGA_SMOOTH | wxNO_BORDER );
+ gauge_sizer->Add( m_gaugeVert, 0, wxALL, 10 );
+
+
+
+ wxStaticBox *sb = new wxStaticBox( panel, wxID_ANY, _T("&Explanation"),
+ wxDefaultPosition, wxDefaultSize ); //, wxALIGN_CENTER );
+ wxStaticBoxSizer *wrapping_sizer = new wxStaticBoxSizer( sb, wxVERTICAL );
+ main_sizer->Add( wrapping_sizer, 0, wxALL, 5 );
+
+#ifdef __WXMOTIF__
+ // No wrapping text in wxStaticText yet :-(
+ m_wrappingText = new wxStaticText( panel, wxID_ANY,
+ _T("Drag the slider!"),
+ wxPoint(250,30),
+ wxSize(240, wxDefaultCoord)
+ );
+#else
+ m_wrappingText = new wxStaticText( panel, wxID_ANY,
+ _T("In order see the gauge (aka progress bar) ")
+ _T("control do something you have to drag the ")
+ _T("handle of the slider to the right.")
+ _T("\n\n")
+ _T("This is also supposed to demonstrate how ")
+ _T("to use static controls with line wrapping."),
+ wxDefaultPosition,
+ wxSize(240, wxDefaultCoord)
+ );
+#endif
+ wrapping_sizer->Add( m_wrappingText );
+
+ wxStaticBoxSizer *non_wrapping_sizer = new wxStaticBoxSizer( wxVERTICAL, panel, wxT("Non-wrapping") );
+ main_sizer->Add( non_wrapping_sizer, 0, wxALL, 5 );
+
+ m_nonWrappingText = new wxStaticText( panel, wxID_ANY,
+ _T("This static text has two lines.\nThey do not wrap."),
+ wxDefaultPosition,
+ wxDefaultSize
+ );
+ non_wrapping_sizer->Add( m_nonWrappingText );
+
+ (void)new wxButton( panel, ID_BTNNEWTEXT, wxT("New text"), wxPoint(450, 160) );
+
+ int initialSpinValue = -5;
+ wxString s;
+ s << initialSpinValue;
+ m_spintext = new wxTextCtrl( panel, wxID_ANY, s, wxPoint(20,160), wxSize(80,wxDefaultCoord) );
+#if wxUSE_SPINBTN
+ m_spinbutton = new wxSpinButton( panel, ID_SPIN, wxPoint(103,160) );
+ m_spinbutton->SetRange(-40,30);
+ m_spinbutton->SetValue(initialSpinValue);
+
+#if wxUSE_PROGRESSDLG
+ m_btnProgress = new wxButton( panel, ID_BTNPROGRESS, _T("&Show progress dialog"),
+ wxPoint(300, 160) );
+#endif // wxUSE_PROGRESSDLG
+#endif // wxUSE_SPINBTN
+
+#if wxUSE_SPINCTRL
+ m_spinctrl = new wxSpinCtrl( panel, ID_SPINCTRL, wxEmptyString, wxPoint(200, 160), wxSize(80, wxDefaultCoord) );
+ m_spinctrl->SetRange(10,30);
+ m_spinctrl->SetValue(15);
+#endif // wxUSE_SPINCTRL
+
+ m_book->AddPage(panel, _T("wxGauge"), false, Image_Gauge);
+#endif // wxUSE_SLIDER && wxUSE_GAUGE
+
+
+ panel = new wxPanel(m_book);
+
+#if !defined(__WXMOTIF__) // wxStaticBitmap not working under Motif yet.
+ wxIcon icon = wxArtProvider::GetIcon(wxART_INFORMATION);
+ (void) new wxStaticBitmap( panel, wxID_ANY, icon, wxPoint(10, 10) );
+
+ // VZ: don't leak memory
+ // bmpStatic = new wxStaticBitmap(panel, wxID_ANY, wxNullIcon, wxPoint(50, 10));
+ // bmpStatic->SetIcon(wxArtProvider::GetIcon(wxART_QUESTION));
+#endif // !Motif
+
+ wxBitmap bitmap( 100, 100 );
+ wxMemoryDC dc;
+ dc.SelectObject( bitmap );
+ dc.SetPen(*wxGREEN_PEN);
+ dc.Clear();
+ dc.DrawEllipse(5, 5, 90, 90);
+ dc.DrawText(_T("Bitmap"), 30, 40);
+ dc.SelectObject( wxNullBitmap );
+
+ (void)new wxBitmapButton(panel, ID_BITMAP_BTN, bitmap, wxPoint(100, 20));
+ (void)new wxToggleButton(panel, ID_BITMAP_BTN_ENABLE,
+ _T("Enable/disable &bitmap"), wxPoint(100, 140));
+
+#if defined(__WXMSW__) || defined(__WXMOTIF__)
+ // test for masked bitmap display
+ bitmap = wxBitmap(_T("test2.bmp"), wxBITMAP_TYPE_BMP);
+ if (bitmap.Ok())