]> Creatis software - bbtk.git/blobdiff - kernel/src/bbtkWtBlackBox.cxx
#2498 BBTKFeatureNewNormalwt-version kernel
[bbtk.git] / kernel / src / bbtkWtBlackBox.cxx
index cdb6b79a3d39f06cdbed86ea159780593424fef1..3c7d8378ce8eb1df6977ab8038afbfcab4c0230a 100644 (file)
@@ -1,3 +1,4 @@
+
 /*
  # ---------------------------------------------------------------------
  #
@@ -44,8 +45,7 @@
  
 #include "bbtkWtBlackBox.h"
 #include "bbtkBlackBoxOutputConnector.h"
-//DELETE ME
-#include <Wt/WContainerWidget>
+
 
 //#include "bbtkWxContainerBlackBox.h"
 //#include <wx/dialog.h>
 //#include "bbtkData.h"
 //#include "bbtkFactory.h"
 
+
+
+
 namespace bbtk
 {
+
+/*     
+       class jScript
+       {
+               public:
+                       jScript();
+                       std::string jScriptLine;
+       };
+*/
   //=========================================================================
-  // WxFrame
+  // wtData structure
   //=========================================================================
 
+       // For the very first contruction of the application
+/*     struct wtServerData
+       {
+         std::string docRoot;
+         std::string port;
+         std::string address;
+       
+       };
+       */
+       struct wtData
+       {
+               Wt::WContainerWidget *parent;
+               WtBlackBox::Pointer b;
+               Wt::WString title;              
+       };
+
+/*     jScript::jScript()
+       {
+               jScriptLine = "";
+       }
+*/
+//     static bbtk::jScript* js  = new bbtk::jScript();
+       static wtData myWtData;
+//     static wtServerData loadedJS;
+       //static std::string* jss;
+       
+       
+
+  //=========================================================================
+  // javaScript Line
+  //=========================================================================
+       //Contains all the JS statements needed for the bbwt.
+       
+       
+  //=========================================================================
+  // WxFrame
+  //=========================================================================
+       // Application WT deployed
   //==================================================================
