X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/5008c64c321c39b498bbe5fb7f8bcc667cd41fe2..328bfc22243e3d4672ddf626db4f78e4269c7275:/src/mac/radiobox.cpp diff --git a/src/mac/radiobox.cpp b/src/mac/radiobox.cpp index 492c93133a..f2651ba594 100644 --- a/src/mac/radiobox.cpp +++ b/src/mac/radiobox.cpp @@ -14,11 +14,15 @@ //------------------------------------------------------------------------------------- #ifdef __GNUG__ -#pragma implementation "radiobox.h" + #pragma implementation "radioboxbase.h" + #pragma implementation "radiobox.h" #endif +#include "wx/defs.h" + #include "wx/radiobox.h" -#include +#include "wx/radiobut.h" +#include "wx/mac/uma.h" #if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl) @@ -31,6 +35,22 @@ 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 ) +{ + if ( outer.IsChecked() ) + { + 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() { @@ -95,17 +115,20 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& label, 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, + 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)); - 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); @@ -159,28 +182,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() //------------------------------------------------------------------------------------- @@ -196,7 +197,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; @@ -232,31 +233,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 //------------------------------------------------------------------------------------- @@ -280,7 +256,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; @@ -319,24 +295,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) //------------------------------------------------------------------------------------- @@ -420,7 +378,7 @@ void wxRadioBox::SetFocus() //------------------------------------------------------------------------------------- // 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) { @@ -431,13 +389,15 @@ 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 @@ -455,17 +415,34 @@ 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 (maxWidthNextInCycle(); if (m_windowStyle & wxRA_SPECIFY_ROWS) - y_offset += maxHeight + charHeight/2; + y_offset += maxHeight ; /*+ charHeight/2;*/ else x_offset += maxWidth + charWidth; } @@ -509,7 +486,7 @@ void wxRadioBox::DoSetSize(int x, int y, int width, int height, int sizeFlags) //------------------------------------------------------------------------------------- // return the number of buttons in the vertical direction -int wxRadioBox::GetNumVer() const +int wxRadioBox::GetRowCount() const { if ( m_windowStyle & wxRA_SPECIFY_ROWS ) { @@ -526,7 +503,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 ) {