--- /dev/null
+
+/*
+ # ---------------------------------------------------------------------
+ #
+ # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+ # pour la SantÈ)
+ # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+ # Previous Authors : Laurent Guigues, Jean-Pierre Roux
+ # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+ #
+ # This software is governed by the CeCILL-B license under French law and
+ # abiding by the rules of distribution of free software. You can use,
+ # modify and/ or redistribute the software under the terms of the CeCILL-B
+ # license as circulated by CEA, CNRS and INRIA at the following URL
+ # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+ # or in the file LICENSE.txt.
+ #
+ # As a counterpart to the access to the source code and rights to copy,
+ # modify and redistribute granted by the license, users are provided only
+ # with a limited warranty and the software's author, the holder of the
+ # economic rights, and the successive licensors have only limited
+ # liability.
+ #
+ # The fact that you are presently reading this means that you have had
+ # knowledge of the CeCILL-B license and that you accept its terms.
+ # ------------------------------------------------------------------------ */
+
+
+/*=========================================================================
+ Program: bbtk
+ Module: $RCSfile: bbtkWxBlackBox.cxx,v $
+ Language: C++
+ Date: $Date: 2012/11/16 08:49:01 $
+ Version: $Revision: 1.45 $
+=========================================================================*/
+
+
+
+#ifdef _USE_WT_
+
+/**
+ * \file
+ * \brief
+ */
+
+#include "bbtkWtBlackBox.h"
+#include "bbtkBlackBoxOutputConnector.h"
+
+
+//#include "bbtkWxContainerBlackBox.h"
+//#include <wx/dialog.h>
+
+//#include "bbtkData.h"
+//#include "bbtkFactory.h"
+
+
+
+
+namespace bbtk
+{
+
+
+/*
+ class jScript
+ {
+ public:
+ jScript();
+ std::string jScriptLine;
+ };
+*/
+ //=========================================================================
+ // 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;
+ WtBlackBox *pbox;
+ 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 WtWFrame : public Wt::WApplication
+ {
+ public:
+ WtWFrame( const Wt::WEnvironment& env );
+ ~WtWFrame();
+ WtBlackBox::WeakPointer mBox;
+ };
+
+
+ WtWFrame::WtWFrame( const Wt::WEnvironment& env ):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.js");
+ this->require( "resourcesXTK/xtk.js" );
+
+ // this->require("http://get.goXTK.com/xtk_edge.js");
+// this->require("http://get.goXTK.com/xtk_xdat.gui.js");
+ this->require( "resourcesXTK/xtk_xdat.gui.js" );
+
+ this->useStyleSheet("resourcesXTK/styleWT.css");
+ // std::cout<<"Cargado------------ "<<loadedJS<<std::endl;
+ mBox = myWtData.b;
+
+//EED -->
+ 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 *myContainer = new Wt::WContainerWidget(myWtData.parent);
+ myContainer->setMinimumSize(800,500);
+ std::cout<<"Creando WebWIDGET DELETE ME ---- bbtkWtBlackBox.cxx.......50%"<<std::endl;
+ myWtData.b->bbUserCreateWidget(myContainer);
+
+ 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);
+
+//EED
+ myWtData.pbox->bbwtUpdateInputs();
+// myWtData.pbox->bbwtProcess();
+
+
+ }
+ //==================================================================
+ //==================================================================
+ WtWFrame::~WtWFrame()
+ {
+ if (mBox.lock())
+ bbtkDebugMessage("widget",9,"["<<mBox.lock()->bbGetName()
+ <<"] $$$$$$$$$$$$$$$$$$$ ~W()"
+ <<std::endl);
+ else
+ bbtkDebugMessage("widget",9,"[DEAD] $$$$$$$$$$$$$$$$$$$$$ ~WtContainer()"<<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);
+ }
+
+
+ //=========================================================================
+ // WxDialogWxBlackBox::Pointer box
+ //=========================================================================
+
+ //==================================================================
+ // Dialog window which is modal
+ /* class BBTK_EXPORT WxDialog : public wxDialog
+ {
+ public:
+ WxDialog(WxBlackBox::Pointer box,
+ wxWindow *parent,
+ wxString title,
+ wxSize size);
+ ~WxDialog();Wt::GetTopWindow()
+ void OnCloseWindow(wxCloseEvent& event);
+
+
+ WxBlackBox::WeakPointer mBox;
+ DECLARE_EVENT_TABLE();
+
+ };
+
+ BEGIN_EVENT_TABLE(WxDialog, wxDialog)
+ EVT_CLOSE(WxDialog::OnCloseWindow)
+ END_EVENT_TABLE();
+ //=========================================================================
+
+ //=========================================================================
+ WxDialog::WxDialog(WxBlackBox::Pointer b,
+ wxWindow *parent,
+ wxString title,
+ wxSize size)
+ :
+ wxDialog( parent,
+ -1,
+ title,
+ wxDefaultPosition,
+ size,
+ wxRESIZE_BORDER |
+ wxSYSTEM_MENU |
+ wxCLOSE_BOX |
+ wxMAXIMIZE_BOX |
+ wxMINIMIZE_BOX |
+ wxCAPTION
+ ),
+ mBox(b)
+ {
+ bbtkDebugMessage("widget",9,"WxDialog::WxDialog ["<<b->bbGetName()<<"]"
+ <<std::endl);WxBlackBox::Pointer box
+ Wx::IncNbWindowsAlive();
+ b->bbSetWindow(this);
+ // Insert the widget into the window
+ wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
+ b->bbUserCreateWidget(this);
+ wxWindow* widget = b->bbGetOutputWidget();
+ sizer->Add( widget, 1, wxALL|wxGROW, 2);
+ SetSizer(sizer);
+ Layout();
+ }
+ //==================================================================
+ //===========================organise=======================================
+ WxDialog::~WxDialog()
+ {
+ bbtkDebugMessage("widget",9,"WxDialog::~WxDialog()"<<std::endl);
+ //bbtkDebugMessage("widget",9,"WxFrame::~WxFrame()"<<std::endl);
+ // if (mBox.lock()) mBox.lock()->bbSetWindow(0);
+ // Wx::DecNbWindowsAlive();
+ }
+ //==================================================================
+ //==================================================================
+ void WxDialog::OnCloseWindow(wxCloseEvent& event)
+ {
+ 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();
+ }
+ //==================================================================
+
+*/
+ //=========================================================================
+ // WxBlackBox
+ //=========================================================================
+
+ //=========================================================================
+ //=========================================================================
+ //=========================================================================
+ //=========================================================================
+ 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";
+ int WtBlackBox::wtServerData::argc = 0;
+ char **WtBlackBox::wtServerData::argv = NULL;
+
+ //=========================================================================
+ //=========================================================================
+ void WtBlackBox::bbUserSetDefaultValues()
+ {
+ bbtkBlackBoxDebugMessage("widget",5,"WtBlackBox::bbUserSetDefaultValues()"<<std::endl);
+ bbmWindow = 0;
+ }
+ //=========================================================================
+
+ //=========================================================================
+ void WtBlackBox::bbUserInitializeProcessing()
+ {
+
+ }
+ //================================================================http://intranet-if.insa-lyon.fr/temps/5IF39.html==
+
+ //=========================================================================
+ void WtBlackBox::bbUserFinalizeProcessing()
+ {
+ bbtkBlackBoxDebugMessage("widget",5,"==> WtBlackBox::bbUserFinalizeProcessing()"<<std::endl);
+ bbDestroyWindow();
+ bbtkBlackBoxDebugMessage("widget",5,"<== WtBlackBox::bbUserFinalizeProcessing()"<<std::endl);
+ }
+ //==================================================================
+
+ //==================================================================
+ /// Callback for creating a Dialog window (modal)
+ void WtBlackBox::bbCreateDialogWindow()
+ {
+ bbtkBlackBoxDebugMessage("widget",3,
+ "==> WtBlackBox::bbCreateDialogWindow() - No Dialog must be created, it is a web app"
+ <<std::endl);
+
+ }
+ //=========================================================================
+
+ //==================================================================
+
+ //==================================================================
+ /// Callback for creating a Frame window
+ 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");
+ myWtData.pbox = this;
+
+ //char *argv[7] = {"./WtTest","--docroot","/home/gonzalez/Documents/pruebaResources","--http-address","0.0.0.0","--http-port","8080"};
+ //int argc = 7;
+
+/*
+ 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 = 3;
+ std::cout<<" --- PUERTO :"<<WtBlackBox::wtServerData::port<<std::endl;
+*/
+
+/*
+char *argv[2] = {"./bbiWeb.wt","client"};
+int argc=2;
+*/
+
+
+ /* 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<<"EED WtBlackBox::bbCreateFrameWindow Deploying Server -- Definition of server parameters by default -DELETE THIS MESSAGE bbtkWTBlackBox.cxx"<<std::endl;
+
+
+// Wt::WRun(argc,argv,&createApplication);
+
+ Wt::WRun(WtBlackBox::wtServerData::argc,
+ WtBlackBox::wtServerData::argv,
+ &createApplication);
+
+
+ }
+
+ //==================================================================
+
+ //==================================================================
+ void WtBlackBox::bbSetWindow(Wt::WContainerWidget* w)
+ {
+ bbtkBlackBoxDebugMessage("widget",9,"==> WtBlackBox::bbSetWindow("<<w<<")"<<std::endl);
+ if ((bbmWindow != 0)&&(w!=0))
+ {
+ std::cout << "ERRRRRRRROOOOR"<<std::endl;
+ }
+ bbmWindow = w;
+ }
+
+
+
+ //==================================================================
+
+ //==================================================================
+ void WtBlackBox::bbShowWindow()
+ {
+ if ((bbmWindow) && (!bbIsShown()))
+ {
+ bbtkBlackBoxDebugMessage("widget",3,"==> WtBlackBox::bbShowWindow()"
+ <<std::endl);
+ if (bbGetInputWinDialog())
+ {
+ // ((WxDialog*)bbmWindow)->ShowModal();
+ }
+ else
+ {
+ // There is not such a thing like show becouse it is a webapp
+ // bbGetWindow()->Show();
+ // WWt::CreateWtAppIfNeeded();
+
+
+ Wt::WRun(WtBlackBox::wtServerData::argc,
+ WtBlackBox::wtServerData::argv,
+ &createApplication);
+
+
+ bbSetShown(true);
+ }
+ }
+ }
+ //==================================================================
+
+ //==================================================================
+ void WtBlackBox::bbDestroyWindow()
+ {
+ bbtkBlackBoxDebugMessage("widget",3,"==> WtBlackBox::bbDestroyWindow("<<bbmWindow<<")"<<std::endl);
+ if (bbGetWindow()!=NULL)
+ {
+ // wxWindow* w = bbGetWindow();
+ //bbSetWindow(0);
+ // WE SHOULD DESTROY THE WINDOW WITH THE Close METHOD
+ // HOWEVER I
+ //w->Close(true);
+ //
+ delete bbGetWindow();
+ bbSetShown(false);
+ }
+ bbtkBlackBoxDebugMessage("widget",3,"<== WtBlackBox::bbDestroyWindow("<<bbmWindow<<")"<<std::endl);
+
+ }
+
+
+//==================================================================
+ void WtBlackBox::bbwtUpdateInputs()
+ {
+ BlackBox::bbUpdateInputs();
+ }
+
+//==================================================================
+ void WtBlackBox::bbwtProcess()
+ {
+ BlackBox::bbProcess();
+ }
+
+
+
+}//namespace bbtk
+
+#endif
+
+