BitmapComboBoxPage_ContainerTests
};
+// kinds of comboboxes
+enum
+{
+ ComboKind_Default,
+ ComboKind_Simple,
+ ComboKind_DropDown
+};
// ----------------------------------------------------------------------------
// BitmapComboBoxWidgetsPage
// 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
);
// 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 )
if ( sel == wxNOT_FOUND )
sel = m_combobox->GetCount();
- m_combobox->Insert(s, QueryBitmap(&s), sel);
+ wxBitmap bmp = QueryBitmap(&s);
+ if (bmp.IsOk())
+ m_combobox->Insert(s, bmp, sel);
}
void BitmapComboBoxWidgetsPage::OnButtonSetFromFile(wxCommandEvent& WXUNUSED(event))
{
- m_combobox->SetItemBitmap(m_combobox->GetSelection(), QueryBitmap(NULL));
+ wxBitmap bmp = QueryBitmap(NULL);
+ if (bmp.IsOk())
+ m_combobox->SetItemBitmap(m_combobox->GetSelection(), bmp);
}
void BitmapComboBoxWidgetsPage::OnButtonAddMany(wxCommandEvent& WXUNUSED(event))
if ( !wxDir::Exists(fn.GetFullPath()) ||
!wxDir::GetAllFiles(fn.GetFullPath(),strings,wxT("*.xpm")) )
{
+ // Try ../../samples/widgets/icons
fn.RemoveLastDir();
fn.RemoveLastDir();
fn.AppendDir(wxT("icons"));
for ( i=0; i<strings->size(); i++ )
{
fn.SetFullName((*strings)[i]);
- wxString name =fn.GetName();
+ wxString name = fn.GetName();
// Handle few exceptions
if ( name == wxT("bmpbtn") )
#endif
images->Add(bmp);
(*strings)[i] = name;
+
+ // if the combobox is empty, use as bitmap size of the image list
+ // the size of the first valid image loaded
+ if (foundSize == wxDefaultSize)
+ foundSize = bmp.GetSize();
}
}
wxBitmap BitmapComboBoxWidgetsPage::QueryBitmap(wxString* pStr)
{
- wxString filepath = wxFileSelector(wxT("Choose image file"),
- wxEmptyString,
+ wxString filepath = wxLoadFileSelector(wxT("image"),
wxEmptyString,
wxEmptyString,
- wxT("*.*"),
- wxFD_OPEN | wxFD_FILE_MUST_EXIST,
this);
wxBitmap bitmap;
bitmap = LoadBitmap(filepath);
}
- wxLogDebug(wxT("%i, %i"),bitmap.GetWidth(), bitmap.GetHeight());
+ if (bitmap.IsOk())
+ wxLogDebug(wxT("%i, %i"),bitmap.GetWidth(), bitmap.GetHeight());
::wxSetCursor( *wxSTANDARD_CURSOR );