X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fwx%2Fsrc%2FbbwxComboBox.cxx;h=5b8ab4529fd67dc9d3f18f03cab898b5fd70eae2;hb=f1f889cb5984a875203fb13008977d8bcc740258;hp=e76d44f4d54443769211b03cf167c709b15d7eae;hpb=b05f82ac827b39aceb736aaace5eb5cc3e914814;p=bbtk.git diff --git a/packages/wx/src/bbwxComboBox.cxx b/packages/wx/src/bbwxComboBox.cxx index e76d44f..5b8ab45 100644 --- a/packages/wx/src/bbwxComboBox.cxx +++ b/packages/wx/src/bbwxComboBox.cxx @@ -20,20 +20,20 @@ namespace bbwx { public: ComboBoxWidget( ComboBox* box, wxWindow *parent, - int iSelection, - std::string title, - std::vector< std::string > lstIn, - int typeForm ); - + int iSelection, + std::string title, + std::vector< std::string > lstIn, + int typeForm ); ~ComboBoxWidget(); - + void OnComboBoxSelection(int iSelection); void OnComboBox(wxEvent& event); + void FillItems( int iSelection, std::vector< std::string > lstIn); private: - int mTypeForm; + int mTypeForm; ComboBox *mBox; - wxListBox *wxlistbox; - wxChoice *wxchoice; + wxListBox *wxlistbox; + wxChoice *wxchoice; }; @@ -54,12 +54,10 @@ namespace bbwx mBox(box), mTypeForm(typeForm) { - wxPanel *panel = this; + wxPanel *panel = this; wxlistbox = NULL; - wxchoice = NULL; - int i; - - + wxchoice = NULL; + int i; //--------------------------------------------------------------------- // 2) Insertion of the components in the window @@ -72,8 +70,7 @@ namespace bbwx } sizer->AddGrowableCol(0); panel->SetSizer(sizer); - - + //--------------------------------------------------------------------- // 1) Creation de wxChoise widget @@ -84,7 +81,7 @@ namespace bbwx Connect( wxlistbox->GetId(), wxEVT_COMMAND_CHOICE_SELECTED, (wxObjectEventFunction) (void (wxPanel::*)(wxEvent&))&ComboBoxWidget::OnComboBox ); for (i=0;iAppend( bbtk::std2wx( lstIn[i] ) ); + wxlistbox->Append( bbtk::std2wx( lstIn[i] ) ); } // for i wxlistbox->SetSelection(iSelection); sizer->Add( wxlistbox,1,wxGROW ); @@ -95,16 +92,13 @@ namespace bbwx Connect( wxchoice->GetId(), wxEVT_COMMAND_CHOICE_SELECTED, (wxObjectEventFunction) (void (wxPanel::*)(wxEvent&))&ComboBoxWidget::OnComboBox ); for (i=0;iAppend( bbtk::std2wx( lstIn[i] ) ); + wxchoice->Append( bbtk::std2wx( lstIn[i] ) ); } // for i wxchoice->SetSelection(iSelection); sizer->Add( wxchoice,1,wxGROW ); } - - // panel->SetAutoLayout(true); // panel->Layout(); - } //------------------------------------------------------------------------- @@ -112,6 +106,17 @@ namespace bbwx { } + + //-------------------------------------------------------------------------- + void ComboBoxWidget::OnComboBoxSelection(int iSelection) + { + mBox->bbSetInputSelection( iSelection ); + mBox->bbSetOutputOut( iSelection ); + mBox->bbSetOutputOutString( bbtk::wx2std( wxchoice->GetString(iSelection) ) ); + mBox->bbSignalOutputModification("Out"); + mBox->bbSignalOutputModification("OutString"); + } + //-------------------------------------------------------------------------- void ComboBoxWidget::OnComboBox(wxEvent& event) { @@ -122,14 +127,34 @@ namespace bbwx } else { iSelection = wxchoice->GetSelection(); } - - mBox->bbSetInputSelection( iSelection ); - mBox->bbSetOutputOut( iSelection ); - mBox->bbSetOutputOutString( bbtk::wx2std( wxchoice->GetString(iSelection) ) ); - mBox->bbSignalOutputModification("Out"); - mBox->bbSignalOutputModification("OutString"); + OnComboBoxSelection(iSelection); } +//-------------------------------------------------------------------------- + void ComboBoxWidget::FillItems( + int iSelection, + std::vector< std::string > lstIn + ) + { + int i; + if (mTypeForm==1) + { + wxlistbox->Clear(); + for (i=0;iAppend( bbtk::std2wx( lstIn[i] ) ); + } // for i + + wxlistbox->SetSelection(iSelection); + } else { + wxchoice->Clear(); + for (i=0;iAppend( bbtk::std2wx( lstIn[i] ) ); + } // for i + wxchoice->SetSelection(iSelection); + } // if + } BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,ComboBox) BBTK_BLACK_BOX_IMPLEMENTATION(ComboBox,bbtk::WxBlackBox); @@ -138,7 +163,22 @@ BBTK_BLACK_BOX_IMPLEMENTATION(ComboBox,bbtk::WxBlackBox); //===== void ComboBox::Process() { + int iSelection = bbGetInputSelection(); + if (bbGetInputSelection() >= bbGetInputIn().size()) { iSelection=bbGetInputIn().size()-1; } + ComboBoxWidget *w = (ComboBoxWidget*)bbGetOutputWidget(); + w->FillItems( iSelection, bbGetInputIn() ); + bbSetInputSelection( iSelection ); + bbSetOutputOut( iSelection ); + + int size = bbGetInputIn().size(); + if ( (iSelection>0) && ( (size-1)<=iSelection) ) + { + bbSetOutputOutString( bbGetInputIn()[ iSelection ] ); + } +// bbSignalOutputModification("Out"); +// bbSignalOutputModification("OutString"); } + //===== // Before editing this file, make sure it's a file of your own (i.e.: it wasn't generated from xml description; if so : your modifications will be lost) //===== @@ -151,7 +191,7 @@ void ComboBox::CreateWidget(wxWindow* parent) ComboBoxWidget *w = new ComboBoxWidget( this, - parent, + parent, bbGetInputSelection() , bbGetInputTitle(), bbGetInputIn(),