// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
+#ifdef __GNUG__
+ #pragma implementation "radioboxbase.h"
+ #pragma implementation "radiobox.h"
+#endif
+
//-------------------------------------------------------------------------------------
// headers
//-------------------------------------------------------------------------------------
-#ifdef __GNUG__
-#pragma implementation "radiobox.h"
-#endif
-
#include "wx/defs.h"
#include "wx/radiobox.h"
m_majorDim = majorDim ;
- Rect bounds ;
- Str255 title ;
-
- MacPreControlCreate( parent , id , label , pos , size ,style, val , name , &bounds , title ) ;
-
- m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , false , 0 , 0 , 1,
- kControlGroupBoxTextTitleProc , (long) this ) ;
-
- MacPostControlCreate() ;
-
+ Rect bounds ;
+ Str255 title ;
+
+ MacPreControlCreate( parent , id , wxStripMenuCodes(label) , pos , size ,style, val , name , &bounds , title ) ;
+
+ m_macControl = ::NewControl( MAC_WXHWND(parent->MacGetRootWindow()) , &bounds , title , false , 0 , 0 , 1,
+ kControlGroupBoxTextTitleProc , (long) this ) ;
+
for (i = 0; i < n; i++)
{
- wxRadioButton *radBtn = new wxRadioButton(this, NewControlId(),choices[i],wxPoint(5,20*i+10),
- wxDefaultSize , i == 0 ? wxRB_GROUP : 0 ) ;
+ wxRadioButton *radBtn = new wxRadioButton(this, NewControlId(), wxStripMenuCodes(choices[i]),wxPoint(5,20*i+10),
+ wxDefaultSize , i == 0 ? wxRB_GROUP : 0 ) ;
if ( i == 0 )
m_radioButtonCycle = radBtn ;
// m_radioButtonCycle=radBtn->AddInCycle(m_radioButtonCycle);
}
- SetSelection(0);
- SetSize(pos.x,pos.y,size.x,size.y);
+ SetSelection(0);
+ MacPostControlCreate() ;
- return TRUE;
+ return TRUE;
}
bool wxRadioBox::Enable(bool enable)
{
- int i;
+ int i;
wxRadioButton *current;
if (!wxControl::Enable(enable))
- return (false);
-
- current=m_radioButtonCycle;
- for (i=0;i<m_noItems;i++) {
+ return false;
+
+ current = m_radioButtonCycle;
+ for (i = 0; i < m_noItems; i++) {
current->Enable(enable);
- current=current->NextInCycle();
- }
- return (true);
+ current = current->NextInCycle();
+ }
+ return true;
}
//-------------------------------------------------------------------------------------
void wxRadioBox::Enable(int item, bool enable)
{
- int i;
+ int i;
wxRadioButton *current;
if ((item < 0) || (item >= m_noItems))
return;
- i=0;
- current=m_radioButtonCycle;
- while (i!=item) {
+
+ i = 0;
+ current = m_radioButtonCycle;
+ while (i != item) {
i++;
- current=current->NextInCycle();
- }
+ current = current->NextInCycle();
+ }
+ current->Enable(enable);
}
//-------------------------------------------------------------------------------------
wxString wxRadioBox::GetString(int item) const
{
- int i;
+ int i;
wxRadioButton *current;
if ((item < 0) || (item >= m_noItems))
return wxString("");
- i=0;
- current=m_radioButtonCycle;
- while (i!=item) {
+
+ i = 0;
+ current = m_radioButtonCycle;
+ while (i != item) {
i++;
- current=current->NextInCycle();
- }
+ current = current->NextInCycle();
+ }
return current->GetLabel();
}
}
}
+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;
+
+ // handle radio box title as well
+ GetTextExtent(GetTitle(), &eachWidth, NULL);
+ eachWidth = (int)(eachWidth + RADIO_SIZE) + 3 * charWidth ;
+ if (totWidth < eachWidth)
+ totWidth = eachWidth;
+
+ return wxSize(totWidth, totHeight);
+}
//-------------------------------------------------------------------------------------
// ¥ GetNumVer
//-------------------------------------------------------------------------------------