#endif
#include "wx/radiobox.h"
-#include <wx/mac/uma.h>
+#include "wx/radiobut.h"
+#include "wx/mac/uma.h"
#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl)
// ¥ wxRadioBox()
//-------------------------------------------------------------------------------------
// Default constructor
+BEGIN_EVENT_TABLE(wxRadioBox, wxControl)
+EVT_RADIOBUTTON( -1 , wxRadioBox::OnRadioButton )
+END_EVENT_TABLE()
+
+void wxRadioBox::OnRadioButton( wxCommandEvent &outer )
+{
+ wxCommandEvent event(wxEVT_COMMAND_RADIOBOX_SELECTED, m_windowId);
+ int i = GetSelection() ;
+ event.SetInt( i );
+ event.SetString( GetString( i ) );
+ event.SetEventObject( this );
+ ProcessCommand(event);
+}
wxRadioBox::wxRadioBox()
{
Rect bounds ;
Str255 title ;
- MacPreControlCreate( parent , id , label , pos , size ,style, *((wxValidator*)NULL) , name , &bounds , title ) ;
+ MacPreControlCreate( parent , id , label , pos , size ,style, val , name , &bounds , title ) ;
m_macControl = UMANewControl( parent->GetMacRootWindow() , &bounds , title , true , 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));
- m_radioButtonCycle=radBtn->AddInCycle(m_radioButtonCycle);
+ wxRadioButton *radBtn = new wxRadioButton(this, NewControlId(),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);
//-------------------------------------------------------------------------------------
// Enables or disables the entire radiobox
-void wxRadioBox::Enable(bool enable)
+bool wxRadioBox::Enable(bool enable)
{
int i;
wxRadioButton *current;
- wxControl::Enable(enable);
+ if (!wxControl::Enable(enable))
+ return (false);
current=m_radioButtonCycle;
for (i=0;i<m_noItems;i++) {
current->Enable(enable);
current=current->NextInCycle();
}
+ return (true);
}
//-------------------------------------------------------------------------------------
i++;
current=current->NextInCycle();
}
- return current->Enable(enable);
}
//-------------------------------------------------------------------------------------
// Simulates the effect of the user issuing a command to the item
-#define RADIO_SIZE 20
+#define RADIO_SIZE 40
void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags)
{
int x_current, y_current;
int x_offset,y_offset;
+ int widthOld, heightOld;
+ GetSize(&widthOld, &heightOld);
x_offset = x;
y_offset = y;
GetPosition(&x_current, &y_current);
- if ((x == -1) || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
+ if ((x == -1) && !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
x_offset = x_current;
- if ((y == -1) || (sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
+ if ((y == -1)&& !(sizeFlags & wxSIZE_ALLOW_MINUS_ONE))
y_offset = y_current;
// define size
totHeight = GetNumVer() * (maxHeight + charHeight/2) + charHeight*3/2;
totWidth = GetNumHor() * (maxWidth + charWidth) + charWidth;
- wxControl::DoSetSize(x_offset,y_offset,totWidth,totHeight);
+ // only change our width/height if asked for
+ if ( width == -1 )
+ {
+ if ( sizeFlags & wxSIZE_AUTO_WIDTH )
+ width = totWidth ;
+ else
+ width = widthOld;
+ }
+
+ if ( height == -1 )
+ {
+ if ( sizeFlags & wxSIZE_AUTO_HEIGHT )
+ height = totHeight ;
+ else
+ height = heightOld;
+ }
+
+ wxControl::DoSetSize(x_offset,y_offset,width,height,wxSIZE_AUTO);
// arrange radiobuttons
x_start = charWidth;
- y_start = charHeight*3/2;
+ y_start = 15 ;
x_offset = x_start;
y_offset = y_start;
else
{
x_offset = x_start;
- y_offset += maxHeight + charHeight/2;
+ y_offset += maxHeight ; /*+ charHeight/2;*/
}
}
current=current->NextInCycle();
if (m_windowStyle & wxRA_SPECIFY_ROWS)
- y_offset += maxHeight + charHeight/2;
+ y_offset += maxHeight ; /*+ charHeight/2;*/
else
x_offset += maxWidth + charWidth;
}