]> Creatis software - bbtk.git/blobdiff - kernel/doc/bbtkUsersGuide/bbtkUsersGuide.tex
Beginning of new version
[bbtk.git] / kernel / doc / bbtkUsersGuide / bbtkUsersGuide.tex
index 22f585686e46336242ba2534a89fd9dea4a46367..06e156ebfb51a7349bdd1a607e280552a3db6599 100644 (file)
@@ -111,9 +111,12 @@ It's a part of the \texttt{Creatools suite} composed mainly of :
 \begin{verbatim}
  bbtk
  creaContours
- creaReaders
- creaViewers
+ creaImageIO
+ creaLib
  gdcm 
+\end{verbatim}
+which depend on the OpenSource libraries: 
+\begin{verbatim}
  itk
  vtk
  wxWidgets
@@ -187,7 +190,7 @@ which allows to manipulate packages and boxes very easily in symbolic way.
 \BBTK provides one : \bbi (the Black Box Interpreter). 
 \item {\bf Automatic documentation} of existing packages. 
 \texttt{html} documentation of packages is proposed by 
-\bbins.
+\bbStudions.
 \end{itemize}
 
 Finally, these different components allow {\bf efficient} :
@@ -217,24 +220,23 @@ have been written by different persons, using different libraries, etc.
       \item {\bf\emph{wxvtk}} : widget boxes based on the \vtk library (2D and 3D vizualization and
       interaction).
       \item {\bf\emph{itkvtk}} : special boxes (adaptors) to convert \itk structures into \vtk structures and conversally.
-      \item {\bf\emph{creaReaders}} : Provides hight level widgets to read images, including DICOM.
+      %\item {\bf\emph{creaImageIO}} : Provides hight level widgets to read images, including DICOM.
       \item {\bf\emph{toolsbbtk}} : Tools for bbtk administration and package development..      
     \end{itemize}
   \item A {\bf\emph{Developement environment}}, called \bbStudio, which provides
     \begin{itemize}
-      \item An online {\bf\emph{script editor}}
-      \item A powerfull {\bf\emph{Help environment}}, called \bbPackageBrowser
-        whith integrated
+      \item An online {\bf\emph{script editor and interpretor}}
+      \item A powerfull html {\bf\emph{Help environment}},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 \bbins, which allows to 
+      \end{itemize}
+      \item An standalone {\bf\emph{interpreter}}, called \bbins, 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}} :
+          processing chains by connecting various black boxes.
+      \item {\bf\emph{Various Development Utilities}} :
          \begin{itemize}
             \item \bbfy generates the \CPP code of a black box from a 
                description file written in \texttt{xml}.
@@ -243,8 +245,10 @@ have been written by different persons, using different libraries, etc.
                 %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}
+            \item \texttt{bbs2cpp} translates a \texttt{.bbs} script into a \CPP file.
+            \item \texttt{bbc} that              
+         \end{itemize}
+      \item A full {\bf\emph{documentation}} printable (pdf), browsable (html), queryable thru keywords.         
 \end{itemize}
 The general architecture of \BBTK 
 is shown in figure \ref{bb-architecture}.
@@ -259,35 +263,24 @@ is shown in figure \ref{bb-architecture}.
 \newpage
 
 % ==========================================
-\subsection{Structure of this guide}
+\section{Getting started with bbStudio}
 % ==========================================
 
-This guide is divided into three parts. 
-
-The first part (\ref{bbStudio}) is a brief presentation of the very intuitive Development
-environment, \bbStudions.
-
-The second part (\ref{bb0}) 
-is devoted to the use of the \emph{black box interpreter} \bbins. 
-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 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.
-
-
 % ==========================================
 % ==========================================
 % ==========================================
 % ==========================================
 % ==========================================
 % ==========================================
-\vspace{0.5cm}\hrule
-\section{The Development environment (bbStudio)}
-\label{bbStudio}
+
+% ==========================================
+\subsection{The interface}
+% ==========================================
+
+
+%\vspace{0.5cm}\hrule
+%\section{The Development environment (bbStudio)}
+%\label{bbStudio}
 
 Just run it, typing in a console \bbStudio 
 or clicking on its icon or its menu entry.
@@ -305,6 +298,9 @@ You'll get something like in figure
 \ref{bbi-fig-bbStudio-gui-start}
 (the exact appearance of \bbStudio is Operating System and \bbtk version dependent)
 
