]> git.saurik.com Git - wxWidgets.git/blobdiff - src/cocoa/choice.mm
fix MinGW/gcc compilation issue
[wxWidgets.git] / src / cocoa / choice.mm
index b4548842bee8c880933bca68e164f8f0c7384693..3c5d47916257615276a44dfc499624563c62b335 100644 (file)
@@ -1,22 +1,27 @@
 /////////////////////////////////////////////////////////////////////////////
-// 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>
@@ -33,6 +38,20 @@ void wxChoice::Init()
     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,
@@ -41,6 +60,7 @@ bool wxChoice::Create(wxWindow *parent, wxWindowID winid,
             const wxValidator& validator,
             const wxString& name)
 {
+    wxAutoNSAutoreleasePool pool;
     if(!CreateControl(parent,winid,pos,size,style,validator,name))
         return false;
 
@@ -97,8 +117,6 @@ wxChoice::~wxChoice()
             delete (wxClientData*)m_itemsClientData.Item(i);
     }
     m_itemsClientData.Clear();
-
-    CocoaRemoveFromParent();
 }
 
 void wxChoice::CocoaNotification_menuDidSendAction(WX_NSNotification notification)
@@ -107,7 +125,7 @@ void wxChoice::CocoaNotification_menuDidSendAction(WX_NSNotification notificatio
     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);
@@ -145,7 +163,8 @@ int wxChoice::GetCount() const
 
 wxString wxChoice::GetString(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)
@@ -154,8 +173,9 @@ void wxChoice::SetString(int n, const wxString& title)
     [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)];
 }
@@ -167,6 +187,7 @@ int wxChoice::GetSelection() const
 
 int wxChoice::DoAppend(const wxString& title)
 {
+    wxAutoNSAutoreleasePool pool;
     NSMenu *nsmenu = [(NSPopUpButton*)m_cocoaNSView menu];
     NSMenuItem *item;
     if(m_sortedStrings)
@@ -219,6 +240,8 @@ wxClientData* wxChoice::DoGetItemClientObject(int n) const
 
 void wxChoice::SetSelection(int n)
 {
+    wxAutoNSAutoreleasePool pool;
     [(NSPopUpButton*)m_cocoaNSView selectItemAtIndex:n];
 }
 
+#endif