]> Creatis software - bbtk.git/commitdiff
Some comments updated
authorjean-pierre roux <jean-pierre.roux@creatis.insa-lyon.fr>
Thu, 3 Jul 2008 13:59:29 +0000 (13:59 +0000)
committerjean-pierre roux <jean-pierre.roux@creatis.insa-lyon.fr>
Thu, 3 Jul 2008 13:59:29 +0000 (13:59 +0000)
28 files changed:
kernel/appli/bbfy/bbfy.cpp
kernel/doc/bbtkDevelopersGuide/Architecture.txt
kernel/doc/bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.tex
kernel/doc/bbtkUsersGuide/HelpOnAdd.png [new file with mode: 0644]
kernel/doc/bbtkUsersGuide/bbStudioCommand.png [new file with mode: 0644]
kernel/doc/bbtkUsersGuide/bbStudioFiles.png [new file with mode: 0644]
kernel/doc/bbtkUsersGuide/bbStudioMainPage.png [new file with mode: 0644]
kernel/doc/bbtkUsersGuide/bbtkUsersGuide.tex
kernel/doc/bbtkWebSite/download.html
kernel/doc/bbtkWebSite/menu.html
kernel/doc/config.tex
kernel/src/bbtkInterpreter.cxx
packages/BoxCategories.txt
packages/itk/src/bbitkDICOMSeriesFileNames.xml
packages/std/src/bbstdAdd.xml
packages/toolsbbtk/bbs/boxes/bbMakePackageDoc.bbs
packages/vtk/data/hola.mhd
packages/vtk/src/bbvtkConeSource.xml
packages/wx/bbs/boxes/bbDoubleSlider.bbs
packages/wx/bbs/boxes/bbGUIcolour.bbs
packages/wx/bbs/boxes/bbGUIdouble.bbs
packages/wx/bbs/boxes/bbGUIint.bbs
packages/wx/bbs/boxes/bbLayoutTDown.bbs
packages/wx/bbs/boxes/bbLayoutTLeft.bbs
packages/wx/bbs/boxes/bbLayoutTRight.bbs
packages/wx/bbs/boxes/bbLayoutTUp.bbs
packages/wxvtk/src/bbwxvtkViewer2D.cxx
packages/wxvtk/src/bbwxvtkViewer2D.h

index 65b6c23f6933115e20edff0c67c75d0de26e4c96..5ce52b79177daab2b54a7c1cfde17d384c18ec9e 100644 (file)
@@ -20,8 +20,8 @@ public:
 //==========================================================================
 
 const std::string itkImageToImageFilterString = "ITK_ImageToImageFilter";
-const std::string vtkImageAlgorithmString = "VTK_ImageAlgorithm";
-const std::string vtkPolyDataAlgorithmString = "VTK_PolyDataAlgorithm";
+const std::string vtkImageAlgorithmString     = "VTK_ImageAlgorithm";
+const std::string vtkPolyDataAlgorithmString  = "VTK_PolyDataAlgorithm";
 
 //==========================================================================
 class bbfy
@@ -277,19 +277,19 @@ void bbfy::ParseXML()
     }
 
   // UserConstructor body
-  if (BB.nChildNode("userconstructor"))
+  if (BB.nChildNode("constructor"))
     {
-      bbtk::GetTextOrClear(BB.getChildNode("userconstructor"),mUserConstructor);
+      bbtk::GetTextOrClear(BB.getChildNode("constructor"),mUserConstructor);
     }
   // UserCopyConstructor body
-  if (BB.nChildNode("usercopyconstructor"))
+  if (BB.nChildNode("copyconstructor"))
     {
-      bbtk::GetTextOrClear(BB.getChildNode("usercopyconstructor"),mUserCopyConstructor);
+      bbtk::GetTextOrClear(BB.getChildNode("copyconstructor"),mUserCopyConstructor);
     }
   // UserDestructor body
-  if (BB.nChildNode("userdestructor"))
+  if (BB.nChildNode("destructor"))
     {
-      bbtk::GetTextOrClear(BB.getChildNode("userdestructor"),mUserDestructor);
+      bbtk::GetTextOrClear(BB.getChildNode("destructor"),mUserDestructor);
     }
  
     // Template parameters
@@ -695,7 +695,6 @@ void bbfy::CreateHeader()
        }
     }
   