+\newpage
+
+
 \begin{figure}[!ht]
 \caption{\label{bbi-fig-bbStudio-gui-start}The bbStudio Development environment interface at start time}
 \begin{center}
@@ -325,13 +321,7 @@ Let's have a look at the resized window :
 \end{center}
 \end{figure}
 
-You can see four parts :
-\begin{itemize}  
-  \item {\bf{Files}}
-  \item {\bf{Messages}}
-  \item {\bf{Command}}
-  \item {\bf{Help}}
-\end{itemize} 
+You can see four parts : \texttt{Files}, \texttt{Messages}, \texttt{Command}, \texttt{Help}.\\
 
 The stuff is written using the Advanced User Interface library of wxWidgets,
 whose 'docking manager' allows windows and toolbars to be floated/docked 
@@ -339,28 +329,46 @@ onto a frame.\\
 Please don't use this feature at learning time (the snapshots of this document
  wouldn't match with your screen ...)
 
-\subsection{'Files' part}
+\subsubsection{'Files' part}
 \label{bbi-FilesPart}
 
 It's the .bbs script editor.\\
 If you load a file holding a script, it will be displayed here, and you'll be
 able to modify it, to save it, to save-as it, to run it, using the
-lower toolbar 
+lower toolbar (see figure : \ref{lowertoolbar})
+
+\begin{figure}[!ht]
+\caption{\label{lowertoolbar}The lower tool bar}
+\begin{center}
+\includegraphics[width=0.7\textwidth]{lowertoolbar.png}
+\end{center}
+\end{figure}
+
+
+ \begin{itemize}
+   \item {\bf\emph{New file}} : Create a new file to hold a script
+   \item {\bf\emph{Open file}} : Open an already existing file holding a script 
+   \item {\bf\emph{Close file}} : Close a file holding a script
+   \item {\bf\emph{Save file}} : Save he current file (if modified)
+   \item {\bf\emph{Save file as}} : Save he current file under a different name
+   \item {\bf\emph{Run file}} : Execute the script you just loaded/modified/written
+   \item {\bf\emph{cursor position}} : column number : line number   
+ \end{itemize}
 
 
-\subsection{'Messages' part}
+\subsubsection{'Messages' part}
 \label{bbi-MessagesPart}
 
 Two kinds of messages will be output here:\\
 System messages : produced by the kernel, in case of a user mistyping, or an execution error\\
 Script messages : produced by the \bbtk equivalent of \texttt{printf} or \texttt{std::cout} in user programs
 
-\subsection{'Command' part}
+\subsubsection{'Command' part}
 \label{bbi-CommandPart}
 
 This is where user will type his requirements.
 
-\subsection{'Help Contents' part}
+\subsubsection{'Help Contents' part}
 \label{bbi-HelpContentsPart}
 
 The 'Help Contents' part of \bbStudio is used to browse the html help of \BBTK.
@@ -387,192 +395,37 @@ All the entries of the starting page are self-explanatory :
    \end{itemize}
         
    \item {\bf\emph{Boxes}} : Box retrieving on various criterions :
-      \begin{itemize}
-        \item {\bf\emph{By name}} (Alphabetical list)
-        \item {\bf\emph{By package}} (see table : \ref{bbi-list_of_packages})
-        \item {\bf\emph{By category}} (see table : \ref{categories})
-        \item {\bf\emph{Adaptors}} Used internaly to perform type conversions (not end user intended)     
-      \end{itemize}
-      
- \end{itemize}
-
-% ==========================================
-\begin{table}[!ht]
-\caption{\label{bbi-list_of_packages} List of bbtk supplied packages.}
-\small
-\begin{tabular}{|lp{10cm}|}
-\hline
-Package         & What it's used for \\ \hline
-\texttt{std}    & : the 'standard' package including basic useful boxes \\ \hline 
-\texttt{wx}     & : basic graphical interface elements (widgets : sliders, buttons, etc.) based on the \texttt{wxWidgets} library \\ \hline 
-\itk    & : the basic image processing package, based on the \itk library. (without description)\\ \hline 
-\vtk    & : prints help on the package \texttt{package-name} and its boxes (with brief description). The package must have been previously loaded\\ \hline 
-\texttt{wxvtk}  & : widget boxes based on the \vtk library.\\ \hline 
-\texttt{itkvtk} & : adaptors to convert \itk structures into \vtk structures and conversally.\\ \hline 
-\texttt{creaReaders} & : provides high level widgets to read images including DICOM.\\ \hline 
-\texttt{toolsbbtk} & : Tools for bbtk administration and package development.\\ \hline 
-
-\end{tabular}
-\end{table}
-% ==========================================
-
 
