/////////////////////////////////////////////////////////////////////////////// // Name: src/common/lboxcmn.cpp // Purpose: wxListBox class methods common to all platforms // Author: Vadim Zeitlin // Modified by: // Created: 22.10.99 // RCS-ID: $Id: lboxcmn.cpp 39964 2006-07-04 00:31:52Z VZ $ // Copyright: (c) wxWidgets team // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// // ============================================================================ // declarations // ============================================================================ // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop #endif #if wxUSE_LISTBOX #include "wx/listbox.h" #ifndef WX_PRECOMP #include "wx/dynarray.h" #include "wx/arrstr.h" #endif // ============================================================================ // implementation // ============================================================================ wxListBoxBase::~wxListBoxBase() { // this destructor is required for Darwin } // ---------------------------------------------------------------------------- // adding items // ---------------------------------------------------------------------------- void wxListBoxBase::InsertItems(unsigned int nItems, const wxString *items, unsigned int pos) { wxArrayString aItems; for ( unsigned int n = 0; n < nItems; n++ ) { aItems.Add(items[n]); } DoInsertItems(aItems, pos); } void wxListBoxBase::Set(int nItems, const wxString* items, void **clientData) { wxArrayString aItems; for ( int n = 0; n < nItems; n++ ) { aItems.Add(items[n]); } DoSetItems(aItems, clientData); } // ---------------------------------------------------------------------------- // selection // ---------------------------------------------------------------------------- bool wxListBoxBase::SetStringSelection(const wxString& s, bool select) { const int sel = FindString(s); if ( sel == wxNOT_FOUND ) return false; SetSelection(sel, select); return true; } void wxListBoxBase::DeselectAll(int itemToLeaveSelected) { if ( HasMultipleSelection() ) { wxArrayInt selections; GetSelections(selections); size_t count = selections.GetCount(); for ( size_t n = 0; n < count; n++ ) { int item = selections[n]; if ( item != itemToLeaveSelected ) Deselect(item); } } else // single selection { int sel = GetSelection(); if ( sel != wxNOT_FOUND && sel != itemToLeaveSelected ) { Deselect(sel); } } } // ---------------------------------------------------------------------------- // misc // ---------------------------------------------------------------------------- void wxListBoxBase::Command(wxCommandEvent& event) { SetSelection(event.GetInt(), event.GetExtraLong() != 0); (void)ProcessEvent(event); } // ---------------------------------------------------------------------------- // SetFirstItem() and such // ---------------------------------------------------------------------------- void wxListBoxBase::SetFirstItem(const wxString& s) { int n = FindString(s); wxCHECK_RET( n != wxNOT_FOUND, wxT("invalid string in wxListBox::SetFirstItem") ); DoSetFirstItem(n); } void wxListBoxBase::AppendAndEnsureVisible(const wxString& s) { Append(s); EnsureVisible(GetCount() - 1); } void wxListBoxBase::EnsureVisible(int WXUNUSED(n)) { // the base class version does nothing (the only alternative would be to // call SetFirstItem() but this is probably even more stupid) } #endif // wxUSE_LISTBOX