]> Creatis software - creaWT.git/blobdiff - wt/bbtk_wt_PKG/src/bbwtAddObjectToViewerWeb.cxx
2498 BBTK FeatureNewNormal wt-version PackageWt
[creaWT.git] / wt / bbtk_wt_PKG / src / bbwtAddObjectToViewerWeb.cxx
diff --git a/wt/bbtk_wt_PKG/src/bbwtAddObjectToViewerWeb.cxx b/wt/bbtk_wt_PKG/src/bbwtAddObjectToViewerWeb.cxx
new file mode 100644 (file)
index 0000000..eecaae3
--- /dev/null
@@ -0,0 +1,428 @@
+//===== 
+// 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<std::string>(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<std::string>(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<std::string>(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<std::string>(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<std::string>( 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<std::string>(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 ----  "<<jsCom<<std::endl;
+   w->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
+
+