-
   // Process
   if ((mType == STD)||(mProcess.size()))
     {
@@ -724,8 +723,6 @@ void bbfy::CreateHeader()
   // EO black box declaration
   mFile << "};\n\n";
 
-
-
   // BO black box description
   if (mTemplateParam.size()==0)
     {
@@ -1043,12 +1040,12 @@ void bbfy::CreateCode()
       mFile << mCreateWidget << "\n";
       mFile << "}\n";
     }
-  
 
   // User constr / copy constr / destr implementation
   mFile <<"void "<<mName<<"::bbUserConstructor()"<<std::endl;
   mFile << "{"<<std::endl;
   //mFile<<"bbtkDebugMessage(\"Kernel\",9,\""<<mName<<::bbUserConstructor()"<<std::endl);"<<std::endl;
+  
   mFile << mUserConstructor << std::endl;
   mFile << "}" << std::endl;
 
index fbf02aee1fbe8c3a9ec992aae366366b188d6b92..af73c7b07e567792539c61ce924632b0ce2a50c4 100644 (file)
@@ -19,7 +19,7 @@ kernel/installer/ accueille install/
 kernel/cmake/ accueille cmake/
 kernel/appli/ accueille appli/
 
-creation rep packages/ qui acceuille chaque package de la distrib standard
+creation rep packages/ qui accueille chaque package de la distrib standard
 
 donc on aura :
 packages/std/
index ab4cb9fd7092071eb9041a1a427511ae7bdd3429..de75a2789bc21ec1e1432fcf99805ce200430667 100644 (file)
@@ -36,7 +36,8 @@ Before defining any black box you
 have to create a package, or more precisely  
 the files which will allow you to generate the package 
 (compile and link the shared library) and may be install it. 
-The utility \texttt{bbCreatePackage} does it for you. 
+ \texttt{bbStudio} does it for you.
 
 Two cases occur :
 \begin{itemize}
@@ -69,185 +70,258 @@ the utility \bbfy will then generate the corresponding \CPP code.
 \section{Creating a new black box package}
 % ==========================================
 
-The utility \texttt{bbCreatePackage} allows to 
-create a new void package. It is a command script 
-(a \texttt{bash} script on linux,
-a \texttt{dos} script on windows) 
-which creates the directory structure and the \texttt{cmake} 
-files necessary to build the project.
+Run \texttt{bbStudio}.
 
-Its usage is as follows :
-\begin{verbatim}
-> bbCreatePackage <package-folder-with-complete-path>
-\end{verbatim}
+Use the option \texttt{Create Package} of the menu \texttt{Tools}.
+
+
+\begin{figure}[!ht]
+\caption{\label{bb-Studio} bbStudio}
+\begin{center}
+\includegraphics[width=0.6\textwidth]{bbStudio.png}
+\end{center}
+\end{figure}
+
+You will be asked to choose the directory where you want to create the package,
+then you'll get something like in fig. \ref{bbCreatePackage}. 
+
+
+\begin{figure}[!ht]
+\caption{\label{bbCreatePackage} Create Package}
+\begin{center}
+\includegraphics[width=0.6\textwidth]{bbCreatePackage.png}
+\end{center}
+\end{figure}
+
+
+That will creates the directory structure and the \texttt{cmake} 
+files necessary to build the project.
 
 You must then decide the name of your new package. 
-It will be the name used to load the package in \texttt{bbi}. 
+It will be the name used to load the package in \texttt{bbi}.
+Fill up the form like in fig. \ref{bbFillUpPackageForm}.
 
-For example, on linux, turn to an empty folder and type :
 
-\begin{verbatim}
-> bbCreatePackage pack1
-\end{verbatim}
+\begin{figure}[!ht]
+\caption{\label{bbFillUpPackageForm} Fill up the form}
+\begin{center}
+\includegraphics[width=0.6\textwidth]{bbFillUpPackageForm.png}
+\end{center}
+\end{figure} 
 
-you get :
+Edit the file 'MyPackage/CMakeLists.txt' to customize your package
 
-\begin{verbatim}
------ Creating new black box package in 'pack1' -----
--> Creating directory 'pack1'
--> Creating file 'pack1/CMakeLists.txt'
--> Creating directory 'pack1/cmake'
--> Copying files in 'pack1/cmake'
-Done !
-Edit the file 'pack1/CMakeLists.txt' to customize your package
-\end{verbatim}
 
 the file tree obtained is :
 
 \begin{verbatim}
-> tree pack1
-pack1/
-|-- CMakeLists.txt
-`-- cmake
+>tree  myPackageFolder
+myPackageFolder
+`-- MyPackage
+    |-- CMakeLists.txt
     |-- Configure.cmake
-    |-- ConfigurePackage.cmake
-    |-- FindGTK2.cmake
-    |-- FindLibrary.cmake.in
-    |-- FindwxW.cmake
-    |-- GenerateLibraryConfig.cmake
-    |-- InstallLibrary.cmake
-    |-- LibraryConfig.cmake.in
-    |-- UseLibrary.cmake.in
-    |-- bbPackage.cxx.in
-    `-- bbPackage.h.in
-
-1 directory, 12 files
+    |-- PackageConfig.cmake.in
+    |-- README.txt
+    |-- UsePackage.cmake.in
+    |-- bbs
+    |   |-- CMakeLists.txt
+    |   |-- appli
+    |   |   `-- README.txt
+    |   `-- boxes
+    |       `-- README.txt
+    |-- data
+    |   `-- CMakeLists.txt
+    |-- doc
+    |   |-- CMakeLists.txt
+    |   |-- bbdoc
+    |   |   |-- CMakeLists.txt
+    |   |   `-- header.html.in
+    |   `-- doxygen
+    |       |-- CMakeLists.txt
+    |       |-- DoxyMainPage.txt.in
+    |       `-- Doxyfile.txt.in
+    `-- src
+        `-- CMakeLists.txt
+       
+9 directories, 16 files
 \end{verbatim}
 
-The directory \texttt{pack1} is the directory of your new package, 
+The directory \texttt{MyPackage} is the directory of your new package, 
 in which you will create the files describing your black boxes.
 But first, you have to customize your new package, by editing the file 
-\texttt{CMakeLists.txt} in the \texttt{pack1} directory.
+\texttt{CMakeLists.txt} in the \texttt{MyPackage} directory.
 This file contains :
 
-\begin{file}{pack1/CMakeLists.txt}
+\begin{file}{MyPackage/CMakeLists.txt}
 \small
 \begin{verbatim}
-#...........................................................................
-# CMake configuration file for a bbtk package. 
-# Automatically generated by bbCreatePackage.
-# - The lines which are between dotted comments (#...) must be left unchanged 
-# - The lines which are between dashed comments (#===) can be edited to customize the package
-#...........................................................................
+#===========================================================================
+# CMAKE SETTINGS FOR BUILDING A BBTK PACKAGE
+#===========================================================================
 
-#...........................................................................
-INCLUDE(cmake/Configure.cmake)
-#...........................................................................
+#===========================================================================
+# THE NAME OF THE BBTK PACKAGE
+SET(BBTK_PACKAGE_NAME MyPackage)
+#===========================================================================
 
+#===========================================================================
+# IF IT IS A STANDALONE PROJECT UNCOMMENT NEXT LINE TO DECLARE YOUR PROJECT
+# PROJECT(bb${BBTK_PACKAGE_NAME})
+#===========================================================================
 
 #===========================================================================
-# THE NAME OF THE PACKAGE 
-SET(PACKAGE_NAME Example)
+# PACKAGE AUTHOR
+# !!! NO COMMA ALLOWED !!!
+SET(${BBTK_PACKAGE_NAME}_AUTHOR "myself")
 #===========================================================================
 
+#===========================================================================
+# PACKAGE DESCRIPTION
+SET(${BBTK_PACKAGE_NAME}_DESCRIPTION "The kinkiest stuff you ve ever seen.")
+#===========================================================================
 
-#...........................................................................
-# DOES THE USER WANT TO BUILD THE PACKAGE ?
-OPTION(BUILD_PACKAGE_${PACKAGE_NAME} 
-  "Build the bbtk package ${PACKAGE_NAME}" ON)
-#...........................................................................
+#===========================================================================
+# PACKAGE VERSION NUMBER 
+SET(${BBTK_PACKAGE_NAME}_MAJOR_VERSION 1)
+SET(${BBTK_PACKAGE_NAME}_MINOR_VERSION 0)
+SET(${BBTK_PACKAGE_NAME}_BUILD_VERSION 0)
+#===========================================================================
 
-#...........................................................................
-# IF THE USER HAS CHOSEN TO BUILD THE PACKAGE
-IF(BUILD_PACKAGE_${PACKAGE_NAME})
-  #...........................................................................
+#===========================================================================
+# UNCOMMENT EACH LIBRARY NEEDED (WILL BE FOUND AND USED AUTOMATICALLY)
+# SET(${BBTK_PACKAGE_NAME}_USE_VTK  ON)
+# SET(${BBTK_PACKAGE_NAME}_USE_ITK  ON)
+# SET(${BBTK_PACKAGE_NAME}_USE_GDCM ON)
+# SET(${BBTK_PACKAGE_NAME}_USE_GSMIS ON)
+# SET(${BBTK_PACKAGE_NAME}_USE_WXWIDGETS ON)
+#===========================================================================
 
+#===========================================================================
+# LIST HERE THE OTHER bbtk PACKAGES NEEDED
+# (WILL BE FOUND AND USED AUTOMATICALLY)
+SET(${BBTK_PACKAGE_NAME}_USE_PACKAGES 
+  # std
+  # wx
+  # itk
+  # vtk
+  # ...
+  )
+#===========================================================================
 
-  #===========================================================================
-  # UNCOMMENT NEXT LINES IF THE PACKAGE USES THE VTK LIBRARY, THE ITK LIB, ETC.
-  # SET(${PACKAGE_NAME}_USE_VTK  ON)
-  # SET(${PACKAGE_NAME}_USE_ITK  ON)
-  # SET(${PACKAGE_NAME}_USE_GDCM ON)
-  # SET(${PACKAGE_NAME}_USE_GSMIS ON)
-  # SET(${PACKAGE_NAME}_USE_WXWIDGETS ON)
-  #===========================================================================
-  
-  #===========================================================================
-  # PACKAGE AUTHOR : PREFERABLY PROVIDE YOUR EMAIL ADDRESS
-  SET(PACKAGE_AUTHOR "foo.bar@creatis.insa-lyon.fr")
-  #===========================================================================
-
-  #===========================================================================
-  # PACKAGE DESCRIPTION
-  SET(PACKAGE_DESCRIPTION "My marvelous black box package")
-  #===========================================================================
-
-  #===========================================================================
-  # PACKAGE VERSION NUMBER 
-  SET(PACKAGE_MAJOR_VERSION 1)
-  SET(PACKAGE_MINOR_VERSION 0)
-  SET(PACKAGE_BUILD_VERSION 0)
-  #===========================================================================
-  #===========================================================================
-  # THE xml SOURCES OF THE PACKAGE
-  # EITHER UNCOMMENT NEXT LINE TO bbfy ALL .xml OF THE DIRECTORY :
-  SET(COMPILE_ALL_XML ON)
-  # ... OR LIST THE FILES TO COMPILE MANUALLY :
-  #SET(PACKAGE_XML_SOURCES
-    # LIST HERE THE FILES TO bbfy TO BUILD THE LIB
-    # E.G. TO bbfy "toto.xml" ADD "toto" (NO EXTENSION)
-  #    )
-  #===========================================================================
-
-  #===========================================================================
-  # THE C++ SOURCES OF THE PACKAGE
-  # EITHER UNCOMMENT NEXT LINE TO COMPILE ALL .cxx OF THE DIRECTORY :
-  SET(COMPILE_ALL_CXX ON)
-  # ... OR LIST THE FILES TO COMPILE MANUALLY :
-  #SET(PACKAGE_CXX_SOURCES
-    # LIST HERE THE FILES TO COMPILE TO BUILD THE LIB
-    # E.G. TO COMPILE "toto.cxx" ADD "toto" (NO EXTENSION)
-  #    )
-  #===========================================================================
-
-  #===========================================================================
-  INCLUDE_DIRECTORIES(
-    # LIST HERE YOUR ADDITIONAL INCLUDE DIRECTORIES (EXCEPT BBTK'S)
-    )
-  #===========================================================================
-  #===========================================================================
-  SET(PACKAGE_LIBS 
-    # LIST HERE THE ADDITIONAL LIBS TO LINK AGAINST (EXCEPT BBTK'S)   
-    )
-  #===========================================================================
+#===========================================================================
+# THE SOURCES OF THE PACKAGE
+# EITHER UNCOMMENT NEXT LINE TO COMPILE ALL .cxx OF THE src DIRECTORY :
+SET(${BBTK_PACKAGE_NAME}_COMPILE_ALL_CXX ON)
+# ... OR LIST THE FILES TO COMPILE MANUALLY :
+#SET(${BBTK_PACKAGE_NAME}_SOURCES
+# LIST HERE THE FILES TO COMPILE TO BUILD THE LIB
+# E.G. TO COMPILE "toto.cxx" ADD "toto" (NO EXTENSION)
+# THE PATH MUST BE RELATIVE TO THE src FOLDER
+#    )
+#===========================================================================
 
-  
-  #...........................................................................
-  INCLUDE(cmake/ConfigurePackage.cmake)
-  #...........................................................................
-  
-ENDIF(BUILD_PACKAGE_\${PACKAGE_NAME})
-#...........................................................................
+#===========================================================================
+# THE xml SOURCES OF THE PACKAGE
+# EITHER UNCOMMENT NEXT LINE TO bbfy ALL .xml OF THE src DIRECTORY :
+SET(${BBTK_PACKAGE_NAME}_COMPILE_ALL_XML ON)
+# ... OR LIST THE FILES TO COMPILE MANUALLY :
+#SET(${BBTK_PACKAGE_NAME}_XML_SOURCES
+# LIST HERE THE FILES TO bbfy TO BUILD THE LIB
+# E.G. TO bbfy "toto.xml" ADD "toto" (NO EXTENSION)
+# THE PATH MUST BE RELATIVE TO THE src FOLDER
+#    )
+#===========================================================================
+
+#===========================================================================
+# THE SCRIPT-DEFINED BOXES OF THE PACKAGE (bbs)
+# EITHER UNCOMMENT NEXT LINE TO INCLUDE ALL .bbs OF THE bbs/boxes DIRECTORY :
+SET(${BBTK_PACKAGE_NAME}_INCLUDE_ALL_BBS_BOXES ON)
+# ... OR LIST THE FILES TO INCLUDE MANUALLY :
+# SET(${BBTK_PACKAGE_NAME}_BBS_BOXES
+# LIST HERE THE bbs FILES TO INCLUDE 
+# E.G. TO INCLUDE "boxes/bbtoto.bbs" ADD "boxes/bbtoto" (NO EXTENSION)
+# !! THE PATH MUST BE RELATIVE TO THE bbs FOLDER !!
+#)
+#===========================================================================
+
+#===========================================================================
+# THE SCRIPT-DEFINED APPLICATIONS OF THE PACKAGE (bbs)
+# EITHER UNCOMMENT NEXT LINE TO INCLUDE ALL .bbs OF THE bbs/appli DIRECTORY :
+SET(${BBTK_PACKAGE_NAME}_INCLUDE_ALL_BBS_APPLI ON)
+# ... OR LIST THE FILES TO INCLUDE MANUALLY :
+# SET(${BBTK_PACKAGE_NAME}_BBS_APPLI
+# LIST HERE THE bbs FILES TO INCLUDE 
+# E.G. TO INCLUDE "appli/testToto.bbs" ADD "appli/testToto" (NO EXTENSION)
+# !! THE PATH MUST BE RELATIVE TO THE bbs FOLDER !!
+#)
+#===========================================================================
+
+#===========================================================================
+SET(${BBTK_PACKAGE_NAME}_INCLUDE_DIRS
+  # LIST HERE YOUR ADDITIONAL INCLUDE DIRECTORIES 
+  # EXCEPT :
+  #  - src
+  #  - bbtk dirs
+  #  - automatically handled libraries or packages : wx, vtk... (see above)
+  #  - the dirs automatically set by other libraries found by FIND_PACKAGE
+  )
+#===========================================================================
+
+#===========================================================================
+SET(${BBTK_PACKAGE_NAME}_LIBS 
+  # LIST HERE THE ADDITIONAL LIBS TO LINK AGAINST
+  # EXCEPT : the same libs than for INCLUDE_DIRS 
+  )
+#===========================================================================
+
+#===========================================================================
+# IF NEEDED : UNCOMMENT NEXT LINE 
+# AND LIST ADDITIONNAL DIRECTORIES 
+# IN WHICH TO LOOK FOR LIBRARIES TO LINK AGAINST
+# LINK_DIRECTORIES()
+#===========================================================================
+
+#===========================================================================
+# SET TO TRUE TO HAVE INFORMATION ON LIBRARIES FOUND DURING CMAKE CONFIGURE
+SET(FIND_PACKAGE_VERBOSE TRUE)
+#===========================================================================
+
+#===========================================================================
+# END OF USER SECTION
+#===========================================================================
+
+#===========================================================================
+# Include configuration script
+INCLUDE(Configure.cmake)
+#===========================================================================
+
+#===========================================================================
 # EOF
-#...........................................................................
+#===========================================================================
+
 \end{verbatim}
 \end{file}
 
 The comments in the file should be easily understandable !
 You have to customize the lines which are enclosed 
 between dashed comment lines.
+In these sections, you can see some of the informations you supplied in previous step:
+\begin{itemize}
+  \item The \textbf{name} of your package. This will be the name used to load it in \bbi. The shared library however will be called \texttt{bb}name hence on 
+    \lin the object file will be called \texttt{libbb}name\texttt{.so} 
+    and on \win it  will be called \texttt{bb}name\texttt{.dll}.
+  \item The \textbf{author(s)} of the package. Preferably provide e-mail adresses.
+  \item A \textbf{description} of the package, which will appear in the help of your package or in its html documentation automatically generated by \bbdoc.  
+\end{itemize}
+
 In these sections, you can set :
 \begin{itemize}
-\item The \textbf{name} of your package. This will be the name used to load it in \bbi. The shared library however will be called \texttt{bb}name hence on 
-\lin the object file will be called \texttt{libbb}name\texttt{.so} 
-and on \win it  will be called \texttt{bb}name\texttt{.dll}.
+
 \item The \textbf{libraries used} by the package : \vtk, \itk, \gdcm, \gsmis, \wx. The mecanisms to find these libraries, their sources and to link against them are automatically handled by the \cmake files installed by \bbCreatePackage. You just have to uncomment a line to use one of these libraries.
-\item The \textbf{author(s)} of the package. Preferably provide e-mail adresses.
+
 \item A \textbf{description} of the package, which will appear in the help of your package or in its html documentation automatically generated by \bbdoc.
 \item The \textbf{version} of the package.
-\item The \textbf{\xml sources} of the package : you can list each input \xml file explicitly or tell \cmake to include in the project all the \xml files of the directory. 
+\item The \textbf{\xml sources} of the package : you can list each input \xml file explicitly or tell \cmake to include in the project \emph{all} the \xml files of the directory. 
 \item The \textbf{\CPP sources} of the package :  you can list each input \CPP file explicitly or tell \cmake to include in the project all the \CPP files of the directory.
 \item \textbf{Additional include directories}. Set it if your package needs to include source files which are not in the package directory, typically if it depends on another library which is not one the libraries automatically handled (\vtk, \itk...).
 \item \textbf{Additional libraries} to link against. Set it if your package needs to link against another library which is not one the libraries automatically handled (\vtk, \itk...).
@@ -358,27 +432,64 @@ as well as the procesing method of the black box
 to the processing method of the inherited processing class, 
 very much like a callback mechanism.
 
+\subsubsection{How to generate a Black Box skeleton}
+
+Run \texttt{bbStudio}, choose \texttt{Tools} in the menu bar, option
+\texttt{Create Black Box}.
+You will be shown something like in fig. \ref{bbCreateBlackbox} :
+
+\begin{figure}[!ht]
+\caption{\label{bbCreateBlackbox}Create Black Box}
+\begin{center}
+\includegraphics[width=0.6\textwidth]{bbCreateBackbox.png}
+\end{center}
+\end{figure}
+
+
 \subsubsection{Informations to provide}
 
 Finally, to create a new black box, you will have to give :
 \begin{enumerate}
-\item The {\bf name} of the box 
-\item The {\bf author} of the box
-\item A {\bf description} of the box
-\item The {\bf package} to which the box belongs (can we do it automatically ? LG : think about it)
-\item Its {\bf parent black box}, either \texttt{bbtk::UserBlackBox} or \texttt{bbtk::WxBlackBox} 
-\item $[$Optional$]$ The additional {\bf include files} which are necessary for the code to compile (classes or functions declarations ...)  
-\item $[$Optional$]$ The other {\bf parent(s)} of the box (which must be known hence their header included)
-\item $[$Optional$]$ The {\bf namespace} to which the box belongs
-\item The box {\bf inputs} and {\bf outputs}, and for each one :
-\begin{enumerate}
-\item Its {\bf name} : the string which will identify the input or output
-\item Its {\bf type} : any \CPP type, either a basic type or a user defined type (class ...) but which must be known, hence the necessary files must be included.  
-\item Its {\bf help} : a string describing the input / output 
-\end{enumerate}
-\item Its {\bf processing} code, which can be a simple callback or an arbitrary complex code
+  \item The {\bf name} of the box
+  \item The {\bf package} to which the box belongs (can we do it automatically ? LG : think about it) 
+  \item The {\bf author}(s) of the box
+  \item A {\bf description} of the box
+
+ \item Its {\bf type}, either 
+   \begin{enumerate} 
+     \item  a standard one (\texttt{std-template})
+     \item a VTK Polydata Algorithm based box (\texttt{VTK\_PolydataAlgorithm-template}),    
+     \item  a VTK Image Algorithm based box (\texttt{VTK\_ImageaAlgorithm-template}),
+     \item  if it uses the wxWidget Library (\texttt{widget-template})
+   \end{enumerate}
+   
+  \item The output format of the file, either a C++ file or an XML file.
+
+  %\item $[$Optional$]$ The additional {\bf include files} which are necessary for the code to compile (classes or functions declarations ...)  
+  %\item $[$Optional$]$ The other {\bf parent(s)} of the box (which must be known hence their header included)
+  %\item $[$Optional$]$ The {\bf namespace} to which the box belongs
+  %\item The box {\bf inputs} and {\bf outputs}, and for each one :
+  %\begin{enumerate}
+  %\item Its {\bf name} : the string which will identify the input or output
+  %\item Its {\bf type} : any \CPP type, either a basic type or a user defined type (class ...) but which must be known, hence the necessary files must be included.  
+  %\item Its {\bf help} : a string describing the input / output 
+  %\end{enumerate}
+%\item Its {\bf processing} code, which can be a simple callback or an arbitrary complex code
 \end{enumerate}
 
+WARNING:
+Under Linux, for reasons we shall not discuss here, you'll get an error message :
+
+ \texttt{No such file or directory}
+Have a look at the console, you'll see a shell command (whose syntax is OK although there is is a lot of
+quotes),something like :
+
+ \texttt{ "/usr/local/bin/bbCreateBlackBox"  "/home/jpr/Desktop/essai" MyPackage
+ myVtkPolydataBlackBox VTK-PolyDataAlgorithm C++  'author1, author2'  'myVtkPolydataBlackBox description'}
+
+ Just copy the command, and run it manually.
+
 \subsubsection{Input and output accessors}
 
 When you encapsulate a processing class or a C function 