+        \texttt{By name}} (Alphabetical list), 
+        \texttt{{By package}}, 
+        \texttt{{By category}}.\\ 
+        A special hidden Box category, called \texttt{{Adaptors}} exists. \\ 
+       They are used internaly to perform type conversions. Thought there are not end user intended, an aware user may query them.     
 
+      
+ \end{itemize}
 
-% ==========================================
-\begin{table}[!ht]
-\caption{\label{categories} \texttt{Black Box} categories}
-\small
-\begin{tabular}{|lp{10cm}|}
-\hline
- \texttt{Category 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} \texttt{Black Box} kinds}
-\small
-\begin{tabular}{|ll|}
-\hline
-\texttt{Kind name}                & : Meaning                         \\ \hline \\ \hline
-\texttt{ADAPTOR}                  & : Adaptor Box                     \\ \hline
-\texttt{DEFAULT\_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}
 
 
-\newpage
- .\newline
- .\newline
-     .\newline
-       .\newline
-         .\newline
-          .\newline
 
-                 . \newline 
-% ==========================================
 % ==========================================
 % ==========================================
 % ==========================================
 % ==========================================
 % ==========================================
-\vspace{0.5cm}\hrule
-\section{The script manager}
-\label{bb0}
-% ==========================================
-
- Atomatically open in the left upper part of bbStudio.
 
-\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 (see figure : \ref{lowertoolbar}), you can :
-
-
-\begin{figure}[!ht]
-\caption{\label{lowertoolbar}The lower tool bar}
-\begin{center}
-\includegraphics[width=0.7\textwidth]{lowertoolbar.png}
-\end{center}
-\end{figure}
-
-
- \begin{itemize}
-   \item {\bf\emph{New file}} : Create a new file to hold a script
-   \item {\bf\emph{Open file}} : Open a already existing file holding a script 
-   \item {\bf\emph{Close file}} : Close a file holding a script
-   \item {\bf\emph{Save file}} : Save he current file (if modified)
-   \item {\bf\emph{Save file as}} : Save he current file under a different name
-   \item {\bf\emph{Run file}} : Execute the script you just loaded/modified/written
- \end{itemize}
-
-
-The script language is very simple. 
-Everything is done with only a very few commands (See table \ref{bbi-reference-box}).
-The philosophy of this part is also very simple : 
-it introduces the \bbi commands using examples, 
-starting with the most simple commands.  
-The first section of this part 
-(\ref{bbi-getting-started})
-is designed like a tutorial, 
-which progressively introduces all the concepts of the command interpretor. 
-We suggest you run \bbStudio and follow the examples, 
-to see how it works in practice. 
-At the end of this section, 
-you will be able to use \bbStudio and write 
-own black box processing scripts. 
-
-After this tutorial, 
-the section \ref{bbi-more-on} 
-(called \emph{more on...}) 
-goes deeper into various issues of the command interpretor. 
-Read it at your convenience, 
-either linearly to learn more about \bbStudio, 
-or in random order to get an answer 
-to a particular question. 
-
-Finally, the section \ref{bbi-reference}
-summarizes all the commands of \bbStudions, 
-their parameters and effect. 
-Use it as a reference.
-
-
-\newpage
 
 
 % ==========================================
-\subsection{Getting started}
-\label{bbi-getting-started}
-
-% ==============================================
-\subsubsection{Installed tree \emph{vs} Built tree}
-% ==============================================
 
-If you want to use the 'installed' version (it means you downloaded and run the Windows
-installer, or the Fedora package, or you downloaded, compiled and installed the
-cvs version), just open a console and type \bbStudions, or double click on the application icon. \\
-
-If you want to run your own uninstalled version (say : you downloaded and compiled the
-cvs version in order to use a recently commited patch, but you want to be able to still use the standard version), 
-you have to open a console, cd in the bin directory of the built tree and type \texttt{./bbStudio}.
+\newpage
 
 % ==============================================
-\subsubsection{Using an already existing script}
+\subsection{Running Demo and Examples}
 % ==============================================
 
 Run \bbStudio the way you need. \\
