X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d3a80c922c7f0932f0b3985846e58ef48e3a6da7..50b58dec17f90370a1ae76ad00aaff8c3c5066a9:/src/motif/radiobox.cpp?ds=sidebyside diff --git a/src/motif/radiobox.cpp b/src/motif/radiobox.cpp index 98368633fc..0d6845b5ae 100644 --- a/src/motif/radiobox.cpp +++ b/src/motif/radiobox.cpp @@ -9,10 +9,13 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "radiobox.h" #endif +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + #ifdef __VMS #define XtDisplay XTDISPLAY #endif @@ -21,6 +24,7 @@ #include "wx/radiobox.h" #include "wx/utils.h" +#include "wx/arrstr.h" #ifdef __VMS__ #pragma message disable nosimpint @@ -43,15 +47,12 @@ void wxRadioBoxCallback (Widget w, XtPointer clientData, IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl) // Radio box item -wxRadioBox::wxRadioBox() +void wxRadioBox::Init() { m_selectedButton = -1; m_noItems = 0; m_noRowsOrCols = 0; m_majorDim = 0 ; - - m_radioButtons = (WXWidget*) NULL; - m_radioButtonLabels = (wxString*) NULL; } bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, @@ -60,26 +61,10 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, int majorDim, long style, const wxValidator& val, const wxString& name) { - m_selectedButton = -1; - m_noItems = n; - m_radioButtons = (WXWidget*) NULL; - m_radioButtonLabels = (wxString*) NULL; - m_backgroundColour = parent->GetBackgroundColour(); - m_foregroundColour = parent->GetForegroundColour(); - m_font = parent->GetFont(); - - SetName(name); - SetValidator(val); - - parent->AddChild(this); - - m_windowStyle = (long&)style; - - if (id == -1) - m_windowId = NewControlId(); - else - m_windowId = id; + if( !CreateControl( parent, id, pos, size, style, val, name ) ) + return false; + m_noItems = n; m_noRowsOrCols = majorDim; if (majorDim==0) @@ -102,7 +87,8 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, if (label1 != "") { wxXmString text(label1); - (void)XtVaCreateManagedWidget( label1.c_str(), + m_labelWidget = (WXWidget) + XtVaCreateManagedWidget( label1.c_str(), #if wxUSE_GADGETS style & wxCOLOURED ? xmLabelWidgetClass : xmLabelGadgetClass, @@ -133,20 +119,20 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, XtSetArg (args[0], XmNorientation, ((style & wxHORIZONTAL) == wxHORIZONTAL ? XmHORIZONTAL : XmVERTICAL)); XtSetArg (args[1], XmNnumColumns, m_majorDim); + XtSetArg (args[2], XmNadjustLast, False); - Widget radioBoxWidget = XmCreateRadioBox ((Widget)m_mainWidget, "radioBoxWidget", args, 2); + Widget radioBoxWidget = + XmCreateRadioBox ((Widget)m_mainWidget, "radioBoxWidget", args, 3); - // if (style & wxFLAT) - // XtVaSetValues (radioBoxWidget, XmNborderWidth, 1, NULL); + m_radioButtons.reserve(n); + m_radioButtonLabels.reserve(n); - m_radioButtons = new WXWidget[n]; - m_radioButtonLabels = new wxString[n]; int i; for (i = 0; i < n; i++) { wxString str(wxStripMenuCodes(choices[i])); - m_radioButtonLabels[i] = str; - m_radioButtons[i] = (WXWidget) XtVaCreateManagedWidget (wxConstCast(str.c_str(), char), + m_radioButtonLabels.push_back(str); + Widget radioItem = XtVaCreateManagedWidget (wxConstCast(str.c_str(), char), #if wxUSE_GADGETS xmToggleButtonGadgetClass, radioBoxWidget, #else @@ -154,12 +140,13 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, #endif wxFont::GetFontTag(), fontType, NULL); - XtAddCallback ((Widget) m_radioButtons[i], XmNvalueChangedCallback, (XtCallbackProc) wxRadioBoxCallback, - (XtPointer) this); + m_radioButtons.push_back((WXWidget)radioItem); + XtAddCallback (radioItem, XmNvalueChangedCallback, + (XtCallbackProc) wxRadioBoxCallback, + (XtPointer) this); } - m_font = parent->GetFont(); - ChangeFont(FALSE); + ChangeFont(false); SetSelection (0); @@ -167,20 +154,26 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, XtManageChild (radioBoxWidget); XtManageChild ((Widget)m_mainWidget); - SetCanAddEventHandler(TRUE); AttachWidget (parent, m_mainWidget, NULL, pos.x, pos.y, size.x, size.y); ChangeBackgroundColour(); - return TRUE; + return true; } +bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title, + const wxPoint& pos, const wxSize& size, + const wxArrayString& choices, + int majorDim, long style, + const wxValidator& val, const wxString& name) +{ + wxCArrayString chs(choices); + return Create(parent, id, title, pos, size, chs.GetCount(), + chs.GetStrings(), majorDim, style, val, name); +} wxRadioBox::~wxRadioBox() { - delete[] m_radioButtonLabels; - delete[] m_radioButtons; - DetachWidget(m_mainWidget); XtDestroyWidget((Widget) m_mainWidget); @@ -197,6 +190,7 @@ void wxRadioBox::SetString(int item, const wxString& label) { wxString label1(wxStripMenuCodes(label)); wxXmString text( label1 ); + m_radioButtonLabels[item] = label1; XtVaSetValues (widget, XmNlabelString, text(), XmNlabelType, XmSTRING, @@ -220,16 +214,16 @@ void wxRadioBox::SetSelection(int n) m_selectedButton = n; - m_inSetValue = TRUE; + m_inSetValue = true; - XmToggleButtonSetState ((Widget) m_radioButtons[n], TRUE, FALSE); + XmToggleButtonSetState ((Widget) m_radioButtons[n], True, False); int i; for (i = 0; i < m_noItems; i++) if (i != n) - XmToggleButtonSetState ((Widget) m_radioButtons[i], FALSE, FALSE); + XmToggleButtonSetState ((Widget) m_radioButtons[i], False, False); - m_inSetValue = FALSE; + m_inSetValue = false; } // Get single selection, for single choice list items @@ -283,13 +277,13 @@ void wxRadioBox::Enable(int n, bool enable) bool wxRadioBox::Enable(bool enable) { if ( !wxControl::Enable(enable) ) - return FALSE; + return false; int i; for (i = 0; i < m_noItems; i++) XtSetSensitive ((Widget) m_radioButtons[i], (Boolean) enable); - return TRUE; + return true; } bool wxRadioBox::Show(bool show) @@ -343,15 +337,15 @@ bool wxRadioBox::SetStringSelection (const wxString& s) if (sel > -1) { SetSelection (sel); - return TRUE; + return true; } else - return FALSE; + return false; } void wxRadioBox::Command (wxCommandEvent & event) { - SetSelection (event.m_commandInt); + SetSelection (event.GetInt()); ProcessCommand (event); } @@ -377,14 +371,14 @@ void wxRadioBox::ChangeBackgroundColour() { wxWindow::ChangeBackgroundColour(); - int selectPixel = wxBLACK->AllocColour(wxGetDisplay()); + int selectPixel = wxBLACK->AllocColour(XtDisplay((Widget)m_mainWidget)); int i; for (i = 0; i < m_noItems; i++) { WXWidget radioButton = m_radioButtons[i]; - DoChangeBackgroundColour(radioButton, m_backgroundColour, TRUE); + wxDoChangeBackgroundColour(radioButton, m_backgroundColour, true); XtVaSetValues ((Widget) radioButton, XmNselectColor, selectPixel, @@ -401,7 +395,7 @@ void wxRadioBox::ChangeForegroundColour() { WXWidget radioButton = m_radioButtons[i]; - DoChangeForegroundColour(radioButton, m_foregroundColour); + wxDoChangeForegroundColour(radioButton, m_foregroundColour); } } @@ -431,8 +425,9 @@ void wxRadioBoxCallback (Widget w, XtPointer clientData, wxRadioBox *item = (wxRadioBox *) clientData; int sel = -1; int i; + const wxWidgetArray& buttons = item->GetRadioButtons(); for (i = 0; i < item->GetCount(); i++) - if (item->GetRadioButtons() && ((Widget) (item->GetRadioButtons()[i]) == w)) + if (((Widget)buttons[i]) == w) sel = i; item->SetSel(sel);