@@ -446,27 +557,30 @@ four distinct accessors are created :
 Let us examine the \texttt{xml} file 
 describing the \texttt{Add} box of the \texttt{std} package :
 
-\begin{file}{\texttt{src/packages/std/bbAdd.xml}}
+\begin{file}{\texttt{packages/std/src/bbAdd.xml}}
 \small
 \begin{verbatim}
 <?xml version="1.0" encoding="iso-8859-1"?>
 
 <blackbox name="Add">
 
-  <description> Adds its inputs                      </description>
-  <author>      laurent.guigues@creatis.insa-lyon.fr </author>
-  <package>     std                                  </package>
-
-  <parentblackbox> bbtk::UserBlackBox                </parentblackbox>
-  <namespace>      bbstd                             </namespace>
+  <author>laurent.guigues@creatis.insa-lyon.fr </author>
+  <description>Adds its inputs                 </description>
+  <category>math                               </category>
 
-  <input  name="In1" type="double">  First number to add   </input>
-  <input  name="In2" type="double">  Second number to add  </input>
-  <output name="Out" type="double">  Result                </output>
+  <input name="In1"  type="double" description="First number to add"/>
+  <input name="In2"  type="double" description="Second number to add"/>
+  <output name="Out" type="double" description="Result"/>
 
   <process><PRE>
     bbSetOutputOut( bbGetInputIn1() + bbGetInputIn2() );
   </PRE></process>
+  
+  <constructor><PRE>
+    bbSetInputIn1(0);
+    bbSetInputIn2(0);
+    bbSetOutputOut(0);
+  </PRE></constructor>    
 
 </blackbox>
 \end{verbatim}
@@ -477,10 +591,8 @@ The tags and their role are easily understandable.
 As the box is not a widget, we inherit from 
 \texttt{bbtk::UserBlackBox} (\texttt{parentblackbox} tag).
 
-Note that we decided to include the generated class 
-into the namespace \texttt{bbstd}.
 
-The only part of the file which demand a bit of explaination is 
+The only part of the file which needs a bit of explaination is 
 the body of the \texttt{process} tag, which describes the 
 actual code to execute in the box. 
 This code must be enclosed in a \texttt{<PRE></PRE>} tag 
@@ -498,19 +610,17 @@ the code simply adds the values of the two inputs
 and sets the output \texttt{Out} with the resulting value.
 
 To describe your own black boxes in \xml code, 
-you can use the template \texttt{xml} file 
-\texttt{examples/TEMPLATE\_bbPackagenameBoxname.xml}.
+you must modify the xml file generated in previous step : 
 
-If \texttt{MyPack} is the name of your package and 
-\texttt{MyBox} the name of your box, then :
 \begin{enumerate}
-\item Copy this file in your package folder with 
-the normalised name \texttt{bbMyPackMyBox.xml} 
-\item Replace each occurrence of \$PACKAGENAME\$ by MyPack 
-and each occurrence of \$BOXNAME\$ by MyBox.
-\item Fill in the description and author tags
-\item Create your inputs and outputs
-\item Fill in the process tag 
+  \item Complete the description and author tags if you feel like.
+  \item add the '\#include' directives to be put in the generated .h file
+  \item Create your inputs and outputs
+  \item Fill in the process tag
+  \item Fill in the constructor tag
+  \item Fill in the copyconstructor tag
+  \item Fill in the destructor tag
+  \item Pray
 \end{enumerate} 
 
 
@@ -530,6 +640,7 @@ and each occurrence of \$BOXNAME\$ by MyBox.
 \subsubsection{\bbfy \texttt{xml} tags reference}
 % ==========================================
 
+  
 % ==========================================
 \begin{table}[!ht]
 \caption{\label{xml_tags}
@@ -543,14 +654,15 @@ Tag & Attributes & Condition & Multiplicity & Description
 \texttt{<blackbox>} & \texttt{name} & - & 1 & The name of the box \\ \hline
                & \texttt{type} & - & 1 & The type of the box. In: 
        \{\texttt{standard} (default), 
-\texttt{itkImageToImageFilter},
-\texttt{vtkImageAlgorithm},
-\texttt{vtkPolyDataAlgorithm}\} \\\hline
+\texttt{ITK\_ImageToImageFilter},
+\texttt{VTK\_ImageAlgorithm},
+\texttt{VTK\_PolyDataAlgorithm}\} \\\hline
 & \texttt{generic} & a) & 0-1 &
 Generate the generic filter (see text)\\ \hline 
 
 \texttt{<description>} & - & - & 0-n &  The description of the box. Multiple occurrence are concatenated \\\hline 
 \texttt{<author>} & - & - & 0-n &  The author of the box. Multiple occurrence are concatenated \\\hline 
+\texttt{<category>} & - & - & 0-1 &  The box category (if more than one, they are separated with commas) see Tab \ref{categories}\\\hline 
 \texttt{<parentblackbox>} & - & - & 1 &  The parent black box of the box.
 In: \{\texttt{bbtk::BlackBox, bbtk::WxBlackBox, bbtk::WxContainerBlackBox}\}\\\hline 
 \texttt{<package>} & - & - & 1 &  The package of the box \\\hline 
@@ -577,10 +689,11 @@ Use \texttt{bbPACKAGE}, where \texttt{PACKAGE} is the name of the package\\\hlin
         & \texttt{generic\_type} & c) & 0-1 & The ``generic'' type of the output (see text).\\\hline 
 
 \texttt{<process>} & - & - & 0-1 & The code of the processing method of the box. Must be put between clear tags : \texttt{<PRE></PRE>} \\\hline 
-
-\end{tabular}
-\end{table}
-
+\texttt{<constructor>} & - & - & 0-1 & The code of the user Constructor of the box (may contains default initialisations). Must be put between clear tags : \texttt{<PRE></PRE>} \\\hline 
+\texttt{<copyconstructor>} & - & - & 0-1 & The code of the user Copy Constructor of the box . Must be put between clear tags : \texttt{<PRE></PRE>} \\\hline
+\texttt{<destructor>} & - & - & 0-1 & The code of the user Destructor of the box. Must be put between clear tags : \texttt{<PRE></PRE>} \\\hline
+ \end{tabular}
+ \end{table}
 % ==========================================
 \begin{table}[!ht]
 \caption{\label{xml_tags}
@@ -591,11 +704,66 @@ Use \texttt{bbPACKAGE}, where \texttt{PACKAGE} is the name of the package\\\hlin
 a) & \texttt{<blackbox type == ''itkImageToImageFilter''>} \\ \hline
 b) & \texttt{<blackbox type == ''vtkImageAlgorithm'' or ''vtkPolyDataAlgorithm''>} \\ \hline
 c) & \texttt{<blackbox type == ''itkImageToImageFilter''>} and 
