00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00037 #ifdef _USE_WXWIDGETS_
00038
00039
00040 #include "bbwxRadioButton.h"
00041 #include "bbwxPackage.h"
00042
00043 #include <vector>
00044
00045 namespace bbwx
00046 {
00047 BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,RadioButton);
00048
00049
00050 RadioButtonWidget::RadioButtonWidget( RadioButton* box,
00051 wxWindow *parent,
00052 int In,
00053 wxString title,
00054 std::vector<wxString> lstIn )
00055 :
00056 wxPanel( parent, -1) ,
00057 mBox(box)
00058 {
00059 wxPanel *panel = this;
00060 MAX_RADIOBUTTON = lstIn.size();
00061 int i;
00062 long style=wxRB_GROUP;
00063 for (i=0;i<MAX_RADIOBUTTON; i++)
00064 {
00065 if ( lstIn[i]!=_T(""))
00066 {
00067
00068
00069
00070
00071 mwxRadioButton[i] = new wxRadioButton( panel, -1, lstIn[i],wxDefaultPosition, wxDefaultSize, style);
00072 style=0;
00073 if (In==i)
00074 {
00075 mwxRadioButton[i]->SetValue(true);
00076 }
00077 else
00078 {
00079 mwxRadioButton[i]->SetValue(false);
00080 }
00081 Connect( mwxRadioButton[i]->GetId(),
00082 wxEVT_COMMAND_RADIOBUTTON_SELECTED,
00083 (wxObjectEventFunction)
00084 (void (wxPanel::*)(wxEvent&))
00085 &RadioButtonWidget::OnRadioButton );
00086 }
00087 else
00088 {
00089 mwxRadioButton[i]=NULL;
00090 }
00091 }
00092
00093
00094
00095
00096
00097 wxFlexGridSizer *sizer = new wxFlexGridSizer(1);
00098 if (title!=_T(""))
00099 {
00100 sizer->Add( new wxStaticText(panel,-1, title ) );
00101 }
00102 for (i=0;i<MAX_RADIOBUTTON; i++)
00103 {
00104 if (mwxRadioButton[i]!=NULL)
00105 {
00106 sizer->Add( mwxRadioButton[i],1,wxGROW );
00107 }
00108 }
00109 sizer->AddGrowableCol(0);
00110 panel->SetSizer(sizer);
00111
00112
00113
00114
00115 }
00116
00117
00118 RadioButtonWidget::~RadioButtonWidget()
00119 {
00120 }
00121
00122
00123
00124 int RadioButtonWidget::GetValue()
00125 {
00126 int result=-1;
00127 int i;
00128 for (i=0;i<MAX_RADIOBUTTON; i++)
00129 {
00130 if ( mwxRadioButton[i]!=NULL)
00131 {
00132 if (mwxRadioButton[i]->GetValue()==true)
00133 {
00134 result=i;
00135 }
00136 }
00137 }
00138 return result;
00139 }
00140
00141
00142 void RadioButtonWidget::OnRadioButton(wxEvent& event)
00143 {
00144 mBox->bbSetOutputOut( GetValue() );
00145 mBox->bbSetInputIn( GetValue() );
00146 mBox->bbSignalOutputModification("Out");
00147 }
00148
00149
00150
00151
00152
00153
00154
00155 BBTK_BLACK_BOX_IMPLEMENTATION(RadioButton,bbtk::WxBlackBox);
00156
00157
00158 void RadioButton::bbUserConstructor()
00159 {
00160 bbSetInputIn(0);
00161 bbSetOutputOut( bbGetInputIn() );
00162 bbSetInputIn0("");
00163 bbSetInputIn1("");
00164 bbSetInputIn2("");
00165 bbSetInputIn3("");
00166 bbSetInputIn4("");
00167 bbSetInputIn5("");
00168 bbSetInputIn6("");
00169 bbSetInputIn7("");
00170 bbSetInputIn8("");
00171 bbSetInputIn9("");
00172 }
00173
00174
00175 void RadioButton::Process()
00176 {
00177 bbtkDebugMessageInc("Core",9,"RadioButton::Process()"<<std::endl);
00178 bbtkDebugDecTab("Core",9);
00179 }
00180
00186 void RadioButton::CreateWidget()
00187 {
00188
00189 std::vector<wxString> lstIn;
00190 lstIn.push_back( bbtk::std2wx(bbGetInputIn0()) );
00191 lstIn.push_back( bbtk::std2wx(bbGetInputIn1()) );
00192 lstIn.push_back( bbtk::std2wx(bbGetInputIn2()) );
00193 lstIn.push_back( bbtk::std2wx(bbGetInputIn3()) );
00194 lstIn.push_back( bbtk::std2wx(bbGetInputIn4()) );
00195 lstIn.push_back( bbtk::std2wx(bbGetInputIn5()) );
00196 lstIn.push_back( bbtk::std2wx(bbGetInputIn6()) );
00197 lstIn.push_back( bbtk::std2wx(bbGetInputIn7()) );
00198 lstIn.push_back( bbtk::std2wx(bbGetInputIn8()) );
00199 lstIn.push_back( bbtk::std2wx(bbGetInputIn9()) );
00200
00201 RadioButtonWidget *w = new RadioButtonWidget(
00202 this,
00203 bbGetWxParent(),
00204 bbGetInputIn() ,
00205 bbtk::std2wx(bbGetInputTitle()),
00206 lstIn );
00207
00208 bbSetOutputOut( bbGetInputIn() );
00209 bbSetOutputWidget( w );
00210
00211 }
00212
00213
00214
00215
00216 }
00217
00218 #endif // _USE_WXWIDGETS_
00219