No real changes, just refactoring.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23537 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -17,9 +17,13 @@
|
||||
#endif
|
||||
|
||||
#include "wx/clntdata.h"
|
||||
#include "wx/dynarray.h"
|
||||
|
||||
#ifndef wxWIDGET_ARRAY_DEFINED
|
||||
#define wxWIDGET_ARRAY_DEFINED
|
||||
|
||||
#include "wx/dynarray.h"
|
||||
WX_DEFINE_ARRAY(WXWidget, wxWidgetArray);
|
||||
#endif
|
||||
|
||||
// Choice item
|
||||
class WXDLLEXPORT wxChoice: public wxChoiceBase
|
||||
|
@@ -16,34 +16,45 @@
|
||||
#pragma interface "radiobox.h"
|
||||
#endif
|
||||
|
||||
#include "wx/control.h"
|
||||
#ifndef wxWIDGET_ARRAY_DEFINED
|
||||
#define wxWIDGET_ARRAY_DEFINED
|
||||
|
||||
// List box item
|
||||
class WXDLLEXPORT wxBitmap ;
|
||||
#include "wx/dynarray.h"
|
||||
WX_DEFINE_ARRAY(WXWidget, wxWidgetArray);
|
||||
#endif
|
||||
|
||||
#include "wx/arrstr.h"
|
||||
|
||||
class WXDLLEXPORT wxRadioBox : public wxControl, public wxRadioBoxBase
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxRadioBox)
|
||||
|
||||
public:
|
||||
wxRadioBox();
|
||||
wxRadioBox() { Init(); }
|
||||
|
||||
wxRadioBox(wxWindow *parent, wxWindowID id, const wxString& title,
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
int n = 0, const wxString choices[] = NULL,
|
||||
int majorDim = 0, long style = wxRA_HORIZONTAL,
|
||||
const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr)
|
||||
const wxValidator& val = wxDefaultValidator,
|
||||
const wxString& name = wxRadioBoxNameStr)
|
||||
{
|
||||
Create(parent, id, title, pos, size, n, choices, majorDim, style, val, name);
|
||||
Init();
|
||||
|
||||
Create(parent, id, title, pos, size, n, choices,
|
||||
majorDim, style, val, name);
|
||||
}
|
||||
|
||||
~wxRadioBox();
|
||||
|
||||
bool Create(wxWindow *parent, wxWindowID id, const wxString& title,
|
||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||
const wxPoint& pos = wxDefaultPosition,
|
||||
const wxSize& size = wxDefaultSize,
|
||||
int n = 0, const wxString choices[] = NULL,
|
||||
int majorDim = 0, long style = wxRA_HORIZONTAL,
|
||||
const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr);
|
||||
const wxValidator& val = wxDefaultValidator,
|
||||
const wxString& name = wxRadioBoxNameStr);
|
||||
|
||||
int FindString(const wxString& s) const;
|
||||
void SetSelection(int N);
|
||||
@@ -71,19 +82,22 @@ public:
|
||||
virtual void ChangeFont(bool keepOriginalSize = TRUE);
|
||||
virtual void ChangeBackgroundColour();
|
||||
virtual void ChangeForegroundColour();
|
||||
WXWidget* GetRadioButtons() const { return m_radioButtons; }
|
||||
const wxWidgetArray& GetRadioButtons() const { return m_radioButtons; }
|
||||
void SetSel(int i) { m_selectedButton = i; }
|
||||
virtual WXWidget GetLabelWidget() const { return m_labelWidget; }
|
||||
|
||||
private:
|
||||
void Init();
|
||||
|
||||
protected:
|
||||
int m_majorDim;
|
||||
int m_noItems;
|
||||
int m_noRowsOrCols;
|
||||
int m_selectedButton;
|
||||
|
||||
WXWidget* m_radioButtons;
|
||||
wxWidgetArray m_radioButtons;
|
||||
WXWidget m_labelWidget;
|
||||
wxString* m_radioButtonLabels;
|
||||
wxArrayString m_radioButtonLabels;
|
||||
|
||||
virtual void DoSetSize(int x, int y,
|
||||
int width, int height,
|
||||
|
@@ -43,15 +43,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 +57,10 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title,
|
||||
int majorDim, long style,
|
||||
const wxValidator& val, const wxString& name)
|
||||
{
|
||||
m_selectedButton = -1;
|
||||
if( !CreateControl( parent, id, pos, size, style, val, name ) )
|
||||
return false;
|
||||
|
||||
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;
|
||||
|
||||
m_noRowsOrCols = majorDim;
|
||||
|
||||
if (majorDim==0)
|
||||
@@ -137,17 +118,15 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title,
|
||||
|
||||
Widget radioBoxWidget = XmCreateRadioBox ((Widget)m_mainWidget, "radioBoxWidget", args, 2);
|
||||
|
||||
// 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
|
||||
@@ -155,11 +134,12 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title,
|
||||
#endif
|
||||
wxFont::GetFontTag(), fontType,
|
||||
NULL);
|
||||
XtAddCallback ((Widget) m_radioButtons[i], XmNvalueChangedCallback, (XtCallbackProc) wxRadioBoxCallback,
|
||||
m_radioButtons.push_back((WXWidget)radioItem);
|
||||
XtAddCallback (radioItem, XmNvalueChangedCallback,
|
||||
(XtCallbackProc) wxRadioBoxCallback,
|
||||
(XtPointer) this);
|
||||
}
|
||||
|
||||
m_font = parent->GetFont();
|
||||
ChangeFont(FALSE);
|
||||
|
||||
SetSelection (0);
|
||||
@@ -178,9 +158,6 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title,
|
||||
|
||||
wxRadioBox::~wxRadioBox()
|
||||
{
|
||||
delete[] m_radioButtonLabels;
|
||||
delete[] m_radioButtons;
|
||||
|
||||
DetachWidget(m_mainWidget);
|
||||
XtDestroyWidget((Widget) m_mainWidget);
|
||||
|
||||
@@ -197,6 +174,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,
|
||||
@@ -431,8 +409,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);
|
||||
|
||||
|
Reference in New Issue
Block a user