From 1d5111d5487f38d1cde7dcff7f1474189548acaf Mon Sep 17 00:00:00 2001 From: jean-pierre roux Date: Wed, 15 Oct 2008 14:07:02 +0000 Subject: [PATCH] Last fixes (until next one) --- kernel/doc/bbtkUsersGuide/bbtkUsersGuide.tex | 563 +++++++++---------- 1 file changed, 280 insertions(+), 283 deletions(-) diff --git a/kernel/doc/bbtkUsersGuide/bbtkUsersGuide.tex b/kernel/doc/bbtkUsersGuide/bbtkUsersGuide.tex index 6444ae5..d5503f6 100644 --- a/kernel/doc/bbtkUsersGuide/bbtkUsersGuide.tex +++ b/kernel/doc/bbtkUsersGuide/bbtkUsersGuide.tex @@ -465,7 +465,7 @@ The source code of the script \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. +The deafuault behaviour is to inform, only when cursor is released. \begin{verbatim} new OutputText text \end{verbatim} @@ -473,23 +473,23 @@ We create a \texttt{OutputText} called \emph{text} (in which slider value will be displayed) \begin{verbatim} -new LayoutLine layout + 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 + 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 + 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 (\texttt{In}) \begin{verbatim} -exec layout + 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. @@ -579,7 +579,7 @@ Available commands : \end{verbatim} To get help on a particular command type \texttt{help }, -for example : +for example: \begin{verbatim} > help author \end{verbatim} @@ -699,7 +699,7 @@ you get something like : \end{verbatim} Now the interpreter knows the package \texttt{std} and the black boxes it provides, -such as the \texttt{'Add'} box, the \texttt{'ConcatStrings'} box, and so on. Remark that the +such as the \texttt{Add} box, the \texttt{ConcatStrings} box, and so on. Remark that the content of \texttt{std} may vary from one version to another as new black boxes might be added to it. If you type : @@ -709,7 +709,7 @@ If you type : You'll get a text help, in the 'Message' part : \begin{verbatim} -Black Box S +Black Box Adds its inputs By : laurent.guigues@creatis.insa-lyon.fr Categories : atomic box;math; @@ -737,7 +737,7 @@ An html version of all the guides is browsable in the \texttt{Help} part of \bbS application, just using already existing boxes. \item {\bf\emph{Package Developper's Guide}} : Step to step How-to for programmer who wants to create his own black boxes/packages. - \item {\bf\emph{Developper's Guide}} : For bbtk kernel developpers only. (This one is probabely not very much + \item {\bf\emph{Developper's Guide}} : For bbtk kernel developpers only. (This one is probably not very much up-to-date, since we spend more time in developping than writing documentation that's not of user concern). \item {\bf\emph{Reference Manual}} : Contains a exaustive description of all the features for all the commands. \item {\bf\emph{Booklet}} : Vade mecum. @@ -786,15 +786,16 @@ An html version of all the guides is browsable in the \texttt{Help} part of \bbS \item{example}\\ It's just a (simple) example, for programmers, on how to use a given feature. \item{demo}\\ - It can be a 'good looking' (a.k.a 'sexy') example on some sophisticated work. + It can be a 'good looking' (a.k.a 'sexy') example on some sophisticated work, done only by using \texttt{bbtk} + boxes. \item{application}\\ - It's a Final application, end user intended (e.g. Subscale a huge volume, Crop a DICOM image, etc) + It's a Final application, end user intended (e.g. Subscale a huge volume witout loading it in memory, Crop a DICOM image, etc) \end {itemize} \item{widget}\\ Piece of graphical interface (based on \texttt{wxWidgets}) \item{Dicom}\\ Dicom medical image related box. - \item{viewer}\\ + \item{viewer} \item{read/write} \item{mesh} \item{3D Object creator} @@ -861,42 +862,43 @@ At last, let's have a look at \bbStudio menu.(See figure \ref{themenu}) \end{figure} \begin {itemize} - \item{File} + \item{\texttt{File}} \begin {itemize} - \item{Open the bbtk configuration file} - \item{Quit} + \item{\texttt{Open the bbtk configuration file}} + \item{\texttt{Quit}} \end {itemize} - \item{Tools} + \item{\texttt{Tools}} \begin {itemize} - \item{Create package} : + \item{\texttt{Create package}} : Provides a graphical interface to help Package developper to create a new empty package. - \item{Create black box} + \item{\texttt{Create black box}} Provides a graphical interface to help Package developper to create a new empty black box, and add it to an already existing package. - \item{Show last image graph} - \item{Regenerate package doc} : + \item{\texttt{Show last image graph}} + \item{\texttt{Regenerate package doc}} : if user was supplied new black boxes, and added them to an already existing package, he can update the package documentation, in order to benefit all the features of the Help mechanisms. - \item{Regenerate boxes list} : + \item{\texttt{Regenerate boxes list}} : if user wants to update only boxes list (quicker) - \item{Regenerate all} + \item{\texttt{Regenerate all}} User wants to rebuild the whole documentation. \end {itemize} - \item{Options} + \item{\texttt{Options}} \begin {itemize} - \item{Reset before running} Before running, all the already boxes are destroyed, all the already loaded packages are unloaded (this is the recomended option). + \item{\texttt{Reset before running}} Before running, all the already boxes are destroyed, all the already loaded packages are unloaded (this is the recomended option). \end {itemize} - \item{Windows} + \item{\texttt{Windows}} User may decide, for any reason of his own, to hide one or more pannels: \begin {itemize} - \item{Show 'Files' panel} - \item{Show 'Help' panel} - \item{Show 'Command' panel} - \item{Show 'Messages' panel} - \item{Launch Package browser} The package browser is a stand alone application. This can be achieved, too, using the lower tool bar, button 'Start Package Browser' + \item{\texttt{Show 'Files' panel}} + \item{\texttt{Show 'Help' panel}} + \item{\texttt{Show 'Command' panel}} + \item{\texttt{Show 'Messages' panel}} + \item{\texttt{Launch Package browser}} The package browser is a stand alone application. This can be achieved, too, + using the lower tool bar : button \texttt{Start Package Browser}. \item{} \end {itemize} - \item{About} + \item{\texttt{About}} \begin {itemize} - \item{About} Info about \texttt{bbStudio}. + \item{\texttt{About}} : Info about \texttt{bbStudio}. \end {itemize} \end {itemize} % ========================================== @@ -919,8 +921,8 @@ holding the script. You'll see it, in the '\texttt{Files}' part.\\ \\ You may run it, using the lower toolbar. \\ - \texttt{WARNING :} if the script contains one or more \texttt{LayoutSplit} - object, you will have to resize the sub windows. \\ \\ + %\texttt{WARNING :} if the script contains one or more \texttt{LayoutSplit} +% object, you will have to resize the sub windows. \\ \\ You may modify, save or save-as the current script, using the lower toolbar.\\ \\ You may have a look at the graphical representation of the pipeline (sorry, right now, to modify the pipeline, you have to modify the script; @@ -1060,7 +1062,7 @@ box itself displays something in its processing). It just processes the box if needed. This command is used to execute boxes that do not have any output, such as boxes that write something to a file or, display a -graphical interface, and so on. +graphical interface, and so on. \newline %To exit \bbi, type : %\begin{verbatim} @@ -1068,6 +1070,8 @@ graphical interface, and so on. %Good bye ! %\end{verbatim} + + % ========================================== \hrule @@ -1439,8 +1443,9 @@ and you can use it like any other box, for example type : 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}\emph{x} if there are more than one 'natural -entry'. - +entry' +. +\newline % ========================================== \hrule \paragraph{Summary} @@ -2047,8 +2052,56 @@ make install Linux users : Don't forget to \texttt{sudo} before. \end{itemize} % ========================================== -\subsubsection{\bbtk configuration file and search paths} -\label{bbi-more-on-configuration} + + +\newpage + + + +% ========================================== +%\vspace{0.5cm}\hrule \\ + +\section{Using third party Package} +\label{Third_Party_Package} +% ========================================== + +% ========================================== +\subsection{The configuration file} +\label{The_configuration_file} +% ========================================== + +First, have a glance at the Configuration, just clicking 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.)\\ + +Note the two main parts : \texttt{BBS Paths} and \texttt{PACKAGE Paths} +\subsection{How bbStudio uses the Configuration file} +\label{How_bbStudio_uses_the_Configuration_file} + At start, \bbi tries to open an \texttt{xml} configuration file named \texttt{bbtk\_config.xml}. @@ -2069,43 +2122,208 @@ typically \texttt{C:\\...}. a new one in the \texttt{.bbtk} directory. \end{enumerate} -Once created, you can edit the \texttt{bbtk\_config.xml} file located -in your \texttt{.bbtk} directory. It contains : -\begin{file}{bbtk\_config.xml} +To use a third party Package, you will have to update it.\\ + +\subsection{Modifying the Configuration file} +\label{Modifying_the_Configuration_file} + +Just use the \texttt{Open bbtk Config file} option of the \texttt{Files} of the \bbStudio menu. + +You will get something like : \begin{verbatim} - - - - - /usr/local/lib - - - $ + Sets the search directories in the build tree + + /home/jpr/Creatis/bbtk/binLIN/share/bbtk/bbs + /home/jpr/Creatis/bbtk/binLIN/bin +# For windows + /home/jpr/Creatis/bbtk/binLIN/bin\Debug + /home/jpr/Creatis/bbtk/binLIN/bin\Release +# + +# + /home/jpr/Creatis/bbtk/binLIN \end{verbatim} -\end{file} -You can add pathes to +To use a nex Package : +\begin{itemize} +\item {} +After the already existing \texttt{xml} tags +\texttt{bbs\_path} + (i.e. the lines begining by + \texttt{} + %bbs_path +and ending by +\texttt{}), +you can add paths to : +\begin{itemize} +\item A custom folder in which to search for \texttt{.bbs} scripts (\texttt{include} command of \bbins) by adding + an \texttt{xml} tag:\\ + \texttt{} +\emph{complete\_path\_to\_scripts\_folder} +\texttt{<\/bbs\_path>}. +\end{itemize} + +\item {} +After the already existing tags +\texttt{package\_path} + (i.e. the lines begining by + \texttt{package\_path} + %bbs_path +and ending by +\texttt{/package\_path}), +you can add paths to : \begin{itemize} -\item A custom folder in which to search for \texttt{.bbs} scripts (\texttt{include} command of \bbi) by adding an \texttt{xml} tag : -\texttt{complete\_path\_to\_folder<\/bbs\_path>}. -\item A custom folder in which to search for packages (\texttt{load} command of \bbi) by adding an \texttt{xml} tag : -\texttt{complete\_path\_to\_folder<\/package\_path>}. +\item A custom folder in which to search for packages (the dynamic libraries + (\texttt{.dll} or \texttt{.so}, called with the \texttt{load} command of \bbins) by adding an \texttt{xml} tag :\\ +\texttt{} +\emph{complete\_path\_to\_dynamic\_library\_folder} +\texttt{<\/package\_path>}. +\end{itemize} \end{itemize} +%\end{itemize} +% ========================================== +\subsection{Updating the documentation} +\label{Updating_the_documentation} +% ========================================== +If you want (and sure you will) to be able to use the Help tools as well as the features provided by this package, + you must use the +option \texttt{Regenerate package doc} in the menu \texttt{Tools} of \texttt{bbStudio}.\\ +You'll be prompted for the Package name. Avoid using the \texttt{-a} option (Regenerate all), since it's time consumming. + +If you want (and sure you will) to benefit the features of Box indexing + you must use the +option \texttt{Regenerate Boxes Lists} in the menu \texttt{Tools} of \texttt{bbStudio}.\\ + + +% ========================================== +\subsection{Using the package} +\label{Using_the_package} +% ========================================== + +The only thing you have to do is to \texttt{load} the package, within the script, or from the +\texttt{Command} part, and enjoy the black boxes it contains. + +% ========================================== +\subsection{Packages you'll probably want to use } +\label{Packages_you_ll_want_to_use} +% ========================================== +\begin {itemize} + +\item{\texttt{creaContours}} \\ +Provides sophisticated widgets for managing 3D R.O.I. (Regions od interest) +\item{\texttt{creaImageIO}} \\ +Allows browsing, selectionning, ordering directories containing images of almost any type +(including DICOM) +\end {itemize} + \newpage + +% ========================================== +%\vspace{0.5cm}\hrule \\ +\section{Using black boxes in \CPP programs} +\label{cpp} +% ========================================== + +A very useful feature is that you may use any black box within a \CPP program without worrying about \texttt{wxWigets} main window.\\ + +Let's look a the following bbs script : + +\begin{verbatim} +# Load the packages +load std +load wx + +# Create the Objects +new Slider slider +new OutputText text +new LayoutLine layout + +# Graphical pipeline +connect slider.Widget layout.Widget1 +connect text.Widget layout.Widget2 + +# Execution pipeline +connect slider.BoxChange text.BoxExecute +connect slider.Out text.In + +# Go! +exec layout +\end{verbatim} + +User wants to create a slider and an output text, within a LayoutLine, and display the slider value in the output text.\\ +Think about the (little!) nightmare to code the same, in 'raw C++', using wxWidgets.\\ + +Using the standalone application \texttt{bbc} you just 'convert' the script. + +\begin{verbatim} +#include +#include +#include +#include + +int main(int argv, char* argc[]) +{ + // we need to intanciate a bbtk::Factory to be aware of the adaptors + bbtk::Factory::Pointer factory = bbtk::Factory::New(); + + // Load the packages + // ---------------- + factory->LoadPackage("std"); + factory->LoadPackage("wx"); + + // Create the Objects + // ------------------ + bbwx::Slider::Pointer slider = bbwx::Slider::New("slider"); + bbwx::OutputText::Pointer text = bbwx::OutputText::New("text"); + bbwx::LayoutLine::Pointer layout = bbwx::LayoutLine::New("layout"); + + // Graphical pipeline + bbtk::Connection::Pointer c1 = bbtk::Connection::New(slider,"Widget", + layout,"Widget1"); + + bbtk::Connection::Pointer c2 = bbtk::Connection::New(text,"Widget", + layout,"Widget2"); + + // Execution pipeline + // ------------------ + + // 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); + bbtk::Connection::Pointer c3 = bbtk::Connection::New(slider,"BoxChange", + text,"BoxExecute"); + layout->bbSetInputWinDialog(true); + + // Go! + // --- + layout->bbExecute(); + + } + catch (bbtk::Exception e) + { + bbtk::MessageManager::SetMessageLevel("Error",1); + e.Print(); + } +} +\end{verbatim} + +%\bibliography{all} % ========================================== -\subsection{Language reference} +\section{Language reference} \label{bbi-reference} % ========================================== % ========================================== -\subsubsection{Pipeline creation and execution related commands} +\subsection{Pipeline creation and execution related commands} \label{bbi-reference-creation-execution} % ========================================== See table \ref{bbi-reference-box} @@ -2162,7 +2380,7 @@ are also processed recursively (pipeline processing).\\ \hline \newpage % ========================================== -\subsubsection{Interpreter related commands} +\subsection{Interpreter related commands} \label{bbi-reference-interpreter} % ========================================== See table \ref{tabbbi-reference-interpreter_1} and \ref{tabbbi-reference-interpreter_2} @@ -2256,7 +2474,7 @@ that \bbi gets back to its initial state \\ \hline \newpage % ========================================== -\subsubsection{Complex black box definition related commands} +\subsection{Complex black box definition related commands} \label{bbi-reference-black-box-definition} % ========================================== @@ -2308,227 +2526,6 @@ The box \texttt{box} must already have been created in the complex box and of co \newpage -% ========================================== -%\vspace{0.5cm}\hrule \\ - - - -% ========================================== -%\vspace{0.5cm}\hrule \\ - -\section{Using third party Package} -\label{Third_Party_Package} -% ========================================== - -% ========================================== -\subsection{The configuration file} -\label{The_configuration_file} -% ========================================== - -First, have a glance at the Configuration, just clicking 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.)\\ - -Note the two main parts : \texttt{BBS Paths} and \texttt{PACKAGE Paths} - -To use a third party Package, you will have to update the \emph{bbtk\_config.xml} file.\\ - -Just use the \texttt{Open bbtk Config file} option of the \texttt{Files} of the \bbStudio menu. - -You will get something like : -\begin{verbatim} - - Sets the search directories in the build tree - - /home/jpr/Creatis/bbtk/binLIN/share/bbtk/bbs - /home/jpr/Creatis/bbtk/binLIN/bin -# For windows - /home/jpr/Creatis/bbtk/binLIN/bin\Debug - /home/jpr/Creatis/bbtk/binLIN/bin\Release -# - -# - /home/jpr/Creatis/bbtk/binLIN - -\end{verbatim} - -%\begin{itemize} -%\item { -After the already existing tags -%bbs\_path -\texttt{bbs\_path} - (i.e. the lines begining by - \texttt{bbs\_path} - %bbs_path -and ending by -\texttt{/bbs\_path}) - -%/bbs_path}) - add a new one with the name of the directory that contains the - \texttt{.bbs} scripts of the package you -want to use.\\ -x -%\item { -After the already existing tags \texttt{package\_path} (i.e. the lines begining by \texttt{package\_path} - and ending by \texttt{/package\_path}) - add a new one with the name of the directory that contains the the dynamic libraries - (\texttt{.dll} or \texttt{.so}) of the package you want to use. - -%\end{itemize} -% ========================================== -\subsection{Updating the documentation} -\label{Updating_the_documentation} -% ========================================== -If you want (and sure you will) to be able to use the Help tools as well as the features provided by this package, - you must use the -option \texttt{Regenerate package doc} in the menu \texttt{Tools} of \texttt{bbStudio}.\\ -You'll be prompted for the Package name. Avoid using the \texttt{-a} option (Regenerate all), since it's time consumming. - -If you want (and sure you will) to benefit the features of Box indexing - you must use the -option \texttt{Regenerate Boxes Lists} in the menu \texttt{Tools} of \texttt{bbStudio}.\\ - - -% ========================================== -\subsection{Using the package} -\label{Using_the_package} -% ========================================== - -The only thing you have to do is to \texttt{load} the package, within the script, or from the -\texttt{Command} part, and enjoy the black boxes it contains. - -% ========================================== -\subsection{Packages you'll probably want to use } -\label{Packages_you_ll_want_to_use} -% ========================================== -\begin {itemize} - -\item{creaContours}\\ -Provides sophisticated widgets for managing 3D R.O.I. (Regions od interest) -\item{creaImageIO} -Allows browsing, selectionning, ordering directories containing images of almost any type -(including DICOM) -\end {itemize} - -\newpage - -% ========================================== -%\vspace{0.5cm}\hrule \\ -\section{Using black boxes in \CPP programs} -\label{cpp} -% ========================================== - -A very useful feature is that you may use any black box within a \CPP program without worrying about \texttt{wxWigets} main window.\\ - -Let's look a the following bbs script : - -\begin{verbatim} -# Load the packages -load std -load wx - -# Create the Objects -new Slider slider -new OutputText text -new LayoutLine layout - -# Graphical pipeline -connect slider.Widget layout.Widget1 -connect text.Widget layout.Widget2 - -# Execution pipeline -connect slider.BoxChange text.BoxExecute -connect slider.Out text.In - -# Go! -exec layout -\end{verbatim} - -User wants to create a slider and an output text, within a LayoutLine, and display the slider value in the output text.\\ -Think about the (little!) nightmare to code the same, in 'raw C++', using wxWidgets.\\ - -Using the standalone application \text{bbc} you just 'convert' the script. - -\begin{verbatim} -#include -#include -#include -#include - -int main(int argv, char* argc[]) -{ - // we need to intanciate a bbtk::Factory to be aware of the adaptors - bbtk::Factory::Pointer factory = bbtk::Factory::New(); - - // Load the packages - // ---------------- - factory->LoadPackage("std"); - factory->LoadPackage("wx"); - - // Create the Objects - // ------------------ - bbwx::Slider::Pointer slider = bbwx::Slider::New("slider"); - bbwx::OutputText::Pointer text = bbwx::OutputText::New("text"); - bbwx::LayoutLine::Pointer layout = bbwx::LayoutLine::New("layout"); - - // Graphical pipeline - bbtk::Connection::Pointer c1 = bbtk::Connection::New(slider,"Widget", - layout,"Widget1"); - - bbtk::Connection::Pointer c2 = bbtk::Connection::New(text,"Widget", - layout,"Widget2"); - - // Execution pipeline - // ------------------ - - // 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); - bbtk::Connection::Pointer c3 = bbtk::Connection::New(slider,"BoxChange", - text,"BoxExecute"); - layout->bbSetInputWinDialog(true); - - // Go! - // --- - layout->bbExecute(); - - } - catch (bbtk::Exception e) - { - bbtk::MessageManager::SetMessageLevel("Error",1); - e.Print(); - } -} -\end{verbatim} - -%\bibliography{all} - \section{Install and run time issues} \begin {itemize} -- 2.45.1