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)
4 #include "bbwtAddObjectToViewerWeb.h"
5 #include "bbwtPackage.h"
9 class ControlTransform : public Wt::WContainerWidget
12 ControlTransform(Wt::WContainerWidget* parent,
13 AddObjectToViewerWeb* box);
29 Wt::WPushButton *flipX;
30 Wt::WPushButton *flipY;
31 Wt::WPushButton *flipZ;
35 Wt::WSlider *translateX;
36 Wt::WSlider *translateY;
37 Wt::WSlider *translateZ;
44 Wt::WText *translateXt;
45 Wt::WText *translateYt;
46 Wt::WText *translateZt;
47 AddObjectToViewerWeb *mBox;
59 ControlTransform::ControlTransform(Wt::WContainerWidget* parent,
60 AddObjectToViewerWeb* box)
62 Wt::WContainerWidget(parent),
65 Wt::WVBoxLayout *l = new Wt::WVBoxLayout();
75 flipX = new Wt::WPushButton("Flip X");
76 flipX->clicked().connect(this, &ControlTransform::onFlipX);
79 flipY = new Wt::WPushButton("Flip Y");
80 flipY->clicked().connect(this, &ControlTransform::onFlipY);
83 flipZ = new Wt::WPushButton("Flip Z");
84 flipZ->clicked().connect(this, &ControlTransform::onFlipZ);
88 rotateX = new Wt::WSlider();
89 rotateX->setMinimum(0);
90 rotateX->setMaximum(360);
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);
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);
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);
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);
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);
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);
182 ControlTransform::~ControlTransform()
186 void ControlTransform::onFlipX()
189 Wt::WContainerWidget* w = this;
190 std::string jsCom = "\
191 " + w->jsRef() + ".mMesh.transform.flipX();";
193 w->doJavaScript(jsCom);
195 void ControlTransform::onFlipY()
197 Wt::WContainerWidget* w = this;
198 std::string jsCom = "\
199 " + w->jsRef() + ".mMesh.transform.flipY();";
201 w->doJavaScript(jsCom);
204 void ControlTransform::onFlipZ()
206 Wt::WContainerWidget* w = this;
207 std::string jsCom = "\
208 " + w->jsRef() + ".mMesh.transform.flipZ();";
210 w->doJavaScript(jsCom);
213 void ControlTransform::onRotateX()
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) + ");";
222 w->doJavaScript(jsCom);
224 void ControlTransform::onRotateY()
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) + ");";
233 w->doJavaScript(jsCom);
235 void ControlTransform::onRotateZ()
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 )+ ");";
245 w->doJavaScript(jsCom);
248 void ControlTransform::onTranslateX()
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) + ");";
257 w->doJavaScript(jsCom);
259 void ControlTransform::onTranslateY()
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)+ ");";
269 w->doJavaScript(jsCom);
271 void ControlTransform::onTranslateZ()
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) + ");";
280 w->doJavaScript(jsCom);
284 BBTK_ADD_BLACK_BOX_TO_PACKAGE(wt,AddObjectToViewerWeb)
285 BBTK_BLACK_BOX_IMPLEMENTATION(AddObjectToViewerWeb,bbtk::WtBlackBox);
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)
289 void AddObjectToViewerWeb::Process()
293 if (bbGetInputTitle()!="")
295 msg = bbGetInputTitle()+": " + bbGetInputIn();
299 msg = bbGetInputIn();
301 ((wxStaticText*)bbGetOutputWidget())->SetLabel( bbtk::std2wx( msg ) );
303 Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget();
305 // w->doJavaScript("\
307 "+bbGetInputViewer3D()+".mRenderer.remove( " + w->jsRef() +".mMesh );\
311 alert('Error ' + err);\
314 // w->doJavaScript("\
316 "+bbGetInputViewer3D()+".mRenderer.removeAll( );\
320 alert('Error ' + err);\
323 std::string jsCom = "\
325 " + w->jsRef() + ".cont = true;\
326 " + w->jsRef() + ".mMesh.file = '"+bbGetInputMesh()+"';\
327 "+bbGetInputViewer3D()+".mRenderer.add( " + w->jsRef() + ".mMesh);\
328 "+bbGetInputViewer3D()+".mRenderer.render();\
332 var mMesh = new X.mesh();\
333 mMesh.file = '"+bbGetInputMesh()+"';\
334 mMesh.color = [1,0.8,0];\
336 " + w->jsRef() + ".mMesh = mMesh;\
337 " + w->jsRef() + ".cont = false;\
338 "+bbGetInputViewer3D()+".mRenderer.onShowtime = function() {\
339 if(!" + w->jsRef() + ".cont)\
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;\
347 "+bbGetInputViewer3D()+".mRenderer.add(mMesh);\
348 "+bbGetInputViewer3D()+".mRenderer.render();\
351 // std::string jsCom = "\
353 " + w->jsRef() + ".mMesh.file = '"+bbGetInputMesh()+"';\
354 "+bbGetInputViewer3D()+".mRenderer.add( " + w->jsRef() + ".mMesh);\
355 "+bbGetInputViewer3D()+".mRenderer.render();\
359 var mMesh = new X.mesh();\
360 mMesh.file = '"+bbGetInputMesh()+"';\
361 mMesh.color = [1,0.8,0];\
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);\
372 // std::string jsCom = "\
374 var nn = "+bbGetInputViewer3D()+".mRenderer.get(" + w->jsRef() + ".mMesh);\
375 nn.file = '"+bbGetInputMesh()+"';\
376 "+bbGetInputViewer3D()+".mRenderer.render();\
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();\
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);
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)
399 void AddObjectToViewerWeb::CreateWidget(Wt::WContainerWidget* parent)
401 //bbSetOutputWidget(new ControlTransform(parent,this));
402 bbSetOutputWidget(new Wt::WContainerWidget(parent));
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)
407 void AddObjectToViewerWeb::bbUserSetDefaultValues()
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)
414 void AddObjectToViewerWeb::bbUserInitializeProcessing()
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)
421 void AddObjectToViewerWeb::bbUserFinalizeProcessing()