]> Creatis software - bbtk.git/commitdiff
#3499 Export to JavaScript
authorEduardo DAVILA <davila@creatis.insa-lyon.fr>
Fri, 28 Apr 2023 09:19:25 +0000 (11:19 +0200)
committerEduardo DAVILA <davila@creatis.insa-lyon.fr>
Fri, 28 Apr 2023 09:19:25 +0000 (11:19 +0200)
kernel/appli/bbs2cpp/bbs2.cxx
kernel/src/bbtkInterpreterJavaScript.cxx [new file with mode: 0644]
kernel/src/bbtkInterpreterJavaScript.h [new file with mode: 0644]
kernel/src/bbtkInterpreterPython.cxx [moved from kernel/src/bbtkInterpreterPy.cxx with 79% similarity]
kernel/src/bbtkInterpreterPython.h [moved from kernel/src/bbtkInterpreterPy.h with 93% similarity]
packages/wx/bbs/appli/exampleCollapsiblePane.bbg [new file with mode: 0644]
packages/wx/bbs/appli/exampleCollapsiblePane.bbs [new file with mode: 0644]
packages/wx/src/bbwxCollapsiblePane.cxx [new file with mode: 0644]
packages/wx/src/bbwxCollapsiblePane.h [new file with mode: 0644]
packages/wx/src/bbwxLayoutLine.cxx

index c193d24bf6c8103749b99d678feef37da3e2fc3d..e0b303c66f86faafa706245c1c1810a94aadd4cd 100644 (file)
 
 #include <stdio.h>
 
-#include "bbtkInterpreter.h"
-#include "bbtkInterpreterPy.h"
 #include "bbtkUtilities.h"
+#include "bbtkInterpreter.h"
+#include "bbtkInterpreterJavaScript.h"
+#include "bbtkInterpreterPython.h"
 
 int main(int argc, char* argv[])
 {  
     if (argc<3)
     {
-        printf("bbs2 <filename.bbs> <cxx|py>\n");
+        printf("bbs2 <filename.bbs> <cxx|py|js>\n");
         return 1;
     }
-    std::string file,path;
+    std::string fileBase,file,path;
     std::string extention( argv[2] );
-    file = bbtk::Utilities::ExtractScriptName(argv[1],path);
-    file += std::string(".")+extention;
+    fileBase = bbtk::Utilities::ExtractScriptName(argv[1],path);
+    file = fileBase + std::string(".") + extention;
 
     if ( extention.compare("cxx")==0)
     {
@@ -78,28 +79,56 @@ int main(int argc, char* argv[])
     if ( extention.compare("py")==0)
     {
         printf("bbs -> py\n");
-         bbtk::InterpreterPy::Pointer I = bbtk::InterpreterPy::New();
+         bbtk::InterpreterPython::Pointer I = bbtk::InterpreterPython::New();
          I->SetThrow(true);
          try
          {
              I->InterpretFile(argv[1]);
-             std::vector<std::string> pythonBBTK=  ((bbtk::InterpreterPy*)(I.get()))->pythonBBTK  ;
+             std::vector<std::string> pythonBBTK=  ((bbtk::InterpreterPython*)(I.get()))->pythonBBTK  ;
              FILE *ff=fopen(file.c_str(),"w+");
              fprintf(ff,"from bbtk.bbtkBlackBox import *\n" );
-             fprintf(ff,"class appliTest02:\n" );
+             fprintf(ff,"class %s:\n",fileBase.c_str() );
              fprintf(ff,"    def Run(self):\n" );
-             fprintf(ff,"        mCB  = ComplexBlackBox('appliTest02')\n");
+             fprintf(ff,"        mCBpy  =  ComplexBlackBox('%s')\n",fileBase.c_str());
              int i,size=pythonBBTK.size();
              for (i=0; i<size;i++)
              {
-                 fprintf(ff,"        mCB.%s\n", pythonBBTK[i].c_str() );
+                 fprintf(ff,"        mCBpy.%s\n", pythonBBTK[i].c_str() );
              }// for i
-             fprintf(ff,"        mCB.Execute()\n" );
+             fprintf(ff,"        mCBpy.Execute()\n" );
              fclose(ff);
          } catch (bbtk::Exception e) {
              e.Print();
          } // try
-    } // py
+    } // if py
+
+    if ( extention.compare("js")==0)
+    {
+               printf("bbs -> js\n");
+        bbtk::InterpreterJavaScript::Pointer I = bbtk::InterpreterJavaScript::New();
+        I->SetThrow(true);
+        try
+        {
+               I->InterpretFile(argv[1]);
+            std::vector<std::string> javascriptBBTK=  ((bbtk::InterpreterJavaScript*)(I.get()))->javascriptBBTK  ;
+            FILE *ff=fopen(file.c_str(),"w+");
+            fprintf(ff,"import * as bbtk from './bbtk.js' \n" );
+            fprintf(ff,"export  class %s{\n",fileBase.c_str() );
+            fprintf(ff,"    Run(){\n" );
+            fprintf(ff,"        let mCBjs  = new bbtk.ComplexBlackBox('%s')\n",fileBase.c_str());
+            int i,size=javascriptBBTK.size();
+            for (i=0; i<size;i++)
+            {
+                fprintf(ff,"        mCBjs.%s\n", javascriptBBTK[i].c_str() );
+            }// for i
+            fprintf(ff,"        mCBjs.Execute()\n" );
+            fprintf(ff,"    } \n" );
+            fprintf(ff,"} \n" );
+            fclose(ff);
+        } catch (bbtk::Exception e) {
+            e.Print();
+        } // try
+   } // if js
     
   return 0;
 }