- class WtWContainer : public Wt::WContainerWidget
+
+ class WtWFrame : public Wt::WApplication
   {
   public:
-    WtWContainer(WtBlackBox::Pointer b,
-           Wt::WContainerWidget *parent,
-           Wt::WString title/*,
-           wxSize size);*/
+    WtWFrame(
+                       const Wt::WEnvironment& env                     
            );
-    ~WtWContainer();
- //   void OnCloseWindow(wxCloseEvent& event);
-
+    ~WtWFrame();
+               
+       
+       
+       WtBlackBox::WeakPointer mBox; 
+       
 
-    WtBlackBox::WeakPointer mBox;      
-   // DECLARE_EVENT_TABLE();
-    
   };   
-  
-  // BEGIN_EVENT_TABLE(WxFrame, wxFrame)
-  //  EVT_CLOSE(WxFrame::OnCloseWindow)
-   //END_EVENT_TABLE();
-     //==================================================================
-  
-     //==================================================================
-       WtWContainer::WtWContainer(WtBlackBox::Pointer b,
-                  Wt::WContainerWidget *parent,
-                  Wt::WString title/*,
-                  wxSize size) */
+       
+
+       WtWFrame::WtWFrame(
+                       const Wt::WEnvironment& env
                   )
     : 
-    Wt::WContainerWidget( parent),
-    mBox(b)
-  {   
-    bbtkDebugMessage("widget",9,"["<<b->bbGetName()<<"] Wt::Widget()"
-                    <<std::endl);
-               Wt::WObject::setObjectName(bbtk::wt2std(title));
-    WWt::IncNbWindowsAlive();
-    b->bbSetWindow(this);
-    // Insert the widget into the window
-    //wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
-               std::cout<<"Creando WebWIDGET DELETE ME ---- bbtkWtBlackBox.cxx.................30%"<<std::endl;
-               std::cout<<"NAME :  "<<bbtk::wt2std(title);
-               if(parent)
-                       std::cout<<"      CON PADRE   "<<parent->objectName()<<std::endl;
-               else
-                       std::cout<<"        SIN PADRE "<<std::endl;
+    Wt::WApplication(env)
+  {  
+               //std::cout<<"Adding JavaScript --  DELETE ME -- bbtkWtBlackBox.cxx"<<std::endl;
+               //this->require("/home/gonzalez/Documents/CREATOOLS/wt_library/wt/bbtk_wt_PKG/src/js/xtk.js");
+
+               //this->require("http://get.goXTK.com/xtk.js");
+               //this->useStyleSheet("css/demo.css");
+               
+       //      this->require("http://get.goXTK.com/xtk_edge.js");
+       this->require("http://get.goXTK.com/xtk_xdat.gui.js");
+       //this->require("http://get.goXTK.com/xtk.js");
+       this->require("xtk.js");
+       //this->require("xtk_xdat.gui.js");
+  this->useStyleSheet("styleWT.css"); 
+  
+
+       //      std::cout<<"Cargado------------           "<<loadedJS<<std::endl;
+
+               mBox = myWtData.b;
+               if(!myWtData.parent)
+                       {
+                               std::cout<<"        SIN PADRE "<<std::endl;
+                               if(myWtData.parent == 0){std::cout<<"        PARENT 0 "<<std::endl;}
+                               if(myWtData.parent == NULL){std::cout<<"        PARENT NULL "<<std::endl;}
+                               myWtData.parent = new Wt::WContainerWidget();
+                               std::cout<<"Parent created --  DELETE ME -- bbtkWtBlackBox.cxx"<<std::endl;
+                       }
+
+               Wt::WContainerWidget *myCont = new Wt::WContainerWidget(myWtData.parent);
+               myCont->setMinimumSize(800,500);
                std::cout<<"Creando WebWIDGET DELETE ME ---- bbtkWtBlackBox.cxx.................50%"<<std::endl;
-       std::cout<<"Creando WebWIDGET DELETE ME ---- bbtkWtBlackBox.cxx.................55%"<<std::endl;
-       //this->addWidget(new Wt::WContainerWidget());
-       std::cout<<"Creando WebWIDGET DELETE ME ---- bbtkWtBlackBox.cxx.................58%"<<std::endl;
-    b->bbUserCreateWidget(this);
-               Wt::WContainerWidget* widget = b->bbGetOutputWidget();
-               this->addWidget(widget);
- /*   Wt::WWidget* widget = b->bbGetOutputWidget();
-    sizer->Add( widget, 1, wxALL|wxGROW, 2);
-    SetSizer(sizer);
-    Layout();
-*/
+               myWtData.b->bbUserCreateWidget(myCont);
+               root()->addWidget(myWtData.parent);
+               //bbmWindow = myCont;
+               this->refresh();
+               //jss = WtBlackBox::jScript;
+               std::cout<<"Creando WebWIDGET DELETE ME ---- bbtkWtBlackBox.cxx.................80%"<<std::endl;
+               std::cout<<"Creando WebWIDGET DELETE ME SCRIPT : ---"<<bbtk::jScript<<".................80%"<<std::endl;
+               //this->doJavaScript(bbtk::jScript); 
+
+
   }
   //==================================================================
   //==================================================================
-  WtWContainer::~WtWContainer() 
+  WtWFrame::~WtWFrame() 
     { 
       if (mBox.lock())
        bbtkDebugMessage("widget",9,"["<<mBox.lock()->bbGetName()
@@ -129,17 +186,22 @@ namespace bbtk
                         <<std::endl);
       else 
        bbtkDebugMessage("widget",9,"[DEAD] $$$$$$$$$$$$$$$$$$$$$ ~WtContainer()"<<std::endl);
-      //bbtkDebugMessage("widget",9,"WxFrame::~WxFrame()"<<std::endl);
+      bbtkDebugMessage("widget",9,"WtWFrame::~WtWFrame()"<<std::endl);
       if (mBox.lock()) mBox.lock()->bbSetWindow(0); 
       WWt::DecNbWindowsAlive();
     }
 
 
+   
+       Wt::WApplication *createApplication(const Wt::WEnvironment& env)
+       {
+                       return new WtWFrame(env);                       
+       }
 
-   //==================================================================
 
   //=========================================================================
-  // WxDialog
+  // WxDialogWxBlackBox::Pointer box
   //=========================================================================
 
    //==================================================================
@@ -151,7 +213,7 @@ namespace bbtk
                     wxWindow *parent, 
                     wxString title, 
                     wxSize size);
-    ~WxDialog();
+    ~WxDialog();Wt::GetTopWindow()
     void OnCloseWindow(wxCloseEvent& event);
 
 
@@ -186,7 +248,7 @@ namespace bbtk
     mBox(b)
   {
     bbtkDebugMessage("widget",9,"WxDialog::WxDialog ["<<b->bbGetName()<<"]"
-                    <<std::endl);
+                    <<std::endl);WxBlackBox::Pointer box
     Wx::IncNbWindowsAlive();
     b->bbSetWindow(this);
     // Insert the widget into the window
@@ -198,7 +260,7 @@ namespace bbtk
     Layout();
   }
   //==================================================================
-  //==================================================================
+  //===========================organise=======================================
   WxDialog::~WxDialog() 
     { 
       bbtkDebugMessage("widget",9,"WxDialog::~WxDialog()"<<std::endl);
@@ -210,8 +272,8 @@ namespace bbtk
    //==================================================================
   void WxDialog::OnCloseWindow(wxCloseEvent& event)
     {
-      bbtkDebugMessage("widget",9,"WxDialog::OnCloseWindow()"<<std::endl);
-      if (mBox.lock()) mBox.lock()->bbSetWindow(0); 
+      bbtkDebugMessage("widget",9,"WxDialog::OnCloseWindow()"<<wxGUIEditorGraphicBBS:std::endl);
+      if (mBox.lock()) mBox.lock()->bbSetWindow(0); http://doodle.com/qx65tfxismf7d6ku5vxykghs/admin#table
       Wx::DecNbWindowsAlive();
       this->Destroy();
     }
@@ -227,23 +289,35 @@ namespace bbtk
   //=========================================================================
   //=========================================================================
   BBTK_BLACK_BOX_IMPLEMENTATION(WtBlackBox,WidgetBlackBox<Wt::WContainerWidget>);
+       
+       //std::string WtBlackBox::wtServerData::docRoot = "/home/gonzalez/Documents/pruebaResources";
+       //std::string WtBlackBox::wtServerData::docRoot = "/usr/local/share/wtResources";
+  //std::string WtBlackBox::wtServerData::port    = "8081";
+
+       std::string WtBlackBox::wtServerData::docRoot = "<void>";
+       std::string WtBlackBox::wtServerData::port    = "<void>";
+  std::string WtBlackBox::wtServerData::address = "0.0.0.0";
+       
   //=========================================================================
-  
   //=========================================================================
   void WtBlackBox::bbUserSetDefaultValues()
   {
     bbtkBlackBoxDebugMessage("widget",5,"WtBlackBox::bbUserSetDefaultValues()"<<std::endl);
     bbmWindow = 0;
+  /*  WtBlackBox::serData.docRoot = "/home/gonzalez/Documents/pruebaResources";
+    WtBlackBox::serData.address = "0.0.0.0";
+    WtBlackBox::serData.port    = "8080";*/
+    
+
   }
   //=========================================================================
 
   //=========================================================================
   void WtBlackBox::bbUserInitializeProcessing()
   {
-               //TODO delete this commment
-               std::cout<<"Initializing WT BlackBox --- DELETE  this message bbtkWtBlackBox.cxx"<<std::endl;
+
   }
-  //==================================================================    
+  //================================================================http://intranet-if.insa-lyon.fr/temps/5IF39.html==    
 
   //=========================================================================
   void WtBlackBox::bbUserFinalizeProcessing()
@@ -258,19 +332,10 @@ namespace bbtk
   /// Callback for creating a Dialog window (modal)
   void WtBlackBox::bbCreateDialogWindow()
   {
-  bbtkBlackBoxDebugMessage("widget",3,
+         bbtkBlackBoxDebugMessage("widget",3,
                     "==> WtBlackBox::bbCreateDialogWindow() - No Dialog must be created, it is a web app"
                     <<std::endl);
- /*   WxDialog* w = 0;  
-    w = new WxDialog( GetThisPointer<WxBlackBox>(),
-                     Wx::GetTopWindow(),
-                     std2wx( bbGetInputWinTitle()  
-                             + " - bbtk (c) CREATIS"),
-                     wxSize( bbGetInputWinWidth() , 
-                             bbGetInputWinHeight() ) );
-    w->Show(false);
-    //    w->ShowModal();
-*/
+
   } 
   //=========================================================================
 
@@ -278,36 +343,43 @@ namespace bbtk
 
   //==================================================================    
   /// Callback for creating a Frame window 
-  void WtBlackBox::bbCreateFrameWindow()
-  {
+       void WtBlackBox::bbCreateFrameWindow()
+       {
+
+               bbtkBlackBoxDebugMessage("widget",3,
+                       "==> WtBlackBox::bbCreateFrameWindow() - parent = "
+                       <<WWt::GetTopWindow()
+                       <<std::endl);
+
+               //Setting necessary data for Wt server deployment
+               myWtData.parent = WWt::GetTopWindow();
+               myWtData.b      = GetThisPointer<WtBlackBox>();
+               myWtData.title  = std2wt( bbGetInputWinTitle()  
+                            + " - bbtk (c) CREATIS");
+
+
+
+    
 
-    std::cout<<"Creating Container WT -- DELETE THIS MESSAGE bbtkWTBlackBox.cxx"<<std::endl;
-    bbtkBlackBoxDebugMessage("widget",3,
-                    "==> WtBlackBox::bbCreateFrameWindow() - parent = "
-                    <<WWt::GetTopWindow()
-                    <<std::endl);
-               WtWContainer* w = 0;
-//    WxFrame* w = 0;  
-               w = new WtWContainer( GetThisPointer<WtBlackBox>(),
-                                       WWt::GetTopWindow(),
-                                       std2wt( bbGetInputWinTitle()
-                                               + " - bbtk (c) CREATIS")
-                                               );
-               std::cout<<"Container created succesfully -- DELETE THIS MESSAGE bbtkWTBlackBox.cxx"<<std::endl;
-    bbmWindow = w;
                
-/*
-    w = new WxFrame( GetThisPointer<WxBlackBox>(),
-                    Wx::GetTopWindow(),
-                    std2wx( bbGetInputWinTitle()  
-                            + " - bbtk (c) CREATIS"),
-                    wxSize( bbGetInputWinWidth() , 
-                            bbGetInputWinHeight() ) );
+               //char  *argv[7] =  {"./WtTest","--docroot","/home/gonzalez/Documents/pruebaResources","--http-address","0.0.0.0","--http-port","8080"};
+               //int argc = 7;
                
-    w->Show();
-*/
-               WWt::CreateWtAppIfNeeded();
-   }
+               
+                       char  *argv[7] =  {"./WtTest","--docroot",(char*)WtBlackBox::wtServerData::docRoot.c_str(),"--http-address",(char*)WtBlackBox::wtServerData::address.c_str(),"--http-port",(char*)WtBlackBox::wtServerData::port.c_str()};
+               int argc = 7;
+               
+               std::cout<<" ---  PUERTO  :"<<WtBlackBox::wtServerData::port<<std::endl;
+               
+       /*      if(Wt::WServer::instance()->isRunning())
+               {
+                       std::cout<<"Checking the existence of a Server deployed  -DELETE THIS MESSAGE bbtkWTBlackBox.cxx"<<std::endl;
+                       Wt::WServer::instance()->stop();
+               }
+       */
+               std::cout<<"Deploying Server -- Definition of server parameters by default  -DELETE THIS MESSAGE bbtkWTBlackBox.cxx"<<std::endl;
+               Wt::WRun(argc,argv,&createApplication); 
+       }
 
   //==================================================================    
 
@@ -321,9 +393,12 @@ namespace bbtk
       }
     bbmWindow = w;
   }
-  //==================================================================    
 
-  //==================================================================    
+       
+
+    //==================================================================    
+
+  //==================================================================
   void WtBlackBox::bbShowWindow()
   {
     if ((bbmWindow) && (!bbIsShown()))
@@ -338,7 +413,7 @@ namespace bbtk
          {
                // There is not such a thing like show becouse it is a webapp
           // bbGetWindow()->Show();
-           WWt::CreateWtAppIfNeeded();
+         //  WWt::CreateWtAppIfNeeded();
            bbSetShown(true);
          } 
       }