- SetFont(GetParent()->GetFont());
- GetTextExtent(wxString("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), &charWidth, &charHeight);
- charWidth/=52;
-
- maxWidth=-1;
- maxHeight=-1;
- for (i = 0 ; i < m_noItems; i++)
- {
- GetTextExtent(GetLabel(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;
-
- wxControl::DoSetSize(x_offset,y_offset,totWidth,totHeight,wxSIZE_AUTO);
-
-// arrange radiobuttons
-
- int x_start,y_start;
-
-
- x_start = charWidth;
- y_start = charHeight*3/2;
- x_offset = x_start;
- y_offset = y_start;
-
- current=m_radioButtonCycle;
- for ( i = 0 ; i < m_noItems; i++)
- {
- if (i&&((i%m_majorDim)==0)) // not to do for the zero button!
- {
- if (m_windowStyle & wxRA_VERTICAL)
- {
- x_offset += maxWidth + charWidth;
- y_offset = y_start;
- }
- else
- {
- x_offset = x_start;
- y_offset += maxHeight + charHeight/2;
- }
- }
-
- current->SetSize(x_offset,y_offset,eachWidth[i],eachHeight[i]);
- current=current->NextInCycle();
-
- if (m_windowStyle & wxRA_SPECIFY_ROWS)
- y_offset += maxHeight + charHeight/2;
- else
- x_offset += maxWidth + charWidth;
- }
+ charWidth /= 52;
+
+ maxWidth = -1;
+ maxHeight = -1;
+
+ for (int i = 0 ; i < m_noItems; i++)
+ {
+ GetTextExtent(GetString(i), &eachWidth, &eachHeight,NULL, NULL, &font);
+ eachWidth = (int)(eachWidth + RADIO_SIZE) ;
+ eachHeight = (int)((3 * eachHeight) / 2);
+ if (maxWidth < eachWidth) maxWidth = eachWidth;
+ if (maxHeight < eachHeight) maxHeight = eachHeight;
+ }
+
+ totHeight = GetRowCount() * (maxHeight ) ;
+ totWidth = GetColumnCount() * (maxWidth + charWidth) ;
+
+ wxSize sz = DoGetSizeFromClientSize( wxSize( totWidth , totHeight ) ) ;
+ totWidth = sz.x ;
+ totHeight = sz.y ;
+
+ // 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);