\begin{verbatim}
bbtk
creaContours
- creaReaders
- creaViewers
+ creaImageIO
+ creaLib
gdcm
+\end{verbatim}
+which depend on the OpenSource libraries:
+\begin{verbatim}
itk
vtk
wxWidgets
\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} :
\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}.
%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}.
\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.
\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}
\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
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.
\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. \\
\end{center}
\end{figure}
+\newpage
+
You will be asked to select a Box category (See figure \ref{BoxCategories}); \\
Select \texttt{example}.
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'}
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
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
\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}
\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}
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.
\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}.
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}
% ==========================================
\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
\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
\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}
\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}
\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}
// 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);