/////////////////////////////////////////////////////////////////////////////
-// Name: cocoa/choice.mm
+// Name: src/cocoa/choice.mm
// Purpose: wxChoice
// Author: David Elliott
// Modified by:
// Created: 2003/03/16
-// RCS-ID: $Id:
+// Id: $Id$
// Copyright: (c) 2003 David Elliott
-// Licence: wxWindows license
+// Licence: wxWidgets licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/wxprec.h"
+
+#if wxUSE_CHOICE
+
#ifndef WX_PRECOMP
#include "wx/log.h"
#include "wx/app.h"
#include "wx/choice.h"
+ #include "wx/arrstr.h"
#endif //WX_PRECOMP
#include "wx/cocoa/string.h"
+#include "wx/cocoa/autorelease.h"
#import <AppKit/NSPopUpButton.h>
#import <AppKit/NSMenu.h>
m_sortedStrings = NULL;
}
+bool wxChoice::Create(wxWindow *parent, wxWindowID winid,
+ const wxPoint& pos,
+ const wxSize& size,
+ const wxArrayString& choices,
+ long style,
+ const wxValidator& validator,
+ const wxString& name)
+{
+ wxCArrayString chs(choices);
+
+ return Create(parent, winid, pos, size, chs.GetCount(), chs.GetStrings(),
+ style, validator, name);
+}
+
bool wxChoice::Create(wxWindow *parent, wxWindowID winid,
const wxPoint& pos,
const wxSize& size,
const wxValidator& validator,
const wxString& name)
{
+ wxAutoNSAutoreleasePool pool;
if(!CreateControl(parent,winid,pos,size,style,validator,name))
return false;
{
m_sortedStrings->Add(choices[i]);
}
- for(size_t i=0; i < m_sortedStrings->GetCount(); i++)
+ for(unsigned int i=0; i < m_sortedStrings->GetCount(); i++)
{
[nsmenu addItemWithTitle:wxNSStringWithWxString(
m_sortedStrings->Item(i))
if(HasClientObjectData())
{
- for(size_t i=0; i < m_itemsClientData.GetCount(); i++)
+ for(unsigned int i=0; i < m_itemsClientData.GetCount(); i++)
delete (wxClientData*)m_itemsClientData.Item(i);
}
m_itemsClientData.Clear();
-
- CocoaRemoveFromParent();
}
void wxChoice::CocoaNotification_menuDidSendAction(WX_NSNotification notification)
NSMenuItem *menuitem = [userInfo objectForKey:@"MenuItem"];
int index = [[(NSPopUpButton*)m_cocoaNSView menu] indexOfItem: menuitem];
int selectedItem = [(NSPopUpButton*)m_cocoaNSView indexOfSelectedItem];
- wxLogDebug("menuDidSendAction, index=%d, selectedItem=%d", index, selectedItem);
+ wxLogTrace(wxTRACE_COCOA,wxT("menuDidSendAction, index=%d, selectedItem=%d"), index, selectedItem);
wxCommandEvent event(wxEVT_COMMAND_CHOICE_SELECTED, m_windowId);
event.SetInt(index);
event.SetEventObject(this);
m_sortedStrings->Clear();
if(HasClientObjectData())
{
- for(size_t i=0; i < m_itemsClientData.GetCount(); i++)
+ for(unsigned int i=0; i < m_itemsClientData.GetCount(); i++)
delete (wxClientData*)m_itemsClientData.Item(i);
}
m_itemsClientData.Clear();
[(NSPopUpButton*)m_cocoaNSView removeAllItems];
}
-void wxChoice::Delete(int n)
+void wxChoice::Delete(unsigned int n)
{
if(m_sortedStrings)
m_sortedStrings->RemoveAt(n);
[(NSPopUpButton*)m_cocoaNSView removeItemAtIndex:n];
}
-int wxChoice::GetCount() const
+unsigned int wxChoice::GetCount() const
{
- return [(NSPopUpButton*)m_cocoaNSView numberOfItems];
+ return (unsigned int)[(NSPopUpButton*)m_cocoaNSView numberOfItems];
}
-wxString wxChoice::GetString(int n) const
+wxString wxChoice::GetString(unsigned int n) const
{
- return wxString([[(NSPopUpButton*)m_cocoaNSView itemTitleAtIndex:n] lossyCString]);
+ wxAutoNSAutoreleasePool pool;
+ return wxStringWithNSString([(NSPopUpButton*)m_cocoaNSView itemTitleAtIndex:n]);
}
-void wxChoice::SetString(int n, const wxString& title)
+void wxChoice::SetString(unsigned int n, const wxString& title)
{
NSMenuItem *item = [(NSPopUpButton*)m_cocoaNSView itemAtIndex:n];
[item setTitle:wxNSStringWithWxString(title)];
}
-int wxChoice::FindString(const wxString& title) const
+int wxChoice::FindString(const wxString& title, bool bCase) const
{
+ // FIXME: use wxItemContainerImmutable::FindString for bCase parameter
return [(NSPopUpButton*)m_cocoaNSView indexOfItemWithTitle:
wxNSStringWithWxString(title)];
}
int wxChoice::DoAppend(const wxString& title)
{
+ wxAutoNSAutoreleasePool pool;
NSMenu *nsmenu = [(NSPopUpButton*)m_cocoaNSView menu];
NSMenuItem *item;
if(m_sortedStrings)
return [nsmenu indexOfItem:item];
}
-int wxChoice::DoInsert(const wxString& title, int pos)
+int wxChoice::DoInsert(const wxString& title, unsigned int pos)
{
if(m_sortedStrings)
return DoAppend(title);
return [nsmenu indexOfItem:item];
}
-void wxChoice::DoSetItemClientData(int n, void *data)
+void wxChoice::DoSetItemClientData(unsigned int n, void *data)
{
m_itemsClientData.Item(n) = data;
}
-void* wxChoice::DoGetItemClientData(int n) const
+void* wxChoice::DoGetItemClientData(unsigned int n) const
{
return m_itemsClientData.Item(n);
}
-void wxChoice::DoSetItemClientObject(int n, wxClientData *data)
+void wxChoice::DoSetItemClientObject(unsigned int n, wxClientData *data)
{
m_itemsClientData.Item(n) = data;
}
-wxClientData* wxChoice::DoGetItemClientObject(int n) const
+wxClientData* wxChoice::DoGetItemClientObject(unsigned int n) const
{
return (wxClientData*)m_itemsClientData.Item(n);
}
void wxChoice::SetSelection(int n)
{
+ wxAutoNSAutoreleasePool pool;
[(NSPopUpButton*)m_cocoaNSView selectItemAtIndex:n];
}
+#endif