]> git.saurik.com Git - wxWidgets.git/blobdiff - src/cocoa/listbox.mm
the wxConvUI hack in wxMsgCatalog should only be done in ANSI build
[wxWidgets.git] / src / cocoa / listbox.mm
index c24e9b9439dca8fa95d598e7d960fbcfcf8331d5..13ca565a905300fbddc363f70a2c1b15fa3f07c1 100644 (file)
@@ -29,7 +29,7 @@
 #import <AppKit/NSTableView.h>
 #import <AppKit/NSTableColumn.h>
 
-IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControl)
+IMPLEMENT_DYNAMIC_CLASS(wxListBox, wxControlWithItems)
 BEGIN_EVENT_TABLE(wxListBox, wxListBoxBase)
 END_EVENT_TABLE()
 WX_IMPLEMENT_COCOA_OWNER(wxListBox,NSTableView,NSControl,NSView)
@@ -98,7 +98,7 @@ The listbox contents are sorted in alphabetical order.
     [GetNSTableView() setHeaderView: nil];
 
     // Set up the data source
-    m_cocoaDataSource = [[wxCocoaNSTableDataSource alloc] init];
+    m_cocoaDataSource = [[WX_GET_OBJC_CLASS(wxCocoaNSTableDataSource) alloc] init];
     [GetNSTableView() setDataSource:m_cocoaDataSource];
 
     // Add the single column
@@ -169,33 +169,21 @@ int wxListBox::GetSelections(wxArrayInt& aSelections) const
     return [GetNSTableView() numberOfSelectedRows];
 }
 
-void wxListBox::DoInsertItems(const wxArrayString& items, unsigned int pos)
+int wxListBox::DoInsertItems(const wxArrayStringsAdapter & items, unsigned int pos, void **clientData, wxClientDataType type)
 {
     wxAutoNSAutoreleasePool pool;
 
-    for(int i=int(items.GetCount())-1; i >= 0; i--)
+    const unsigned int numItems = items.GetCount();
+    for ( unsigned int i = 0; i < numItems; ++i, ++pos )
     {
         [m_cocoaItems insertObject: wxNSStringWithWxString(items[i])
             atIndex: pos];
-        m_itemClientData.Insert(NULL,pos);
+        m_itemClientData.Insert(NULL, pos);
+        AssignNewItemClientData(pos, clientData, i, type);
     }
-    [GetNSTableView() reloadData];
-}
-
-void wxListBox::DoSetItems(const wxArrayString& items, void **clientData)
-{
-    wxAutoNSAutoreleasePool pool;
 
-    // Remove everything
-    [m_cocoaItems removeAllObjects];
-    m_itemClientData.Clear();
-    // Provide the data
-    for(unsigned int i=0; i < items.GetCount(); i++)
-    {
-        [m_cocoaItems addObject: wxNSStringWithWxString(items[i])];
-        m_itemClientData.Add(clientData[i]);
-    }
     [GetNSTableView() reloadData];
+    return pos - 1;
 }
 
 void wxListBox::DoSetFirstItem(int n)
@@ -210,14 +198,14 @@ void wxListBox::DoSetFirstItem(int n)
 
 // pure virtuals from wxItemContainer
     // deleting items
-void wxListBox::Clear()
+void wxListBox::DoClear()
 {
     [m_cocoaItems removeAllObjects];
     m_itemClientData.Clear();
     [GetNSTableView() reloadData];
 }
 
-void wxListBox::Delete(unsigned int n)
+void wxListBox::DoDeleteOneItem(unsigned int n)
 {
     [m_cocoaItems removeObjectAtIndex:n];
     m_itemClientData.RemoveAt(n);
@@ -256,15 +244,6 @@ int wxListBox::GetSelection() const
     return [GetNSTableView() selectedRow];
 }
 
-int wxListBox::DoAppend(const wxString& item)
-{
-    wxAutoNSAutoreleasePool pool;
-    [m_cocoaItems addObject:wxNSStringWithWxString(item)];
-    [GetNSTableView() reloadData];
-    m_itemClientData.Add(NULL);
-    return [m_cocoaItems count];
-}
-
 void wxListBox::DoSetItemClientData(unsigned int n, void* clientData)
 {
     m_itemClientData[n] = clientData;
@@ -275,14 +254,4 @@ void* wxListBox::DoGetItemClientData(unsigned int n) const
     return m_itemClientData[n];
 }
 
-void wxListBox::DoSetItemClientObject(unsigned int n, wxClientData* clientData)
-{
-    m_itemClientData[n] = (void*) clientData;
-}
-
-wxClientData* wxListBox::DoGetItemClientObject(unsigned int n) const
-{
-    return (wxClientData*) m_itemClientData[n];
-}
-
-#endif
+#endif // wxUSE_LISTBOX