X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=packages%2Fwx%2Fsrc%2FbbwxComboBox.cxx;h=36847256d4b89b9c7c7fcf59bd7d6c19e4ccc8eb;hb=c610230c431c264976c8b37f4f96adf4c33b7bd1;hp=4d4ce175e4909edac78f638703e2b3a8822a4ee7;hpb=6bbede25055ab1e1ad6a1ac4777131bd59efaecc;p=bbtk.git diff --git a/packages/wx/src/bbwxComboBox.cxx b/packages/wx/src/bbwxComboBox.cxx index 4d4ce17..3684725 100644 --- a/packages/wx/src/bbwxComboBox.cxx +++ b/packages/wx/src/bbwxComboBox.cxx @@ -9,6 +9,8 @@ #include #include +#include +#include namespace bbwx { @@ -18,17 +20,20 @@ namespace bbwx { public: ComboBoxWidget( ComboBox* box, wxWindow *parent, - int iSelection, - std::string title, - std::vector< std::string > lstIn ); - + int iSelection, + std::string title, + std::vector< std::string > lstIn, + int typeForm ); ~ComboBoxWidget(); - + void OnComboBox(int iSelection); void OnComboBox(wxEvent& event); + void FillItems( int iSelection, std::vector< std::string > lstIn); private: - ComboBox *mBox; - wxChoice *wxchoice; + int mTypeForm; + ComboBox *mBox; + wxListBox *wxlistbox; + wxChoice *wxchoice; }; @@ -42,28 +47,17 @@ namespace bbwx wxWindow *parent, int iSelection, std::string title, - std::vector< std::string > lstIn ) + std::vector< std::string > lstIn, + int typeForm) : wxPanel( parent, -1) , - mBox(box) + mBox(box), + mTypeForm(typeForm) { - wxPanel *panel = this; - - - - //--------------------------------------------------------------------- - // 1) Creation de wxChoise widget - - wxchoice = new wxChoice ( panel , -1 ); - - Connect( wxchoice->GetId(), wxEVT_COMMAND_CHOICE_SELECTED, (wxObjectEventFunction) (void (wxPanel::*)(wxEvent&))&ComboBoxWidget::OnComboBox ); - - int i; - for (i=0;iAppend( bbtk::std2wx( lstIn[i] ) ); - } // for i - wxchoice->SetSelection(iSelection); + wxPanel *panel = this; + wxlistbox = NULL; + wxchoice = NULL; + int i; //--------------------------------------------------------------------- // 2) Insertion of the components in the window @@ -74,13 +68,37 @@ namespace bbwx { sizer->Add( new wxStaticText(panel,-1, bbtk::std2wx(title) ) ); } - sizer->Add( wxchoice,1,wxGROW ); sizer->AddGrowableCol(0); panel->SetSizer(sizer); + + //--------------------------------------------------------------------- + // 1) Creation de wxChoise widget + if (mTypeForm==1) + { + + wxlistbox = new wxListBox ( panel , -1 ); + Connect( wxlistbox->GetId(), wxEVT_COMMAND_CHOICE_SELECTED, (wxObjectEventFunction) (void (wxPanel::*)(wxEvent&))&ComboBoxWidget::OnComboBox ); + for (i=0;iAppend( bbtk::std2wx( lstIn[i] ) ); + } // for i + wxlistbox->SetSelection(iSelection); + sizer->Add( wxlistbox,1,wxGROW ); + + } else { + + wxchoice = new wxChoice ( panel , -1 ); + Connect( wxchoice->GetId(), wxEVT_COMMAND_CHOICE_SELECTED, (wxObjectEventFunction) (void (wxPanel::*)(wxEvent&))&ComboBoxWidget::OnComboBox ); + for (i=0;iAppend( bbtk::std2wx( lstIn[i] ) ); + } // for i + wxchoice->SetSelection(iSelection); + sizer->Add( wxchoice,1,wxGROW ); + } // panel->SetAutoLayout(true); // panel->Layout(); - } //------------------------------------------------------------------------- @@ -88,19 +106,55 @@ namespace bbwx { } + //-------------------------------------------------------------------------- - void ComboBoxWidget::OnComboBox(wxEvent& event) + void ComboBoxWidget::OnComboBox(int iSelection) { - - int iSelection = wxchoice->GetSelection(); mBox->bbSetInputSelection( iSelection ); - mBox->bbSetOutputOut( iSelection ); mBox->bbSetOutputOutString( bbtk::wx2std( wxchoice->GetString(iSelection) ) ); mBox->bbSignalOutputModification("Out"); mBox->bbSignalOutputModification("OutString"); } + //-------------------------------------------------------------------------- + void ComboBoxWidget::OnComboBox(wxEvent& event) + { + int iSelection; + if (mTypeForm==1) + { + iSelection = wxlistbox->GetSelection(); + } else { + iSelection = wxchoice->GetSelection(); + } + OnComboBox(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); @@ -109,7 +163,34 @@ BBTK_BLACK_BOX_IMPLEMENTATION(ComboBox,bbtk::WxBlackBox); //===== void ComboBox::Process() { + +printf("EED ComboBox::Process start\n"); + + int iSelection = bbGetInputSelection(); +printf("EED ComboBox::Process 0\n"); + if (bbGetInputSelection() >= bbGetInputIn().size()) { iSelection=bbGetInputIn().size()-1; } +printf("EED ComboBox::Process 1\n"); + ComboBoxWidget *w = (ComboBoxWidget*)bbGetOutputWidget(); +printf("EED ComboBox::Process 2\n"); + w->FillItems( iSelection, bbGetInputIn() ); +printf("EED ComboBox::Process 3\n"); + bbSetInputSelection( iSelection ); +printf("EED ComboBox::Process 4\n"); + bbSetOutputOut( iSelection ); +printf("EED ComboBox::Process 5\n"); + + int size = bbGetInputIn().size(); + if ( (iSelection>0) && ( (size-1)<=iSelection) ) + { + bbSetOutputOutString( bbGetInputIn()[ iSelection ] ); + } +// bbSignalOutputModification("Out"); +// bbSignalOutputModification("OutString"); + +printf("EED ComboBox::Process end\n"); + } + //===== // 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) //===== @@ -122,10 +203,11 @@ void ComboBox::CreateWidget(wxWindow* parent) ComboBoxWidget *w = new ComboBoxWidget( this, - parent, + parent, bbGetInputSelection() , bbGetInputTitle(), - bbGetInputIn() ); + bbGetInputIn(), + bbGetInputForm() ); bbSetOutputOut( bbGetInputSelection() ); bbSetOutputOutString( bbGetInputIn()[ bbGetInputSelection() ] ); @@ -140,6 +222,7 @@ void ComboBox::bbUserSetDefaultValues() { bbSetInputSelection(0); bbSetInputTitle(""); + bbSetInputForm(0); } //===== // 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)