Program: bbtk
Module: $RCSfile: bbtkExecuter.cxx,v $ $
Language: C++
- Date: $Date: 2008/01/22 15:02:00 $
- Version: $Revision: 1.1 $
+ Date: $Date: 2008/02/06 10:53:02 $
+ Version: $Revision: 1.9 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
* \brief class Executer: level 0 of script execution (code)
*/
-#include "bbtkExecuter.h"
+#include "bbtkExecuter.h"
#include "bbtkMessageManager.h"
#include "bbtkFactory.h"
#include "bbtkUtilities.h"
-
#include <fstream>
#ifdef _USE_WXWIDGETS_
/**
*
*/
- Executer::Executer()
+ Executer::Executer()
: mPackage(0),
mRoot(0),
mNoExecMode(false),
{
//VirtualExec();
- bbtkDebugMessageInc("Core",9,"Executer::Executer()" <<std::endl);
+ bbtkDebugMessageInc("Kernel",9,"Executer::Executer()" <<std::endl);
Reset();
- bbtkDebugDecTab("Core",9);
+ bbtkDebugDecTab("Kernel",9);
}
-
+
/**
*
*/
Executer::~Executer()
{
- bbtkDebugMessageInc("Core",9,"Executer::~Executer()" <<std::endl);
+ bbtkDebugMessageInc("Kernel",9,"Executer::~Executer()" <<std::endl);
if (mRoot)
{
mPackage->UnRegisterBlackBox("workspace");
{
GetGlobalFactory()->UnLoadPackage("user");
}
- bbtkDebugDecTab("Core",9);
+ bbtkDebugDecTab("Kernel",9);
}
*/
void Executer::Reset()
{
- bbtkDebugMessageInc("Core",9,"Executer::Reset()" <<std::endl);
+ bbtkDebugMessageInc("Kernel",9,"Executer::Reset()" <<std::endl);
// The 'user' package must be closed before all other
// because box destructors must not be unloaded when bb are deleted!
mRoot = new ComplexBlackBoxDescriptor("workspace"); //,f);
mRoot->AddToAuthor("bbi (internal)");
mRoot->AddToDescription("User's workspace");
- mCurrent.push_back(CBBDefinition(mRoot,"user"));
+ mOpenDefinition.push_back(CBBDefinition(mRoot,"user"));
// Register it into the user package
mPackage->RegisterBlackBox(mRoot);
// Insert the user package in the factory
InsertPackage(mPackage);
-
- bbtkDebugDecTab("Core",9);
+ mOpenPackage.push_back(mPackage);
+ bbtkDebugDecTab("Kernel",9);
}
/// changes the workspace name
mPackage->ChangeBlackBoxName( mRoot->GetTypeName(), n );
}
+ void Executer::BeginPackage (const std::string &name)
+ {
+ bbtkDebugMessageInc("Kernel",9,"Executer::BeginPackage(\""<<name<<"\")"
+ <<std::endl);
+ Package* p;
+ try
+ {
+ p = GetGlobalFactory()->GetPackage(name);
+ }
+ catch (Exception e)
+ {
+ p = new Package(name,
+ "",
+ "",
+ "",
+ BBTK_STRINGIFY_SYMBOL(BBTK_VERSION));
+ InsertPackage(p);
+ }
+ mOpenPackage.push_back(p);
+ }
+
+ void Executer::EndPackage()
+ {
+ if (mOpenPackage.size()>1) mOpenPackage.pop_back();
+ }
void Executer::Define (const std::string &name,
const std::string &pack,
const std::string &scriptfilename)
{
- bbtkDebugMessageInc("Core",9,"Executer::Define(\""<<name<<
+ bbtkDebugMessageInc("Kernel",9,"Executer::Define(\""<<name<<
","<<pack<<"\")"
<<std::endl);
ComplexBlackBoxDescriptor* b = new ComplexBlackBoxDescriptor(name);
b->SetScriptFileName(scriptfilename);
- mCurrent.push_back( CBBDefinition( b, pack ) );
+ mOpenDefinition.push_back( CBBDefinition( b, pack ) );
- bbtkDebugDecTab("Core",9);
+ bbtkDebugDecTab("Kernel",9);
}
+ /// Sets the file name to use for the current definition
+ /// (Used to set it after the Define command)
+ void Executer::SetCurrentFileName (const std::string &name )
+ {
+ mOpenDefinition.back().box->SetScriptFileName(name);
+ }
+
+
void Executer::EndDefine ()
{
- bbtkDebugMessageInc("Core",9,"Executer::EndDefine(\""
+ bbtkDebugMessageInc("Kernel",9,"Executer::EndDefine(\""
<<Current()->GetTypeName()<<"\")"
<<std::endl);
// Does current package exist ?
- std::string pname(mCurrent.back().package);
Package* p;
- try
+ std::string pname(mOpenDefinition.back().package);
+ if (pname.size()>0)
+ {
+ try
{
- p = GetGlobalFactory()->GetPackage(pname);
+ p = GetGlobalFactory()->GetPackage(pname);
}
- catch (Exception e)
+ catch (Exception e)
{
- p = new Package(pname,
+ p = new Package(pname,
"",
"",
"",
BBTK_STRINGIFY_SYMBOL(BBTK_VERSION));
- InsertPackage(p);
+ InsertPackage(p);
}
-
+ }
+ else
+ {
+ p = mOpenPackage.back();
+ }
p->RegisterBlackBox(Current());
-
- mCurrent.pop_back();
+
+ mOpenDefinition.pop_back();
}
/*
void Executer::Remove (const std::string &nodeName)
- {
+ {
// Current()->RemoveBlackBox(nodeName);
}
*/
const std::string &nodeTo,
const std::string &inputLabel)
{
- Current()->Connect(nodeFrom, outputLabel, nodeTo, inputLabel);
+ Current()->Connect(nodeFrom, outputLabel, nodeTo, inputLabel);
}
-
+
/**
*
*/
}
#endif
}
-
+
Current()->DefineInput(name,box,input,help);
-
+
}
/**
{
Current()->DefineOutput(name,box,output,help);
}
-
+
/**
*
*/
}
}
-
/**
*
*/
Current()->AddToAuthor(authorName,Current()==mRoot);
}
-
+ void Executer::Category(const std::string &category)
+ {
+ Current()->AddToCategory(category,Current()==mRoot);
+ }
void Executer::Description(const std::string &d)
{
bbtkDecTab("Help",1);
}
-
std::string Executer::ShowGraph(const std::string &nameblackbox,
const std::string &detailStr,
const std::string &levelStr,
const std::string &custom_title,
bool system_display )
{
-
int detail = atoi(detailStr.c_str());
int level = atoi(levelStr.c_str());
// No output provided : automatic generation
if (output_html.length() == 0)
{
- // Don't pollute the file store with "doc_tmp" directories ...
- std::string default_doc_dir = ConfigurationFile::GetInstance().Get_default_doc_tmp();
+ // Don't pollute the file store with "temp_dir" directories ...
+ std::string default_doc_dir = ConfigurationFile::GetInstance().Get_default_temp_dir();
char c = default_doc_dir.c_str()[strlen(default_doc_dir.c_str())-1];
std::string directory = default_doc_dir;
if (c != '/' && c !='\\') directory = directory + "/";
- directory = directory + "doc_tmp";
+ directory = directory + "temp_dir";
filename_rootHtml = directory + "/" + "User.html";
simplefilename_rootHtml = "User.html" ;
// Creating directory
std::string command0("mkdir \"" +directory + "\"");
- system( command0.c_str() );
+ system( command0.c_str() );
relative_link = false;
}
+
+ Package* p;
+ try
+ {
+ p = GetGlobalFactory()->GetPackage(nameblackbox);
+ }
+ catch (Exception e)
+ {
+ p = mPackage;
+ }
// Generating documentation-help of workspace
- mPackage->SetDocURL(filename_rootHtml);
- mPackage->SetDocRelativeURL(simplefilename_rootHtml);
+ p->SetDocURL(filename_rootHtml);
+ p->SetDocRelativeURL(simplefilename_rootHtml);
+
+ p->CreateHtmlPage(filename_rootHtml,"bbi","user package",custom_header,custom_title,detail,level,relative_link);
- mPackage->CreateHtmlPage(filename_rootHtml,"bbi","user package",custom_header,custom_title,detail,level,relative_link);
-
std::string page = filename_rootHtml;
/*
try
- {
- ShowGraphTypes(nameblackbox);
- }
- catch (bbtk::Exception a)
- {
- std::cout <<"EXC"<<std::endl;
- page = ShowGraphInstances(nameblackbox,detail,level,system_display);
- }
+ {
+ ShowGraphTypes(nameblackbox);
+ }
+ catch (bbtk::Exception a)
+ {
+ std::cout <<"EXC"<<std::endl;
+ page = ShowGraphInstances(nameblackbox,detail,level,system_display);
+ }
*/
return page;
}
BlackBox* blackbox=NULL;
if (nameblackbox==".")
- {
- blackbox=Current()->GetPrototype();
- }
+ {
+ blackbox=Current()->GetPrototype();
+ }
else
- {
- blackbox = Current()->GetPrototype()->bbFindBlackBox(nameblackbox);
- }
+ {
+ blackbox = Current()->GetPrototype()->bbFindBlackBox(nameblackbox);
+ }
std::string page;
if (blackbox)
{
- // Don't pollute the file store with "doc_tmp" directories ...
- std::string default_doc_dir = ConfigurationFile::GetInstance().Get_default_doc_tmp();
+ // Don't pollute the file store with "temp_dir" directories ...
+ std::string default_doc_dir = ConfigurationFile::GetInstance().Get_default_temp_dir();
char c = default_doc_dir.c_str()[strlen(default_doc_dir.c_str())-1];
std::string directory = default_doc_dir;
if (c != '/' && c !='\\') directory = directory + "/";
- directory = directory + "doc_tmp";
+ directory = directory + "temp_dir";
- //std::string directory("doc_tmp");
+ //std::string directory("temp_dir");
std::string filename(directory + "/" + "bbtk_graph_pipeline");
std::string filename_html(filename+".html");
std::string command0("mkdir \""+directory + "\"");
}
return page;
}
-
void Executer::ShowRelations(const std::string &nameblackbox, const std::string &detailStr, const std::string &levelStr)
{
/*
/// sets the level of message
- void Executer::Message(const std::string &category,
+ void Executer::Message(const std::string &kind,
const std::string& level)
{
int l;
sscanf(level.c_str(),"%d",&l);
- bbtk::MessageManager::SetMessageLevel(category,l);
+ bbtk::MessageManager::SetMessageLevel(kind,l);
}
*/