implement some missing methods

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32106 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Ryan Norton 2005-02-16 23:44:18 +00:00
parent 836dded82b
commit 50d2af52a5

View File

@ -52,6 +52,28 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID winid,
const wxValidator& validator,
const wxString& name)
{
/*
wxLB_SINGLE
Single-selection list.
wxLB_MULTIPLE
Multiple-selection list: the user can toggle multiple items on and off.
wxLB_EXTENDED
Extended-selection list: the user can select multiple items using the SHIFT key and the mouse or special key combinations.
wxLB_HSCROLL
Create horizontal scrollbar if contents are too wide (Windows only).
wxLB_ALWAYS_SB
Always show a vertical scrollbar.
wxLB_NEEDED_SB
Only create a vertical scrollbar if needed.
wxLB_SORT
The listbox contents are sorted in alphabetical order.
*/
wxAutoNSAutoreleasePool pool;
if(!CreateControl(parent,winid,pos,size,style,validator,name))
return false;
@ -88,6 +110,13 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID winid,
// NSScrollView seems to be the only reasonable solution.
CocoaCreateNSScrollView();
SetInitialFrameRect(pos,size);
// Set up extended/multiple selection flags
if ((style & wxLB_EXTENDED) || (style & wxLB_MULTIPLE))
//diff is that mult requires shift down for multi selection
[GetNSTableView() setAllowsMultipleSelection:true];
[GetNSTableView() setAllowsColumnSelection:false];
return true;
}
@ -138,6 +167,8 @@ int wxListBox::GetSelections(wxArrayInt& aSelections) const
void wxListBox::DoInsertItems(const wxArrayString& items, int pos)
{
wxAutoNSAutoreleasePool pool;
for(int i=int(items.GetCount())-1; i >= 0; i--)
{
[m_cocoaItems insertObject: wxNSStringWithWxString(items[i])
@ -149,6 +180,8 @@ void wxListBox::DoInsertItems(const wxArrayString& items, int pos)
void wxListBox::DoSetItems(const wxArrayString& items, void **clientData)
{
wxAutoNSAutoreleasePool pool;
// Remove everything
[m_cocoaItems removeAllObjects];
m_itemClientData.Clear();
@ -163,6 +196,11 @@ void wxListBox::DoSetItems(const wxArrayString& items, void **clientData)
void wxListBox::DoSetFirstItem(int n)
{
[m_cocoaItems exchangeObjectAtIndex:0 withObjectAtIndex:n];
void* pOld = m_itemClientData[n];
m_itemClientData[n] = m_itemClientData[0];
m_itemClientData[0] = pOld;
[GetNSTableView() reloadData];
}
@ -170,58 +208,75 @@ void wxListBox::DoSetFirstItem(int n)
// deleting items
void wxListBox::Clear()
{
[m_cocoaItems removeAllObjects];
m_itemClientData.Clear();
[GetNSTableView() reloadData];
}
void wxListBox::Delete(int n)
{
[m_cocoaItems removeObjectAtIndex:n];
m_itemClientData.RemoveAt(n);
[GetNSTableView() reloadData];
}
// accessing strings
int wxListBox::GetCount() const
{
return 0;
return [m_cocoaItems count];
}
wxString wxListBox::GetString(int n) const
{
return wxEmptyString;
return wxStringWithNSString([m_cocoaItems objectAtIndex:n]);
}
void wxListBox::SetString(int n, const wxString& s)
{
wxAutoNSAutoreleasePool pool;
[m_cocoaItems removeObjectAtIndex:n];
[m_cocoaItems insertObject: wxNSStringWithWxString(s) atIndex: n];
[GetNSTableView() reloadData];
}
int wxListBox::FindString(const wxString& s) const
{
return 0;
wxAutoNSAutoreleasePool pool;
return [m_cocoaItems indexOfObject:wxNSStringWithWxString(s)];
}
// selection
int wxListBox::GetSelection() const
{
return 0;
return [GetNSTableView() selectedRow];
}
int wxListBox::DoAppend(const wxString& item)
{
return 0;
wxAutoNSAutoreleasePool pool;
[m_cocoaItems addObject:wxNSStringWithWxString(item)];
[GetNSTableView() reloadData];
m_itemClientData.Add(NULL);
return [m_cocoaItems count];
}
void wxListBox::DoSetItemClientData(int n, void* clientData)
{
m_itemClientData[n] = clientData;
}
void* wxListBox::DoGetItemClientData(int n) const
{
return NULL;
return m_itemClientData[n];
}
void wxListBox::DoSetItemClientObject(int n, wxClientData* clientData)
{
m_itemClientData[n] = (void*) clientData;
}
wxClientData* wxListBox::DoGetItemClientObject(int n) const
{
return NULL;
return (wxClientData*) m_itemClientData[n];
}