//===== // 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) //===== #include "bbwtAddObjectToViewerWeb.h" #include "bbwtPackage.h" namespace bbwt { class ControlTransform : public Wt::WContainerWidget { public : ControlTransform(Wt::WContainerWidget* parent, AddObjectToViewerWeb* box); ~ControlTransform(); void onFlipX(); void onFlipY(); void onFlipZ(); void onRotateX(); void onRotateY(); void onRotateZ(); void onTranslateX(); void onTranslateY(); void onTranslateZ(); private : Wt::WPushButton *flipX; Wt::WPushButton *flipY; Wt::WPushButton *flipZ; Wt::WSlider *rotateX; Wt::WSlider *rotateY; Wt::WSlider *rotateZ; Wt::WSlider *translateX; Wt::WSlider *translateY; Wt::WSlider *translateZ; Wt::WText *flipXt; Wt::WText *flipYt; Wt::WText *flipZt; Wt::WText *rotateXt; Wt::WText *rotateYt; Wt::WText *rotateZt; Wt::WText *translateXt; Wt::WText *translateYt; Wt::WText *translateZt; AddObjectToViewerWeb *mBox; int rotX; int rotY; int rotZ; int traX; int traY; int traZ; }; ControlTransform::ControlTransform(Wt::WContainerWidget* parent, AddObjectToViewerWeb* box) : Wt::WContainerWidget(parent), mBox(box) { Wt::WVBoxLayout *l = new Wt::WVBoxLayout(); rotX=0; rotY=0; rotZ=0; traX=0; traY=0; traZ=0; flipX = new Wt::WPushButton("Flip X"); flipX->clicked().connect(this, &ControlTransform::onFlipX); l->addWidget(flipX); flipY = new Wt::WPushButton("Flip Y"); flipY->clicked().connect(this, &ControlTransform::onFlipY); l->addWidget(flipY); flipZ = new Wt::WPushButton("Flip Z"); flipZ->clicked().connect(this, &ControlTransform::onFlipZ); l->addWidget(flipZ); rotateX = new Wt::WSlider(); rotateX->setMinimum(0); rotateX->setMaximum(360); rotateX->setValue(0); rotateX->setTickPosition(Wt::WSlider::TicksBothSides); rotateX->valueChanged().connect(this,&ControlTransform::onRotateX); //rotateX->sliderMoved().connect(this,&SliderWidget::OnSliderMove); //Wt::WContainerWidget *aux1 = new Wt::WContainerWidget(); rotateXt = new Wt::WText("Rotate X Value : 0"); l->addWidget(rotateXt); //aux1->addWidget(rotateX); //l->addWidget(aux1,3,0); l->addWidget(rotateX); rotateY = new Wt::WSlider(); rotateY->setMinimum(0); rotateY->setMaximum(360); rotateY->setValue(0); rotateY->setTickPosition(Wt::WSlider::TicksBothSides); rotateY->valueChanged().connect(this,&ControlTransform::onRotateY); //rotateY->sliderMoved().connect(this,&SliderWidget::OnSliderMove); //Wt::WContainerWidget *aux2 = new Wt::WContainerWidget(); rotateYt = new Wt::WText("Rotate Y Value : 0"); l->addWidget(rotateYt); //new Wt::WBreak(aux2); //aux2->addWidget(rotateY); //l->addWidget(aux2,4,0); l->addWidget(rotateY); rotateZ = new Wt::WSlider(); rotateZ->setMinimum(0); rotateZ->setMaximum(360); rotateZ->setValue(0); rotateZ->setTickPosition(Wt::WSlider::TicksBothSides); rotateZ->valueChanged().connect(this,&ControlTransform::onRotateZ); //rotateZ->sliderMoved().connect(this,&SliderWidget::OnSliderMove); //Wt::WContainerWidget *aux3 = new Wt::WContainerWidget(); rotateZt = new Wt::WText("Rotate Z Value : 0"); l->addWidget(rotateZt); //new Wt::WBreak(aux3); //aux3->addWidget(rotateZ); //l->addWidget(aux3,5,0); l->addWidget(rotateZ); translateX = new Wt::WSlider(); translateX->setMinimum(-500); translateX->setMaximum(500); translateX->setValue(0); translateX->setTickPosition(Wt::WSlider::TicksBothSides); translateX->valueChanged().connect(this,&ControlTransform::onTranslateX); //translateX->sliderMoved().connect(this,&SliderWidget::OnSliderMove); //Wt::WContainerWidget *aux4 = new Wt::WContainerWidget(); translateXt = new Wt::WText("Translate X Value : 0"); l->addWidget(translateXt); //new Wt::WBreak(aux4); //aux4->addWidget(translateX); //l->addWidget(aux4,6,0); l->addWidget(translateX); translateY = new Wt::WSlider(); translateY->setMinimum(-500); translateY->setMaximum(500); translateY->setValue(0); translateY->setTickPosition(Wt::WSlider::TicksBothSides); translateY->valueChanged().connect(this,&ControlTransform::onTranslateY); //translateX->sliderMoved().connect(this,&SliderWidget::OnSliderMove); //Wt::WContainerWidget *aux5 = new Wt::WContainerWidget(); translateYt = new Wt::WText("Translate Y Value : 0"); l->addWidget(translateYt); //new Wt::WBreak(aux5); //aux5->addWidget(translateY); //l->addWidget(aux5,7,0); l->addWidget(translateY); translateZ = new Wt::WSlider(); translateZ->setMinimum(-500); translateZ->setMaximum(500); translateZ->setValue(0); translateZ->setTickPosition(Wt::WSlider::TicksBothSides); translateZ->valueChanged().connect(this,&ControlTransform::onTranslateZ); //translateX->sliderMoved().connect(this,&SliderWidget::OnSliderMove); //Wt::WContainerWidget *aux6 = new Wt::WContainerWidget(); translateZt = new Wt::WText("Translate Z Value : 0"); l->addWidget(translateZt); //new Wt::WBreak(aux6); //aux6->addWidget(translateZ); //l->addWidget(aux6,8,0); l->addWidget(translateZ); this->setLayout(l); } ControlTransform::~ControlTransform() { } void ControlTransform::onFlipX() { Wt::WContainerWidget* w = this; std::string jsCom = "\ " + w->jsRef() + ".mMesh.transform.flipX();"; w->doJavaScript(jsCom); } void ControlTransform::onFlipY() { Wt::WContainerWidget* w = this; std::string jsCom = "\ " + w->jsRef() + ".mMesh.transform.flipY();"; w->doJavaScript(jsCom); } void ControlTransform::onFlipZ() { Wt::WContainerWidget* w = this; std::string jsCom = "\ " + w->jsRef() + ".mMesh.transform.flipZ();"; w->doJavaScript(jsCom); } void ControlTransform::onRotateX() { Wt::WContainerWidget* w = this; int dif = rotateX->value() - rotX; rotX= rotateX->value(); rotateXt->setText("Rotate X Value : " + rotateX->valueText() ); std::string jsCom = "\ " + w->jsRef() + ".mMesh.transform.rotateX(" + boost::lexical_cast(dif) + ");"; w->doJavaScript(jsCom); } void ControlTransform::onRotateY() { Wt::WContainerWidget* w = this; int dif = rotateY->value() - rotY; rotY= rotateY->value(); rotateYt->setText("Rotate Y Value : " + rotateY->valueText() ); std::string jsCom = "\ " + w->jsRef() + ".mMesh.transform.rotateY(" + boost::lexical_cast(dif) + ");"; w->doJavaScript(jsCom); } void ControlTransform::onRotateZ() { Wt::WContainerWidget* w = this; int dif = rotateZ->value() - rotZ; rotZ= rotateZ->value(); rotateZt->setText("Rotate Z Value : " + rotateZ->valueText() ); std::string jsCom = "\ " + w->jsRef() + ".mMesh.transform.rotateZ(" + boost::lexical_cast(dif )+ ");"; w->doJavaScript(jsCom); } void ControlTransform::onTranslateX() { Wt::WContainerWidget* w = this; int dif = translateX->value() - traX; traX= translateX->value(); translateXt->setText("Translate X Value : " + translateX->valueText() ); std::string jsCom = "\ " + w->jsRef() + ".mMesh.transform.translateX(" + boost::lexical_cast(dif) + ");"; w->doJavaScript(jsCom); } void ControlTransform::onTranslateY() { Wt::WContainerWidget* w = this; int dif = translateY->value() - traY; traY= translateY->value(); translateYt->setText("Translate Y Value : " + translateY->valueText() ); std::string jsCom = "\ " + w->jsRef() + ".mMesh.transform.translateY(" +boost::lexical_cast( dif)+ ");"; w->doJavaScript(jsCom); } void ControlTransform::onTranslateZ() { Wt::WContainerWidget* w = this; int dif = translateZ->value() - traZ; traZ= translateZ->value(); translateZt->setText("Translate Z Value : " + translateZ->valueText() ); std::string jsCom = "\ " + w->jsRef() + ".mMesh.transform.translateZ(" + boost::lexical_cast(dif) + ");"; w->doJavaScript(jsCom); } BBTK_ADD_BLACK_BOX_TO_PACKAGE(wt,AddObjectToViewerWeb) BBTK_BLACK_BOX_IMPLEMENTATION(AddObjectToViewerWeb,bbtk::WtBlackBox); //===== // 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) //===== void AddObjectToViewerWeb::Process() { /* std::string msg; if (bbGetInputTitle()!="") { msg = bbGetInputTitle()+": " + bbGetInputIn(); } else { msg = bbGetInputIn(); } ((wxStaticText*)bbGetOutputWidget())->SetLabel( bbtk::std2wx( msg ) ); */ Wt::WContainerWidget* w = (Wt::WContainerWidget*)bbGetOutputWidget(); // w->doJavaScript("\ try{\ "+bbGetInputViewer3D()+".mRenderer.remove( " + w->jsRef() +".mMesh );\ }\ catch(err)\ {\ alert('Error ' + err);\ }"); // w->doJavaScript("\ try{\ "+bbGetInputViewer3D()+".mRenderer.removeAll( );\ }\ catch(err)\ {\ alert('Error ' + err);\ }"); std::string jsCom = "\ try{\ " + w->jsRef() + ".cont = true;\ " + w->jsRef() + ".mMesh.file = '"+bbGetInputMesh()+"';\ "+bbGetInputViewer3D()+".mRenderer.add( " + w->jsRef() + ".mMesh);\ "+bbGetInputViewer3D()+".mRenderer.render();\ }\ catch(err)\ {\ var mMesh = new X.mesh();\ mMesh.file = '"+bbGetInputMesh()+"';\ mMesh.color = [1,0.8,0];\ mMesh.opacity=1;\ " + w->jsRef() + ".mMesh = mMesh;\ " + w->jsRef() + ".cont = false;\ "+bbGetInputViewer3D()+".mRenderer.onShowtime = function() {\ if(!" + w->jsRef() + ".cont)\ {\ " + w->jsRef() + ".mMesh.transform.flipX();\ " + w->jsRef() + ".mMesh.transform.flipY();\ " + w->jsRef() + ".mMesh.transform.translateY(-10);\ " + w->jsRef() + ".mMesh.visible = true;\ }\ };\ "+bbGetInputViewer3D()+".mRenderer.add(mMesh);\ "+bbGetInputViewer3D()+".mRenderer.render();\ }"; // std::string jsCom = "\ try{\ " + w->jsRef() + ".mMesh.file = '"+bbGetInputMesh()+"';\ "+bbGetInputViewer3D()+".mRenderer.add( " + w->jsRef() + ".mMesh);\ "+bbGetInputViewer3D()+".mRenderer.render();\ }\ catch(err)\ {\ var mMesh = new X.mesh();\ mMesh.file = '"+bbGetInputMesh()+"';\ mMesh.color = [1,0.8,0];\ mMesh.opacity=1;\ " + w->jsRef() + ".mMesh = mMesh;\ "+bbGetInputViewer3D()+".mRenderer.add(mMesh);\ "+bbGetInputViewer3D()+".mRenderer.render();\ setTimeout(function(){\ " + w->jsRef() + ".mMesh.transform.flipY();\ " + w->jsRef() + ".mMesh.transform.flipX();\ " + w->jsRef() + ".mMesh.transform.translateX(-47);\ },1200);\ }"; // std::string jsCom = "\ try{\ var nn = "+bbGetInputViewer3D()+".mRenderer.get(" + w->jsRef() + ".mMesh);\ nn.file = '"+bbGetInputMesh()+"';\ "+bbGetInputViewer3D()+".mRenderer.render();\ }\ catch(err)\ {\ alert('Error ' + err);\ var mMesh = new X.mesh();\ mMesh.file = '"+bbGetInputMesh()+"';\ " + w->jsRef() + ".mMesh = mMesh;\ "+bbGetInputViewer3D()+".mRenderer.add(mMesh);\ "+bbGetInputViewer3D()+".mRenderer.render();\ }"; //std::string jsCom = "\ var mMesh = new X.mesh();\ mMesh.file = '"+bbGetInputMesh()+"';\ " + w->jsRef() + ".mMesh = mMesh;\ "+bbGetInputViewer3D()+".mRenderer.add(mMesh);\ "+bbGetInputViewer3D()+".mRenderer.render();"; std::cout<<"DEBUG ADD OBJECT ---- "<doJavaScript(jsCom); } //===== // 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) //===== void AddObjectToViewerWeb::CreateWidget(Wt::WContainerWidget* parent) { //bbSetOutputWidget(new ControlTransform(parent,this)); bbSetOutputWidget(new Wt::WContainerWidget(parent)); } //===== // 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) //===== void AddObjectToViewerWeb::bbUserSetDefaultValues() { } //===== // 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) //===== void AddObjectToViewerWeb::bbUserInitializeProcessing() { } //===== // 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) //===== void AddObjectToViewerWeb::bbUserFinalizeProcessing() { } } // EO namespace bbwt