BitmapComboBoxPage_ContainerTests
};
+// kinds of comboboxes
+enum
+{
+ ComboKind_Default,
+ ComboKind_Simple,
+ ComboKind_DropDown
+};
// ----------------------------------------------------------------------------
// BitmapComboBoxWidgetsPage
// helpers for creating bitmaps
wxBitmap CreateBitmap(const wxColour& colour);
- wxBitmap CreateRandomBitmap(wxString* pStr);
wxBitmap LoadBitmap(const wxString& filepath);
wxBitmap QueryBitmap(wxString* pStr);
// the controls
// ------------
+ // the sel mode radiobox
+ wxRadioBox *m_radioKind;
+
// the checkboxes for styles
wxCheckBox *m_chkSort,
*m_chkReadonly;
// implementation
// ============================================================================
-
+#if defined(__WXMSW__) || defined(__WXGTK__)
+ #define NATIVE_OR_GENERIC_CTRLS NATIVE_CTRLS
+#else
+ #define NATIVE_OR_GENERIC_CTRLS GENERIC_CTRLS
+#endif
IMPLEMENT_WIDGETS_PAGE(BitmapComboBoxWidgetsPage, _T("BitmapCombobox"),
- GENERIC_CTRLS | WITH_ITEMS_CTRLS | COMBO_CTRLS
+ NATIVE_OR_GENERIC_CTRLS | WITH_ITEMS_CTRLS | COMBO_CTRLS
);
{
// init everything
m_chkSort =
- m_chkReadonly = (wxCheckBox *)NULL;
+ m_chkReadonly = NULL;
+
+ m_combobox = NULL;
+ m_sizerCombo = NULL;
- m_combobox = (wxBitmapComboBox *)NULL;
- m_sizerCombo = (wxSizer *)NULL;
+ m_textInsert =
+ m_textChangeHeight =
+ m_textChange =
+ m_textDelete = NULL;
}
// create a sizer containing a label and a small text ctrl
miscellaneous combobox operations and the pane containing the combobox
itself to the right
*/
- //wxTextCtrl *text;
wxSizer *sizerRow;
wxSizer *sizerTop = new wxBoxSizer(wxHORIZONTAL);
// left pane - style box
wxStaticBox *box = new wxStaticBox(this, wxID_ANY, _T("&Set style"));
+
+ // should be in sync with ComboKind_XXX values
+ static const wxString kinds[] =
+ {
+ _T("default"),
+ _T("simple"),
+ _T("drop down"),
+ };
+
+ m_radioKind = new wxRadioBox(this, wxID_ANY, _T("Combobox &kind:"),
+ wxDefaultPosition, wxDefaultSize,
+ WXSIZEOF(kinds), kinds,
+ 1, wxRA_SPECIFY_COLS);
+
wxSizer *sizerStyle = new wxStaticBoxSizer(box, wxVERTICAL);
m_chkSort = CreateCheckBoxAndAddToSizer(sizerStyle, _T("&Sort items"));
sizerStyle->Add(btn, 0, wxALIGN_CENTRE_HORIZONTAL | wxALL, 3);
sizerLeft->Add(sizerStyle, 0, wxGROW | wxALIGN_CENTRE_HORIZONTAL);
+ sizerLeft->Add(m_radioKind, 0, wxGROW | wxALL, 5);
// left pane - other options box
box = new wxStaticBox(this, wxID_ANY, _T("Demo options"));
if ( m_chkReadonly->GetValue() )
flags |= wxCB_READONLY;
+ switch ( m_radioKind->GetSelection() )
+ {
+ default:
+ wxFAIL_MSG( _T("unknown combo kind") );
+ // fall through
+
+ case ComboKind_Default:
+ break;
+
+ case ComboKind_Simple:
+ flags |= wxCB_SIMPLE;
+ break;
+
+ case ComboKind_DropDown:
+ flags = wxCB_DROPDOWN;
+ break;
+ }
+
wxArrayString items;
wxArrayPtrVoid bitmaps;
if ( m_combobox )
void BitmapComboBoxWidgetsPage::OnTextChangeHeight(wxCommandEvent& WXUNUSED(event))
{
long h = 0;
- m_textChangeHeight->GetValue().ToLong(&h);
+ if ( m_textChangeHeight )
+ m_textChangeHeight->GetValue().ToLong(&h);
if ( h < 5 )
return;
m_combobox->SetSize(wxDefaultCoord, h);
void BitmapComboBoxWidgetsPage::OnButtonAddSeveralWithImages(wxCommandEvent& WXUNUSED(event))
{
- int i;
+ static const struct TestEntry
+ {
+ const char *text;
+ unsigned long rgb;
+ } s_entries[] =
+ {
+ { "Red circle", 0x0000ff },
+ { "Blue circle", 0xff0000 },
+ { "Green circle", 0x00ff00 },
+ { "Black circle", 0x000000 },
+ };
- for ( i=0; i<4; i++ )
+ for ( unsigned i = 0; i < WXSIZEOF(s_entries); i++ )
{
- wxString s;
- wxBitmap bmp = CreateRandomBitmap(&s);
- m_combobox->Append(s, bmp);
+ const TestEntry& e = s_entries[i];
+ m_combobox->Append(e.text, CreateBitmap(wxColour(e.rgb)));
}
}
wxBitmap BitmapComboBoxWidgetsPage::CreateBitmap(const wxColour& colour)
{
- int ch = m_combobox->GetBitmapSize().y;
- int h0 = ch - 5;
-
- long w = ch;
- long h = ch;
-
- if ( w <= 0 )
- w = h0 - 1;
- if ( h <= 0 )
- h = h0;
- if ( h > ch )
- h = ch;
+ const int w = 10,
+ h = 10;
wxMemoryDC dc;
- wxBitmap bmp(w,h);
+ wxBitmap bmp(w, h);
dc.SelectObject(bmp);
// Draw transparent background
- wxColour magic(255,0,255);
+ wxColour magic(255, 0, 255);
wxBrush magicBrush(magic);
dc.SetBrush(magicBrush);
dc.SetPen(*wxTRANSPARENT_PEN);
- dc.DrawRectangle(0,0,bmp.GetWidth(),bmp.GetHeight());
+ dc.DrawRectangle(0, 0, w, h);
// Draw image content
dc.SetBrush(wxBrush(colour));
- dc.DrawCircle(h/2,h/2+1,(h/2));
+ dc.DrawCircle(h/2, h/2+1, h/2);
dc.SelectObject(wxNullBitmap);
return bmp;
}
-wxBitmap BitmapComboBoxWidgetsPage::CreateRandomBitmap( wxString* pStr )
-{
- int i = rand() % 6;
- const wxChar* str = wxT("");
- wxBitmap bmp;
-
- if ( i == 0 )
- {
- str = wxT("Red Circle");
- bmp = CreateBitmap( *wxRED );
- }
- else if ( i == 1 )
- {
- str = wxT("Green Circle");
- bmp = CreateBitmap( *wxGREEN );
- }
- else if ( i == 2 )
- {
- str = wxT("Blue Circle");
- bmp = CreateBitmap( *wxBLUE );
- }
- else if ( i == 3 )
- {
- str = wxT("Black Circle");
- bmp = CreateBitmap( *wxBLACK );
- }
- else if ( i == 4 )
- {
- str = wxT("Cyan Circle");
- bmp = CreateBitmap( *wxCYAN );
- }
- else if ( i == 5 )
- {
- str = wxT("Light Grey Circle");
- bmp = CreateBitmap( *wxLIGHT_GREY );
- }
-
- if ( pStr )
- *pStr = str;
-
- return bmp;
-}
-
-#endif //wxUSE_BITMAPCOMBOBOX
+#endif // wxUSE_BITMAPCOMBOBOX