dolphin/Externals/wxWidgets/src/common/lboxcmn.cpp

148 lines
3.9 KiB
C++

///////////////////////////////////////////////////////////////////////////////
// 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