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
|
#endif
|
||||||
|
|
||||||
#include "wx/clntdata.h"
|
#include "wx/clntdata.h"
|
||||||
#include "wx/dynarray.h"
|
|
||||||
|
|
||||||
WX_DEFINE_ARRAY(WXWidget, wxWidgetArray);
|
#ifndef wxWIDGET_ARRAY_DEFINED
|
||||||
|
#define wxWIDGET_ARRAY_DEFINED
|
||||||
|
|
||||||
|
#include "wx/dynarray.h"
|
||||||
|
WX_DEFINE_ARRAY(WXWidget, wxWidgetArray);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Choice item
|
// Choice item
|
||||||
class WXDLLEXPORT wxChoice: public wxChoiceBase
|
class WXDLLEXPORT wxChoice: public wxChoiceBase
|
||||||
|
@@ -16,34 +16,45 @@
|
|||||||
#pragma interface "radiobox.h"
|
#pragma interface "radiobox.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "wx/control.h"
|
#ifndef wxWIDGET_ARRAY_DEFINED
|
||||||
|
#define wxWIDGET_ARRAY_DEFINED
|
||||||
|
|
||||||
// List box item
|
#include "wx/dynarray.h"
|
||||||
class WXDLLEXPORT wxBitmap ;
|
WX_DEFINE_ARRAY(WXWidget, wxWidgetArray);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/arrstr.h"
|
||||||
|
|
||||||
class WXDLLEXPORT wxRadioBox : public wxControl, public wxRadioBoxBase
|
class WXDLLEXPORT wxRadioBox : public wxControl, public wxRadioBoxBase
|
||||||
{
|
{
|
||||||
DECLARE_DYNAMIC_CLASS(wxRadioBox)
|
DECLARE_DYNAMIC_CLASS(wxRadioBox)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
wxRadioBox();
|
wxRadioBox() { Init(); }
|
||||||
|
|
||||||
wxRadioBox(wxWindow *parent, wxWindowID id, const wxString& title,
|
wxRadioBox(wxWindow *parent, wxWindowID id, const wxString& title,
|
||||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
int n = 0, const wxString choices[] = NULL,
|
const wxSize& size = wxDefaultSize,
|
||||||
int majorDim = 0, long style = wxRA_HORIZONTAL,
|
int n = 0, const wxString choices[] = NULL,
|
||||||
const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr)
|
int majorDim = 0, long style = wxRA_HORIZONTAL,
|
||||||
|
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();
|
~wxRadioBox();
|
||||||
|
|
||||||
bool Create(wxWindow *parent, wxWindowID id, const wxString& title,
|
bool Create(wxWindow *parent, wxWindowID id, const wxString& title,
|
||||||
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
int n = 0, const wxString choices[] = NULL,
|
const wxSize& size = wxDefaultSize,
|
||||||
int majorDim = 0, long style = wxRA_HORIZONTAL,
|
int n = 0, const wxString choices[] = NULL,
|
||||||
const wxValidator& val = wxDefaultValidator, const wxString& name = wxRadioBoxNameStr);
|
int majorDim = 0, long style = wxRA_HORIZONTAL,
|
||||||
|
const wxValidator& val = wxDefaultValidator,
|
||||||
|
const wxString& name = wxRadioBoxNameStr);
|
||||||
|
|
||||||
int FindString(const wxString& s) const;
|
int FindString(const wxString& s) const;
|
||||||
void SetSelection(int N);
|
void SetSelection(int N);
|
||||||
@@ -71,19 +82,22 @@ public:
|
|||||||
virtual void ChangeFont(bool keepOriginalSize = TRUE);
|
virtual void ChangeFont(bool keepOriginalSize = TRUE);
|
||||||
virtual void ChangeBackgroundColour();
|
virtual void ChangeBackgroundColour();
|
||||||
virtual void ChangeForegroundColour();
|
virtual void ChangeForegroundColour();
|
||||||
WXWidget* GetRadioButtons() const { return m_radioButtons; }
|
const wxWidgetArray& GetRadioButtons() const { return m_radioButtons; }
|
||||||
void SetSel(int i) { m_selectedButton = i; }
|
void SetSel(int i) { m_selectedButton = i; }
|
||||||
virtual WXWidget GetLabelWidget() const { return m_labelWidget; }
|
virtual WXWidget GetLabelWidget() const { return m_labelWidget; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
void Init();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
int m_majorDim;
|
int m_majorDim;
|
||||||
int m_noItems;
|
int m_noItems;
|
||||||
int m_noRowsOrCols;
|
int m_noRowsOrCols;
|
||||||
int m_selectedButton;
|
int m_selectedButton;
|
||||||
|
|
||||||
WXWidget* m_radioButtons;
|
wxWidgetArray m_radioButtons;
|
||||||
WXWidget m_labelWidget;
|
WXWidget m_labelWidget;
|
||||||
wxString* m_radioButtonLabels;
|
wxArrayString m_radioButtonLabels;
|
||||||
|
|
||||||
virtual void DoSetSize(int x, int y,
|
virtual void DoSetSize(int x, int y,
|
||||||
int width, int height,
|
int width, int height,
|
||||||
|
@@ -43,15 +43,12 @@ void wxRadioBoxCallback (Widget w, XtPointer clientData,
|
|||||||
IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl)
|
IMPLEMENT_DYNAMIC_CLASS(wxRadioBox, wxControl)
|
||||||
|
|
||||||
// Radio box item
|
// Radio box item
|
||||||
wxRadioBox::wxRadioBox()
|
void wxRadioBox::Init()
|
||||||
{
|
{
|
||||||
m_selectedButton = -1;
|
m_selectedButton = -1;
|
||||||
m_noItems = 0;
|
m_noItems = 0;
|
||||||
m_noRowsOrCols = 0;
|
m_noRowsOrCols = 0;
|
||||||
m_majorDim = 0 ;
|
m_majorDim = 0 ;
|
||||||
|
|
||||||
m_radioButtons = (WXWidget*) NULL;
|
|
||||||
m_radioButtonLabels = (wxString*) NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title,
|
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,
|
int majorDim, long style,
|
||||||
const wxValidator& val, const wxString& name)
|
const wxValidator& val, const wxString& name)
|
||||||
{
|
{
|
||||||
m_selectedButton = -1;
|
if( !CreateControl( parent, id, pos, size, style, val, name ) )
|
||||||
|
return false;
|
||||||
|
|
||||||
m_noItems = n;
|
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;
|
m_noRowsOrCols = majorDim;
|
||||||
|
|
||||||
if (majorDim==0)
|
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);
|
Widget radioBoxWidget = XmCreateRadioBox ((Widget)m_mainWidget, "radioBoxWidget", args, 2);
|
||||||
|
|
||||||
// if (style & wxFLAT)
|
m_radioButtons.reserve(n);
|
||||||
// XtVaSetValues (radioBoxWidget, XmNborderWidth, 1, NULL);
|
m_radioButtonLabels.reserve(n);
|
||||||
|
|
||||||
m_radioButtons = new WXWidget[n];
|
|
||||||
m_radioButtonLabels = new wxString[n];
|
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < n; i++)
|
for (i = 0; i < n; i++)
|
||||||
{
|
{
|
||||||
wxString str(wxStripMenuCodes(choices[i]));
|
wxString str(wxStripMenuCodes(choices[i]));
|
||||||
m_radioButtonLabels[i] = str;
|
m_radioButtonLabels.push_back(str);
|
||||||
m_radioButtons[i] = (WXWidget) XtVaCreateManagedWidget (wxConstCast(str.c_str(), char),
|
Widget radioItem = XtVaCreateManagedWidget (wxConstCast(str.c_str(), char),
|
||||||
#if wxUSE_GADGETS
|
#if wxUSE_GADGETS
|
||||||
xmToggleButtonGadgetClass, radioBoxWidget,
|
xmToggleButtonGadgetClass, radioBoxWidget,
|
||||||
#else
|
#else
|
||||||
@@ -155,11 +134,12 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title,
|
|||||||
#endif
|
#endif
|
||||||
wxFont::GetFontTag(), fontType,
|
wxFont::GetFontTag(), fontType,
|
||||||
NULL);
|
NULL);
|
||||||
XtAddCallback ((Widget) m_radioButtons[i], XmNvalueChangedCallback, (XtCallbackProc) wxRadioBoxCallback,
|
m_radioButtons.push_back((WXWidget)radioItem);
|
||||||
(XtPointer) this);
|
XtAddCallback (radioItem, XmNvalueChangedCallback,
|
||||||
|
(XtCallbackProc) wxRadioBoxCallback,
|
||||||
|
(XtPointer) this);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_font = parent->GetFont();
|
|
||||||
ChangeFont(FALSE);
|
ChangeFont(FALSE);
|
||||||
|
|
||||||
SetSelection (0);
|
SetSelection (0);
|
||||||
@@ -178,9 +158,6 @@ bool wxRadioBox::Create(wxWindow *parent, wxWindowID id, const wxString& title,
|
|||||||
|
|
||||||
wxRadioBox::~wxRadioBox()
|
wxRadioBox::~wxRadioBox()
|
||||||
{
|
{
|
||||||
delete[] m_radioButtonLabels;
|
|
||||||
delete[] m_radioButtons;
|
|
||||||
|
|
||||||
DetachWidget(m_mainWidget);
|
DetachWidget(m_mainWidget);
|
||||||
XtDestroyWidget((Widget) m_mainWidget);
|
XtDestroyWidget((Widget) m_mainWidget);
|
||||||
|
|
||||||
@@ -197,6 +174,7 @@ void wxRadioBox::SetString(int item, const wxString& label)
|
|||||||
{
|
{
|
||||||
wxString label1(wxStripMenuCodes(label));
|
wxString label1(wxStripMenuCodes(label));
|
||||||
wxXmString text( label1 );
|
wxXmString text( label1 );
|
||||||
|
m_radioButtonLabels[item] = label1;
|
||||||
XtVaSetValues (widget,
|
XtVaSetValues (widget,
|
||||||
XmNlabelString, text(),
|
XmNlabelString, text(),
|
||||||
XmNlabelType, XmSTRING,
|
XmNlabelType, XmSTRING,
|
||||||
@@ -431,8 +409,9 @@ void wxRadioBoxCallback (Widget w, XtPointer clientData,
|
|||||||
wxRadioBox *item = (wxRadioBox *) clientData;
|
wxRadioBox *item = (wxRadioBox *) clientData;
|
||||||
int sel = -1;
|
int sel = -1;
|
||||||
int i;
|
int i;
|
||||||
|
const wxWidgetArray& buttons = item->GetRadioButtons();
|
||||||
for (i = 0; i < item->GetCount(); i++)
|
for (i = 0; i < item->GetCount(); i++)
|
||||||
if (item->GetRadioButtons() && ((Widget) (item->GetRadioButtons()[i]) == w))
|
if (((Widget)buttons[i]) == w)
|
||||||
sel = i;
|
sel = i;
|
||||||
item->SetSel(sel);
|
item->SetSel(sel);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user