1 /*=========================================================================
7 =========================================================================*/
9 /* ---------------------------------------------------------------------
11 * Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
12 * Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
14 * This software is governed by the CeCILL-B license under French law and
15 * abiding by the rules of distribution of free software. You can use,
16 * modify and/ or redistribute the software under the terms of the CeCILL-B
17 * license as circulated by CEA, CNRS and INRIA at the following URL
18 * http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
19 * or in the file LICENSE.txt.
21 * As a counterpart to the access to the source code and rights to copy,
22 * modify and redistribute granted by the license, users are provided only
23 * with a limited warranty and the software's author, the holder of the
24 * economic rights, and the successive licensors have only limited
27 * The fact that you are presently reading this means that you have had
28 * knowledge of the CeCILL-B license and that you accept its terms.
29 * ------------------------------------------------------------------------ */
33 * \brief Class bbtk::wxBlackBoxEditionDialog .
36 #include "wxBlackBoxEditionDialog.h"
42 //=========================================================================
44 wxBlackBoxEditionDialog::wxBlackBoxEditionDialog(wxGUIEditorGraphicBBS *parent,GBlackBoxModel *model):wxDialog(parent,wxID_ANY,_T(""), wxDefaultPosition, wxSize(520, 640),wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER)
48 std::string title("BlackBox Editing - ");
49 title+=_model->getBBTKPackage();
51 title+=_model->getBBTKType();
53 title+=_model->getBBTKName();
54 SetTitle(std2wx(title));
56 constructBlackBoxEditionDialog();
59 //=========================================================================
62 wxBlackBoxEditionDialog::~wxBlackBoxEditionDialog()
67 //=========================================================================
69 void wxBlackBoxEditionDialog::constructBlackBoxEditionDialog()
71 wxBoxSizer *sizerDialog = new wxBoxSizer(wxVERTICAL);
73 wxScrolledWindow *scrollWin = new wxScrolledWindow( this, -1, wxDefaultPosition, wxSize(200,200), wxVSCROLL);
75 wxStaticText *text = new wxStaticText(scrollWin, -1, wxT("Input Ports"));
76 wxFont font(11, wxDEFAULT, wxNORMAL, wxBOLD);
81 std::vector<GPortModel*> lstInputs = _model->getInputPorts();
82 wxFlexGridSizer *sizer = new wxFlexGridSizer(lstInputs.size(),3,5,5);
83 sizer->AddGrowableCol(0);
84 sizer->AddGrowableCol(1);
85 sizer->AddGrowableCol(2);
87 for(int i = 0;i<(int)lstInputs.size();i++)
89 sizer->AddGrowableRow(i);
90 GPortModel* port = lstInputs[i];
91 std::string type = port->getBBTKType();
92 wxStaticText *lblName = new wxStaticText(scrollWin, -1, std2wx(port->getBBTKName()),wxDefaultPosition,wxSize(100,25));
93 wxStaticText *lblType = new wxStaticText(scrollWin, -1, std2wx(type),wxDefaultPosition,wxSize(250,25));
94 wxTextCtrl *txtValue = new wxTextCtrl(scrollWin, -1, _T(""),wxDefaultPosition,wxSize(300,25));
96 if(port->getValue()!="")
98 txtValue->SetValue(crea::std2wx(port->getValue()));
101 if(port->isConnected())
103 std::string connected("--Port Connected--");
104 txtValue->SetValue(crea::std2wx(connected));
105 txtValue->SetEditable(false);
109 if(type.find(et)!=-1)
111 std::string noEditable("--No editable--");
112 txtValue->SetValue(crea::std2wx(noEditable));
113 txtValue->SetEditable(false);
116 _lstNames.push_back(lblName);
117 _lstValues.push_back(txtValue);
118 _lstTypes.push_back(lblType);
120 sizer->Add(lblName,1,wxEXPAND,5);
121 sizer->Add(txtValue,1,wxEXPAND,5);
122 sizer->Add(lblType,1,wxCENTRE|wxEXPAND,5);
126 wxBoxSizer *buts = new wxBoxSizer(wxHORIZONTAL);
127 wxButton *okButton = new wxButton(scrollWin, -1, _T("Ok"),wxDefaultPosition, wxSize(70, 30));
128 wxButton *closeButton = new wxButton(scrollWin, -1, _T("Close"), wxDefaultPosition, wxSize(70, 30));
130 // connect command event handlers
131 Connect(okButton->GetId(),wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(wxBlackBoxEditionDialog::onClickOk));
132 Connect(closeButton->GetId(),wxEVT_COMMAND_BUTTON_CLICKED,wxCommandEventHandler(wxBlackBoxEditionDialog::onClickClose));
134 buts->Add(okButton,0,wxCENTRE|wxEXPAND,5);
135 buts->Add(closeButton,0,wxCENTRE|wxEXPAND,5);
137 sizerDialog->AddSpacer(10);
138 sizerDialog->Add(text,0,wxALIGN_TOP|wxALIGN_CENTER);
139 sizerDialog->AddSpacer(15);
140 sizerDialog->Add(sizer,0,wxALIGN_CENTER| wxEXPAND);
141 sizerDialog->AddSpacer(15);
142 sizerDialog->Add(buts,0,wxALIGN_CENTER | wxTOP | wxBOTTOM);
144 scrollWin->SetSizer(sizerDialog);
148 scrollWin->SetVirtualSize(400,400);
149 scrollWin->SetSize(300,300);
150 scrollWin->SetScrollbars(10, 10, 50, 50);
151 // scrollWin->SetSizer(sizer);
158 //=========================================================================
160 void wxBlackBoxEditionDialog::onClickOk(wxCommandEvent& event)
162 for(int i=0;i<(int)_lstValues.size();i++)
164 std::string text = wx2std(_lstValues[i]->GetValue());
165 //TOFIX Search a better alternative
166 if(text!="--No editable--" && text!="--Port Connected--")
168 _model->setValueToInputPort(i,text);
171 _parent->SaveTempActualDiagram();
175 //=========================================================================
177 void wxBlackBoxEditionDialog::onClickClose(wxCommandEvent& event)
179 printf("EED wxBlackBoxEditionDialog::onClickClose\n");
184 wxBlackBoxEditionDialog::wxBlackBoxEditionDialog( wxGUIEditorGraphicBBS *parent , GBlackBoxModel *model ) : wxDialog( parent , wxID_ANY , _T( "" ) , wxDefaultPosition , wxSize( 480 , 640 ) , wxDEFAULT_DIALOG_STYLE | wxRESIZE_BORDER ) {
186 std::string title( "BlackBox Editing - " ) ;
187 title += _model->getBBTKPackage( ) ;
189 title += _model->getBBTKType( ) ;
191 title += _model->getBBTKName( ) ;
192 SetTitle( std2wx( title ) ) ;
194 constructBlackBoxEditionDialog( ) ;
197 //=========================================================================
199 wxBlackBoxEditionDialog::~wxBlackBoxEditionDialog( ) {
203 //=========================================================================
205 void wxBlackBoxEditionDialog::constructBlackBoxEditionDialog( ) {
206 wxBoxSizer *sizerDialog = new wxBoxSizer( wxVERTICAL ) ;
208 wxScrolledWindow *scrollWin = new wxScrolledWindow( this , -1 , wxDefaultPosition , wxSize( 200 , 200 ) , wxVSCROLL ) ;
210 wxStaticText *text = new wxStaticText( scrollWin , -1 , wxT( "Input Ports" ) ) ;
211 wxFont font( 11 , wxDEFAULT , wxNORMAL , wxBOLD ) ;
212 text->SetFont( font ) ;
216 std::vector<GPortModel*> lstInputs = _model->getInputPorts( ) ;
217 wxFlexGridSizer *sizer = new wxFlexGridSizer( lstInputs.size( ) , 3 , 5 , 5 ) ;
218 for ( int i = 0 ; i < ( int ) lstInputs.size( ) ; i++ ) {
219 GPortModel* port = lstInputs[i] ;
220 std::string type = port->getBBTKType( ) ;
221 wxStaticText *lblName = new wxStaticText( scrollWin , -1 , std2wx( port->getBBTKName( ) ) , wxDefaultPosition , wxSize( 100 , 25 ) ) ;
222 wxStaticText *lblType = new wxStaticText( scrollWin , -1 , std2wx( type ) , wxDefaultPosition , wxSize( 250 , 25 ) ) ;
223 wxTextCtrl *txtValue = new wxTextCtrl( scrollWin , -1 , _T( "" ) , wxDefaultPosition , wxSize( 90 , 25 ) ) ;
225 if ( port->getValue( ) != "" ) {
226 txtValue->SetValue( crea::std2wx( port->getValue( ) ) ) ;
229 if ( port->isConnected( ) ) {
230 std::string connected( "--CAN'T TOUCH THIS--" ) ;
231 txtValue->SetValue( crea::std2wx( connected ) ) ;
232 txtValue->SetEditable( false ) ;
236 if ( type.find( et ) != -1 ) {
237 std::string noEditable( "--CAN'T TOUCH THIS--" ) ;
238 txtValue->SetValue( crea::std2wx( noEditable ) ) ;
239 txtValue->SetEditable( false ) ;
242 _lstNames.push_back( lblName ) ;
243 _lstValues.push_back( txtValue ) ;
244 _lstTypes.push_back( lblType ) ;
246 sizer->Add( lblName , 1 , wxEXPAND , 5 ) ;
247 sizer->Add( txtValue , 1 , wxEXPAND , 5 ) ;
248 sizer->Add( lblType , 1 , wxCENTRE | wxEXPAND , 5 ) ;
252 wxBoxSizer *buts = new wxBoxSizer( wxHORIZONTAL ) ;
253 wxButton *okButton = new wxButton( scrollWin , -1 , _T( "OK" ) , wxDefaultPosition , wxSize( 70 , 30 ) ) ;
254 wxButton *closeButton = new wxButton( scrollWin , -1 , _T( "CLOSE" ) , wxDefaultPosition , wxSize( 70 , 30 ) ) ;
256 // connect command event handlers
257 Connect( okButton->GetId( ) , wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler( wxBlackBoxEditionDialog::onClickOk ) ) ;
258 Connect( closeButton->GetId( ) , wxEVT_COMMAND_BUTTON_CLICKED , wxCommandEventHandler( wxBlackBoxEditionDialog::onClickClose ) ) ;
260 buts->Add( okButton , 0 , wxCENTRE | wxEXPAND , 5 ) ;
261 buts->Add( closeButton , 0 , wxCENTRE | wxEXPAND , 5 ) ;
263 sizerDialog->AddSpacer( 10 ) ;
264 sizerDialog->Add( text , 0 , wxALIGN_TOP | wxALIGN_CENTER ) ;
265 sizerDialog->AddSpacer( 15 ) ;
266 sizerDialog->Add( sizer , 0 , wxALIGN_CENTER ) ;
267 sizerDialog->AddSpacer( 15 ) ;
268 sizerDialog->Add( buts , 0 , wxALIGN_CENTER | wxTOP | wxBOTTOM ) ;
270 scrollWin->SetSizer( sizerDialog ) ;
271 scrollWin->Centre( ) ;
274 scrollWin->SetVirtualSize( 400 , 400 ) ;
275 scrollWin->SetSize( 300 , 300 ) ;
276 scrollWin->SetScrollbars( 10 , 10 , 50 , 50 ) ;
277 // scrollWin->SetSizer(sizer);
284 //=========================================================================
286 void wxBlackBoxEditionDialog::onClickOk( wxCommandEvent& event ) {
287 for ( int i = 0 ; i < ( int ) _lstValues.size( ) ; i++ ) {
288 std::string text = wx2std( _lstValues[i]->GetValue( ) ) ;
289 //TOFIX Search a better alternative
290 if ( text != "--No editable--" && text != "--Port Connected--" ) {
291 _model->setValueToInputPort( i , text ) ;
298 //=========================================================================
300 void wxBlackBoxEditionDialog::onClickClose( wxCommandEvent& event ) {
301 printf( "EED wxBlackBoxEditionDialog::onClickClose JGRR AND CM WERE HERE!!!\n" ) ;
305 //=========================================================================
307 } // EO namespace bbtk
310 /* // remove * from the name
311 std::string name = _tabsMgr->GetNameTabPanel();
312 if(name[name.length() - 1] != '*')
313 name = name.substr(0, name.length()-2);
314 _tabsMgr->SetNameTabPanel(name);*/