]> Creatis software - creaWT.git/blob - wt/bbtk_wt_PKG/src/bbwtAddObjectToViewerWeb.cxx
2498 BBTK FeatureNewNormal wt-version PackageWt
[creaWT.git] / wt / bbtk_wt_PKG / src / bbwtAddObjectToViewerWeb.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 "bbwtAddObjectToViewerWeb.h"
5 #include "bbwtPackage.h"
6 namespace bbwt
7 {
8
9   class ControlTransform : public Wt::WContainerWidget
10   {
11     public :
12         ControlTransform(Wt::WContainerWidget* parent,
13                           AddObjectToViewerWeb* box);
14   
15         ~ControlTransform();
16         void onFlipX();
17         void onFlipY();
18         void onFlipZ();
19         
20         void onRotateX();
21         void onRotateY();
22         void onRotateZ();
23         
24         void onTranslateX();
25         void onTranslateY();
26         void onTranslateZ();
27         
28     private :
29         Wt::WPushButton *flipX;
30         Wt::WPushButton *flipY;
31         Wt::WPushButton *flipZ;
32         Wt::WSlider *rotateX;
33         Wt::WSlider *rotateY;
34         Wt::WSlider *rotateZ;
35         Wt::WSlider *translateX;
36         Wt::WSlider *translateY;
37         Wt::WSlider *translateZ;
38         Wt::WText *flipXt;
39         Wt::WText *flipYt;
40         Wt::WText *flipZt;
41         Wt::WText *rotateXt;
42         Wt::WText *rotateYt;
43         Wt::WText *rotateZt;
44         Wt::WText *translateXt;
45         Wt::WText *translateYt;
46         Wt::WText *translateZt;
47         AddObjectToViewerWeb *mBox;
48         int rotX;
49         int rotY;
50         int rotZ;
51         int traX;
52         int traY;
53         int traZ;
54         
55     
56   
57   };
58   
59   ControlTransform::ControlTransform(Wt::WContainerWidget* parent,
60                           AddObjectToViewerWeb* box)
61                           :
62                           Wt::WContainerWidget(parent),
63                           mBox(box)
64   {
65     Wt::WVBoxLayout *l = new Wt::WVBoxLayout();
66     
67     
68     rotX=0;
69     rotY=0;
70     rotZ=0;
71     traX=0;
72     traY=0;
73     traZ=0;
74     
75     flipX = new Wt::WPushButton("Flip X");
76     flipX->clicked().connect(this, &ControlTransform::onFlipX);
77     l->addWidget(flipX);
78    
79     flipY = new Wt::WPushButton("Flip Y");
80     flipY->clicked().connect(this, &ControlTransform::onFlipY);
81      l->addWidget(flipY);
82     
83     flipZ = new Wt::WPushButton("Flip Z");
84     flipZ->clicked().connect(this, &ControlTransform::onFlipZ);
85     l->addWidget(flipZ);
86     
87     
88     rotateX = new  Wt::WSlider();
89     rotateX->setMinimum(0);
90                 rotateX->setMaximum(360);               
91                 rotateX->setValue(0);
92                 rotateX->setTickPosition(Wt::WSlider::TicksBothSides);
93     rotateX->valueChanged().connect(this,&ControlTransform::onRotateX);
94                 //rotateX->sliderMoved().connect(this,&SliderWidget::OnSliderMove);
95                 //Wt::WContainerWidget *aux1 = new Wt::WContainerWidget();
96                 rotateXt = new Wt::WText("Rotate X Value : 0");
97                 l->addWidget(rotateXt);
98    //aux1->addWidget(rotateX);
99                 //l->addWidget(aux1,3,0);
100                 l->addWidget(rotateX);
101                 
102                 rotateY = new  Wt::WSlider();
103     rotateY->setMinimum(0);
104                 rotateY->setMaximum(360);               
105                 rotateY->setValue(0);
106                 rotateY->setTickPosition(Wt::WSlider::TicksBothSides);
107     rotateY->valueChanged().connect(this,&ControlTransform::onRotateY);
108                 //rotateY->sliderMoved().connect(this,&SliderWidget::OnSliderMove);
109                 //Wt::WContainerWidget *aux2 = new Wt::WContainerWidget();
110                 rotateYt = new Wt::WText("Rotate Y Value : 0");
111                 l->addWidget(rotateYt);
112                 //new Wt::WBreak(aux2);
113    //aux2->addWidget(rotateY);
114                 //l->addWidget(aux2,4,0);
115                 l->addWidget(rotateY);
116                 
117                 rotateZ = new  Wt::WSlider();
118     rotateZ->setMinimum(0);
119                 rotateZ->setMaximum(360);               
120                 rotateZ->setValue(0);
121                 rotateZ->setTickPosition(Wt::WSlider::TicksBothSides);
122     rotateZ->valueChanged().connect(this,&ControlTransform::onRotateZ);
123                 //rotateZ->sliderMoved().connect(this,&SliderWidget::OnSliderMove);
124                 //Wt::WContainerWidget *aux3 = new Wt::WContainerWidget();
125                 rotateZt = new Wt::WText("Rotate Z Value : 0");
126                 l->addWidget(rotateZt);
127                 //new Wt::WBreak(aux3);
128    //aux3->addWidget(rotateZ);
129                 //l->addWidget(aux3,5,0);
130                 l->addWidget(rotateZ);
131                 
132                 
133                 translateX = new  Wt::WSlider();
134     translateX->setMinimum(-500);
135                 translateX->setMaximum(500);            
136                 translateX->setValue(0);
137                 translateX->setTickPosition(Wt::WSlider::TicksBothSides);
138     translateX->valueChanged().connect(this,&ControlTransform::onTranslateX);
139                 //translateX->sliderMoved().connect(this,&SliderWidget::OnSliderMove);
140                 //Wt::WContainerWidget *aux4 = new Wt::WContainerWidget();
141                 translateXt = new Wt::WText("Translate X Value : 0");
142                 l->addWidget(translateXt);
143                 //new Wt::WBreak(aux4);
144    //aux4->addWidget(translateX);
145                 //l->addWidget(aux4,6,0);
146                 l->addWidget(translateX);
147                 
148                 translateY = new  Wt::WSlider();
149     translateY->setMinimum(-500);
150                 translateY->setMaximum(500);            
151                 translateY->setValue(0);
152                 translateY->setTickPosition(Wt::WSlider::TicksBothSides);
153     translateY->valueChanged().connect(this,&ControlTransform::onTranslateY);
154                 //translateX->sliderMoved().connect(this,&SliderWidget::OnSliderMove);
155                 //Wt::WContainerWidget *aux5 = new Wt::WContainerWidget();
156                 translateYt = new Wt::WText("Translate Y Value : 0");
157                 l->addWidget(translateYt);
158                 //new Wt::WBreak(aux5);
159    //aux5->addWidget(translateY);
160                 //l->addWidget(aux5,7,0);
161                 l->addWidget(translateY);
162                 
163                 translateZ = new  Wt::WSlider();
164     translateZ->setMinimum(-500);
165                 translateZ->setMaximum(500);            
166                 translateZ->setValue(0);
167                 translateZ->setTickPosition(Wt::WSlider::TicksBothSides);
168     translateZ->valueChanged().connect(this,&ControlTransform::onTranslateZ);
169                 //translateX->sliderMoved().connect(this,&SliderWidget::OnSliderMove);
170                 //Wt::WContainerWidget *aux6 = new Wt::WContainerWidget();
171                 translateZt = new Wt::WText("Translate Z Value : 0");
172                 l->addWidget(translateZt);
173                 //new Wt::WBreak(aux6);
174    //aux6->addWidget(translateZ);
175                 //l->addWidget(aux6,8,0);
176                 l->addWidget(translateZ);
177                 this->setLayout(l);
178     
179   }
180   
181   
182   ControlTransform::~ControlTransform()
183   {
184   }
185   
186   void ControlTransform::onFlipX()
187   {
188     
189     Wt::WContainerWidget* w = this;
190     std::string jsCom = "\
191                         " + w->jsRef() + ".mMesh.transform.flipX();";
192                         
193     w->doJavaScript(jsCom);
194   }
195   void ControlTransform::onFlipY()
196   {
197     Wt::WContainerWidget* w = this;
198     std::string jsCom = "\
199                         " + w->jsRef() + ".mMesh.transform.flipY();";
200                         
201     w->doJavaScript(jsCom);
202   }
203   
204   void ControlTransform::onFlipZ()
205   {
206     Wt::WContainerWidget* w = this;
207     std::string jsCom = "\
208                         " + w->jsRef() + ".mMesh.transform.flipZ();";
209                         
210     w->doJavaScript(jsCom);
211   }
212         
213   void ControlTransform::onRotateX()
214   {
215     Wt::WContainerWidget* w = this;
216     int dif = rotateX->value() - rotX;
217     rotX= rotateX->value();
218     rotateXt->setText("Rotate X Value : " + rotateX->valueText() );
219     std::string jsCom = "\
220                         " + w->jsRef() + ".mMesh.transform.rotateX(" + boost::lexical_cast<std::string>(dif) + ");";
221                         
222     w->doJavaScript(jsCom);
223   }
224   void ControlTransform::onRotateY()
225   {
226     Wt::WContainerWidget* w = this;
227     int dif = rotateY->value() - rotY;
228     rotY= rotateY->value();
229     rotateYt->setText("Rotate Y Value : " + rotateY->valueText() );
230     std::string jsCom = "\
231                         " + w->jsRef() + ".mMesh.transform.rotateY(" + boost::lexical_cast<std::string>(dif) + ");";
232                         
233     w->doJavaScript(jsCom);
234   }
235   void ControlTransform::onRotateZ()
236   
237   {
238     Wt::WContainerWidget* w = this;
239     int dif = rotateZ->value() - rotZ;
240     rotZ= rotateZ->value();
241     rotateZt->setText("Rotate Z Value : " + rotateZ->valueText() );
242     std::string jsCom = "\
243                         " + w->jsRef() + ".mMesh.transform.rotateZ(" + boost::lexical_cast<std::string>(dif )+ ");";
244                         
245     w->doJavaScript(jsCom);
246   }
247         
248   void ControlTransform::onTranslateX()
249   {
250     Wt::WContainerWidget* w = this;
251     int dif = translateX->value() - traX;
252     traX= translateX->value();
253     translateXt->setText("Translate X Value : " + translateX->valueText() );
254     std::string jsCom = "\
255                         " + w->jsRef() + ".mMesh.transform.translateX(" + boost::lexical_cast<std::string>(dif) + ");";
256                         
257     w->doJavaScript(jsCom);
258   }
259   void ControlTransform::onTranslateY()
260   
261   {
262     Wt::WContainerWidget* w = this;
263     int dif = translateY->value() - traY;
264     traY= translateY->value();
265     translateYt->setText("Translate Y Value : " + translateY->valueText() );
266     std::string jsCom = "\
267                         " + w->jsRef() + ".mMesh.transform.translateY(" +boost::lexical_cast<std::string>( dif)+ ");";
268                         
269     w->doJavaScript(jsCom);
270   }
271   void ControlTransform::onTranslateZ()
272   {
273     Wt::WContainerWidget* w = this;
274     int dif = translateZ->value() - traZ;
275     traZ= translateZ->value();
276     translateZt->setText("Translate Z Value : " + translateZ->valueText() );
277     std::string jsCom = "\
278                         " + w->jsRef() + ".mMesh.transform.translateZ(" + boost::lexical_cast<std::string>(dif) + ");";
279                         
280     w->doJavaScript(jsCom);
281   }
282
283
284 BBTK_ADD_BLACK_BOX_TO_PACKAGE(wt,AddObjectToViewerWeb)
285 BBTK_BLACK_BOX_IMPLEMENTATION(AddObjectToViewerWeb,bbtk::WtBlackBox);
286 //===== 
287 // 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)
288 //===== 
289 void AddObjectToViewerWeb::Process()
290 {
291 /*
292    std::string msg;
293     if (bbGetInputTitle()!="")
294       {
295         msg = bbGetInputTitle()+": " + bbGetInputIn();
296       }
297     else
298       {
299         msg = bbGetInputIn();
300       }
301    ((wxStaticText*)bbGetOutputWidget())->SetLabel( bbtk::std2wx( msg ) ); 
302   */
303    Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget();
304    
305  //  w->doJavaScript("\
306                   try{\
307                    "+bbGetInputViewer3D()+".mRenderer.remove( " + w->jsRef() +".mMesh );\
308                    }\
309                     catch(err)\
310                     {\
311                     alert('Error ' + err);\
312                     }");
313    
314   //  w->doJavaScript("\
315                   try{\
316                    "+bbGetInputViewer3D()+".mRenderer.removeAll( );\
317                    }\
318                     catch(err)\
319                     {\
320                     alert('Error ' + err);\
321                     }");
322
323                                                 std::string jsCom = "\
324       try{\
325                         " + w->jsRef() + ".cont = true;\
326       " + w->jsRef() + ".mMesh.file = '"+bbGetInputMesh()+"';\
327       "+bbGetInputViewer3D()+".mRenderer.add( " + w->jsRef() + ".mMesh);\
328       "+bbGetInputViewer3D()+".mRenderer.render();\
329       }\
330       catch(err)\
331       {\
332         var mMesh = new X.mesh();\
333                           mMesh.file = '"+bbGetInputMesh()+"';\
334                           mMesh.color = [1,0.8,0];\
335                           mMesh.opacity=1;\
336                           " + w->jsRef() + ".mMesh = mMesh;\
337                           " + w->jsRef() + ".cont = false;\
338                           "+bbGetInputViewer3D()+".mRenderer.onShowtime = function() {\
339                           if(!" + w->jsRef() + ".cont)\
340                           {\
341                           " + w->jsRef() + ".mMesh.transform.flipX();\
342                           " + w->jsRef() + ".mMesh.transform.flipY();\
343                           " + w->jsRef() + ".mMesh.transform.translateY(-10);\
344                           " + w->jsRef() + ".mMesh.visible = true;\
345                           }\
346                           };\
347                           "+bbGetInputViewer3D()+".mRenderer.add(mMesh);\
348                           "+bbGetInputViewer3D()+".mRenderer.render();\
349                           }";
350                           
351  // std::string jsCom = "\
352       try{\
353       " + w->jsRef() + ".mMesh.file = '"+bbGetInputMesh()+"';\
354       "+bbGetInputViewer3D()+".mRenderer.add( " + w->jsRef() + ".mMesh);\
355       "+bbGetInputViewer3D()+".mRenderer.render();\
356       }\
357       catch(err)\
358       {\
359         var mMesh = new X.mesh();\
360                           mMesh.file = '"+bbGetInputMesh()+"';\
361                           mMesh.color = [1,0.8,0];\
362                           mMesh.opacity=1;\
363                           " + w->jsRef() + ".mMesh = mMesh;\
364                           "+bbGetInputViewer3D()+".mRenderer.add(mMesh);\
365                           "+bbGetInputViewer3D()+".mRenderer.render();\
366                           setTimeout(function(){\
367                           " + w->jsRef() + ".mMesh.transform.flipY();\
368                           " + w->jsRef() + ".mMesh.transform.flipX();\
369                           " + w->jsRef() + ".mMesh.transform.translateX(-47);\
370                           },1200);\
371                           }";
372   // std::string jsCom = "\
373       try{\
374       var nn = "+bbGetInputViewer3D()+".mRenderer.get(" + w->jsRef() + ".mMesh);\
375       nn.file = '"+bbGetInputMesh()+"';\
376       "+bbGetInputViewer3D()+".mRenderer.render();\
377       }\
378       catch(err)\
379       {\
380         alert('Error ' + err);\
381         var mMesh = new X.mesh();\
382                           mMesh.file = '"+bbGetInputMesh()+"';\
383                           " + w->jsRef() + ".mMesh = mMesh;\
384                           "+bbGetInputViewer3D()+".mRenderer.add(mMesh);\
385                           "+bbGetInputViewer3D()+".mRenderer.render();\
386                           }";
387    //std::string jsCom = "\
388                         var mMesh = new X.mesh();\
389                         mMesh.file = '"+bbGetInputMesh()+"';\
390                         " + w->jsRef() + ".mMesh = mMesh;\
391                         "+bbGetInputViewer3D()+".mRenderer.add(mMesh);\
392                         "+bbGetInputViewer3D()+".mRenderer.render();";
393           std::cout<<"DEBUG ADD OBJECT ----  "<<jsCom<<std::endl;
394    w->doJavaScript(jsCom);
395 }
396 //===== 
397 // 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)
398 //===== 
399 void AddObjectToViewerWeb::CreateWidget(Wt::WContainerWidget* parent)
400 {
401    //bbSetOutputWidget(new ControlTransform(parent,this));  
402     bbSetOutputWidget(new Wt::WContainerWidget(parent));  
403 }
404 //===== 
405 // 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)
406 //===== 
407 void AddObjectToViewerWeb::bbUserSetDefaultValues()
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 AddObjectToViewerWeb::bbUserInitializeProcessing()
415 {
416
417 }
418 //===== 
419 // 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)
420 //===== 
421 void AddObjectToViewerWeb::bbUserFinalizeProcessing()
422 {
423
424 }
425 }
426 // EO namespace bbwt
427
428