]> Creatis software - creaWT.git/blob - wt/bbtk_wt_PKG/src/bbwtViewerNVWeb.cxx
#2498 BBTK 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                       
370     //jsCom = "\
371                         var volume = new X.volume();\
372                         volume.spacing = [0.7,0.7,0.7 ];\
373                         volume.file = '" + bbGetInputImagePath() + "';\
374                         " +w->jsRef() + ".mVolume = volume;\
375                         var center = [0,0,0\
376                   ];\
377                         " +w->jsRef() + ".mVolume.center = center;\
378                         volume.center = [0,0,0];\
379                         setTimeout(function(){\
380                         " + wtWindow1->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
381                       },300);\
382                         " + wtWindow1->jsRef() + ".mRenderer.onShowTime = function(){\
383                         " + w->jsRef() +".mVolume.upperThreshold =20000;\
384                         " + w->jsRef() +".mVolume.windowHigh =1670;\
385                         var gui = new dat.GUI();\
386                   var volumegui = gui.addFolder('Volume');\
387                   var vrController = volumegui.add(" + w->jsRef() +".mVolume, 'volumeRendering');\
388                   var opacityController = volumegui.add(" + w->jsRef() +".mVolume, 'opacity', 0, 1);\
389                   var lowerWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowLow', 0,2000);\
390                   var upperWindowController = volumegui.add(" + w->jsRef() +".mVolume, 'windowHigh', 0,2000);\
391                   var sliceXController = volumegui.add(" + w->jsRef() +".mVolume, 'indexX', 0,volume.range[0] - 1);\
392                   var sliceYController = volumegui.add(" + w->jsRef() +".mVolume, 'indexY', 0,volume.range[1] - 1);\
393                   var sliceZController = volumegui.add(" + w->jsRef() +".mVolume, 'indexZ', 0,volume.range[2] - 1);\
394                         " + wtWindow2->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
395                           " + wtWindow2->jsRef() + ".mRenderer.render();\
396                         " + wtWindow3->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
397                           " + wtWindow3->jsRef() + ".mRenderer.render();\
398                         " + wtWindow4->jsRef() + ".mRenderer.add(" +w->jsRef() + ".mVolume);\
399                           " + wtWindow4->jsRef() + ".mRenderer.render();\
400                           };\
401                         " + wtWindow1->jsRef() + ".mRenderer.render();";
402                         
403
404
405
406
407         std::cout<<"LOADzzzzzzzzzzzzzzzzzzzzzzzzzzzz"<<jsCom<<std::endl;
408         w->doJavaScript(jsCom);
409         
410         
411         //Wt::WApplication::instance()->refresh();
412         // wtWindow2->resize(Wt::WLength::Auto, 200);
413         // wtWindow3->resize(Wt::WLength::Auto, 200);
414         // wtWindow4->resize(Wt::WLength::Auto, 200);
415          
416          
417          Wt::WApplication::instance()->refresh();
418         
419   
420
421
422 }
423
424 //===== 
425 // 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)
426 //===== 
427 void ViewerNVWeb::bbUserSetDefaultValues()
428 {
429
430 //  SET HERE THE DEFAULT INPUT/OUTPUT VALUES OF YOUR BOX 
431 //    Here we initialize the input 'In' to 0
432   bbSetInputImagePath("");
433   int n[] = {3,2,1,0};
434   std::vector<int> nn (n,n+sizeof(n)/sizeof(int));
435   bbSetInputnTypeView(nn);
436         bbSetOutputviewer1("");
437         bbSetOutputviewer2("");
438         bbSetOutputviewer3("");
439         bbSetOutputviewer4("");
440   
441 }
442 //=======
443
444
445 //=======
446
447 void ViewerNVWeb::CreateWidget(Wt::WContainerWidget* parent)
448 {
449   nType = bbGetInputnTypeView();
450
451   Wt::WContainerWidget *w = new Wt::WContainerWidget(parent);
452         cont = 0;
453   wtWindow1 = NULL;
454   wtWindow2 = NULL;
455   wtWindow3 = NULL;
456   wtWindow4 = NULL;
457
458         if(nType.size() == 1 )
459         {
460                 wtWindow1 = new Viewer_NV(w,nType[0]);
461                 wtWindow1->configureWt();
462                 wtWindow1->setStyleClass("black-box");
463                 std::cout<<"   PRUEBA 1 RENDERER"<<std::endl;
464                 bbSetOutputviewer1(wtWindow1->jsRef());
465         }
466         else if(nType.size() == 2)
467         {
468                 //Wt::Ext::Splitter *l = new Wt::Ext::Splitter(Wt::Horizontal);
469           Wt::WHBoxLayout *l = new  Wt::WHBoxLayout();
470           
471                 wtWindow1 = new Viewer_NV(0,nType[0]);
472                 wtWindow2 = new Viewer_NV(0,nType[1]);
473                 
474
475                 /*l->addWidget(wtWindow1);
476                 l->addWidget(wtWindow2);
477
478                 w->addWidget(l);
479     */
480     
481     l->addWidget(wtWindow1);
482     l->addWidget(wtWindow2);
483     
484     w->setLayout(l);
485     
486                 wtWindow1->configureWt();       
487                 wtWindow2->configureWt();
488                 wtWindow1->setStyleClass("black-box");
489                 wtWindow2->setStyleClass("black-box");
490                 bbSetOutputviewer1(wtWindow1->jsRef());
491                 bbSetOutputviewer2(wtWindow2->jsRef());
492         }
493         else if(nType.size() == 3)
494         {
495                 /*Wt::Ext::Splitter *l = new Wt::Ext::Splitter(Wt::Horizontal);
496                 Wt::Ext::Splitter *l2 = new Wt::Ext::Splitter(Wt::Vertical);
497                 */
498           Wt::WHBoxLayout *l = new  Wt::WHBoxLayout();
499           Wt::WVBoxLayout *l2 = new  Wt::WVBoxLayout();
500           
501           Wt::WContainerWidget *aux1 = new        Wt::WContainerWidget();
502           
503                 wtWindow1 = new Viewer_NV(0,nType[0]);
504                         
505                 wtWindow2 = new Viewer_NV(0,nType[1]);
506
507                 wtWindow3 = new Viewer_NV(0,nType[2]);
508
509         /*
510                 l->addWidget(wtWindow2);
511                 l->addWidget(wtWindow3);
512                 
513                 
514                 l2->addWidget(wtWindow1);
515                 l2->addWidget(l);
516                 
517                 w->addWidget(l);
518                 
519                 */
520                 
521                 l->addWidget(wtWindow2);
522                 l->addWidget(wtWindow3);
523                 aux1->setLayout(l);
524                 
525                 l2->addWidget(wtWindow1);
526                 l2->addWidget(aux1);
527                 
528                 w->setLayout(l2);
529                 
530           wtWindow1->configureWt();     
531           wtWindow2->configureWt();
532           wtWindow3->configureWt();
533     wtWindow1->setStyleClass("black-box");
534     wtWindow2->setStyleClass("black-box");
535     wtWindow3->setStyleClass("black-box");
536                 bbSetOutputviewer1(wtWindow1->jsRef());
537                 bbSetOutputviewer2(wtWindow2->jsRef());
538                 bbSetOutputviewer3(wtWindow3->jsRef());
539
540         }
541         else if(nType.size() == 4)
542         {
543         /*
544                 Wt::Ext::Splitter *l2 = new Wt::Ext::Splitter(Wt::Vertical);
545                 Wt::WGridLayout *l = new Wt::WGridLayout();
546                 Wt::WContainerWidget *aux1 = new Wt::WContainerWidget();
547         */      
548           Wt::WVBoxLayout *l2 = new  Wt::WVBoxLayout();
549           Wt::WGridLayout *l = new Wt::WGridLayout();
550           Wt::WContainerWidget *aux1 = new        Wt::WContainerWidget();
551         
552                 wtWindow1 = new Viewer_NV(0,nType[0]);
553     
554                 wtWindow2 = new Viewer_NV(0,nType[1]);
555
556                 wtWindow3 = new Viewer_NV(0,nType[2]);
557
558                 wtWindow4 = new Viewer_NV(0,nType[3]);
559 /*
560         
561                 l2->addWidget(wtWindow1);
562                 l->addWidget(wtWindow2,0,1);
563                 l->addWidget(wtWindow3,0,2);
564                 l->addWidget(wtWindow4,0,3);
565                 aux1->setLayout(l);
566                 l2->addWidget(aux1);
567                 
568                 w->addWidget(l2);
569                 */
570                 l->addWidget(wtWindow2,0,1);
571                 l->addWidget(wtWindow3,0,2);
572                 l->addWidget(wtWindow4,0,3);
573                 aux1->setLayout(l);
574                 
575                 l2->addWidget(wtWindow1);
576                 l2->addWidget(aux1);
577                 
578                 w->setLayout(l2);
579         
580         
581           wtWindow1->setStyleClass("black-box");
582     wtWindow2->setStyleClass("black-box");
583     wtWindow3->setStyleClass("black-box");
584     wtWindow4->setStyleClass("black-box");
585         
586           wtWindow1->configureWt();     
587           wtWindow2->configureWt();
588           wtWindow3->configureWt();     
589           wtWindow4->configureWt();
590
591                 bbSetOutputviewer1(wtWindow1->jsRef());
592                 bbSetOutputviewer2(wtWindow2->jsRef());
593                 bbSetOutputviewer3(wtWindow3->jsRef());
594                 bbSetOutputviewer4(wtWindow4->jsRef());
595
596         }
597
598
599   
600   bbSetOutputWidget(w);
601   loadImage();
602   //Process();
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::bbUserInitializeProcessing()
610 {
611
612 //  THE INITIALIZATION METHOD BODY :
613 //    Here does nothing 
614 //    but this is where you should allocate the internal/output pointers 
615 //    if any 
616
617   
618 }
619 //===== 
620 // 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)
621 //===== 
622 void ViewerNVWeb::bbUserFinalizeProcessing()
623 {
624
625 //  THE FINALIZATION METHOD BODY :
626 //    Here does nothing 
627 //    but this is where you should desallocate the internal/output pointers 
628 //    if any
629   
630 }
631 }
632 // EO namespace bbwt
633
634