-       \texttt{<blackbox generic>} is present. \\ \hline
+     \texttt{<blackbox generic>} is present. \\ \hline
 \end{tabular}
 \end{table}
 
 
+
+% ==========================================
+\begin{table}[!ht]
+\caption{\label{categories}
+\bbfy \texttt{Black Box} categories}
+\small
+\begin{tabular}{|ll|}
+\hline
+ \texttt{Categ name}     & : Meaning                                          \\ \hline \\ \hline
+ \texttt{adaptor}        & : Adaptor box                                      \\ \hline
+ \texttt{application}    & : Final application, end user intended             \\ \hline
+ \texttt{atomic box}     & : System category.
+              Automatically assigned to Atomic Black Boxes (c++ defined)     \\ \hline
+ \texttt{complex box}    & : System category.
+              Automatically assigned to Complex Black Boxes (script defined) \\ \hline  
+ \texttt{command line}   & : Script which defines a command line application (no embedded GUI, but command line imput parameters) \\ \hline
+ \texttt{demo}           & : Demonstration                             \\ \hline
+ \texttt{devel}          & : Developer tool (bbCreatePackage.bbs, ...) \\ \hline
+ \texttt{dicom}          & : DICOM aware box \\ \hline 
+ \texttt{example}        & : Example script showing a box use-case      \\ \hline
+ \texttt{filter}         & : Image processing box                       \\ \hline
+ \texttt{image}          & : Image processing related box               \\ \hline
+ \texttt{interaction}    & :  \\ \hline
+ \texttt{math}           & : Mathematical operations\\ \hline
+ \texttt{mesh}           & : Mesh processing related box \\ \hline
+ \texttt{misc}           & : A box that cannot be put in other category ! \\ \hline
+ \texttt{read/write}     & : Box that read or write data from or to disk  \\ \hline
+ \texttt{viewer}         & : Box which displays some data \\ \hline
+ \texttt{widget}         & : Piece of graphical interface  \\ \hline 
+ \texttt{3D object creator} & : Sophisticated 3D widget  \\ \hline  
+ \texttt{toolsbbtk}         & : Component of bbStudio    \\ \hline  
+\end{tabular}
+\end{table}
+
+
+% ==========================================
+\begin{table}[!ht]
+\caption{\label{kinds}
+\bbfy \texttt{Black Box} kinds}
+\small
+\begin{tabular}{|ll|}
+\hline
+ \texttt{Kind}     &  Use as :     \\ \hline \\ \hline
+ \texttt{ADAPTOR} & \\ \hline
+ \texttt{DEFAULT\_ADAPTOR} & \\ \hline 
+ \texttt{ADAPTOR} & \\ \hline 
+ \texttt{WIDGET\_ADAPTOR} & \\ \hline 
+ \texttt{DEFAULT\_WIDGET\_ADAPTOR} & \\ \hline
+ \texttt{GUI} & \\ \hline 
+ \texttt{DEFAULT\_GUI} & \\ \hline 
+ \texttt{ALL} & If kind='ALL' then sets the level for all kinds\\ \hline  
+\end{tabular}
+\end{table}
+
 % ==========================================
 \subsection{\CPP description of a box}
 % ==========================================
diff --git a/kernel/doc/bbtkUsersGuide/HelpOnAdd.png b/kernel/doc/bbtkUsersGuide/HelpOnAdd.png
new file mode 100644 (file)
index 0000000..e52e00d
Binary files /dev/null and b/kernel/doc/bbtkUsersGuide/HelpOnAdd.png differ
diff --git a/kernel/doc/bbtkUsersGuide/bbStudioCommand.png b/kernel/doc/bbtkUsersGuide/bbStudioCommand.png
new file mode 100644 (file)
index 0000000..2f8b9b2
Binary files /dev/null and b/kernel/doc/bbtkUsersGuide/bbStudioCommand.png differ
diff --git a/kernel/doc/bbtkUsersGuide/bbStudioFiles.png b/kernel/doc/bbtkUsersGuide/bbStudioFiles.png
new file mode 100644 (file)
index 0000000..6ee9ab4
Binary files /dev/null and b/kernel/doc/bbtkUsersGuide/bbStudioFiles.png differ
diff --git a/kernel/doc/bbtkUsersGuide/bbStudioMainPage.png b/kernel/doc/bbtkUsersGuide/bbStudioMainPage.png
new file mode 100644 (file)
index 0000000..1514903
Binary files /dev/null and b/kernel/doc/bbtkUsersGuide/bbStudioMainPage.png differ
index 0ed6a912c39f5f8560323fffde1b41b094c370b8..9cd903ed9037eff38708619414bec320194895d5 100644 (file)
@@ -38,7 +38,7 @@ I would add something very important to this definition :
 not only the inputs and outputs are of interest but also 
 \emph{what the box does} !
 Hence, I would say that a black box is any \emph{\bf documented} 
-component of a system, letting know the user 
+component of a system, letting the user know  
 \emph{\bf what} the box is supposed to do and 
 \emph{\bf how to use it}
 but not \emph{\bf how it does it}.
@@ -108,33 +108,44 @@ have been written by different persons, using different libraries, etc.
 % ==========================================
 \BBTK includes:
 \begin{itemize}
-\item A \CPP {\bf\emph{library}} - called \bbtk - which defines a framework 
-(abstract classes) to develop black boxes and to store them into 
-dynamic libraries, called black box \emph{packages}.
-\item Different {\bf\emph{black box packages}}:
-\begin{itemize}
-\item {\bf\emph{std}}: the 'standard' package including basic useful boxes.
-\item {\bf\emph{wx}}: basic graphical interface elements (widgets: sliders, buttons, etc. based on the \texttt{wxWidgets} library).  
-\item {\bf\emph{itk}}: the basic image processing package, based on the \texttt{itk} library.
-\item {\bf\emph{vtk}}: the basic image and surfaces processing package, based on the \texttt{vtk} library.
-\item {\bf\emph{wxvtk}}: widget boxes based on the \texttt{vtk} library.
-\item {\bf\emph{itkvtk}}: boxes to convert \texttt{itk} structures into \texttt{vtk} structures and conversally. 
+  \item A \CPP {\bf\emph{library}} - called \bbtk - which defines a framework 
+    (abstract classes) to develop black boxes and to store them into 
+    dynamic libraries, called black box \emph{packages}.
+  \item Different {\bf\emph{black box packages}}:
+    \begin{itemize}
+      \item {\bf\emph{std}}: the 'standard' package including basic useful boxes.
+      \item {\bf\emph{wx}}: basic graphical interface elements (widgets: sliders, buttons, etc. based on the \texttt{wxWidgets} library).  
+      \item {\bf\emph{itk}}: the basic image processing package, based on the \texttt{itk} library.
+      \item {\bf\emph{vtk}}: the basic image and surfaces processing package, based on the \texttt{vtk} library.
+      \item {\bf\emph{wxvtk}}: widget boxes based on the \texttt{vtk} library.
+      \item {\bf\emph{itkvtk}}: boxes to convert \texttt{itk} structures into \texttt{vtk} structures and conversally. 
+    \end{itemize}
+  \item A {\bf\emph{Developement environment}}, called bbStudio, which provides
+    \begin{itemize}
+      \item An online {\bf\emph{script editor}}, called bbed
+      \item A powerfull {\bf\emph{Help environment}}, called bbhelp
+        whith integrated
+        \begin{itemize}
+          \item Online documentation scaning
+          \item Retreiving boxes on various criterions
+          \item Checking Demo and examples
+        \end{itemize}
+
+      \item An {\bf\emph{interpreter}}, called \bbi, which allows to 
+          load black box packages and to define and execute 
+          processing chains by connecting various black boxes of the already loaded packages.
+      \item {\bf\emph{Utilities}}:
+         \begin{itemize}
+            \item \bbfy generates the \CPP code of a black box from a 
+               description file written in \texttt{xml}.
+                %\item \bbdoc generates the html documentation of a black box package 
+                %(author, description, description of its black boxes: 
+                %author, description, inputs, outputs, and so on).
+            \item \bbCreatePackage allows to create the basic file architecture 
+               to start the development of a new black box package.
+         \end{itemize} 
+    \end{itemize}
 \end{itemize}
-\item An {\bf\emph{interpreter}}, called \bbi, which allows to 
-load black box packages and to define and execute 
-processing chains by connecting various black boxes of the already loaded packages.
-\item {\bf\emph{Utilities}}:
-\begin{itemize}
-\item \bbfy generates the \CPP code of a black box from a 
-description file written in \texttt{xml}.
-%\item \bbdoc generates the html documentation of a black box package 
-%(author, description, description of its black boxes: 
-%author, description, inputs, outputs, and so on).
-\item \bbCreatePackage allows to create the basic file architecture 
-to start the development of a new black box package.
-\end{itemize} 
-\end{itemize}
-
 The general architecture of \BBTK 
 is shown in figure \ref{bb-architecture}.
 
@@ -149,19 +160,22 @@ is shown in figure \ref{bb-architecture}.
 \subsection{Structure of this guide}
 % ==========================================
 
-This guide is divided into two parts. 
+This guide is divided into three parts. 
 
-The first part (\ref{bbi}) 
+The first part (\ref{bbStudio}) is a brief presentation of the very intuitive Development
+environment, \bbStudio.
+
+The second part (\ref{bbi}) 
 is devoted to the use of the \emph{black box interpreter} \bbi. 
 This is the highest level of use of the toolkit, which 
 allows to create and execute processing chains by connecting 
 black boxes of existing packages. 
 
-The second part (\ref{cpp}) explains how to 
+The third part (\ref{cpp}) explains how to 
 use the black box toolkit framework in \CPP code, 
 typically to develop large applications which 
 involve complex graphical interfaces.
+
 
 % ==========================================
 % ==========================================
@@ -170,15 +184,75 @@ involve complex graphical interfaces.
 % ==========================================
 % ==========================================
 \vspace{0.5cm}\hrule
-\section{The black box interpreter (bbi)}
-\label{bbi}
-% ==========================================
+\section{The Development environment (bbStudio)}
+\label{bbStudio}
+
+Just run it, typing in a console \texttt{bbed}.
+You'll get something like in figure 
+\ref{bbi-fig-bbStudio-gui}
+(the exact appearance of \bbStudio is system and \bbtk version dependent)
 
