X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/493c9f6bb22eef04391998cb1770cf32f1cc6efc..689471fc3ab6adf5649894eca8b3c6513081f012:/src/mac/carbon/radiobox.cpp

diff --git a/src/mac/carbon/radiobox.cpp b/src/mac/carbon/radiobox.cpp
index 905618716f..664e5c54d2 100644
--- a/src/mac/carbon/radiobox.cpp
+++ b/src/mac/carbon/radiobox.cpp
@@ -14,9 +14,12 @@
 //-------------------------------------------------------------------------------------
 
 #ifdef __GNUG__
-#pragma implementation "radiobox.h"
+  #pragma implementation "radioboxbase.h"
+  #pragma implementation "radiobox.h"
 #endif
 
+#include "wx/defs.h"
+
 #include "wx/radiobox.h"
 #include "wx/radiobut.h"
 #include "wx/mac/uma.h"
@@ -117,8 +120,6 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
 	m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1, 
 	  	kControlGroupBoxTextTitleProc , (long) this ) ;
 	
-	MacPostControlCreate() ;
-
     for (i = 0; i < n; i++)
     {
         wxRadioButton *radBtn = new wxRadioButton(this, NewControlId(),choices[i],wxPoint(5,20*i+10),
@@ -129,7 +130,7 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& label,
     }
 
 	SetSelection(0);
-	SetSize(pos.x,pos.y,size.x,size.y);
+	MacPostControlCreate() ;
 
   return TRUE;
 }
@@ -179,28 +180,6 @@ void wxRadioBox::Enable(int item, bool enable)
     	}
 }
 
-
-//-------------------------------------------------------------------------------------
-// 		¥ FindString
-//-------------------------------------------------------------------------------------
-// Finds a button matching the given string, returning the position if found 
-// or -1 if not found
-
-int wxRadioBox::FindString(const wxString& s) const
-{
-    int i;
-    wxRadioButton *current;
-    
-    current=m_radioButtonCycle;
-    for (i = 0; i < m_noItems; i++)
-    {
-        if (s == current->GetLabel())
-            return i;
-    	current=current->NextInCycle();
-    }
-    return -1;
-}
-
 //-------------------------------------------------------------------------------------
 // 		¥ GetLabel()
 //-------------------------------------------------------------------------------------
@@ -216,7 +195,7 @@ wxString wxRadioBox::GetLabel() const
 //-------------------------------------------------------------------------------------
 // Returns the label for the given button
 
-wxString wxRadioBox::GetLabel(int item) const
+wxString wxRadioBox::GetString(int item) const
 {
    	int i;
     wxRadioButton *current;
@@ -252,31 +231,6 @@ int wxRadioBox::GetSelection() const
     return i;
 }
 
-//-------------------------------------------------------------------------------------
-// 		¥ GetString
-//-------------------------------------------------------------------------------------
-// Find string for position
-
-wxString wxRadioBox::GetString(int item) const
-{
-
-    return GetLabel(item);
-}
-
-//-------------------------------------------------------------------------------------
-// 		¥ GetStringSelection
-//-------------------------------------------------------------------------------------
-// Returns the selected string
-
-wxString wxRadioBox::GetStringSelection () const
-{
-    int sel = GetSelection ();
-    if (sel > -1)
-        return this->GetString (sel);
-    else
-        return wxString("");
-}
-
 //-------------------------------------------------------------------------------------
 // 		¥ Number
 //-------------------------------------------------------------------------------------
@@ -300,7 +254,7 @@ void wxRadioBox::SetLabel(const wxString& label)
 //-------------------------------------------------------------------------------------
 // Sets the label of a given button
 
-void wxRadioBox::SetLabel(int item,const wxString& label)
+void wxRadioBox::SetString(int item,const wxString& label)
 {
    	int i;
     wxRadioButton *current;
@@ -339,24 +293,6 @@ void wxRadioBox::SetSelection(int item)
     
 }
 
-//-------------------------------------------------------------------------------------
-// 		¥ SetStringSelection
-//-------------------------------------------------------------------------------------
-// Sets a button by passing the desired string. This does not cause 
-// wxEVT_COMMAND_RADIOBOX_SELECTED event to get emitted
-
-bool wxRadioBox::SetStringSelection (const wxString& s)
-{
-    int sel = FindString (s);
-    if (sel > -1)
-    {
-        SetSelection (sel);
-        return TRUE;
-    }
-    else
-        return FALSE;
-}
-
 //-------------------------------------------------------------------------------------
 // 		¥ Show(bool)
 //-------------------------------------------------------------------------------------
@@ -477,15 +413,15 @@ void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
 	maxHeight=-1;
 	for (i = 0 ; i < m_noItems; i++)
 		{
-		GetTextExtent(GetLabel(i), &eachWidth[i], &eachHeight[i]);
+		GetTextExtent(GetString(i), &eachWidth[i], &eachHeight[i]);
 		eachWidth[i] = (int)(eachWidth[i] + RADIO_SIZE);
 		eachHeight[i] = (int)((3*eachHeight[i])/2);
 		if (maxWidth<eachWidth[i]) maxWidth = eachWidth[i];
 		if (maxHeight<eachHeight[i]) maxHeight = eachHeight[i];
   		}
 
-	totHeight = GetNumVer() * (maxHeight + charHeight/2) + charHeight*3/2;
-	totWidth  = GetNumHor() * (maxWidth + charWidth) + charWidth;
+	totHeight = GetRowCount() * (maxHeight + charHeight/2) + charHeight*3/2;
+	totWidth  = GetColumnCount() * (maxWidth + charWidth) + charWidth;
 
     // only change our width/height if asked for
     if ( width == -1 )
@@ -543,12 +479,39 @@ void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
 		}
 }
 
+wxSize wxRadioBox::DoGetBestSize() const
+{
+    int charWidth, charHeight;
+    int maxWidth, maxHeight;
+    int eachWidth, eachHeight;
+    int totWidth, totHeight;
+
+    wxFont font = GetParent()->GetFont();
+    GetTextExtent(wxString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"),
+                  &charWidth, &charHeight, NULL, NULL, &font);
+    charWidth /= 52;
+
+   maxWidth = -1;
+   maxHeight = -1;
+   for (int i = 0 ; i < m_noItems; i++)
+   {
+        GetTextExtent(GetString(i), &eachWidth, &eachHeight);
+        eachWidth  = (int)(eachWidth + RADIO_SIZE) ;
+        eachHeight = (int)((3 * eachHeight) / 2);
+        if (maxWidth < eachWidth)     maxWidth = eachWidth;
+        if (maxHeight < eachHeight)   maxHeight = eachHeight;
+    }
+
+    totHeight = GetRowCount() * (maxHeight + charHeight/2) + charHeight * 3/2;
+    totWidth  = GetColumnCount() * (maxWidth + charWidth) + charWidth;
+   return wxSize(totWidth, totHeight);
+}
 //-------------------------------------------------------------------------------------
 // 		¥ GetNumVer
 //-------------------------------------------------------------------------------------
 // return the number of buttons in the vertical direction
 
-int wxRadioBox::GetNumVer() const
+int wxRadioBox::GetRowCount() const
 {
     if ( m_windowStyle & wxRA_SPECIFY_ROWS )
     {
@@ -565,7 +528,7 @@ int wxRadioBox::GetNumVer() const
 //-------------------------------------------------------------------------------------
 // return the number of buttons in the horizontal direction
 
-int wxRadioBox::GetNumHor() const
+int wxRadioBox::GetColumnCount() const
 {
     if ( m_windowStyle & wxRA_SPECIFY_ROWS )
     {