@@ -585,6 +438,8 @@ In the part 'Help contents' (See figure \ref{HelpContents}), select \texttt{Exam
 \end{center}
 \end{figure}
 
+\newpage
+
 You will be asked to select a Box category (See figure \ref{BoxCategories}); \\ 
 Select \texttt{example}.
 
@@ -630,7 +485,7 @@ in the 'Files' part, within the script editor (See figure \ref{exampleSliderSour
 
 Run it, using the lower toolbar  (see figure : \ref{lowertoolbar})
 
-You'll get something like in \ref{execSliderSource}.
+You'll get something like in figure \ref{execSliderSource}.
 
 \begin{figure}[!ht]
 \caption{\label{execSliderSource}execution of 'exampleSlider'}
@@ -641,37 +496,105 @@ You'll get something like in \ref{execSliderSource}.
 
 Feel free to move the slider, to check it actually works...
 
-
 \newpage
 
-% ==========================================
-\subsubsection{Creating and executing black boxes}
-% ==========================================
+Just a few words on what you saw :
+\begin{itemize}
+\item{in the File part} \\
+The source code of the script
+\begin{verbatim}
+   new Slider     slider
+     set slider.ReactiveOnTrack 1
+\end{verbatim}
+We create a \texttt{Slider} called \emph{slider}\\
+We tell it to inform anybody that's interested in, that the cursor moved, each time it moved. \\
+The standard behaviour is to inform, only when cursor is released.
+\begin{verbatim}
+   new OutputText text
+\end{verbatim}
+We create a \texttt{OutputText} called \emph{text} 
+(in which slider value will be displayed)
+
+\begin{verbatim}
+new LayoutLine layout
+\end{verbatim}
+We create a \texttt{LayoutLine} called \emph{layout},
+a \emph{container} widget, designed to embed other wigets (say, a main window)
+\begin{verbatim}
+connect slider.Widget    layout.Widget1
+connect text.Widget      layout.Widget2
+\end{verbatim}
+We embed \emph{slider} and \emph{text} into  \emph{layout}.
+\begin{verbatim}
+connect slider.BoxChange text.BoxExecute
+connect slider.Out       text.In
+\end{verbatim}
+We tell  \emph{slider} to inform \emph{text} every time it's modified.\\
+We tell  \emph{slider} to pass its output value (\texttt{Out} to \emph{text}  input value (\testtt{In})
+\begin{verbatim}
+exec layout
+\end{verbatim}
+We tell \emph{layout} to process itself (it will do it only if it's warned 
+that one of its entries was modified since its (own) last processing.
 
-To learn interactivelly the script language features, you can use the black box
-interpreter : 
-open a console and type \bbStudio 
-or double click on the application icon.
-You get a window which looks like the one in figure 
-\ref{bbi-fig-bbi-gui} 
-(the exact appearance of \bbStudio is system and \bbtk version dependent)
+\item{in the Help part}
+
+You can see the graphical representation of the script, as in figure \ref{SmallGraph}.
 
-%\footnote{If you compiled \bbtk without \wx then \bbi does not have a 
-%graphical interface but a simple prompt}.
 
 \begin{figure}[!ht]
-\caption{\label{bbi-fig-bbi-gui}The black box interpreter interface}
+\caption{\label{SmallGraph}Graphical representation of a script}
 \begin{center}
-\includegraphics[width=0.7\textwidth]{bbi-gui0.png}
+\includegraphics[width=0.7\textwidth]{SmallGraph.png}
 \end{center}
 \end{figure}
 
+Both graphical pipe line (\emph{slider} and \emph{text} are embedded into \emph{layout})
+ and processing pipe line (\emph{slider} warns \emph{text} immedialtely when it's modified, \emph{slider} passed \emph{text} its new value).\\
+ Yes, we know : all the arrows (pipe line arrows and processing arrows) are blue; we are sorry about that...\\
+ You could get a much more detailled graph, just clicking on the button \\ \texttt{graph (detailled)} in the toolbar of the \texttt{Command} part, like in
+ figure  \ref{LargeGraph}.
+\begin{figure}[!ht]
+\caption{\label{LargeGraph}Detailled graphical representation of a script}
+\begin{center}
+\includegraphics[width=0.75\textwidth]{LargeGraph.png}
+\end{center}
+\end{figure} 
+
+\end{itemize}
+\newpage
+
+% ==============================================
+\subsection{Online Help}
+% ==============================================
+
+TODO
+
+% ==========================================
+\subsubsection{Guides}
+% ==========================================
+TODO
+% ==========================================
+\subsubsection{Boxes Help}
+% ==========================================
+TODO : indexation, categories, etc
+% ==========================================
+\subsection{Creating and executing black boxes}
+% ==========================================
+TODO
+% ==============================================
+\subsection{The Menu}
+% ==============================================
+TODO
+
 The 'working' area (the left one, as opposed to the 'help' area, on the right side) is composed of : 
 one single line zone (Command), at the bottom in which you can enter your commands and 
 a multiple line zone in which the Command interpreter prints out the result of your commands.
 The upper part contains the script editor; we shall not use it right now, you may reduce it
 
-Try typing in the input zone (in this manual, 
+Try typing in the \texttt{Command} area (in this manual, 
 the commands entered by the user will be preceded by a prompt \textgreater) :
 \begin{verbatim}
 > help 
@@ -1219,16 +1142,16 @@ In our example, the \texttt{CastUCharToDouble} adaptor
 would simply cast the value of the \texttt{char} into a \texttt{double}, 
 however arbitrarily complex type conversion may be done.
 
-\begin{verbatim}
-Question (for info-dev): 
-if two adaptors with the same input and output types exist 
-in two different packages, currenly loaded, 
-which one is chosen by the interpreter at connection time?
-A feature is missing to specify explicitely which one user wants to choose 
-(use a namespace notation ?)
--> Role of default adaptors
-\end{verbatim}
+%\begin{verbatim}
+%Question (for info-dev): 
+%if two adaptors with the same input and output types exist 
+%in two different packages, currenly loaded, 
+%which one is chosen by the interpreter at connection time?
+%A feature is missing to specify explicitely which one user wants to choose 
+%(use a namespace notation ?)
+% 
+%-> Role of default adaptors
+%\end{verbatim}
 
 Note that the \texttt{set} and \texttt{print} commands of interpreter 
 work with adaptors from \texttt{string} to the type of the input to set 
@@ -1797,11 +1720,11 @@ The label of each 'note book' is the name of the object it contains.
 \end{itemize}
 
 
-=====> TODO \\
+%=====> TODO \\
 
 
-One word about a special widget in the package \texttt{wx} : 
-the \texttt{Button}... to be continued.
+%One word about a special widget in the package \texttt{wx} : 
+%the \texttt{Button}... to be continued.
 
 % ==========================================
 \subsubsection{Deeper in the boxes}
@@ -1893,6 +1816,36 @@ In normal pipe-line mode, it will be re-processed if at least one of its imputs
 \label{bbi-more-on-complex-black-boxes}
 Creation of complex widgets (containers, contained...)
 
+You can include script files in other script files, 
+like in the following example :
+
+
+\begin{verbatim}
+# Defines the Add4 black box which adds 4 doubles 
+include Add3
+define Add4
+  author "myself"
+  description "adds 4 doubles"
+  new Add3 a
+  new Add b
+  connect a.Out b.In1
+  input In1 a.In1 "first double to add"
+  input In2 a.In2 "second double to add"
+  input In3 a.In3 "third double to add"
+  input In4 b.In2 "fourth double to add"
+  output Out b.Out "output"
+endefine
+\end{verbatim}
+
+The inner boxes have they own entries (In1, In2, In3 for box a, In1, In2 for box b )\\
+Only the inputs In1, In2, In3 of box a and the input In2 of box b is of interest for the end user, but he dosn't want to have to
+care neither about the inner boxes name, nor about the names of their Inputs.\\
+The writer of the complex box has the ability to give these inputs a meaningfull name !
+\begin{verbatim}
+  input In3 a.In3 "third double to add"
+  input In4 b.In2 "fourth double to add"
+\end{verbatim}
+
 %\subsubsection{Advanced issues}
 %\paragraph{Reducing the number of inputs of a box}
 
@@ -1948,7 +1901,7 @@ make
 For some strange reasons (?!?), you may be warned that an error occured while documentation generation.\\
 Take it easy, \texttt{make} again!\\
 
-The dynamic libraries (\texttt{.dll} or {.so} ans the executable programs will be created in the \testtt{bin}
+The dynamic libraries (\texttt{.dll} or \texttt{.so} and the executable programs will be created in the \testtt{bin}
 directory of the built tree.
 
 \item choose to install or not your own version.
@@ -2044,14 +1997,14 @@ to the input \texttt{input} of the box named \texttt{box2} \\ \hline
 \texttt{set} & \texttt{<box.input>} \texttt{<value>} &
 Sets the input \texttt{input} of 
 the box named \texttt{box} to the value \texttt{value}.
-There must exist an \texttt{adaptor} 
+An \texttt{adaptor} must exist
 in the packages loaded which converts a \texttt{std::string} 
 to the type of the input \texttt{input}. \\ \hline 
 
 \texttt{print} & \texttt{<string>} & 
 Prints the string after substituting each token of the form \texttt{\$box.output\$} by the adaptation to string of the value of the 
 output \texttt{output} of the box named \texttt{box}. 
-There must exist an \texttt{adaptor} 
+An \texttt{adaptor} must exist
 in the packages loaded which converts 
 the type of the output \texttt{output}
 to a \texttt{std::string}.
@@ -2063,9 +2016,9 @@ If needed the boxes
 connected to its inputs 
 are also processed recursively (pipeline processing).\\ \hline 
 \texttt{exec} & \texttt{freeze} & 
allows to block execution commands while keeping definition commands active.\\ \hline 
Allows to block execution commands while keeping definition commands active.(This one is not for end user)\\ \hline 
 \texttt{exec} & \texttt{unfreeze} & 
turns back to 'normal' mode.\\ \hline 
Turns back to 'normal' mode (This one is not for end user).\\ \hline 
 \end{tabular}
 \end{table}
 % ==========================================
@@ -2085,11 +2038,11 @@ are also processed recursively (pipeline processing).\\ \hline
 \hline
 Command & Parameters & Effect \\ \hline
 
-\texttt{author} & - & 
-Adds the string <string> to the author information of the black box being defined \\ \hline 
+\texttt{author} &  \texttt{<author-name>} & 
+Adds the string \texttt{<author-name>} to the author information of the black box being defined \\ \hline 
 
-\texttt{category} & - & 
-  Adds the string <string> to the category information of the black box being defined \\ \hline 
+\texttt{category} & \texttt{<category-name>} & 
+  Adds the string \texttt{<category-name>} to the category information of the black box being defined \\ \hline 
 
 \texttt{help} & - & 
 Prints help on available commands \\ \hline 
@@ -2111,13 +2064,19 @@ Prints help (with full description) on the type of box
 \texttt{box-type}. 
 The box type must belong to a package which has been previously loaded \\ \hline 
 
+& \texttt{<debug-directive>} & 
+[expr|-C|-D] 
+  Prints debug info on living bbtk objects containing the string \texttt{expr} (default expr=''). 
+         \texttt{-C} checks the factory integrity.
+        \texttt{-D} turns on objects debug info after main ends\\ \hline 
+
 \texttt{include} & \texttt{<file-name>} & 
 Includes and executes the content of the file named \texttt{file-name} 
 exactly like if you were typing its content at the place were the 
 \texttt{include} command is. \\ \hline 
 
 \texttt{load} & \texttt{<package-name>} & 
-Loads the package \texttt{package-name}\\ \hline 
+Loads the package \texttt{package-name} (use it only if you know that you won't work with complex black boxes) \\ \hline 
 
 \texttt{include} & \texttt{<package-name>} & 
 Loads the package \texttt{package-name} and includes all the complex black boxes that comes with it \\ \hline 
@@ -2140,7 +2099,7 @@ Sets the level of verbosity of \bbi for the category of messages
 \texttt{reset} & - & Deletes all boxes and unloads all packages so 
 that \bbi gets back to its initial state \\ \hline 
 
-\texttt{quit} & - & Exits the interpreter\\ \hline 
+\texttt{quit} & - & Exits the interpreter (Don't use it under \bbStudions)\\ \hline 
 
 \end{tabular}
 \end{table}
@@ -2206,6 +2165,11 @@ The box \texttt{box} must already have been created in the complex box and of co
 \label{Package_Browser}
 % ==========================================
 
+
+You can run it using the tool bar of the 'Command' part.
+
+See figure \ref{Package_Browser}.
+
 \begin{figure}[!ht]
 \caption{\label{Package_Browser}The Package Browser}
 \begin{center}
@@ -2213,13 +2177,81 @@ The box \texttt{box} must already have been created in the complex box and of co
 \end{center}
 \end{figure}
 
+It allows you to query informations about what you can find in the packages (boxes and applications), using several criterions
+(warning : it's case sensitive, i.e \texttt{Button} will give different results thn \texttt{button} ...)
+\begin {itemize}
+\item Pakages :\\
+All the boxes and applications held in a given package (e.g. \texttt{wxvtk}, \texttt{std}, ...)
+\item Name :\\
+You can query on a subpart of the name of a box or an application (e.g. \texttt{DICOM})
+\item Description :\\
+You can query on a substring of the description of a box or an application (e.g. \texttt{utton} : user wants to get all
+the\texttt{Button} as well as the \texttt{button} )
+\item Category :\\
+You can query on a sub part of the category name of a box or an application (e.g. \texttt{3D})
+\item Input Type :\\
+You can query all the boxes or applications that have at least one Input entry of the given type (e.g. \texttt{int})
+\item Output Type :\\
+You can query all the boxes or applications that have at least one Output entry of the given type (e.g. \texttt{int})
+\item Input Nature :\\
+You can query all the boxes or applications that have at least one Input entry of the given nature (e.g. \texttt{signal})
+\item Output Nature :\\
+You can query all the boxes or applications that have at least one Output entry of the given nature (e.g.
+\texttt{signal},\texttt{file name})
+\end {itemize}
+
+
+All these criterions are \emph{AND}ed while the query process.\\
+You can get the whole description of a given box or application clicking on its name.
+
+
 % ==========================================
 \vspace{0.5cm}\hrule \\
 \section{Using third party Package}
 \label{Third_Party_Package}
 % ==========================================
 
+You will have to update the \emph{bbtk\_config.xml} file.\\
+To know where it is stored, just click on \texttt{Config} button of the \texttt{Command} part toolbar.
+
+You'll get something like :
+
+\begin{verbatim}
+=============
+ Configuration
+ =============
+ bbtk_config.xml    : [/home/jpr/Creatis/bbtk/binLIN/bin/bbtk_config.xml]
+ Documentation Path : [/home/jpr/Creatis/bbtk/binLIN/bin/../share/bbtk/doc]
+ Data Path          : [/home/jpr/Creatis/bbtk/binLIN/bin/../share/bbtk/data]
+ Temp Directory     : [/home/jpr/Creatis/bbtk/binLIN]
+ File Separator     : [/]
+ BBS Paths   
+ --- [.]
+ --- [/home/jpr/Creatis/bbtk/binLIN/bin/../share/bbtk/bbs]
+ --- [/home/jpr/Creatis/bbtk/binLIN/share/bbtk/bbs]
+ PACKAGE Paths : 
+ --- [.]
+ --- [/home/jpr/Creatis/bbtk/binLIN/bin]
+ --- [/home/jpr/Creatis/bbtk/binLIN/bin/../lib]
+ --- [/home/jpr/Creatis/bbtk/binLIN/bin]
+ --- [/home/jpr/Creatis/bbtk/binLIN/bin\Debug]
+ --- [/home/jpr/Creatis/bbtk/binLIN/bin\Release] 
+\end{verbatim}
+
+(depending on who you are, and whether \texttt{bbStudio} is installed or not.)\\
+
+Just use your favourite text editor to add :
+\begin{itemize}
+\item
+ at the end of the \texttt{BBS Paths} part 
+ the name of the directory that contains the \texttt{.bbs} scripts of the package you
+want to use,
+\item at the end of the \texttt{PACKAGE Paths} part
+ the name of the directory that contains the dynamic libraries (\texttt{.dll} or \texttt{.so}) of the package
+\end{itemize}
 
+If you want (and sure you will) to be able to use the Help tools as well on the features provided by this package, you must use the
+option \texttt{Generate index}  in the menu \texttt{Tools} of the \texttt{Files} part toolbar.  
 % ==========================================
 \vspace{0.5cm}\hrule \\
 \section{Using black boxes in \CPP programs}
@@ -2289,7 +2321,8 @@ int main(int argv, char* argc[])
       // Execution pipeline
       // ------------------
       
-      // We have to pass the 'factory', in order to call automatically an adaptor, if necessary.
+      // We have to pass the 'factory', in order to call automatically an adaptor,
+      // if necessary.
       bbtk::Connection::Pointer s2t      = bbtk::Connection::New(slider,"Out",
                                                            text,"In",
                                                            factory);