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 wxValidator& validator,
const wxString& name) 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; wxAutoNSAutoreleasePool pool;
if(!CreateControl(parent,winid,pos,size,style,validator,name)) if(!CreateControl(parent,winid,pos,size,style,validator,name))
return false; return false;
@@ -89,6 +111,13 @@ bool wxListBox::Create(wxWindow *parent, wxWindowID winid,
CocoaCreateNSScrollView(); CocoaCreateNSScrollView();
SetInitialFrameRect(pos,size); 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; return true;
} }
@@ -138,6 +167,8 @@ int wxListBox::GetSelections(wxArrayInt& aSelections) const
void wxListBox::DoInsertItems(const wxArrayString& items, int pos) void wxListBox::DoInsertItems(const wxArrayString& items, int pos)
{ {
wxAutoNSAutoreleasePool pool;
for(int i=int(items.GetCount())-1; i >= 0; i--) for(int i=int(items.GetCount())-1; i >= 0; i--)
{ {
[m_cocoaItems insertObject: wxNSStringWithWxString(items[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) void wxListBox::DoSetItems(const wxArrayString& items, void **clientData)
{ {
wxAutoNSAutoreleasePool pool;
// Remove everything // Remove everything
[m_cocoaItems removeAllObjects]; [m_cocoaItems removeAllObjects];
m_itemClientData.Clear(); m_itemClientData.Clear();
@@ -163,6 +196,11 @@ void wxListBox::DoSetItems(const wxArrayString& items, void **clientData)
void wxListBox::DoSetFirstItem(int n) 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 // deleting items
void wxListBox::Clear() void wxListBox::Clear()
{ {
[m_cocoaItems removeAllObjects];
m_itemClientData.Clear();
[GetNSTableView() reloadData];
} }
void wxListBox::Delete(int n) void wxListBox::Delete(int n)
{ {
[m_cocoaItems removeObjectAtIndex:n];
m_itemClientData.RemoveAt(n);
[GetNSTableView() reloadData];
} }
// accessing strings // accessing strings
int wxListBox::GetCount() const int wxListBox::GetCount() const
{ {
return 0; return [m_cocoaItems count];
} }
wxString wxListBox::GetString(int n) const wxString wxListBox::GetString(int n) const
{ {
return wxEmptyString; return wxStringWithNSString([m_cocoaItems objectAtIndex:n]);
} }
void wxListBox::SetString(int n, const wxString& s) 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 int wxListBox::FindString(const wxString& s) const
{ {
return 0; wxAutoNSAutoreleasePool pool;
return [m_cocoaItems indexOfObject:wxNSStringWithWxString(s)];
} }
// selection // selection
int wxListBox::GetSelection() const int wxListBox::GetSelection() const
{ {
return 0; return [GetNSTableView() selectedRow];
} }
int wxListBox::DoAppend(const wxString& item) 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) void wxListBox::DoSetItemClientData(int n, void* clientData)
{ {
m_itemClientData[n] = clientData;
} }
void* wxListBox::DoGetItemClientData(int n) const void* wxListBox::DoGetItemClientData(int n) const
{ {
return NULL; return m_itemClientData[n];
} }
void wxListBox::DoSetItemClientObject(int n, wxClientData* clientData) void wxListBox::DoSetItemClientObject(int n, wxClientData* clientData)
{ {
m_itemClientData[n] = (void*) clientData;
} }
wxClientData* wxListBox::DoGetItemClientObject(int n) const wxClientData* wxListBox::DoGetItemClientObject(int n) const
{ {
return NULL; return (wxClientData*) m_itemClientData[n];
} }