diff --git a/kernel/src/bbtkInterpreterJavaScript.cxx b/kernel/src/bbtkInterpreterJavaScript.cxx
new file mode 100644 (file)
index 0000000..1927b2d
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+#                        pour la Santé)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+#
+#  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$
+Language:  C++
+Date:      $Date$
+Version:   $Revision$
+=========================================================================*/
+
+
+/**
+ *  \file
+ *  \brief Class bbtk::BBPInterpreter
+ */
+
+
+#include "bbtkInterpreterJavaScript.h"
+
+#include "bbtkExecuter.h"
+#include "bbtkMessageManager.h"
+#include "bbtkFactory.h"
+#include "bbtkUtilities.h"
+
+namespace bbtk
+{
+
+  //=========================================================================
+    InterpreterJavaScript::Pointer InterpreterJavaScript::New()
+    {
+        return MakePointer( new InterpreterJavaScript() );
+    }
+  //=========================================================================
+
+
+
+  //=========================================================================
+    InterpreterJavaScript::InterpreterJavaScript()
+    {
+        bbtk::InterpreterVirtual::Init();
+    }
+  //=========================================================================
+
+  //=========================================================================
+    InterpreterJavaScript::~InterpreterJavaScript()
+    {
+    }
+  //=========================================================================
+
+
+  //=========================================================================
+  /// Creates a new black box in current complex box
+  void InterpreterJavaScript::commandNew( const std::string& boxType, const std::string& boxName) // virtual
+  {
+      int pos = boxType.find( std::string(":") );
+      std::string boxTypeTmp=boxType;
+      boxTypeTmp.replace(pos,1,"_");
+      // ex:   mCB.New( bbtkBlackBox.std_ConcatString("Box10") )
+      std::string  code("New( new bbtk."+boxTypeTmp+"('"+boxName+"') )");
+      this->javascriptBBTK.push_back(code);
+  }
+  //=========================================================================
+
+
+  //=========================================================================
+  /// Connects the output boxOutput to the input boxInput
+  void InterpreterJavaScript::commandConnection (const std::string &boxfrom,
+      const std::string &output,
+      const std::string &boxto,
+      const std::string &input)                        // virtual
+  {
+      //ex: mCB.Connection( "Box10" , "Out", "Box11", "In")
+      std::string  code("Connection('"+boxfrom+"','"+output+"','"+boxto+"','"+input+"')");
+      this->javascriptBBTK.push_back(code);
+  }
+  //=========================================================================
+
+  //=========================================================================
+  void InterpreterJavaScript::commandInput(const std::string &name,const std::string &box,const std::string &input,const std::string  &help)
+  {
+  }
+  //=========================================================================
+
+  //=========================================================================
+  void InterpreterJavaScript::commandOutput(const std::string &name,const std::string &box,const std::string &output,const std::string  &help)
+  {
+  }
+  //=========================================================================
+
+
+  //=========================================================================
+  /// sets the input of the box with the value
+  void InterpreterJavaScript::commandSet(const std::string &box,const std::string &input,const std::string &value) // virtual
+  {
+      //ex:     mCB.Set("Box10","In2","/hola.mhd")
+      std::string  code("Set('"+box+"','"+input+"','"+value+"')");
+      this->javascriptBBTK.push_back(code);
+  }
+  //=========================================================================
+
+
+  //=========================================================================
+  void InterpreterJavaScript::commandDefine(const std::string &name,const std::string &pack,const std::string &scriptfilename) // virtual
+  {
+  }
+  //=========================================================================
+
+
+  //=========================================================================
+  void InterpreterJavaScript::commandEndDefine() // virtual
+  {
+  }
+  //=========================================================================
+
+
+  //=========================================================================
+  void InterpreterJavaScript::commandExec(const std::string &word) // virtual
+  {
+      //Ex:     mCB.AddToExecutableLst("Box13")
+      std::string  code("AddToExecutableLst('"+word+"')");
+      this->javascriptBBTK.push_back(code);
+  }
+  //=========================================================================
+
+
+  //=========================================================================
+  void InterpreterJavaScript::commandAuthor(const std::string &author)  // virtual
+  {
+  }
+  //=========================================================================
+
+  //=========================================================================
+  void InterpreterJavaScript::commandCategory(const std::string &categorytype)  // virtual
+  {
+  }
+  //=========================================================================
+
+  //=========================================================================
+  void InterpreterJavaScript::commandDescription(const std::string &description)  // virtual
+  {
+  }
+  //=========================================================================
+
+}  // EO namespace bbtk
+
+// EOF
+
diff --git a/kernel/src/bbtkInterpreterJavaScript.h b/kernel/src/bbtkInterpreterJavaScript.h
new file mode 100644 (file)
index 0000000..380e239
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+#                        pour la Santé)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+#
+#  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$
+Language:  C++
+Date:      $Date$
+Version:   $Revision$
+=========================================================================*/
+
+
+#ifndef __bbtkBBPInterpreterJavaScript_h__
+#define __bbtkBBPInterpreterJavaScript_h__
+
+//Includes bbtk
+#include "bbtkInterpreterVirtual.h"
+
+//Includes std
+#include <iostream>
+#include <set>
+
+
+//#include "bbtkSystem.h"
+//#include "bbtkComplexBlackBox.h"
+
+namespace bbtk
+{
+  class BBTK_EXPORT InterpreterJavaScript : public InterpreterVirtual
+  {
+  public:
+    static Pointer New();
+    InterpreterJavaScript();
+    ~InterpreterJavaScript();
+
+    //Public methods
+
+    virtual void commandNew( const std::string& boxType, const std::string& boxName);
+
+    virtual void commandConnection (const std::string &boxfrom,
+                       const std::string &output,
+                       const std::string &boxto,
+                       const std::string &input);
+    virtual void commandSet(const std::string &box,const std::string &input,const std::string &value);
+
+
+    virtual void commandDefine(const std::string &name,const std::string &pack,const std::string &scriptfilename);
+    virtual void commandEndDefine();
+
+    virtual void commandExec(const std::string &word);
+
+    virtual void commandAuthor(const std::string &author);
+    virtual void commandCategory(const std::string &categorytype);
+    virtual void commandDescription(const std::string &description);
+
+    virtual void commandInput(const std::string &name,const std::string &box,const std::string &input,const std::string  &help);
+    virtual void commandOutput(const std::string &name,const std::string &box,const std::string &output,const std::string  &help);
+
+    std::vector<std::string> javascriptBBTK;
+
+  private:
+
+    //Private Attributes
+
+    //Private Methods
+
+  protected:
+
+    //Protected Attributes
+
+    //Protected methods
+
+  };
+}
+// namespace bbtk
+#endif
+
similarity index 79%
rename from kernel/src/bbtkInterpreterPy.cxx
rename to kernel/src/bbtkInterpreterPython.cxx
index 95900b42ff40bb6b807b8fa08e004e5bae337061..68cce9441c264f434304a0ab7a4b459a2ebbfadb 100644 (file)
@@ -38,7 +38,7 @@ Version:   $Revision$
  */
 
 
