1 /*=========================================================================
4 Module: $RCSfile: bbwxSizer.cxx,v $
6 Date: $Date: 2008/02/04 16:42:10 $
7 Version: $Revision: 1.1 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*/
24 #ifdef _USE_WXWIDGETS_
27 #include "bbwxSizer.h"
28 #include "bbwxPackage.h"
36 BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx , Sizer);
39 wxWidgetSizer::wxWidgetSizer(wxWindow *parent,int orientation)
40 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
42 wxPanel *panel = this;
46 mwxSizer = new wxBoxSizer(wxHORIZONTAL);
48 mwxSizer = new wxBoxSizer(wxVERTICAL);
51 panel -> SetSizer(mwxSizer);
52 panel -> SetAutoLayout(true);
57 //-------------------------------------------------------------------------
58 void wxWidgetSizer::AddChild(wxWindow* child)
60 mwxSizer->Add(child, 1, wxEXPAND, 0);
63 wxWidgetSizer::~wxWidgetSizer()
67 //-------------------------------------------------------------------------
69 void wxWidgetSizer::SetSizer(Sizer* bbtksizer)
71 mbbtkSizer = bbtksizer;
76 //--------------------------------------------------------------------------
77 //-------------------------------------------------------------------------
78 //--------------------------------------------------------------------------
79 //--------------------------------------------------------------------------
83 BBTK_USER_BLACK_BOX_IMPLEMENTATION(Sizer,bbtk::WxBlackBox);
85 void Sizer::bbUserConstructor()
87 bbSetInputOrientation(1);
88 bbSetInputWidget1(NULL);
89 bbSetInputWidget2(NULL);
90 bbSetInputWidget3(NULL);
91 bbSetInputWidget4(NULL);
92 bbSetInputWidget5(NULL);
93 bbSetInputWidget6(NULL);
94 bbSetInputWidget7(NULL);
95 bbSetInputWidget8(NULL);
96 bbSetInputWidget9(NULL);
97 bbSetInputWidget10(NULL);
100 void Sizer::TryInsertWindow(wxWindow *parent, wxWindow *w,wxBoxSizer *sizer)
105 sizer->Add(w, 1, wxEXPAND, 0);
110 void Sizer::Process()
115 void Sizer::CreateWidget()
118 wxPanel *w=new wxPanel(bbGetWxParent(), -1);
119 if (bbGetInputOrientation()==0)
121 sizer = new wxBoxSizer(wxHORIZONTAL);
123 sizer = new wxBoxSizer(wxVERTICAL);
126 TryInsertWindow(w,bbGetInputWidget1(),sizer);
127 TryInsertWindow(w,bbGetInputWidget2(),sizer);
128 TryInsertWindow(w,bbGetInputWidget3(),sizer);
129 TryInsertWindow(w,bbGetInputWidget4(),sizer);
130 TryInsertWindow(w,bbGetInputWidget5(),sizer);
131 TryInsertWindow(w,bbGetInputWidget6(),sizer);
132 TryInsertWindow(w,bbGetInputWidget7(),sizer);
133 TryInsertWindow(w,bbGetInputWidget8(),sizer);
134 TryInsertWindow(w,bbGetInputWidget9(),sizer);
135 TryInsertWindow(w,bbGetInputWidget10(),sizer);
137 w -> SetSizer(sizer);
138 // w -> SetAutoLayout(true);
140 bbSetOutputWidget( w );
145 wxWindow *Sizer::CreateWxWindow(wxWindow *parent)
147 bbtkDebugMessageInc("Core",9,"Sizer::CreateWxWindow("<<parent<<")"<<std::endl);
149 wxWidgetSizer *wxwidgetsizer = new wxWidgetSizer(parent,bbGetInputOrientation() );
151 // OutputConnectorMapType::iterator i = GetOutputConnectorMap().find("Child");
152 OutputConnectorMapType::iterator i;
153 for (i=GetOutputConnectorMap().begin() ; i!=GetOutputConnectorMap().end(); ++i ){
154 if (i->first=="Child")
156 const std::vector<Connection*>& C = i->second->GetConnectionVector();
157 std::vector<Connection*>::const_iterator j;
158 for (j=C.begin(); j!=C.end(); ++j)
160 // WxBlackBox* to = ((WxBlackBox*)((*j)->GetBlackBoxTo()));
161 // wxWindow* cw = ((WxBlackBox*)((*j)->GetBlackBoxTo()))->GetWxWindow(wxwidgetsizer);
162 wxPanel *cw = new wxPanel(wxwidgetsizer,-1);
163 cw->SetName( wxString( (*j)->GetBlackBoxTo()->bbGetName().c_str(), wxConvUTF8 ) );
164 wxwidgetsizer->AddChild(cw);
170 wxwidgetsizer->SetSizer(this);
172 bbtkDebugDecTab("Core",9);
174 Setmwxcontainer(wxwidgetsizer);
176 return wxwidgetsizer;
179 void Sizer::AddWxBBChild(WxBlackBox *wxblackbox) // virtual
181 wxWindow *subparent = GetSubParent( wxString(wxblackbox->bbGetName().c_str(),wxConvUTF8 ) );
182 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
183 sizer -> Add( wxblackbox->GetWxWindow( subparent ) , 1, wxALL|wxEXPAND, 2);
184 subparent -> SetAutoLayout(true);
185 subparent -> SetSizer(sizer);
186 subparent -> Layout();