+\begin{figure}[!ht]
+\caption{\label{bbi-fig-bbStudio-gui}The bbStudio Development environment interface}
+\begin{center}
+\includegraphics[width=0.7\textwidth]{bbStudioMainPage.png}
+\end{center}
+\end{figure}
+
+All the entries of this Help 'bookmark' are self-explanatory :
+
+ \begin{itemize}
+   \item {\bf\emph{Wiki}}: Direct link to the bbtk Wiki (intranet only, right now, www
+   later).
+   \item {\bf\emph{Demo}}: Link to some demonstrations.
+   \item {\bf\emph{User's Guide}}: Step to step How-to for user who just wants to create his own
+   application, just using already existing boxes.
+   \item {\bf\emph{Package Developper's Guide}}: Step to step How-to for user who wants to create his own
+   black boxes.
+   \item {\bf\emph{Developper's Guide}}: Sorry, not yet written.
+   \item {\bf\emph{Reference Manual}}: Sorry, not yet written. 
+   \item {\bf\emph{Doxygen Documentation}}: Doxygen source browser.
+   \item {\bf\emph{Boxes}}: Box retrieving on various criterions :
+      \begin{itemize}
+      \item {\bf\emph{By name}}
+      \item {\bf\emph{By package}}
+      \item {\bf\emph{By category}}
+      \end{itemize}
+ \end{itemize}
+
+% ==========================================
+% ==========================================
 % ==========================================
-%\subsection{Structure of this part}
 % ==========================================
+% ==========================================
+% ==========================================
+\vspace{0.5cm}\hrule
+\section{The script manager}
+\label{bb0}
+% ==========================================
+
+ Call it with the bookmark \emph{File}.
+
+\begin{figure}[!ht]
+\caption{\label{bbi-fig-bbStudio-file0}The bbStudio script manager}
+\begin{center}
+\includegraphics[width=0.7\textwidth]{bbFile0.png}
+\end{center}
+\end{figure}
+
+Using the lower tool bar, you can :
+ \begin{itemize}
+   \item {\bf\emph{new}}: Create a newfile to hold a script
+   \item {\bf\emph{open}}: Open a already existing file holding a script 
+   \item {\bf\emph{close}}: Close a file holding a script
+   \item {\bf\emph{close}}: Save he current file (if modified)
+   \item {\bf\emph{save as}}: Save he current file under a different name
+   \item {\bf\emph{execute}}: Execute the script you just loaded/modified/written
+ \end{itemize}
 
-Using the black box interpreter is very simple. 
+
+The script language is very simple. 
 Everything is done with only a few commands.
 The philosophy of this part is also very simple: 
 it introduces the \bbi commands using examples, 
@@ -214,7 +288,8 @@ Use it as a reference.
 \subsubsection{Creating and executing black boxes}
 % ==========================================
 
-To run the black box interpreter, 
+To learn interactivelly the script language features, you can use the black box
+interpreter : 
 open a console and type \texttt{bbi} 
 or double click on the application icon.
 You get a window which looks like the one in figure 
@@ -226,17 +301,17 @@ graphical interface but a simple prompt}.
 \begin{figure}[!ht]
 \caption{\label{bbi-fig-bbi-gui}The black box interpreter interface}
 \begin{center}
-\includegraphics[width=0.7\textwidth]{bbi-gui.png}
+\includegraphics[width=0.7\textwidth]{bbi-gui0.png}
 \end{center}
 \end{figure}
 
 The 'Command' tab is subdivided into two parts : 
 one single line zone at the bottom in which you can enter your commands and 
 one multiple line zone in which \bbi prints out the result of your commands.
-
+, just using already existing boxes.
 
 Try typing in the input zone (in this manual, 
-the commands entered by the user will be preceded by a prompt '(>)') :
+the commands entered by the user will be preceded by a prompt \textgreater) :
 \begin{verbatim}
 > help 
 \end{verbatim}
@@ -271,7 +346,7 @@ Available commands:
  quit
  reset
  set
- unload 
+ unload
 \end{verbatim}
 
 To get help on a particular command type \texttt{help <command-name>},
@@ -544,15 +619,15 @@ Good bye !
 \item A particular black box type (with full description) if you type \texttt{help <box-type-name>}. In particular, \texttt{help workspace} displays information on the content of the \texttt{'workspace'} black box, which stores the boxes created by the user (by \texttt{new}).
 \end{itemize}
 %\item \texttt{list} displays the list of black box instances created so far (by \texttt{new}).
-\item \texttt{new} creates an instance of a black box. 
-\item \texttt{set} sets the value of an input of a black box. 
+\item \texttt{new} creates an instance of a black box. 
+\item \texttt{set} sets the value of an input of a black box. 
 \item In all \bbi, to reference the input called \texttt{i} 
 of a black box called \texttt{b} you must type \texttt{'b.i'}. 
 The same syntax holds for outputs.
-\item \texttt{print} prints a string, substituting each substring of the form \$b.o\$ by the value of the output \texttt{o} of the black box \texttt{b}. Note that an
+\item \texttt{print} prints a string, substituting each substring of the form \$b.o\$ by the value of the output \texttt{o} of the black box \texttt{b}. Note that an
 implicit trailing 'new line character' is added at the final string.
-\item \texttt{exec} runs the process of a box if needed. 
-\item \texttt{quit} quits \bbi.
+\item \texttt{exec} runs the process of a box if needed. 
+\item \texttt{quit} quits \bbi.
 \end{itemize}
 \hrule
 % ==========================================
@@ -562,8 +637,6 @@ implicit trailing 'new line character' is added at the final string.
 \label{bbi-connecting-black-boxes}
 % ==========================================
 
-LG : THE GUIDE IS UP TO DATE UNTIL HERE
-
 \BBTK allows to create 
 and execute processing chains, 
 also called \emph{pipelines}, 
@@ -589,6 +662,7 @@ A simple pipeline which adds 3 numbers}
 \end{center}
 \end{figure}
 
+
 The \bbi instructions to create and execute this pipeline are:
 \begin{verbatim}
 > new Add a
@@ -602,8 +676,8 @@ The \bbi instructions to create and execute this pipeline are:
 \end{verbatim}
 
 The first three commands build the pipeline, 
-the next three set its inputs and the last one 
-executes it and prints its output.
+the next three set \texttt{a} and \texttt{b} black boxes inputs and the last one 
+executes the pipeline and prints \texttt{b} black boxe output.
  
 The command \texttt{'connect a.Out b.In1'} ``plugs'' the output 
 \texttt{Out} of the box \texttt{a} into the input \texttt{In1} of the 
@@ -618,7 +692,7 @@ for details).
 Of course, to be able to connect two boxes, 
 the output and the input must be compatibles. 
 You can always connect an output to an input of the \emph{same} type, 
-but you can do more, thanks to particular black boxes called {\bf adaptors}.
+but you can do more, thanks to particular (hidden) black boxes called {\bf adaptors}.
 
 An adaptor is a black box which has at least one input, called \texttt{In}, 
 and at least one ouput called \texttt{Out} and whose role is to convert 
@@ -820,6 +894,11 @@ and you can use it like any other box, for example type:
 \end{verbatim}
 
 
+As a side note, we can say that, for consistency reasons, it would have been better to name  
+\texttt{In1}, \texttt{In2} and \texttt{In3} the inputs of the black box \texttt{Add3}, 
+since all the 'natural entry' of a box is named \texttt{In}, or\texttt{In}x if there are more than one  'natural
+entry'.
+
 % ==========================================
 \hrule
 \paragraph{Summary}
@@ -848,11 +927,12 @@ into a text file and afterwards include that file in \bbi.
 Doing this, you start writing \bbi scripts.
 The conventionnal extension for such scripts is \texttt{bbs} 
 (black box script).
+For consistency reasons, you are requested to prepend \texttt{bb} to the name.
 
 For example, the \texttt{Add3} complex box we previously worked on 
-can be defined in the \texttt{Add3.bbs} file:
+can be defined in the \texttt{bbAdd3.bbs} file:
 
-\begin{file}{Add3.bbs}
+\begin{file}{bbAdd3.bbs}
 \begin{verbatim}
 # Defines the Add3 black box which adds 3 doubles 
 load std
@@ -880,7 +960,7 @@ are considered as comments by \bbi.
 To use this file in \bbi, use the \texttt{include} command:
 
 \begin{verbatim}
-> include Add3.bbs
+> include bbAdd3.bbs
 > help Add3
 Complex Black Box <user::Add3>
  adds 3 doubles
@@ -906,7 +986,7 @@ If the file has the \texttt{bbs} extension, you can ommit it and just type:
 Of course, you can include script files in other script files, 
 like in the following example:
 
-\begin{file}{Add4.bbs}
+\begin{file}{bbAdd4.bbs}
 \begin{verbatim}
 # Defines the Add4 black box which adds 4 doubles 
 include Add3
@@ -926,19 +1006,35 @@ endefine
 \end{verbatim}
 \end{file}
 
-TO DO: 
+% ==========================================
+\hrule
+\paragraph{Naming Conventions}
+%\hrule
 
-- naming conventions:  one cbb per file with the same name
-- search paths 
+\hrule
+% ==========================================
+\begin{itemize}
+\item
+File names: 
+For consistency reasons, you are requested to prepend \texttt{bb}, and postpone an extention \texttt{.bbs},
+to the names of the files that hold a \texttt{complex black box} definition.
 
+For example, the \texttt{Add3} complex box we previously worked on 
+can be defined in the \texttt{bbAdd3.bbs} file.
+\item
+Search Paths 
+\end{itemize}
 % ==========================================
 \hrule
+
 \paragraph{Summary}
 %\hrule
 \begin{itemize}
 \item The \texttt{include} command allows to include a script file in \bbi.
-\item Lines starting with a \texttt{\#} are treated as comments in \bbi scripts.
+\item Lines starting with a \texttt{\#} or with a \texttt{\//} are treated as comments in \bbi scripts.
+\item Lines between a line starting with a \texttt{\//*} an a line starting with a \texttt{*\//} are treated as comments in \bbi scripts.
 \end{itemize}
+
 \hrule
 % ==========================================
 
@@ -1080,6 +1176,11 @@ between double quotes, e.g. \texttt{"parameter with white spaces = gnu's not uni
 \label{bbi-widget}
 % ==========================================
 
+% ==========================================
+\subsubsection{Overwiew}
+\label{bbi-overview}
+% ==========================================
+
 If \bbi is compiled in graphical mode 
 (option \texttt{BUILD\_bbi\_GRAPHICAL} of \cmake, requires \wx),
 then you can use special black boxes which are 
@@ -1090,7 +1191,7 @@ such as buttons, sliders, file open/save dialogs, etc.
 As first example, type the following commands in \bbi:
 \begin{verbatim}
 > load wx 
-> new TextCtrl t
+> new InputText t
 > print $t.Out$\n
 \end{verbatim}
 
@@ -1101,35 +1202,33 @@ the \texttt{print} command.
 
 Type \texttt{help wx}, you get something like:
 \begin{verbatim}
-Package wx v1.0.0- info-dev@creatis.insa-lyon.fr
- Basic graphical interface elements (slider, button ...) based on wxWidgets
- Black boxes: 
-   Button               : Button that gives a string
-   ColourSelectorButton : 
-   ColourSelector       : Colour Selector widget (wxColourDialog)
-   CommandButton        :
-   DirectorySelector    :
-   FileSelector         : FileDialog widget (wxFileDialog)
-   InputText            : TextCtrl widget (wxTextCtrl)
-   LayoutLine           : Sizer widget (wxSizer)
-   LayoutSplit          : Split widget (wxSplitterWindow)
-   NoteBook             :
-   OutputText           : wxWidget Static text
-   RadioButton          : RadioButton group widget (wxRadioButton) 0-9 entries
-   Slider               : Slider widget (wxSlider)
-
+ Package wx v1.0.0- info-dev@creatis.insa-lyon.fr
+ Basic graphical interface elements (sliders, buttons ...) based on wxWidgets
+ Black boxes : 
+   ColourSelector        : Colour Selector dialog (bbfication of wxColourSele...
+   ColourSelectorButton  : A button which displays a colour picker dialog whe...
+   CommandButton         : Button which executes bbi commands
+   DirectorySelector     : Pops up a directory selection dialog (wxDirDialog)
+   FileSelector          : Pops up a file selection dialog for reading or sav...
+   InputText             : A zone in which the user can enter a text (wxTextC...
+   LayoutLine            : LayoutLine widget (wxBoxSizer)
+   LayoutSplit           : Widget which splits a window in two fixed size par...
+   LayoutTab             : LayoutTab widget (wxNotebook)
+   OutputText            : Text zone to be inserted into a window (wxStaticTe...
+   RadioButton           : RadioButton group widget 0-9 entries
+   Slider                : Slider widget (wxSlider)
 \end{verbatim}
 
 You can reproduce the same experiment as above using a 
-\texttt{Slider} or a \texttt{FileDialog} rather than a \texttt{TextCtrl}.
+\texttt{Slider} or a \texttt{FileDialog} rather than a \texttt{InputText}.
 See the files \texttt{test*.bbs} in the \texttt{scripts/test} directory.
 
 There are two kind of widgets: ``terminal'' widgets and ``container'' widgets.
-The \texttt{TextCtrl}, \texttt{FileDialog} or \texttt{Slider} widgets 
+The \texttt{InputText}, \texttt{FileDialog} or \texttt{Slider} widgets 
 are ``terminal'' widgets. 
-``container'' widgets are of another kind: they are made to 
+``container'' widgets are of another kind: they are designed to 
 contain other widgets in order to build larger dialog boxes. 
-For example, the \texttt{Split} widget is a container which 
+For example, the \texttt{LayoutSplit} widget is a container which 
 ``splits'' horizontally a window into two parts, 
 each part including another widget. 
 The size of the two parts can be adjusted by the user thanks 
@@ -1149,9 +1248,9 @@ load wx
 new Slider s1
 new Slider s2
 
-new Split s
-connect s.Child s1.Parent
-connect s.Child s2.Parent
+new LayoutSplit s
+connect  s1.Widget s.Widget1
+connect  s2.Widget s.Widget2
 
 print s1=$s1.Out$\\n
 print s2=$s2.Out$\\n
@@ -1159,42 +1258,89 @@ print s2=$s2.Out$\\n
 \end{file}
 
 First, the two sliders \texttt{s1} and \texttt{s2} are created.
-A \texttt{Split} box \texttt{s} is also created. 
+A \texttt{LayoutSplit} box \texttt{s} is also created. 
 The \texttt{connect} commands then ``includes'' the sliders in the 
 split ``container''. 
-The input \texttt{Parent} is common to all widget boxes: 
+The input \texttt{Widget} is common to all widget boxes: 
 every widget can be inserted into another widget. 
-The output \texttt{Child} is specific of \emph{container} 
+The outputs \texttt{Widget1},\texttt{Widget2}  are specific of \emph{container} 
 widgets 
 (in \bbi type \texttt{help Slider}: 
-you will see the input \texttt{Parent}; 
-type \texttt{help Split}: 
-you will see the input \texttt{Parent
-and the output \texttt{Child}). 
-When you connect the \texttt{Child} output of a container 
-to the \texttt{Parent} input of a widget, 
+you will see the output \texttt{Widget}; 
+type \texttt{help LayoutSplit}: 
+you will see the inputs \texttt{Widget1} and \texttt{Widget2
+and the output \texttt{Widget}). 
+When you connect the \texttt{Widget} output of a container 
+to the \texttt{Widget}i input of a widget, 
 you order to include the widget in the container.
 Of course, the order of connection is important. 
 In our case, the slider \texttt{s1} is included first, 
 then the slider \texttt{s2}: \texttt{s1} will be placed 
-on top of \texttt{s2} (the \texttt{Split} box is 
+on top of \texttt{s2} (the \texttt{LayoutSplit} box is 
 implemented that way, but this is arbitrary choice).
 
-For the moment, there are only \emph{two} container widgets in the \texttt{wx} package: 
-the \texttt{Split} widget we just described and the \texttt{Sizer} 
-widget, which can have multiple children and 
+Right now, there are only \emph{three} container widgets in the \texttt{wx} package: 
+the \texttt{LayoutSplit} widget we just described, the \texttt{LayoutLine} , and the \texttt{LayoutTab}
+widget. 
+
+The \texttt{LayoutLine} widget can have multiple children and 
 divides its window into as much parts as children, 
 each part of equal size. 
-The orientation of the sizer can be changed by the input \texttt{Orientation}.
+The orientation of the \texttt{LayoutSplit} or of the \texttt{LayoutLine}  can be changed by the input \texttt{Orientation}.
 See the example \texttt{test/testSizer.bbs}.
 With only those two containers you can already create 
 complex dialog boxes (of course containers can be nested, which 
 leads to tree-like structures of widgets). 
-See the script \texttt{test/testSizerSplit.bbs} for an example.
+See the script \texttt{bbtk/share/bbtk/bbs/wx/appli/ExampleLayoutSplit.bbs} for an example.
+
+The \texttt{LayoutTab}  widget is based on the \texttt{wxNotebook.}
 
 One word about a special widget in the package \texttt{wx}: 
 the \texttt{Button}... to be continued.
 
+% ==========================================
+\subsubsection{Deeper in the boxes}
+\label{bbi-deep-box}
+% ==========================================
+
+Any widget box has two mandatory Outputs :
+
+\begin{itemize}
+  \item {\bf\emph{Widget}} : that is the \texttt{wxWindow} itself. If it's not connected to the \texttt{Widget}\emph{i} of any \emph{Layout box}, it
+     will popup. If it's connected to the\bf{Widget}\bf\emph{i} of any \texttt{Layout box}, it will be embedded in its parent window.
+  \item {\bf\emph{Boxchange}}  : Signals any modification of the box. This output may be connect if necessary to the \emph{BoxExecute} of an other box,
+   further within the execution pipeline.
+\end{itemize}    
+
+Any widget box has two mandatory Inputs :
+\begin{itemize}
+  \item {\bf\emph{BoxExecute}}     : Any signal received by this input executes the box
+  \item {\bf\emph{BoxProcessMode}} : Sets the processing mode of the box :
+  \begin{itemize}
+    \item {\bf\emph{Pipeline}} : bbUpdate() only calls Process if Status == MODIFIED (normal pipeline processing)
+    \item {\bf\emph{Always}}   : bbUpdate() always calls Process
+    \item {\bf\emph{Reactive}} : bbSetModifiedStatus() calls bbUpdate()    
+  \end{itemize}   
+\end{itemize}
+
+Any widget box has five Inputs, that will be dealt with only if the box is not connected to the \emph{Widget}i of any \emph{Layout box} :  
+\begin{itemize}
+  \item {\bf\emph{WinHeight}} : Height of the window 
+  \item {\bf\emph{WinWidth}}  : Width of the window  
+  \item {\bf\emph{WinTitle}}  : Title of the window
+  \item {\bf\emph{WinClose}}  : Any received signal closes the window
+  \item {\bf\emph{WinHide}}   : Any received signal hides the window
+  \item {\bf\emph{WinDialog}} : When set to 'true', creates a \emph{dialog window}, that blocks the pipeline until it is closed (\emph{modal})   
+\end{itemize}
+
+
+Any \emph{Layout box} (i.e. \emph{LayoutLine}, \emph{LayoutSplit} or \emph{LayoutTab}) has at one or more mandatory Inputs :
+\begin{itemize}
+  \item \bf{Widget}\bf{\emph{i}} : e.g. a \emph{LayoutSplit} box (Widget which splits a window in two fixed size parts) 
+       has two Input parameters \emph{Widget1} and \emph{Widget2}, used to embed the child windows.
+\end{itemize} 
+
+
 
 TO DO: 
 \begin{enumerate}
@@ -1215,6 +1361,99 @@ TO DO:
 \label{bbi-more-on-packages}
 % ==========================================
 
+There are various others user-intended packages :
+
+\paragraph{vtk}
+It contains some vtk based image processing filters :
+%   \begin{enumerate}
+     \subparagraph{AppendPolyData}
+     Appends one of more polygonal datasets into a single polygonal dataset 
+     \subparagraph{ConeSource}
+     Creates a Cone 
+     \subparagraph{ImageAnisotropicDiffusion3D}
+vtkImageAnisotropicDiffusion3D diffuses an volume iteratively. 
+The neighborhood of the diffusion is determined by the instance flags. 
+if 'Faces' is on, the 6 voxels adjoined by faces are included in the neighborhood. 
+If 'Edges' is on the 12 edge connected voxels are included, and if 'Corners' is on, the 8 corner connected voxels are included. 
+'DiffusionFactor' determines how far a pixel value moves toward its neighbors, and is insensitive to the number of neighbors chosen. 
+The diffusion is anisotropic because it only occurs when a gradient measure is below 'GradientThreshold'. 
+Two gradient measures exist and are toggled by the 'GradientMagnitudeThreshold' flag. 
+When 'GradientMagnitudeThreshold' is on, the magnitude of the gradient, computed by central differences, above 'DiffusionThreshold' a voxel is not modified. 
+The alternative measure examines each neighbor independently. 
+The gradient between the voxel and the neighbor must be below the 'DiffusionThreshold' for diffusion to occur with THAT neighbor.
+     \subparagraph{ImageCharacteristics}
+     Exports objet sizes, and Spacings
+     \subparagraph{ImageDilateErode3D}
+     Dilates one value and erodes another. 
+     vtkImageDilateErode3D will dilate one value and erode another. 
+     It uses an elliptical foot print, and only erodes/dilates on the boundary of the two values. 
+     The filter is restricted to the X, Y, and Z axes for now. 
+     It can degenerate to a 2 or 1 dimensional filter by setting the kernel size to 1 for a specific axis. 
+     (bbfication of vtkImageDilateErode3D) 
+     \subparagraph{ImageGaussianSmooth}
+     Performs a gaussian convolution of the input image
+     \subparagraph{ImagePlanes}
+Creates three 3D planes with the input image mapped onto with which the user can interact. 
+The output vtkImagePlaneWidget objects are to be inserted into a 3D scene (e.g. a Viewer3D      
+     \subparagraph{IsoSurfaceExtractor}
+Extracts an iso-surface of a 3D image and creates a vtkProp3D object to insert into a 3D scene (e.g. a Viewer3D 
+     \subparagraph{MarchingCubes}
+     Extracts an iso-surface of an image using the marching cubes algorithm (bbfication of vtkMarchingCubes
+     \subparagraph{MIPCreator}     
+Creates a Maximum Intensity Projection (MIP) view of a 3D image. 
+Creates a vtkProp3D object to insert into a 3D scene (e.g. a Viewer3D
+     \subparagraph{MetaImageReader}
+Reads .mhd / .mhd image formats (bbfication of vtkMetaImageReader)     
+     \subparagraph{SegmentationConnectivity}
+Segmentation with min max threshold and connectivity    
+     \subparagraph{SphereSource}
+     Creates a Sphere      
+%   \end{enumerate}
+
+\paragraph{itk}
+It contains some itk based image processing filters :
+     \subparagraph{BinaryThresholdImageFilter}
+     Binarizes an image by thresholding (generic bbification of itk::BinaryThresholdImageFilter) 
+     \subparagraph{DICOMSeriesFileNames}
+     Reads a series from a DICOM directory as a 3D itk image     
+     \subparagraph{ExtractImageFilter}
+     Decrease the image size by cropping the image to the selected region bounds (bbification of itk::ExtractImageFilter)     
+     \subparagraph{ImageProperties}
+     Outputs different properties of an image (type, dimension, size, spacing, ...)      
+     \subparagraph{ImageRegion}
+Creates a generic ImageRegion (bbtk::any) from two vectors providing the index and size of the region. 
+The dimension D of the actual itk::ImageRegion created is the max of the sizes of Index and Size 
+(the smallest vector is padded by zeros)     
+     \subparagraph{ImageReader}
+Generic itk image reader                
+     \subparagraph{ImageWriter}
+Generic itk image writer      
+     \subparagraph{ImageSeriesReader}
+Generic itk image series reader.     
+     \subparagraph{ResampleImageFilter}
+Resamples an image
+\paragraph{itkvtk}
+It doesn't contain any end user intended box, only adaptors : to convert a generic itkImage to a vtkImageData, and vtkImageData* to a generic itkImage pointer 
+
+Sorry nothing is done, right now for meshes. 
+
+\paragraph{wxvtk}
+It contains two atomic black boxes, and some sophisticated complex black boxes :
+
+     \subparagraph{Viewer2D}
+     Receives a \textless vtkImageData* \textgreater (In), an Orientation(0:yz / 1:xz / 2:xy), and a initial slice number (Slice).
+     Returns a \textgreater vtkRenderer* \textgreater (Renderer)
+     
+     \subparagraph{Viewer3D}
+     Receives up to 5 Input Actors (\textless vtkProp3D* \textgreater), up to 5 Imput Observers (\textless vtkInteractorObserver* \textgreater), 
+     outputs an Interactor (\textless wxVTKRenderWindowInteractor* \textgreater) with which vtk widgets can interact, 
+     and a Renderer (\textless vtkRenderer* \textgreater) to which actors can be added.
+     Has also a boolean 'Stereo' option, to use Red-Blue filter.
+     
+     \subparagraph{Viewer3D}     
+
 % ==========================================
 \subsubsection{Pipeline processing}
 \label{bbi-more-on-pipeline-processing}
index 0ef0c5625dcb7129dbb246ae336b4e00f8d7e635..deb743eee6a1e7d3f729936bb352b671b6bd598f 100644 (file)
@@ -68,7 +68,7 @@ with your public/private ssh key (Suggested program for
 windows is Putty)</span></small></small></big></big></li>
   <small> </small>
   <li><big><big><small><small><span style="font-weight: normal;">Right
-clic over the folder C:\Creatis and select "import CVS module" in the
+click over the folder C:\Creatis and select "import CVS module" in the
 menu</span></small></small></big></big></li>
   <small> </small>
   <li style="font-weight: normal;">Select the options : </li>
@@ -84,7 +84,7 @@ menu</span></small></small></big></big></li>
 - User name: The one used in email login</span></small></small></big></big><small><br
  style="font-weight: normal;">
 </small><big><big><small><small><span style="font-weight: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
-- Clic on find the list of modules</span></small></small></big></big><small><br
+- Click on find the list of modules</span></small></small></big></big><small><br
  style="font-weight: normal;">
 </small><big><big><small><small><span style="font-weight: normal;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
 - Select the "bbtk" module</span></small></small></big></big><small><small><span
index dee961fabd216391670a9716d159b38943b6e21d..4910b82dacc4553cc183dfc778e6e3b82626d4f2 100644 (file)
@@ -21,50 +21,46 @@ bbtk <a target="information"
  href="../bbdoc/index-category.html#demo">Demos</a></font><br>
 <font size="2"><a target="information"
  href="../bbdoc/index-category.html#example">Examples</a></font><br>
-<br>
+
+
+
 <hr style="width: 100%; height: 2px;">Documentation<small><span
  style="font-weight: bold;"></span><br>
 <span style="font-weight: bold;"></span></small>
 <blockquote><small> </small></blockquote>
-<ul>
-  <small> </small>
-</ul>
-<small><font size="3"><small><a
- href="../bbtkUsersGuide/bbtkUsersGuide.html" target="information">Users'
-Guide</a> (<font size="2"><small><small><a
- href="../bbtkUsersGuide/bbtkUsersGuide.pdf" target="information">pdf</a></small></small></font>)</small></font></small><br>
-<small><font size="3"><small> <a
- href="../bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.html"
- target="information">Package Developers' Guide</a> (<font size="2"><small><small><a
- href="../bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.pdf"
- target="information">pdf</a></small></small></font>)</small></font></small><br>
-<small><font size="3"><small> </small></font></small><small><font
- size="3"><small><a
- href="../bbtkDevelopersGuide/bbtkDevelopersGuide.html"
- target="information">Developers' Guide</a> (<font size="2"><small><small><a
- href="../bbtkDevelopersGuide/bbtkDevelopersGuide.pdf"
- target="information">pdf</a></small></small></font>)<br>
-Reference (pdf)<br>
-</small></font></small><small><font size="3"><small> <a
- href="../doxygen/bbtk/main.html" target="information">Doxygen doc</a></small></font></small>
+
+
+<small><font size="3"><small><a href="../bbtkUsersGuide/bbtkUsersGuide.html" target="information">User's Guide</a>
+ (<font size="2"><small><small><a href="../bbtkUsersGuide/bbtkUsersGuide.pdf" target="information">pdf</a></small></small></font>)
+ </small></font></small><br>
+
+<small><font size="3"><small> <a href="../bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.html" target="information">Package Developer's Guide</a> 
+(<font size="2"><small><small><a href="../bbtkPackageDevelopersGuide/bbtkPackageDevelopersGuide.pdf" target="information">pdf</a></small></small></font>)
+</small></font></small><br>
+
+<small><font size="3"><small> <small><font size="3"><small><a href="../bbtkDevelopersGuide/bbtkDevelopersGuide.html"
+target="information">Developer's Guide</a>
+ (<font size="2"><small><small><a href="../bbtkDevelopersGuide/bbtkDevelopersGuide.pdf" target="information">pdf</a></small></small></font>)<br>
+Reference Manual(pdf)<br>  </small></font></small>
+ <small><font size="3"><small> <a href="../doxygen/bbtk/main.html" target="information">Doxygen doc</a></small></font></small>
 <ul>
 </ul>
+
+
+
 <hr style="width: 100%; height: 2px;">Boxes<br>
 <br>
-<font size="2"><a target="information" href="../bbdoc/index-alpha.html">Alphabetical
-list</a><br>
-<a target="information" href="../bbdoc/index-package.html">List by
-package</a><br>
-<a target="information" href="../bbdoc/index-category.html">List by
-category</a><br>
-<a target="information" href="../bbdoc/index-adaptors.html">List of
-adaptors</a></font><br>
-<ul>
-</ul>
-<hr style="width: 100%; height: 2px;"><small>
-</small>
-<ul>
-</ul>
+<font size="2">
+<a target="information" href="../bbdoc/index-alpha.html">Alphabetical list</a><br>
+<a target="information" href="../bbdoc/index-package.html">List by package</a><br>
+<a target="information" href="../bbdoc/index-category.html">List by category</a><br>
+<a target="information" href="../bbdoc/index-adaptors.html">List of adaptors</a></font><br>
+
+<hr style="width: 100%; height: 2px;">
+
 <blockquote><big> </big></blockquote>
 &nbsp;
 </body>
index 920f965e564f8bf4d85ddf904cc09bbb65e89069..a7d9f3c551e7100096bcd7b3a5ca9513996683bb 100644 (file)
 \def\BBTK{{\xspace}The {\bf Black Box Toolkit} }
 \def\bbtk{{\xspace}$\texttt{bbtk}$ }
 \def\bbi{{\xspace}$\texttt{bbi}$ }
+\def\bbStudio{{\xspace}$\texttt{bbStudio}$ }
 \def\bbfy{{\xspace}$\texttt{bbfy}$ }
 \def\bbdoc{{\xspace}$\texttt{bbdoc}$ }
 \def\bbCreatePackage{{\xspace}$\texttt{bbCreatePackage}$ }
index 7d2eb54530322538df4253fdf6bb53afde5bca77..2964c08c4821e0242d2bc93e27dcb9de42b95ac9 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbtkInterpreter.cxx,v $ $
   Language:  C++
-  Date:      $Date: 2008/07/01 07:58:28 $
-  Version:   $Revision: 1.67 $
+  Date:      $Date: 2008/07/03 13:59:32 $
+  Version:   $Revision: 1.68 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -280,7 +280,8 @@ namespace bbtk
     info.argmax = 2;
     info.code = cMessage;
     info.syntax = "message <kind> <level>";
-    info.help = "Sets the level of the kind of messages <kind> to <level>.\n  If kind='All' then sets the level for all kinds. If no kind nor level is passed then prints info on available kinds of messages and their current level.";  mCommandDict[info.keyword] = info;
+    info.help = "Sets the level of the kind of messages <kind> to <level>.\n  If kind='All' then sets the level for all kinds. If no kind nor level is passed then prints info on available kinds of messages and their current level.";  
+    mCommandDict[info.keyword] = info;
 
     info.keyword = "include";
     info.argmin = 1;
index e792e0dc9f7b6f36364bd94c0077867ea079ac94..622abafd39ab00f5c6a9137b19a767f21debf4c3 100644 (file)
@@ -1,6 +1,10 @@
 === Here are the current categories ===
 Those with a ? are submitted for approval ...
 
+--> This list is now on 
+
+http://www.creatis.insa-lyon.fr/mywiki/Informatique/bbtk
+
 adaptor             : Adaptor box
 application  : Final application 
 atomic box   : System category. 
index 739bcdce3097602b2102f2e19b1497a47fd8b95a..ab20a44c34d01208c211e2f99f7fcf4aa1b6ebe5 100644 (file)
@@ -15,7 +15,6 @@
     There must be one tag per file to include
     Here we include the standard header iostream.h -->
   <include><PRE>itkDICOMSeriesFileNames.h</PRE></include>
-  <include><PRE>itkDICOMSeriesFileNames.h</PRE></include>
   <!--=====================================================================-->
 
   <!--========================================================================
index b6df26b4b88e23c8be3bd8e039d8fb2abfec2b55..c3c1c3c5be402f621311052d10d5818ea25bca29 100644 (file)
@@ -2,12 +2,12 @@
 
 <blackbox name="Add">
 
-  <author>laurent.guigues@creatis.insa-lyon.fr</author>
-  <description>Adds its inputs</description>
-  <category>math</category>
+  <author>laurent.guigues@creatis.insa-lyon.fr </author>
+  <description>Adds its inputs                 </description>
+  <category>math                               </category>
 
-  <input name="In1" type="double" description="First number to add"/>
-  <input name="In2" type="double" description="Second number to add"/>
+  <input name="In1"  type="double" description="First number to add"/>
+  <input name="In2"  type="double" description="Second number to add"/>
   <output name="Out" type="double" description="Result"/>
 
   <process><PRE>
@@ -17,8 +17,9 @@
   <constructor><PRE>
     bbSetInputIn1(0);
     bbSetInputIn2(0);
-    bbSetOutputOut(0);
-  </PRE></constructor>    
+    bbSetOutputOut(0);    
+  </PRE></constructor> 
 
 </blackbox>
 
+
index 49d0837c73caa9f098b83f5848f04d854ad27080..4a1484b2cf823bf4db9a402ba5f0a6f6db1ec242 100644 (file)
@@ -4,7 +4,7 @@ include std
 define MakePackageDoc toolsbbtk
   description "Creates the html documentation of a package. The doc is generated at the 'canonical' location. Works both for a build tree or an installed toolkit."
   author "laurent.guigues at creatis.insa-lyon.fr"
-  category "bbtk tool"
+  category "toolsbbtk"
        
   new StringRelay package
 
index f074cc9e97f3d617ccf2c9aedc3cac874c98c6bf..ebacc86ede9816bbe646d6fbff81ac34f12d455d 100644 (file)
@@ -2,9 +2,13 @@ ObjectType = Image
 NDims = 3
 BinaryData = True
 BinaryDataByteOrderMSB = False
-ElementSpacing = 0.7 0.7 0.7
 DimSize = 127 147 187
+HeaderSize = 0
+ElementSpacing = 0.7 0.7 0.7
 Position = 0 0 0
+TransformMatrix = 1 0 0 0 1 0 0 0 1
+Offset = 0 0 0
+CenterOfRotation = 0 0 0
 ElementNumberOfChannels = 1
 ElementType = MET_USHORT
 ElementDataFile = hola.raw
index a0bb806fbe30b7f50b9c0120c42e5c6191f56602..a749f683def0493541d3aefd4550fb2fd836a8de 100644 (file)
@@ -7,7 +7,6 @@
 <description><PRE>Creates a Cone (bbfication of vtkConeSource)</PRE></description>
 <category>mesh</category>
 
-
 <include>vtkConeSource.h</include> 
 <vtkparent>vtkConeSource</vtkparent>
 
index 8afcc161d41b413789fe7f0adbeaac4f09d68316..c290fef5fa43889cb14cf8c8ea7dfad95b97d853 100644 (file)
@@ -2,7 +2,7 @@ load wx
 
 define DoubleSlider wx
  description "test object"
- category "widget"     
+ category "complex box, widget"        
  author "laurent.guigues at creatis.insa-lyon.fr"
  
  new Slider slider1
index 817fd4313cacc0f1ab252d196ec8afdcf50b301f..38d370c199feb2a836fcdf26eb46139e8b038fa0 100644 (file)
@@ -1,5 +1,6 @@
 load wx
 define GUIcolour wx
+  category "complex box, widget"
   kind DEFAULT_GUI
   new ColourSelectorButton colour
   input In colour.In "Initial colour"
index cef23f403b9ff70e4e5e27cfc52d759655b6f441..cefc2614c022f1d02d93dd1bac87844288476f87 100644 (file)
@@ -2,6 +2,7 @@ load std
 load wx
 define GUIdouble wx
   kind DEFAULT_GUI
+  category "complex box, widget"
   new InputText text
   input In text.In "Initial value"
   input Label text.Title "Label"
index 684d36d8b3dd43a019d9f21648d203f1b6b330e0..5b8e7c71cf8270ed1f4cbb09e820c23008412066 100644 (file)
@@ -2,6 +2,7 @@ load std
 load wx
 define GUIint wx
   kind DEFAULT_GUI
+  category "complex box, widget"
   new Slider slider
   set slider.Label true
 #  set slider.ReactiveOnTrack true
index 6e284f0822136db6805bca1d134bc71d25564f88..8a23e12e17e3c98bd5f87193524cf714d9168310 100644 (file)
@@ -12,7 +12,7 @@ define LayoutTDown wx
 
 description "Creates a complex box : Down {UpLeft, UpRight} "
 author "jean-pierre.roux@creatis.univ-lyon1.fr"
-category "box"
+category "complex box, widget"
 
 new LayoutSplit currentBox
  set currentBox.Orientation V
index b70aaeead6fa3a1c02aecba1f436005a754a1017..a001e32ee378a9f3cf5dd6400c32b8d43820b275 100644 (file)
@@ -13,7 +13,7 @@ define LayoutTLeft wx
 
 description "Creates a complex box : Left {RigthUp, RightDown}"
 author "jean-pierre.roux@creatis.univ-lyon1.fr"
-category "box"
+category "complex box, widget"
 
 new LayoutSplit currentBox
  set currentBox.Orientation H
index 127502fa97e7c665c54340780d2102d3e98d2ef0..0c36b5c48e3804f9a69a5189e52f19f2226ba7a3 100644 (file)
@@ -11,7 +11,7 @@ define LayoutTRight wx
 
 description "Creates a complex box : Right {LeftUp, LeftDown}"
 author "jean-pierre.roux@creatis.univ-lyon1.fr"
-category "box"
+category "complex box, widget"
 
 new LayoutSplit currentBox
  set currentBox.Orientation H
index 581dd486d22526844b24788132ba867d7e3c680b..6c452d9f8db345aba0cf50e277558570fb2381ad 100644 (file)
@@ -11,7 +11,7 @@ define LayoutTUp wx
 
 description "Creates a complex box : Up {DownLeft, DownRight} as w1{w2,w3}"
 author "jean-pierre.roux@creatis.univ-lyon1.fr"
-category "box"
+category "complex box, widget"
 
 new LayoutSplit currentBox
  set currentBox.Orientation V
index 5f44b38ed7664e0be8a4f3fb55f0edb75a3e7ade..f9e1e1326f7c6c3f0b9a95bc3738f78e7ce2547b 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbwxvtkViewer2D.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/06/27 08:12:46 $
-  Version:   $Revision: 1.14 $
+  Date:      $Date: 2008/07/03 13:59:37 $
+  Version:   $Revision: 1.15 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -54,13 +54,13 @@ namespace bbwxvtk
     wxvtkrenderwindowinteractor->UseCaptureMouseOn();  
 
     imageViewer        = vtkImageViewer2::New();
-       imageViewer->SetSlice( 1 );
+    imageViewer->SetSlice( 1 );
     imageViewer->SetupInteractor ( wxvtkrenderwindowinteractor );
     
     mDefaultImage = vtkImageData::New();
     int dim[3];
     dim[0] = dim[1] = 32 ; 
-       dim[2] = 2; 
+    dim[2] = 2; 
     mDefaultImage->SetDimensions ( dim );
     mDefaultImage->SetSpacing(1,1,1);
     mDefaultImage->SetExtent(0,dim[0]-1,0,dim[1]-1,0,dim[2]-1);
@@ -84,10 +84,10 @@ namespace bbwxvtk
     mUpdateCamera = true;
 
     wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
-    sizer      -> Add( wxvtkrenderwindowinteractor , 1, wxEXPAND, 0);
-    panel      -> SetSizer(sizer);
-    panel      -> SetAutoLayout(true);
-    panel      -> Layout();
+    sizer-> Add( wxvtkrenderwindowinteractor , 1, wxEXPAND, 0);
+    panel-> SetSizer(sizer);
+    panel-> SetAutoLayout(true);
+    panel-> Layout();
 
 
     wxvtkrenderwindowinteractor->Refresh();
@@ -159,9 +159,9 @@ namespace bbwxvtk
        
        vtkCamera *camera = imageViewer->GetRenderer()->GetActiveCamera();
 
-       camera->SetViewUp ( spx*0, -spy*1, spz*0 );
-       camera->SetPosition( spx*(x1+x2)/2, spy*(y1+y2)/2, -spz*10000000 ); 
-       camera->SetFocalPoint   ( spx*(x1+x2)/2 , spy*(y1+y2)/2 , spz*0 ); 
+       camera->SetViewUp    ( spx*0,         -spy*1,        spz*0 );
+       camera->SetPosition  ( spx*(x1+x2)/2, spy*(y1+y2)/2, -spz*10000000 ); 
+       camera->SetFocalPoint( spx*(x1+x2)/2, spy*(y1+y2)/2, spz*0 ); 
 
        camera->ComputeViewPlaneNormal();
        camera->SetParallelScale(  spx*(x2-x1)/2.0 );
@@ -171,8 +171,8 @@ namespace bbwxvtk
       }
   
     //  std::cout << "OW = "<< mBox->bbGetWindow() << std::endl;
-    //    std::cout << "CW = "<< mBox->bbGetContainingWindow() << std::endl;
-    //    std::cout << "Sh = "<< mBox->bbIsShown() << std::endl;
+    //  std::cout << "CW = "<< mBox->bbGetContainingWindow() << std::endl;
+    //  std::cout << "Sh = "<< mBox->bbIsShown() << std::endl;
     
 
 
@@ -238,7 +238,7 @@ namespace bbwxvtk
 
     ((Viewer2DWidget*)bbGetOutputWidget())->UpdateView();
     bbSetOutputOut( bbGetInputSlice() );
-       bbSetOutputRenderer( ((Viewer2DWidget*)bbGetOutputWidget())->GetRenderer() );
+    bbSetOutputRenderer( ((Viewer2DWidget*)bbGetOutputWidget())->GetRenderer() );
        
   }
   
index c2092affce99e8f1d00fd52a2f79fc2b15ea7643..a6651ce1d47e26ca2f30dc3523bdc83b7f1768a4 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbwxvtkViewer2D.h,v $
   Language:  C++
-  Date:      $Date: 2008/06/19 09:46:49 $
-  Version:   $Revision: 1.6 $
+  Date:      $Date: 2008/07/03 13:59:37 $
+  Version:   $Revision: 1.7 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -58,13 +58,13 @@ namespace bbwxvtk
     Viewer2DWidget(Viewer2D* box, wxWindow *parent);
     ~Viewer2DWidget();
     void UpdateView();
-       vtkRenderer                                      *GetRenderer();
+       vtkRenderer             *GetRenderer();
   private:
-    Viewer2D                     *mBox;
-    vtkImageViewer2                             *imageViewer;
-    vtkImageData                                *backImageData;
-    vtkImageData                                *mDefaultImage;
-    wxVTKRenderWindowInteractor  *wxvtkrenderwindowinteractor;
+    Viewer2D                    *mBox;
+    vtkImageViewer2            *imageViewer;
+    vtkImageData               *backImageData;
+    vtkImageData               *mDefaultImage;
+    wxVTKRenderWindowInteractor *wxvtkrenderwindowinteractor;
     bool mUpdateCamera;
 
        vtkImplicitPlaneWidget * maPlane1, * maPlane2, * mbPlane1, * mbPlane2;
@@ -97,10 +97,10 @@ namespace bbwxvtk
   BBTK_AUTHOR("eduardo.davila@creatis.insa-lyon.fr");
   BBTK_DESCRIPTION("Viewer2D widget (vtk)");
   BBTK_CATEGORY("viewer");
-  BBTK_INPUT(Viewer2D,Slice,"Position of the slider",int,"");
+  BBTK_INPUT(Viewer2D,Slice,"Initial Slice number",int,"");
   BBTK_INPUT(Viewer2D,Orientation,"Slicing orientation : 0:yz / 1:xz / 2:xy",int,"");
   BBTK_INPUT(Viewer2D,In,"Input Image",vtkImageData *,"");
-  BBTK_OUTPUT(Viewer2D,Out,"Position of the slider",int,"");
+  BBTK_OUTPUT(Viewer2D,Out,"Current Slice number",int,"");
   BBTK_OUTPUT(Viewer2D,Renderer,"vtk Renderer",vtkRenderer*,"");
   BBTK_END_DESCRIBE_BLACK_BOX(Viewer2D);
   //=================================================================