-#include "bbtkInterpreterPy.h"
+#include "bbtkInterpreterPython.h"
 
 #include "bbtkExecuter.h"
 #include "bbtkMessageManager.h"
@@ -49,23 +49,23 @@ namespace bbtk
 {
 
   //=========================================================================
-    InterpreterPy::Pointer InterpreterPy::New()
+    InterpreterPython::Pointer InterpreterPython::New()
     {
-        return MakePointer( new InterpreterPy() );
+        return MakePointer( new InterpreterPython() );
     }
   //=========================================================================
 
 
 
   //=========================================================================
-    InterpreterPy::InterpreterPy()
+    InterpreterPython::InterpreterPython()
     {
         bbtk::InterpreterVirtual::Init();
     }
   //=========================================================================
 
   //=========================================================================
-    InterpreterPy::~InterpreterPy()
+    InterpreterPython::~InterpreterPython()
     {
     }
   //=========================================================================
@@ -73,7 +73,7 @@ namespace bbtk
 
   //=========================================================================
   /// Creates a new black box in current complex box
-  void InterpreterPy::commandNew( const std::string& boxType, const std::string& boxName) // virtual
+  void InterpreterPython::commandNew( const std::string& boxType, const std::string& boxName) // virtual
   {
       int pos = boxType.find( std::string(":") );
       std::string boxTypeTmp=boxType;
@@ -87,7 +87,7 @@ namespace bbtk
 
   //=========================================================================
   /// Connects the output boxOutput to the input boxInput
-  void InterpreterPy::commandConnection (const std::string &boxfrom,
+  void InterpreterPython::commandConnection (const std::string &boxfrom,
       const std::string &output,
       const std::string &boxto,
       const std::string &input)                        // virtual
@@ -99,13 +99,13 @@ namespace bbtk
   //=========================================================================
 
   //=========================================================================
-  void InterpreterPy::commandInput(const std::string &name,const std::string &box,const std::string &input,const std::string  &help)
+  void InterpreterPython::commandInput(const std::string &name,const std::string &box,const std::string &input,const std::string  &help)
   {
   }
   //=========================================================================
 
   //=========================================================================
-  void InterpreterPy::commandOutput(const std::string &name,const std::string &box,const std::string &output,const std::string  &help)
+  void InterpreterPython::commandOutput(const std::string &name,const std::string &box,const std::string &output,const std::string  &help)
   {
   }
   //=========================================================================
@@ -113,7 +113,7 @@ namespace bbtk
 
   //=========================================================================
   /// sets the input of the box with the value
-  void InterpreterPy::commandSet(const std::string &box,const std::string &input,const std::string &value) // virtual
+  void InterpreterPython::commandSet(const std::string &box,const std::string &input,const std::string &value) // virtual
   {
       //ex:     mCB.Set("Box10","In2","/hola.mhd")
       std::string  code("Set('"+box+"','"+input+"','"+value+"')");
@@ -123,21 +123,21 @@ namespace bbtk
 
 
   //=========================================================================
-  void InterpreterPy::commandDefine(const std::string &name,const std::string &pack,const std::string &scriptfilename) // virtual
+  void InterpreterPython::commandDefine(const std::string &name,const std::string &pack,const std::string &scriptfilename) // virtual
   {
   }
   //=========================================================================
 
 
   //=========================================================================
-  void InterpreterPy::commandEndDefine() // virtual
+  void InterpreterPython::commandEndDefine() // virtual
   {
   }
   //=========================================================================
 
 
   //=========================================================================
-  void InterpreterPy::commandExec(const std::string &word) // virtual
+  void InterpreterPython::commandExec(const std::string &word) // virtual
   {
       //Ex:     mCB.AddToExecutableLst("Box13")
       std::string  code("AddToExecutableLst('"+word+"')");
@@ -147,19 +147,19 @@ namespace bbtk
 
 
   //=========================================================================
-  void InterpreterPy::commandAuthor(const std::string &author)  // virtual
+  void InterpreterPython::commandAuthor(const std::string &author)  // virtual
   {
   }
   //=========================================================================
 
   //=========================================================================
-  void InterpreterPy::commandCategory(const std::string &categorytype)  // virtual
+  void InterpreterPython::commandCategory(const std::string &categorytype)  // virtual
   {
   }
   //=========================================================================
 
   //=========================================================================
-  void InterpreterPy::commandDescription(const std::string &description)  // virtual
+  void InterpreterPython::commandDescription(const std::string &description)  // virtual
   {
   }
   //=========================================================================
similarity index 93%
rename from kernel/src/bbtkInterpreterPy.h
rename to kernel/src/bbtkInterpreterPython.h
index a65ecf6db712cc55b88c7a9bf2cee2ba67bfcd52..07a0ba27b17f2f67d70f9ec36e023dc3805b91b5 100644 (file)
@@ -32,8 +32,8 @@ Version:   $Revision$
 =========================================================================*/
 
 
-#ifndef __bbtkBBPInterpreter_h__
-#define __bbtkBBPInterpreter_h__
+#ifndef __bbtkBBPInterpreterPython_h__
+#define __bbtkBBPInterpreterPython_h__
 
 //Includes bbtk
 #include "bbtkInterpreterVirtual.h"
@@ -48,12 +48,12 @@ Version:   $Revision$
 
 namespace bbtk
 {
-  class BBTK_EXPORT InterpreterPy : public InterpreterVirtual
+  class BBTK_EXPORT InterpreterPython : public InterpreterVirtual
   {
   public:
     static Pointer New();
-    InterpreterPy();
-    ~InterpreterPy();
+    InterpreterPython();
+    ~InterpreterPython();
 
     //Public methods
 
diff --git a/packages/wx/bbs/appli/exampleCollapsiblePane.bbg b/packages/wx/bbs/appli/exampleCollapsiblePane.bbg
new file mode 100644 (file)
index 0000000..6e6f840
--- /dev/null
@@ -0,0 +1,244 @@
+# ----------------------------------
+# - BBTKGEditor v 1.5 BBG BlackBox Diagram file
+# - /Users/davila/Creatis/C23/creatools_source/bbtk/packages/wx/bbs/appli/exampleCollapsiblePane.bbg
+# ----------------------------------
+
+APP_START
+CATEGORY:<VOID>
+DESCRIPTION:Description ??
+AUTHOR:Author ??
+COMPLEXBOX:FALSE
+COMPLEXINPUTS:0
+BOXES:24
+BOX
+wx:LayoutLine:Box00
+ISEXEC:FALSE
+-24.139296:-24.408258:-900.000000
+9.180704:-26.908258:-900.000000
+FIN_BOX
+BOX
+wx:CollapsiblePane:Box01
+ISEXEC:FALSE
+-11.498105:13.246355:-900.000000
+10.711895:10.746355:-900.000000
+PORT
+Label:"ups&&2P&&"
+FIN_BOX
+BOX
+wx:OutputText:Box02
+ISEXEC:FALSE
+-45.656217:-0.201721:-900.000000
+-23.986217:-2.701721:-900.000000
+PORT
+In:"hola 1"
+FIN_BOX
+BOX
+wx:OutputText:Box03
+ISEXEC:FALSE
+-8.427356:-0.628557:-900.000000
+13.242644:-3.128557:-900.000000
+PORT
+In:"hola 2"
+FIN_BOX
+BOX
+wx:LayoutLine:Box04
+ISEXEC:FALSE
+-15.787488:5.125875:-900.000000
+17.532512:2.625875:-900.000000
+FIN_BOX
+BOX
+wx:LayoutSplit:Box05
+ISEXEC:TRUE
+9.254966:-44.069344:-900.000000
+32.014966:-46.569344:-900.000000
+PORT
+Orientation:"H"
+FIN_BOX
+BOX
+vtk:LoadHola:Box06
+ISEXEC:FALSE
+55.106180:-16.877335:-900.000000
+76.656180:-19.377335:-900.000000
+FIN_BOX
+BOX
+creaMaracasVisu:ViewerNV:Box07
+ISEXEC:FALSE
+48.651104:-23.870335:-900.000000
+87.251104:-26.370335:-900.000000
+FIN_BOX
+BOX
+wx:OutputText:Box08
+ISEXEC:FALSE
+-2.562097:-6.733170:-900.000000
+19.107903:-9.233170:-900.000000
+PORT
+In:"hola 2"
+FIN_BOX
+BOX
+wx:LayoutLine:Box09
+ISEXEC:FALSE
+4.384626:24.491104:-900.000000
+37.704626:21.991104:-900.000000
+FIN_BOX
+BOX
+wx:OutputText:Box10
+ISEXEC:FALSE
+-59.224773:42.377045:-900.000000
+-37.554773:39.877045:-900.000000
+PORT
+In:"hola 1"
+FIN_BOX
+BOX
+wx:OutputText:Box11
+ISEXEC:FALSE
+-32.718062:42.459892:-900.000000
+-11.048062:39.959892:-900.000000
+PORT
+In:"hola 2"
+FIN_BOX
+BOX
+wx:OutputText:Box12
+ISEXEC:FALSE
+-9.573371:42.408258:-900.000000
+12.096629:39.908258:-900.000000
+PORT
+In:"hola 2"
+FIN_BOX
+BOX
+wx:OutputText:Box14
+ISEXEC:FALSE
+15.157088:43.670219:-900.000000
+36.827088:41.170219:-900.000000
+PORT
+In:"hola 1"
+FIN_BOX
+BOX
+wx:OutputText:Box15
+ISEXEC:FALSE
+41.663798:43.753065:-900.000000
+63.333798:41.253065:-900.000000
+PORT
+In:"hola 2"
+FIN_BOX
+BOX
+wx:OutputText:Box16
+ISEXEC:FALSE
+64.808490:43.701431:-900.000000
+86.478490:41.201431:-900.000000
+PORT
+In:"hola 2"
+FIN_BOX
+BOX
+wx:OutputText:Box17
+ISEXEC:FALSE
+89.418468:43.970393:-900.000000
+111.088468:41.470393:-900.000000
+PORT
+In:"hola 2"
+FIN_BOX
+BOX
+wx:CommandButton:Box19
+ISEXEC:FALSE
+82.302224:33.821911:-900.000000
+104.577224:31.321911:-900.000000
+FIN_BOX
+BOX
+wx:CollapsiblePane:Box20
+ISEXEC:FALSE
+52.457462:9.645773:-900.000000
+74.667462:7.145773:-900.000000
+PORT
+Label:"ups2"
+FIN_BOX
+BOX
+wx:CommandButton:Box21
+ISEXEC:FALSE
+64.453146:15.576375:-900.000000
+86.728146:13.076375:-900.000000
+FIN_BOX
+BOX
+wx:CollapsiblePane:Box22
+ISEXEC:FALSE
+81.427860:9.625070:-900.000000
+103.637860:7.125070:-900.000000
+FIN_BOX
+BOX
+wx:CommandButton:Box23
+ISEXEC:FALSE
+93.423544:15.555671:-900.000000
+115.698544:13.055671:-900.000000
+FIN_BOX
+BOX
+wx:CollapsiblePane:Box24
+ISEXEC:FALSE
+109.584650:9.278923:-900.000000
+131.794650:6.778923:-900.000000
+FIN_BOX
+BOX
+wx:CommandButton:Box25
+ISEXEC:FALSE
+121.580333:15.209524:-900.000000
+143.855333:12.709524:-900.000000
+FIN_BOX
+CONNECTIONS:20
+CONNECTION
+Box01:Widget:Box04:Widget1
+NumberOfControlPoints:0
+CONNECTION
+Box04:Widget:Box00:Widget2
+NumberOfControlPoints:0
+CONNECTION
+Box00:Widget:Box05:Widget1
+NumberOfControlPoints:0
+CONNECTION
+Box06:Out:Box07:In
+NumberOfControlPoints:0
+CONNECTION
+Box07:Widget:Box05:Widget2
+NumberOfControlPoints:0
+CONNECTION
+Box10:Widget:Box09:Widget1
+NumberOfControlPoints:0
+CONNECTION
+Box11:Widget:Box09:Widget3
+NumberOfControlPoints:0
+CONNECTION
+Box12:Widget:Box09:Widget4
+NumberOfControlPoints:0
+CONNECTION
+Box14:Widget:Box09:Widget5
+NumberOfControlPoints:0
+CONNECTION
+Box15:Widget:Box09:Widget6
+NumberOfControlPoints:0
+CONNECTION
+Box16:Widget:Box09:Widget7
+NumberOfControlPoints:0
+CONNECTION
+Box17:Widget:Box09:Widget8
+NumberOfControlPoints:0
+CONNECTION
+Box19:Widget:Box09:Widget9
+NumberOfControlPoints:0
+CONNECTION
+Box21:Widget:Box20:Widget
+NumberOfControlPoints:0
+CONNECTION
+Box23:Widget:Box22:Widget
+NumberOfControlPoints:0
+CONNECTION
+Box25:Widget:Box24:Widget
+NumberOfControlPoints:0
+CONNECTION
+Box20:Widget:Box00:Widget1
+NumberOfControlPoints:0
+CONNECTION
+Box22:Widget:Box00:Widget3
+NumberOfControlPoints:0
+CONNECTION
+Box24:Widget:Box00:Widget4
+NumberOfControlPoints:0
+CONNECTION
+Box09:Widget:Box01:Widget
+NumberOfControlPoints:0
+APP_END
diff --git a/packages/wx/bbs/appli/exampleCollapsiblePane.bbs b/packages/wx/bbs/appli/exampleCollapsiblePane.bbs
new file mode 100644 (file)
index 0000000..d4cfae3
--- /dev/null
@@ -0,0 +1,124 @@
+# ----------------------------------
+# - BBTKGEditor v 1.5 BBS BlackBox Script
+# - /Users/davila/Creatis/C23/creatools_source/bbtk/packages/wx/bbs/appli/exampleCollapsiblePane.bbs
+# ----------------------------------
+
+# BBTK GEditor Script
+# ----------------------
+
+include std
+include itkvtk
+include wx
+include vtk
+include creaMaracasVisu
+
+author "Author ??"
+description "Description ??"
+category "<VOID>"
+
+new wx:LayoutLine Box00
+
+new wx:CollapsiblePane Box01
+  set Box01.Label "ups:"
+
+new wx:OutputText Box02
+  set Box02.In "hola 1"
+
+new wx:OutputText Box03
+  set Box03.In "hola 2"
+
+new wx:LayoutLine Box04
+
+new wx:LayoutSplit Box05
+  set Box05.Orientation "H"
+
+new vtk:LoadHola Box06
+
+new creaMaracasVisu:ViewerNV Box07
+
+new wx:OutputText Box08
+  set Box08.In "hola 2"
+
+new wx:LayoutLine Box09
+
+new wx:OutputText Box10
+  set Box10.In "hola 1"
+
+new wx:OutputText Box11
+  set Box11.In "hola 2"
+
+new wx:OutputText Box12
+  set Box12.In "hola 2"
+
+new wx:OutputText Box14
+  set Box14.In "hola 1"
+
+new wx:OutputText Box15
+  set Box15.In "hola 2"
+
+new wx:OutputText Box16
+  set Box16.In "hola 2"
+
+new wx:OutputText Box17
+  set Box17.In "hola 2"
+
+new wx:CommandButton Box19
+
+new wx:CollapsiblePane Box20
+  set Box20.Label "ups2"
+
+new wx:CommandButton Box21
+
+new wx:CollapsiblePane Box22
+
+new wx:CommandButton Box23
+
+new wx:CollapsiblePane Box24
+
+new wx:CommandButton Box25
+
+
+connect Box01.Widget Box04.Widget1
+
+connect Box04.Widget Box00.Widget2
+
+connect Box00.Widget Box05.Widget1
+
+connect Box06.Out Box07.In
+
+connect Box07.Widget Box05.Widget2
+
+connect Box10.Widget Box09.Widget1
+
+connect Box11.Widget Box09.Widget3
+
+connect Box12.Widget Box09.Widget4
+
+connect Box14.Widget Box09.Widget5
+
+connect Box15.Widget Box09.Widget6
+
+connect Box16.Widget Box09.Widget7
+
+connect Box17.Widget Box09.Widget8
+
+connect Box19.Widget Box09.Widget9
+
+connect Box21.Widget Box20.Widget
+
+connect Box23.Widget Box22.Widget
+
+connect Box25.Widget Box24.Widget
+
+connect Box20.Widget Box00.Widget1
+
+connect Box22.Widget Box00.Widget3
+
+connect Box24.Widget Box00.Widget4
+
+connect Box09.Widget Box01.Widget
+
+
+
+# Complex input ports
+exec Box05
diff --git a/packages/wx/src/bbwxCollapsiblePane.cxx b/packages/wx/src/bbwxCollapsiblePane.cxx
new file mode 100644 (file)
index 0000000..36fb219
--- /dev/null
@@ -0,0 +1,79 @@
+//===== 
+// 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 "bbwxCollapsiblePane.h"
+#include "bbwxPackage.h"
+
+#include <wx/collpane.h>
+#include <wx/vscroll.h>
+
+namespace bbwx
+{
+BBTK_ADD_BLACK_BOX_TO_PACKAGE(wx,CollapsiblePane)
+BBTK_BLACK_BOX_IMPLEMENTATION(CollapsiblePane,bbtk::WxBlackBox);
+//===== 
+// 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 CollapsiblePane::Process()
+{
+    printf("CollapsiblePane::CreateWidget    EED Somethin is wrong with the wxCollapsiblePane\n");
+}
+//===== 
+// 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 CollapsiblePane::CreateWidget(wxWindow* parent)
+{
+    printf("CollapsiblePane::CreateWidget    EED Somethin is wrong with the wxCollapsiblePane\n");
+    printf("CollapsiblePane::CreateWidget    EED Somethin is wrong with the wxCollapsiblePane\n");
+    printf("CollapsiblePane::CreateWidget    EED Somethin is wrong with the wxCollapsiblePane\n");
+    printf("CollapsiblePane::CreateWidget    EED Somethin is wrong with the wxCollapsiblePane\n");
+    printf("CollapsiblePane::CreateWidget    EED Somethin is wrong with the wxCollapsiblePane\n");
+    printf("CollapsiblePane::CreateWidget    EED Somethin is wrong with the wxCollapsiblePane\n");
+
+    wxPanel             *mainWidget = new wxPanel(parent, -1, wxDefaultPosition, wxSize(40,40) );
+    wxCollapsiblePane   *collpane   = new wxCollapsiblePane( mainWidget, wxID_ANY, bbtk::std2wx( bbGetInputLabel() ), wxDefaultPosition, wxDefaultSize, wxCP_DEFAULT_STYLE|wxCP_NO_TLW_RESIZE);
+    wxBoxSizer          *mainSizer  = new wxBoxSizer(wxHORIZONTAL);
+
+    wxWindow *winPane   = collpane->GetPane();
+    wxSizer *paneSz     = new wxBoxSizer(wxHORIZONTAL);
+
+    wxWindow* cw;
+    if ((cw=bbCreateWidgetOfInput("Widget",winPane)) != 0)
+    {
+        paneSz->Add( cw , 1, wxGROW|wxALL, 2);
+    }
+    winPane->SetSizer(paneSz);
+
+    mainSizer->Add(collpane, 0, wxGROW|wxALL, 5);
+    mainWidget->SetSizer(mainSizer);
+
+    
+    bbSetOutputWidget( mainWidget );
+}
+
+//===== 
+// 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 CollapsiblePane::bbUserSetDefaultValues()
+{
+    bbSetInputLabel("void");
+    bbSetInputWidget(NULL);
+}
+
+//===== 
+// 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 CollapsiblePane::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 CollapsiblePane::bbUserFinalizeProcessing()
+{
+}
+
+}// EO namespace bbwx
+
+
diff --git a/packages/wx/src/bbwxCollapsiblePane.h b/packages/wx/src/bbwxCollapsiblePane.h
new file mode 100644 (file)
index 0000000..36b958d
--- /dev/null
@@ -0,0 +1,49 @@
+//===== 
+// 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)
+//===== 
+#ifdef _USE_WXWIDGETS_
+#ifndef __bbwxCollapsiblePane_h_INCLUDED__
+#define __bbwxCollapsiblePane_h_INCLUDED__
+
+#include "bbwx_EXPORT.h"
+#include "bbtkWxBlackBox.h"
+
+namespace bbwx
+{
+
+class bbwx_EXPORT CollapsiblePane
+ : 
+   public bbtk::WxBlackBox
+{
+  BBTK_BLACK_BOX_INTERFACE(CollapsiblePane,bbtk::WxBlackBox);
+//===== 
+// 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)
+//===== 
+  BBTK_DECLARE_INPUT(Label,std::string);
+  BBTK_DECLARE_INPUT(Widget,wxWindow*);
+  BBTK_PROCESS(Process);
+  void Process();
+  BBTK_CREATE_WIDGET(CreateWidget);
+  void CreateWidget(wxWindow*);
+//===== 
+// 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)
+//===== 
+};
+
+BBTK_BEGIN_DESCRIBE_BLACK_BOX(CollapsiblePane,bbtk::WxBlackBox);
+    BBTK_NAME("CollapsiblePane");
+    BBTK_AUTHOR("InfoDev");
+    BBTK_DESCRIPTION("No Description.");
+    BBTK_CATEGORY("__CategoryBlackBox__");
+    BBTK_INPUT(CollapsiblePane,Label,"(default void) Label",std::string,"");
+    BBTK_INPUT(CollapsiblePane,Widget,"Widget",wxWindow*,"");
+BBTK_END_DESCRIBE_BLACK_BOX(CollapsiblePane);
+//===== 
+// 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)
+//===== 
+}
+// EO namespace bbwx
+
+#endif // __bbwxCollapsiblePane_h_INCLUDED__
+#endif // _USE_WXWIDGETS_
+
index cdd13229c0a4c947d2cb9b6d6ba1ff14144232e6..961218b5888125e3ffce94559a0cac5603c71e76 100644 (file)
@@ -114,6 +114,21 @@ void LayoutLine::Process()
     sizer      = new wxBoxSizer(style);
 
        wxWindow* cw;
+      
+//
+//Borrame
+//      , 0, wxGROW|wxALL,
+/*
+      if ((cw=bbCreateWidgetOfInput("Widget1",w)) != 0) sizer->Add(cw, 0, wxGROW|wxALL, 0);
+      if ((cw=bbCreateWidgetOfInput("Widget2",w)) != 0) sizer->Add(cw, 0, wxGROW|wxALL, 0);
+      if ((cw=bbCreateWidgetOfInput("Widget3",w)) != 0) sizer->Add(cw, 0, wxGROW|wxALL, 0);
+      if ((cw=bbCreateWidgetOfInput("Widget4",w)) != 0) sizer->Add(cw, 0, wxGROW|wxALL, 0);
+      if ((cw=bbCreateWidgetOfInput("Widget5",w)) != 0) sizer->Add(cw, 0, wxGROW|wxALL, 0);
+      if ((cw=bbCreateWidgetOfInput("Widget6",w)) != 0) sizer->Add(cw, 0, wxGROW|wxALL, 0);
+      if ((cw=bbCreateWidgetOfInput("Widget7",w)) != 0) sizer->Add(cw, 0, wxGROW|wxALL, 0);
+      if ((cw=bbCreateWidgetOfInput("Widget8",w)) != 0) sizer->Add(cw, 0, wxGROW|wxALL, 0);
+      if ((cw=bbCreateWidgetOfInput("Widget9",w)) != 0) sizer->Add(cw, 0, wxGROW|wxALL, 0);
+*/
        if ((cw=bbCreateWidgetOfInput("Widget1",w)) != 0) sizer->Add(cw, 1, wxGROW, 0);
        if ((cw=bbCreateWidgetOfInput("Widget2",w)) != 0) sizer->Add(cw, 1, wxGROW, 0);
        if ((cw=bbCreateWidgetOfInput("Widget3",w)) != 0) sizer->Add(cw, 1, wxGROW, 0);
@@ -123,6 +138,7 @@ void LayoutLine::Process()
        if ((cw=bbCreateWidgetOfInput("Widget7",w)) != 0) sizer->Add(cw, 1, wxGROW, 0);
        if ((cw=bbCreateWidgetOfInput("Widget8",w)) != 0) sizer->Add(cw, 1, wxGROW, 0);
        if ((cw=bbCreateWidgetOfInput("Widget9",w)) != 0) sizer->Add(cw, 1, wxGROW, 0);
+      
          /*
     TryInsertWindow(w,bbGetInputWidget1(),sizer);
     TryInsertWindow(w,bbGetInputWidget2(),sizer);