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
00048
00049
00050
00051 class RadioButtonWidget : public wxPanel
00052 {
00053 public:
00054 RadioButtonWidget( RadioButton* box, wxWindow *parent,
00055 int In,
00056 wxString title,
00057 std::vector<wxString> lstIn );
00058
00059 ~RadioButtonWidget();
00060
00061 int GetValue();
00062 void OnRadioButton(wxEvent& event);
00063
00064 private:
00065 RadioButton *mBox;
00066 int MAX_RADIOBUTTON;
00067 wxRadioButton *mwxRadioButton[10];
00068 };
00069
00070
00071
00072
00073
00074
00075 RadioButtonWidget::RadioButtonWidget( RadioButton* box,
00076 wxWindow *parent,
00077 int In,
00078 wxString title,
00079 std::vector<wxString> lstIn )
00080 :
00081 wxPanel( parent, -1) ,
00082 mBox(box)
00083 {
00084 wxPanel *panel = this;
00085 MAX_RADIOBUTTON = lstIn.size();
00086 int i;
00087 long style=wxRB_GROUP;
00088 for (i=0;i<MAX_RADIOBUTTON; i++)
00089 {
00090 if ( lstIn[i]!=_T(""))
00091 {
00092
00093
00094
00095
00096 mwxRadioButton[i] = new wxRadioButton( panel, -1, lstIn[i],wxDefaultPosition, wxDefaultSize, style);
00097 style=0;
00098 if (In==i)
00099 {
00100 mwxRadioButton[i]->SetValue(true);
00101 }
00102 else
00103 {
00104 mwxRadioButton[i]->SetValue(false);
00105 }
00106 Connect( mwxRadioButton[i]->GetId(),
00107 wxEVT_COMMAND_RADIOBUTTON_SELECTED,
00108 (wxObjectEventFunction)
00109 (void (wxPanel::*)(wxEvent&))
00110 &RadioButtonWidget::OnRadioButton );
00111 }
00112 else
00113 {
00114 mwxRadioButton[i]=NULL;
00115 }
00116 }
00117
00118
00119
00120
00121
00122 wxFlexGridSizer *sizer = new wxFlexGridSizer(1);
00123 if (title!=_T(""))
00124 {
00125 sizer->Add( new wxStaticText(panel,-1, title ) );
00126 }
00127 for (i=0;i<MAX_RADIOBUTTON; i++)
00128 {
00129 if (mwxRadioButton[i]!=NULL)
00130 {
00131 sizer->Add( mwxRadioButton[i],1,wxGROW );
00132 }
00133 }
00134 sizer->AddGrowableCol(0);
00135 panel->SetSizer(sizer);
00136
00137
00138
00139
00140 }
00141
00142
00143 RadioButtonWidget::~RadioButtonWidget()
00144 {
00145 }
00146
00147
00148
00149 int RadioButtonWidget::GetValue()
00150 {
00151 int result=-1;
00152 int i;
00153 for (i=0;i<MAX_RADIOBUTTON; i++)
00154 {
00155 if ( mwxRadioButton[i]!=NULL)
00156 {
00157 if (mwxRadioButton[i]->GetValue()==true)
00158 {
00159 result=i;
00160 }
00161 }
00162 }
00163 return result;
00164 }
00165
00166
00167 void RadioButtonWidget::OnRadioButton(wxEvent& event)
00168 {
00169 mBox->bbSetOutputOut( GetValue() );
00170 mBox->bbSetInputIn( GetValue() );
00171 mBox->bbSignalOutputModification("Out");
00172 }
00173
00174
00175
00176
00177
00178
00179 BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,RadioButton);
00180 BBTK_BLACK_BOX_IMPLEMENTATION(RadioButton,bbtk::WxBlackBox);
00181
00182
00183 void RadioButton::bbUserConstructor()
00184 {
00185 bbSetInputIn(0);
00186 bbSetOutputOut( bbGetInputIn() );
00187 bbSetInputIn0("");
00188 bbSetInputIn1("");
00189 bbSetInputIn2("");
00190 bbSetInputIn3("");
00191 bbSetInputIn4("");
00192 bbSetInputIn5("");
00193 bbSetInputIn6("");
00194 bbSetInputIn7("");
00195 bbSetInputIn8("");
00196 bbSetInputIn9("");
00197 }
00198
00199
00200 void RadioButton::Process()
00201 {
00202 bbtkDebugMessageInc("Core",9,"RadioButton::Process()"<<std::endl);
00203 bbtkDebugDecTab("Core",9);
00204 }
00205
00211 void RadioButton::CreateWidget(wxWindow* parent)
00212 {
00213
00214 std::vector<wxString> lstIn;
00215 lstIn.push_back( bbtk::std2wx(bbGetInputIn0()) );
00216 lstIn.push_back( bbtk::std2wx(bbGetInputIn1()) );
00217 lstIn.push_back( bbtk::std2wx(bbGetInputIn2()) );
00218 lstIn.push_back( bbtk::std2wx(bbGetInputIn3()) );
00219 lstIn.push_back( bbtk::std2wx(bbGetInputIn4()) );
00220 lstIn.push_back( bbtk::std2wx(bbGetInputIn5()) );
00221 lstIn.push_back( bbtk::std2wx(bbGetInputIn6()) );
00222 lstIn.push_back( bbtk::std2wx(bbGetInputIn7()) );
00223 lstIn.push_back( bbtk::std2wx(bbGetInputIn8()) );
00224 lstIn.push_back( bbtk::std2wx(bbGetInputIn9()) );
00225
00226 RadioButtonWidget *w = new RadioButtonWidget(
00227 this,
00228
00229 parent,
00230 bbGetInputIn() ,
00231 bbtk::std2wx(bbGetInputTitle()),
00232 lstIn );
00233
00234 bbSetOutputOut( bbGetInputIn() );
00235 bbSetOutputWidget( w );
00236
00237 }
00238
00239
00240
00241
00242 }
00243
00244 #endif // _USE_WXWIDGETS_
00245