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:
Mattia Barbon
2003-09-11 21:05:19 +00:00
parent d122f8c745
commit 3bdb8629f8
3 changed files with 51 additions and 54 deletions

View File

@@ -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

View File

@@ -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,

View File

@@ -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);