]> Creatis software - creaWT.git/blob - wt/bbtk_wt_PKG/src/bbwtViewerNVWeb.cxx
#2498 creaWt Feature New Normal wt-version kernel
[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, 700);
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           
193     if(nType.size() >1)
194           {
195                   jsCom = jsCom + "\
196                                 setTimeout(function(){\
197                         " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
198                           " + wtWindow2->jsRef() + ".mRenderer.render();";
199           }
200
201     if(nType.size() >2 )
202           {
203                   jsCom = jsCom + "\
204                         " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
205                           " + wtWindow3->jsRef() + ".mRenderer.render();";
206           }
207
208           if(nType.size() > 3)
209           {
210                   jsCom = jsCom + "\
211                         " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
212                           " + wtWindow4->jsRef() + ".mRenderer.render();\
213                         " + w->jsRef() +".mVolume.upperTheshold =0;\
214                         " + w->jsRef() +".mVolume.windowLow =0;\
215                         " + w->jsRef() +".mVolume.windowHigh =1900;";
216                           
217
218       jsCom = jsCom + "\
219                       var gui = new dat.GUI();\
220                 var volumegui = gui.addFolder('Volume');\
221                 var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
222                 var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1).listen();\
223                 var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\
224                 var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\
225                 volumegui.open();\
226                 var lowerThresholdController = volumegui.add(" + w->jsRef() +".mVolume, 'lowerThreshold'," + w->jsRef() +".mVolume.min, " + w->jsRef() +".mVolume.max);\
227                 var upperThresholdController = volumegui.add(" + w->jsRef() +".mVolume, 'upperThreshold'," + w->jsRef() +".mVolume.min, " + w->jsRef() +".mVolume.max);";          
228       }
229       
230       
231       if(nType.size() >1)
232             {
233                    jsCom = jsCom + "\
234                           },2000);";
235             }
236
237   
238
239
240         std::cout<<"PROCESSSSS>>>>"<<jsCom<<std::endl;
241         //w->doJavaScript(jsCom);
242         
243         Wt::WApplication::instance()->refresh();
244   
245
246
247 }*/
248
249 void ViewerNVWeb::Process()
250 {
251
252
253   Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget();
254
255         cont++;
256         std::string jsCom;
257         
258   std::cout<<"Process ----"<<std::endl; 
259
260    jsCom = "\
261                         var volume = new X.volume();\
262                         volume.spacing = [0.7,0.7,0.7 ];\
263                         volume.center = [0,0,0];\
264                         volume.file = '" + bbGetInputImagePath() + "';\
265                                                                         " + w->jsRef() +".mVolume = volume;\
266                         " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
267                         " + wtWindow1->jsRef() + ".onShowTime = function(){";
268
269           
270     if(nType.size() >1)
271           {
272                   jsCom = jsCom + "\
273                         " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
274                           " + wtWindow2->jsRef() + ".mRenderer.render();";
275           }
276
277     if(nType.size() >2 )
278           {
279                   jsCom = jsCom + "\
280                         " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
281                           " + wtWindow3->jsRef() + ".mRenderer.render();";
282           }
283
284           if(nType.size() > 3)
285           {
286                   jsCom = jsCom + "\
287                         " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
288                           " + wtWindow4->jsRef() + ".mRenderer.render();\
289                         " + w->jsRef() +".mVolume.upperTheshold =0;\
290                         " + w->jsRef() +".mVolume.windowLow =0;\
291                         " + w->jsRef() +".mVolume.windowHigh =1900;";
292                           
293
294       jsCom = jsCom + "\
295                       var gui = new dat.GUI();\
296                 var volumegui = gui.addFolder('Volume');\
297                 var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
298                 var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1).listen();\
299                 var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\
300                 var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\
301                 volumegui.open();\
302                 var lowerThresholdController = volumegui.add(" + w->jsRef() +".mVolume, 'lowerThreshold'," + w->jsRef() +".mVolume.min, " + w->jsRef() +".mVolume.max);\
303                 var upperThresholdController = volumegui.add(" + w->jsRef() +".mVolume, 'upperThreshold'," + w->jsRef() +".mVolume.min, " + w->jsRef() +".mVolume.max);";          
304       }
305       
306       
307      jsCom = jsCom + "\
308                   };\
309                   " + wtWindow1->jsRef() + ".mRenderer.render();";
310   
311
312
313         std::cout<<"PROCESSSSS>>>>"<<jsCom<<std::endl;
314         //w->doJavaScript(jsCom);
315         
316         Wt::WApplication::instance()->refresh();
317   
318
319
320 }
321
322
323 //--------------------------------------------------------------------------------------------------------
324 //--------------------------------------------------------------------------------------------------------
325
326
327
328 void ViewerNVWeb::loadImage()
329 {
330
331   
332   Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget();
333         std::string jsCom;
334         
335   std::cout<<"Process ----"<<std::endl; 
336
337   jsCom = "\
338                         var volume = new X.volume();\
339                         volume.spacing = [0.7,0.7,0.7 ];\
340                         volume.file = '" + bbGetInputImagePath() + "';\
341                         " +w->jsRef() + ".mVolume = volume;\
342                         var center = [0,0,0\
343                   ];\
344                         " +w->jsRef() + ".mVolume.center = center;\
345                         volume.center = [0,0,0];\
346                         setTimeout(function(){\
347                         " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
348                         " + wtWindow1->jsRef() + ".mRenderer.render();\
349                       },300);\
350                         setTimeout(function(){\
351                         " + w->jsRef() +".mVolume.upperThreshold =20000;\
352                         " + w->jsRef() +".mVolume.windowHigh =1670;\
353                         var gui = new dat.GUI();\
354                   var volumegui = gui.addFolder('Volume');\
355                   var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
356                   var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1);\
357                   var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\
358                   var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\
359                   var sliceXController = volumegui.add(" + w->jsRef() +".mVolume, 'indexX', 0,volume.range[0] - 1);\
360                   var sliceYController = volumegui.add(" + w->jsRef() +".mVolume, 'indexY', 0,volume.range[1] - 1);\
361                   var sliceZController = volumegui.add(" + w->jsRef() +".mVolume, 'indexZ', 0,volume.range[2] - 1);\
362                         " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
363                           " + wtWindow2->jsRef() + ".mRenderer.render();\
364                         " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
365                           " + wtWindow3->jsRef() + ".mRenderer.render();\
366                         " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
367                           " + wtWindow4->jsRef() + ".mRenderer.render();\
368                       },1500);\
369                       setTimeout(function(){\
370                           " + wtWindow2->jsRef() + ".mRenderer.render();\
371                           " + wtWindow3->jsRef() + ".mRenderer.render();\
372                           " + wtWindow4->jsRef() + ".mRenderer.render();\
373                          },3000);";
374                       
375     //jsCom = "\
376                         var volume = new X.volume();\
377                         volume.spacing = [0.7,0.7,0.7 ];\
378                         volume.file = '" + bbGetInputImagePath() + "';\
379                         " +w->jsRef() + ".mVolume = volume;\
380                         var center = [0,0,0\
381                   ];\
382                         " +w->jsRef() + ".mVolume.center = center;\
383                         volume.center = [0,0,0];\
384                         setTimeout(function(){\
385                         " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
386                       },300);\
387                         " + wtWindow1->jsRef() + ".mRenderer.onShowTime = function(){\
388                         " + w->jsRef() +".mVolume.upperThreshold =20000;\
389                         " + w->jsRef() +".mVolume.windowHigh =1670;\
390                         var gui = new dat.GUI();\
391                   var volumegui = gui.addFolder('Volume');\
392                   var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
393                   var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1);\
394                   var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\
395                   var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\
396                   var sliceXController = volumegui.add(" + w->jsRef() +".mVolume, 'indexX', 0,volume.range[0] - 1);\
397                   var sliceYController = volumegui.add(" + w->jsRef() +".mVolume, 'indexY', 0,volume.range[1] - 1);\
398                   var sliceZController = volumegui.add(" + w->jsRef() +".mVolume, 'indexZ', 0,volume.range[2] - 1);\
399                         " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
400                           " + wtWindow2->jsRef() + ".mRenderer.render();\
401                         " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
402                           " + wtWindow3->jsRef() + ".mRenderer.render();\
403                         " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
404                           " + wtWindow4->jsRef() + ".mRenderer.render();\
405                           };\
406                         " + wtWindow1->jsRef() + ".mRenderer.render();";
407                         
408
409
410
411
412         std::cout<<"LOADzzzzzzzzzzzzzzzzzzzzzzzzzzzz"<<jsCom<<std::endl;
413         w->doJavaScript(jsCom);
414         
415         
416         //Wt::WApplication::instance()->refresh();
417         // wtWindow2->resize(Wt::WLength::Auto, 200);
418         // wtWindow3->resize(Wt::WLength::Auto, 200);
419         // wtWindow4->resize(Wt::WLength::Auto, 200);
420          
421          
422          Wt::WApplication::instance()->refresh();
423         
424   
425
426
427 }
428
429 //===== 
430 // 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)
431 //===== 
432 void ViewerNVWeb::bbUserSetDefaultValues()
433 {
434
435 //  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
436 //    Here we initialize the input 'In' to 0
437   bbSetInputImagePath("");
438   int n[] = {3,2,1,0};
439   std::vector<int> nn (n,n+sizeof(n)/sizeof(int));
440   bbSetInputnTypeView(nn);
441         bbSetOutputviewer1("");
442         bbSetOutputviewer2("");
443         bbSetOutputviewer3("");
444         bbSetOutputviewer4("");
445   
446 }
447 //=======
448
449
450 //=======
451
452 void ViewerNVWeb::CreateWidget(Wt::WContainerWidget* parent)
453 {
454   nType = bbGetInputnTypeView();
455
456   Wt::WContainerWidget *w = new Wt::WContainerWidget(parent);
457         cont = 0;
458   wtWindow1 = NULL;
459   wtWindow2 = NULL;
460   wtWindow3 = NULL;
461   wtWindow4 = NULL;
462
463         if(nType.size() == 1 )
464         {
465                 wtWindow1 = new Viewer_NV(w,nType[0]);
466                 wtWindow1->configureWt();
467                 wtWindow1->setStyleClass("black-box");
468                 std::cout<<"   PRUEBA 1 RENDERER"<<std::endl;
469                 bbSetOutputviewer1(wtWindow1->jsRef());
470         }
471         else if(nType.size() == 2)
472         {
473                 //Wt::Ext::Splitter *l = new Wt::Ext::Splitter(Wt::Horizontal);
474           Wt::WHBoxLayout *l = new  Wt::WHBoxLayout();
475           
476                 wtWindow1 = new Viewer_NV(0,nType[0]);
477                 wtWindow2 = new Viewer_NV(0,nType[1]);
478                 
479
480                 /*l->addWidget(wtWindow1);
481                 l->addWidget(wtWindow2);
482
483                 w->addWidget(l);
484     */
485     
486     l->addWidget(wtWindow1);
487     l->addWidget(wtWindow2);
488     
489     w->setLayout(l);
490     
491                 wtWindow1->configureWt();       
492                 wtWindow2->configureWt();
493                 wtWindow1->setStyleClass("black-box");
494                 wtWindow2->setStyleClass("black-box");
495                 bbSetOutputviewer1(wtWindow1->jsRef());
496                 bbSetOutputviewer2(wtWindow2->jsRef());
497         }
498         else if(nType.size() == 3)
499         {
500                 /*Wt::Ext::Splitter *l = new Wt::Ext::Splitter(Wt::Horizontal);
501                 Wt::Ext::Splitter *l2 = new Wt::Ext::Splitter(Wt::Vertical);
502                 */
503           Wt::WHBoxLayout *l = new  Wt::WHBoxLayout();
504           Wt::WVBoxLayout *l2 = new  Wt::WVBoxLayout();
505           
506           Wt::WContainerWidget *aux1 = new        Wt::WContainerWidget();
507           
508                 wtWindow1 = new Viewer_NV(0,nType[0]);
509                         
510                 wtWindow2 = new Viewer_NV(0,nType[1]);
511
512                 wtWindow3 = new Viewer_NV(0,nType[2]);
513
514         /*
515                 l->addWidget(wtWindow2);
516                 l->addWidget(wtWindow3);
517                 
518                 
519                 l2->addWidget(wtWindow1);
520                 l2->addWidget(l);
521                 
522                 w->addWidget(l);
523                 
524                 */
525                 
526                 l->addWidget(wtWindow2);
527                 l->addWidget(wtWindow3);
528                 aux1->setLayout(l);
529                 
530                 l2->addWidget(wtWindow1);
531                 l2->addWidget(aux1);
532                 
533                 w->setLayout(l2);
534                 
535           wtWindow1->configureWt();     
536           wtWindow2->configureWt();
537           wtWindow3->configureWt();
538     wtWindow1->setStyleClass("black-box");
539     wtWindow2->setStyleClass("black-box");
540     wtWindow3->setStyleClass("black-box");
541                 bbSetOutputviewer1(wtWindow1->jsRef());
542                 bbSetOutputviewer2(wtWindow2->jsRef());
543                 bbSetOutputviewer3(wtWindow3->jsRef());
544
545         }
546         else if(nType.size() == 4)
547         {
548         /*
549                 Wt::Ext::Splitter *l2 = new Wt::Ext::Splitter(Wt::Vertical);
550                 Wt::WGridLayout *l = new Wt::WGridLayout();
551                 Wt::WContainerWidget *aux1 = new Wt::WContainerWidget();
552         */      
553           Wt::WVBoxLayout *l2 = new  Wt::WVBoxLayout();
554           Wt::WGridLayout *l = new Wt::WGridLayout();
555           Wt::WContainerWidget *aux1 = new        Wt::WContainerWidget();
556         
557                 wtWindow1 = new Viewer_NV(0,nType[0]);
558     
559                 wtWindow2 = new Viewer_NV(0,nType[1]);
560
561                 wtWindow3 = new Viewer_NV(0,nType[2]);
562
563                 wtWindow4 = new Viewer_NV(0,nType[3]);
564 /*
565         
566                 l2->addWidget(wtWindow1);
567                 l->addWidget(wtWindow2,0,1);
568                 l->addWidget(wtWindow3,0,2);
569                 l->addWidget(wtWindow4,0,3);
570                 aux1->setLayout(l);
571                 l2->addWidget(aux1);
572                 
573                 w->addWidget(l2);
574                 */
575                 l->addWidget(wtWindow2,0,1);
576                 l->addWidget(wtWindow3,0,2);
577                 l->addWidget(wtWindow4,0,3);
578                 aux1->setLayout(l);
579                 
580                 l2->addWidget(wtWindow1);
581                 l2->addWidget(aux1);
582                 
583                 w->setLayout(l2);
584         
585         
586           wtWindow1->setStyleClass("black-box");
587     wtWindow2->setStyleClass("black-box");
588     wtWindow3->setStyleClass("black-box");
589     wtWindow4->setStyleClass("black-box");
590         
591           wtWindow1->configureWt();     
592           wtWindow2->configureWt();
593           wtWindow3->configureWt();     
594           wtWindow4->configureWt();
595
596                 bbSetOutputviewer1(wtWindow1->jsRef());
597                 bbSetOutputviewer2(wtWindow2->jsRef());
598                 bbSetOutputviewer3(wtWindow3->jsRef());
599                 bbSetOutputviewer4(wtWindow4->jsRef());
600
601         }
602
603
604   
605   bbSetOutputWidget(w);
606   loadImage();
607   //Process();
608
609 }
610
611 //===== 
612 // 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)
613 //===== 
614 void ViewerNVWeb::bbUserInitializeProcessing()
615 {
616
617 //  THE INITIALIZATION METHOD BODY :
618 //    Here does nothing 
619 //    but this is where you should allocate the internal/output pointers 
620 //    if any 
621
622   
623 }
624 //===== 
625 // 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)
626 //===== 
627 void ViewerNVWeb::bbUserFinalizeProcessing()
628 {
629
630 //  THE FINALIZATION METHOD BODY :
631 //    Here does nothing 
632 //    but this is where you should desallocate the internal/output pointers 
633 //    if any
634   
635 }
636 }
637 // EO namespace bbwt
638
639