]> Creatis software - creaWT.git/blob - wt/bbtk_wt_PKG/src/bbwtViewerNVWeb.cxx
6f72fd322a0dc34b2dc63bf9761527a56a35c254
[creaWT.git] / wt / bbtk_wt_PKG / src / bbwtViewerNVWeb.cxx
1 //===== 
2 // 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)
3 //===== 
4 #include "bbwtViewerNVWeb.h"
5 #include "bbwtPackage.h"
6 namespace bbwt
7 {
8
9
10
11
12   Viewer_NV::Viewer_NV(Wt::WContainerWidget* parent,int typeRender)
13   :
14   Wt::WContainerWidget(parent),
15   mType(typeRender)
16   {
17     //configureWt();
18   }
19
20
21
22   Viewer_NV::~Viewer_NV()
23   {
24
25   }
26
27   void Viewer_NV::configureWt()
28   {
29                 std::cout<<"---- CREACION DE RENDER ----"<<std::endl;
30           Wt::WContainerWidget* w = this;
31      
32         
33                 std::string jsCom;
34
35                 if(mType == 0 )
36                 {
37                         jsCom = "\
38                   var mRenderer = new X.renderer2D();   \
39                   mRenderer.container = '" + w->id() + "';    \
40                                                                         mRenderer.orientation = 'Z';\
41                                                                         mRenderer.init() ;\
42                                                       " + w->jsRef() + ".mRenderer = mRenderer;";
43                 }
44                 else if(mType == 1)
45                 {
46                         jsCom = "\
47                   var mRenderer = new X.renderer2D();   \
48                   mRenderer.container = '" + w->id() + "';    \
49                                                                         mRenderer.orientation = 'Y';\
50                                                                         mRenderer.init() ;       \
51                                                       " + w->jsRef() + ".mRenderer = mRenderer;";
52                 }
53                 else if(mType == 2)
54                 {
55                         jsCom = "\
56                   var mRenderer = new X.renderer2D();   \
57                   mRenderer.container = '" + w->id() + "';    \
58                                                                         mRenderer.orientation = 'X';\
59                                                                         mRenderer.init() ;       \
60                                                       " + w->jsRef() + ".mRenderer = mRenderer;";
61                 }
62                 else if(mType == 3)
63                 {
64                                 jsCom = "\
65                   var mRenderer = new X.renderer3D();   \
66                   mRenderer.container = '" + w->id() + "';\
67                                                                         mRenderer.init() ; \
68                                 " + w->jsRef() + ".mRenderer = mRenderer;";
69         
70         w->resize(Wt::WLength::Auto, 500);
71                 }
72                  
73
74  
75   w->doJavaScript(jsCom);
76   std::cout<<"       REF:   "<<w->jsRef()<<std::endl;
77         std::cout<<"       CREANDO TIPO:   "<<mType<<" ---  "<<jsCom<<std::endl;
78
79   }
80 BBTK_ADD_BLACK_BOX_TO_PACKAGE(wt,ViewerNVWeb)
81 BBTK_BLACK_BOX_IMPLEMENTATION(ViewerNVWeb,bbtk::WtBlackBox);
82 //===== 
83 // 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)
84 //===== 
85 void ViewerNVWeb::Process()
86 {
87
88   //------------- This part works perfectly, uncomment it for use it safe
89
90   /*Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget();
91
92         cont++;
93         std::string jsCom;
94         
95
96                 
97          //jsCom = "\
98                       " + wtWindow1->jsRef() + ".mRenderer.add(" +bbGetInputImagePath() + ".mObject);\
99                       " + wtWindow1->jsRef() + ".mRenderer.render();";
100
101         std::cout<<std::endl;
102         std::cout<<std::endl;
103         std::cout<<std::endl;
104         std::cout<<std::endl;
105         std::cout<<"CADENA -- "<<std::endl;
106         std::cout<<jsCom<<std::endl;
107
108  //jsCom = "\
109                         var volume = new X.volume();\
110                         volume.file = '" + bbGetInputImagePath() + "';\
111                         " + wtWindow1->jsRef() + ".mRenderer.add(volume);\
112                         " + wtWindow1->jsRef() + ".mRenderer.render();";
113   
114   
115  jsCom = "\
116                         var volume = new X.volume();\
117                         volume.file = '" + bbGetInputImagePath() + "';\
118                                                                         " + w->jsRef() +".mVolume = volume;\
119                         " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
120                         " + wtWindow1->jsRef() + ".mRenderer.render();";
121
122
123   if(nType.size() >1)
124         {
125                 jsCom = jsCom + "\
126                         " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
127                         " + wtWindow2->jsRef() + ".mRenderer.render();";
128         }
129   if(nType.size() >2 )
130         {
131                 jsCom = jsCom + "\
132                         " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
133                         " + wtWindow3->jsRef() + ".mRenderer.render();";
134         }
135         if(nType.size() > 3)
136         {
137                 jsCom = jsCom + "\
138                         " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
139                         " + wtWindow4->jsRef() + ".mRenderer.render();";
140         }
141
142   
143
144
145         std::cout<<"PROCESSSSS>>>>"<<jsCom<<std::endl;
146         w->doJavaScript(jsCom);
147   */
148   
149   Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget();
150
151         cont++;
152         std::string jsCom;
153         
154   std::cout<<"Process ----"<<std::endl; 
155
156   //if(cont ==1) 
157  // {
158   
159       jsCom = "\
160                         var volume = new X.volume();\
161                         volume.spacing = [0.7,0.7,0.7 ];\
162                         volume.center = [0,0,0];\
163                         volume.file = '" + bbGetInputImagePath() + "';\
164                                                                         " + w->jsRef() +".mVolume = volume;\
165                         " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
166                         " + wtWindow1->jsRef() + ".mRenderer.render();";
167                         
168          //   jsCom = jsCom + "\
169                       var gui = new dat.GUI();\
170                 var volumegui = gui.addFolder('Volume');\
171                 var vrController = volumegui.add(volume, 'volumeRendering');\
172                 var opacityController = volumegui.add(volume, 'opacity', 0, 1).listen();\
173                 var lowerThresholdController = volumegui.add(volume, 'lowerThreshold',volume.min, volume.max);\
174                 var upperThresholdController = volumegui.add(volume, 'upperThreshold',volume.min, volume.max);\
175                 volumegui.open();";
176         
177         //jsCom = jsCom + "\
178                       var gui = new dat.GUI();\
179                 var volumegui = gui.addFolder('Volume');\
180                 var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
181                 var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1).listen();\
182                 var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', " + w->jsRef() +".mVolume.min," + w->jsRef() +".mVolume.max);\
183                 var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', " + w->jsRef() +".mVolume.min," + w->jsRef() +".mVolume.max);\
184                 volumegui.open();";
185         
186         
187                 
188                 
189
190
191   //}
192         //else if(cont == 2)
193         //{
194           
195     if(nType.size() >1)
196           {
197                   jsCom = jsCom + "\
198                                 setTimeout(function(){\
199                         " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
200                           " + wtWindow2->jsRef() + ".mRenderer.render();";
201           }
202         //}
203         //else if(cont == 3)
204         //{
205     if(nType.size() >2 )
206           {
207                   jsCom = jsCom + "\
208                         " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
209                           " + wtWindow3->jsRef() + ".mRenderer.render();";
210           }
211 //      }
212 //      else if(cont == 4)
213 //      {
214           if(nType.size() > 3)
215           {
216                   jsCom = jsCom + "\
217                         " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
218                           " + wtWindow4->jsRef() + ".mRenderer.render();\
219                         " + w->jsRef() +".mVolume.upperTheshold =0;\
220                         " + w->jsRef() +".mVolume.windowLow =0;\
221                         " + w->jsRef() +".mVolume.windowHigh =1900;";
222                           
223         //    jsCom = jsCom + "\
224                       var gui = new dat.GUI();\
225                 var volumegui = gui.addFolder('Volume');\
226                 var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
227                 var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1).listen();\
228                 var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', " + w->jsRef() +".mVolume.min," + w->jsRef() +".mVolume.max);\
229                 var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', " + w->jsRef() +".mVolume.min, " + w->jsRef() +".mVolume.max);\
230                 volumegui.open();\
231                 var lowerThresholdController = volumegui.add(" + w->jsRef() +".mVolume, 'lowerThreshold'," + w->jsRef() +".mVolume.min, " + w->jsRef() +".mVolume.max);\
232                 var upperThresholdController = volumegui.add(" + w->jsRef() +".mVolume, 'upperThreshold'," + w->jsRef() +".mVolume.min, " + w->jsRef() +".mVolume.max);";
233       
234       jsCom = jsCom + "\
235                       var gui = new dat.GUI();\
236                 var volumegui = gui.addFolder('Volume');\
237                 var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
238                 var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1).listen();\
239                 var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\
240                 var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\
241                 volumegui.open();\
242                 var lowerThresholdController = volumegui.add(" + w->jsRef() +".mVolume, 'lowerThreshold'," + w->jsRef() +".mVolume.min, " + w->jsRef() +".mVolume.max);\
243                 var upperThresholdController = volumegui.add(" + w->jsRef() +".mVolume, 'upperThreshold'," + w->jsRef() +".mVolume.min, " + w->jsRef() +".mVolume.max);\
244                           },2000);";          
245       }
246      // jsCom = jsCom + "\
247                       var gui = new dat.GUI();\
248                 var volumegui = gui.addFolder('Volume');\
249                 var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
250                 var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1).listen();";
251                 
252 //        }
253 //      }
254 //      
255
256   
257
258
259         std::cout<<"PROCESSSSS>>>>"<<jsCom<<std::endl;
260         //w->doJavaScript(jsCom);
261         
262         Wt::WApplication::instance()->refresh();
263   
264
265
266 }
267 //--------------------------------------------------------------------------------------------------------
268 //--------------------------------------------------------------------------------------------------------
269
270
271
272 void ViewerNVWeb::loadImage()
273 {
274
275   
276   Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget();
277         std::string jsCom;
278         
279   std::cout<<"Process ----"<<std::endl; 
280
281   jsCom = "\
282                         var volume = new X.volume();\
283                         volume.spacing = [0.7,0.7,0.7 ];\
284                         volume.file = '" + bbGetInputImagePath() + "';\
285                         " +w->jsRef() + ".mVolume = volume;\
286                         var center = [0,0,0\
287                   ];\
288                         " +w->jsRef() + ".mVolume.center = center;\
289                         volume.center = [0,0,0];\
290                         setTimeout(function(){\
291                         " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
292                         " + wtWindow1->jsRef() + ".mRenderer.render();\
293                       },300);\
294                         setTimeout(function(){\
295                         " + w->jsRef() +".mVolume.upperThreshold =20000;\
296                         " + w->jsRef() +".mVolume.windowHigh =1670;\
297                         var gui = new dat.GUI();\
298                   var volumegui = gui.addFolder('Volume');\
299                   var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
300                   var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1);\
301                   var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\
302                   var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\
303                   var sliceXController = volumegui.add(" + w->jsRef() +".mVolume, 'indexX', 0,volume.range[0] - 1);\
304                   var sliceYController = volumegui.add(" + w->jsRef() +".mVolume, 'indexY', 0,volume.range[1] - 1);\
305                   var sliceZController = volumegui.add(" + w->jsRef() +".mVolume, 'indexZ', 0,volume.range[2] - 1);\
306                         " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
307                           " + wtWindow2->jsRef() + ".mRenderer.render();\
308                         " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
309                           " + wtWindow3->jsRef() + ".mRenderer.render();\
310                         " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
311                           " + wtWindow4->jsRef() + ".mRenderer.render();\
312                       },1500);";
313
314
315  //        jsCom = "\
316                   setTimeout(function(){\
317                         var volume = new X.volume();\
318                         volume.spacing = [0.7,0.7,0.7 ];\
319                         volume.file = '" + bbGetInputImagePath() + "';\
320                         " +w->jsRef() + ".mVolume = volume;\
321                         var center = [0,0,0\
322                   ];\
323                         " +w->jsRef() + ".mVolume.center = center;\
324                         volume.center = [0,0,0];\
325                         },100);\
326                         " + wtWindow1->jsRef() + ".mRenderer.onShowtime=function(){\
327                         " + w->jsRef() +".mVolume.upperThreshold =20000;\
328                         " + w->jsRef() +".mVolume.windowHigh =1670;\
329                         var gui = new dat.GUI();\
330                   var volumegui = gui.addFolder('Volume');\
331                   var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
332                   var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1);\
333                   var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\
334                   var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\
335                   var sliceXController = volumegui.add(" + w->jsRef() +".mVolume, 'indexX', 0,volume.range[0] - 1);\
336                   var sliceYController = volumegui.add(" + w->jsRef() +".mVolume, 'indexY', 0,volume.range[1] - 1);\
337                   var sliceZController = volumegui.add(" + w->jsRef() +".mVolume, 'indexZ', 0,volume.range[2] - 1);\
338                         " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
339                           " + wtWindow2->jsRef() + ".mRenderer.render();\
340                         " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
341                           " + wtWindow3->jsRef() + ".mRenderer.render();\
342                         " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
343                           " + wtWindow4->jsRef() + ".mRenderer.render();\
344                       };\
345                         setTimeout(function(){\
346                         " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
347                         " + wtWindow1->jsRef() + ".mRenderer.render();\
348                       },300);\
349                         ";
350    
351                  // jsCom = jsCom + "\
352                            setTimeout(function(){\
353                         " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
354                           " + wtWindow2->jsRef() + ".mRenderer.render();";  
355           
356
357   
358                 //  jsCom = jsCom + "\
359                         " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
360                           " + wtWindow3->jsRef() + ".mRenderer.render();";  
361           
362
363         
364                 //  jsCom = jsCom + "\
365                         " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
366                           " + wtWindow4->jsRef() + ".mRenderer.render();";         
367     
368
369  // jsCom = jsCom + "\
370                                                                         " + w->jsRef() +".mVolume = volume;\
371                         " + w->jsRef() +".mVolume.lowerThreshold =0;\
372                         " + w->jsRef() +".mVolume.upperThreshold =20000;\
373                         " + w->jsRef() +".mVolume.windowHigh =1670;\
374                         var gui = new dat.GUI();\
375                   var volumegui = gui.addFolder('Volume');\
376                   var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
377                   var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1);\
378                   var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\
379                   var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\
380                   volumegui.open();\
381                   },1000);";
382
383   
384         //  jsCom = jsCom + "\
385                       setTimeout(function(){\
386                       var gui = new dat.GUI();\
387                 var volumegui = gui.addFolder('Volume');\
388                 var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
389                 var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1);\
390                 var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\
391                 var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\
392                 var sliceXController = volumegui.add(" + w->jsRef() +".mVolume, 'indexX', 0,volume.range[0] - 1);\
393                 var sliceYController = volumegui.add(" + w->jsRef() +".mVolume, 'indexY', 0,volume.range[1] - 1);\
394                 var sliceZController = volumegui.add(" + w->jsRef() +".mVolume, 'indexZ', 0,volume.range[2] - 1);\
395                 volumegui.open();\
396                 },500);";
397
398
399         std::cout<<"LOADzzzzzzzzzzzzzzzzzzzzzzzzzzzz"<<jsCom<<std::endl;
400         w->doJavaScript(jsCom);
401         //Wt::WApplication::instance()->refresh();
402          wtWindow2->resize(Wt::WLength::Auto, 200);
403          wtWindow3->resize(Wt::WLength::Auto, 200);
404          wtWindow4->resize(Wt::WLength::Auto, 200);
405         
406   
407
408
409 }
410
411 //===== 
412 // 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)
413 //===== 
414 void ViewerNVWeb::bbUserSetDefaultValues()
415 {
416
417 //  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
418 //    Here we initialize the input 'In' to 0
419   bbSetInputImagePath("");
420   int n[] = {3,2,1,0};
421   std::vector<int> nn (n,n+sizeof(n)/sizeof(int));
422   bbSetInputnTypeView(nn);
423         bbSetOutputviewer1("");
424         bbSetOutputviewer2("");
425         bbSetOutputviewer3("");
426         bbSetOutputviewer4("");
427   
428 }
429 //=======
430
431
432 //=======
433
434 void ViewerNVWeb::CreateWidget(Wt::WContainerWidget* parent)
435 {
436   nType = bbGetInputnTypeView();
437
438   Wt::WContainerWidget *w = new Wt::WContainerWidget(parent);
439         cont = 0;
440   wtWindow1 = NULL;
441   wtWindow2 = NULL;
442   wtWindow3 = NULL;
443   wtWindow4 = NULL;
444
445         if(nType.size() == 1 )
446         {
447                 wtWindow1 = new Viewer_NV(w,nType[0]);
448                 wtWindow1->configureWt();
449                 wtWindow1->setStyleClass("black-box");
450                 std::cout<<"   PRUEBA 1 RENDERER"<<std::endl;
451                 bbSetOutputviewer1(wtWindow1->jsRef());
452         }
453         else if(nType.size() == 2)
454         {
455                 //Wt::Ext::Splitter *l = new Wt::Ext::Splitter(Wt::Horizontal);
456           Wt::WHBoxLayout *l = new  Wt::WHBoxLayout();
457           
458                 wtWindow1 = new Viewer_NV(0,nType[0]);
459                 wtWindow2 = new Viewer_NV(0,nType[1]);
460                 
461
462                 /*l->addWidget(wtWindow1);
463                 l->addWidget(wtWindow2);
464
465                 w->addWidget(l);
466     */
467     
468     l->addWidget(wtWindow1);
469     l->addWidget(wtWindow2);
470     
471     w->setLayout(l);
472     
473                 wtWindow1->configureWt();       
474                 wtWindow2->configureWt();
475                 wtWindow1->setStyleClass("black-box");
476                 wtWindow2->setStyleClass("black-box");
477                 bbSetOutputviewer1(wtWindow1->jsRef());
478                 bbSetOutputviewer2(wtWindow2->jsRef());
479         }
480         else if(nType.size() == 3)
481         {
482                 /*Wt::Ext::Splitter *l = new Wt::Ext::Splitter(Wt::Horizontal);
483                 Wt::Ext::Splitter *l2 = new Wt::Ext::Splitter(Wt::Vertical);
484                 */
485           Wt::WHBoxLayout *l = new  Wt::WHBoxLayout();
486           Wt::WVBoxLayout *l2 = new  Wt::WVBoxLayout();
487           
488           Wt::WContainerWidget *aux1 = new        Wt::WContainerWidget();
489           
490                 wtWindow1 = new Viewer_NV(0,nType[0]);
491                         
492                 wtWindow2 = new Viewer_NV(0,nType[1]);
493
494                 wtWindow3 = new Viewer_NV(0,nType[2]);
495
496         /*
497                 l->addWidget(wtWindow2);
498                 l->addWidget(wtWindow3);
499                 
500                 
501                 l2->addWidget(wtWindow1);
502                 l2->addWidget(l);
503                 
504                 w->addWidget(l);
505                 
506                 */
507                 
508                 l->addWidget(wtWindow2);
509                 l->addWidget(wtWindow3);
510                 aux1->setLayout(l);
511                 
512                 l2->addWidget(wtWindow1);
513                 l2->addWidget(aux1);
514                 
515                 w->setLayout(l2);
516                 
517           wtWindow1->configureWt();     
518           wtWindow2->configureWt();
519           wtWindow3->configureWt();
520     wtWindow1->setStyleClass("black-box");
521     wtWindow2->setStyleClass("black-box");
522     wtWindow3->setStyleClass("black-box");
523                 bbSetOutputviewer1(wtWindow1->jsRef());
524                 bbSetOutputviewer2(wtWindow2->jsRef());
525                 bbSetOutputviewer3(wtWindow3->jsRef());
526
527         }
528         else if(nType.size() == 4)
529         {
530         /*
531                 Wt::Ext::Splitter *l2 = new Wt::Ext::Splitter(Wt::Vertical);
532                 Wt::WGridLayout *l = new Wt::WGridLayout();
533                 Wt::WContainerWidget *aux1 = new Wt::WContainerWidget();
534         */      
535           Wt::WVBoxLayout *l2 = new  Wt::WVBoxLayout();
536           Wt::WGridLayout *l = new Wt::WGridLayout();
537           Wt::WContainerWidget *aux1 = new        Wt::WContainerWidget();
538         
539                 wtWindow1 = new Viewer_NV(0,nType[0]);
540     
541                 wtWindow2 = new Viewer_NV(0,nType[1]);
542
543                 wtWindow3 = new Viewer_NV(0,nType[2]);
544
545                 wtWindow4 = new Viewer_NV(0,nType[3]);
546 /*
547         
548                 l2->addWidget(wtWindow1);
549                 l->addWidget(wtWindow2,0,1);
550                 l->addWidget(wtWindow3,0,2);
551                 l->addWidget(wtWindow4,0,3);
552                 aux1->setLayout(l);
553                 l2->addWidget(aux1);
554                 
555                 w->addWidget(l2);
556                 */
557                 l->addWidget(wtWindow2,0,1);
558                 l->addWidget(wtWindow3,0,2);
559                 l->addWidget(wtWindow4,0,3);
560                 aux1->setLayout(l);
561                 
562                 l2->addWidget(wtWindow1);
563                 l2->addWidget(aux1);
564                 
565                 w->setLayout(l2);
566         
567                 
568           wtWindow1->configureWt();     
569           wtWindow2->configureWt();
570           wtWindow3->configureWt();     
571           wtWindow4->configureWt();
572
573     wtWindow1->setStyleClass("black-box");
574     wtWindow2->setStyleClass("black-box");
575     wtWindow3->setStyleClass("black-box");
576     wtWindow4->setStyleClass("black-box");
577     
578                 bbSetOutputviewer1(wtWindow1->jsRef());
579                 bbSetOutputviewer2(wtWindow2->jsRef());
580                 bbSetOutputviewer3(wtWindow3->jsRef());
581                 bbSetOutputviewer4(wtWindow4->jsRef());
582
583         }
584
585
586   
587   bbSetOutputWidget(w);
588   loadImage();
589   //Process();
590
591 }
592
593 //===== 
594 // 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)
595 //===== 
596 void ViewerNVWeb::bbUserInitializeProcessing()
597 {
598
599 //  THE INITIALIZATION METHOD BODY :
600 //    Here does nothing 
601 //    but this is where you should allocate the internal/output pointers 
602 //    if any 
603
604   
605 }
606 //===== 
607 // 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)
608 //===== 
609 void ViewerNVWeb::bbUserFinalizeProcessing()
610 {
611
612 //  THE FINALIZATION METHOD BODY :
613 //    Here does nothing 
614 //    but this is where you should desallocate the internal/output pointers 
615 //    if any
616   
617 }
618 }
619 // EO namespace bbwt
620
621