Program: bbtk
Module: $RCSfile: bbtkInterpreter.cxx,v $ $
Language: C++
- Date: $Date: 2008/02/05 13:23:46 $
- Version: $Revision: 1.25 $
+ Date: $Date: 2008/02/12 12:55:16 $
+ Version: $Revision: 1.29 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
// mFactory = new bbtk::Factory();
mExecuter = new bbtk::Executer();
+ //mExecuter = new bbtk::Transcriptor("GeneratedProgram.txt");
//mExecuter->SetFactory(mFactory);
// Builds the commands dict
info.category = "include";
info.argmin = 1;
- info.argmax = 1;
+ info.argmax = 2;
info.code = cInclude;
- info.syntax = "include <filename>";
- info.help = "Includes the file <filename>";
+ info.syntax = "include <filename> [source]";
+ info.help = "Includes the file <filename>.\n 'source' : If the keyword 'source' is provided then informs bbi that the included file is the source of the current box definition (Advanced; used to get the right 'Include' field in html doc of packages 'appli' scripts).";
mCommandDict[info.category] = info;
info.category = "quit";
*
*/
void Interpreter::InterpretFile( const std::string& filename,
- bool use_configuration_file)
+ bool use_configuration_file)
{
bbtkDebugMessageInc("Interpreter",9,"Interpreter::InterpretFile(\""<<filename<<"\")"<<std::endl);
case cDefine :
if (mFileName.size()>0)
{
- filename = Utilities::get_file_name(mFileName.back());
+ filename = mIncludeFileName.back(); //Utilities::get_file_name(mFileName.back());
}
if (words.size()==2)
{
{
SwitchToFile(words[1], true ); // true : better pass use_config_file
}
+ // if 'source' was given
+ if (words.size()==3)
+ {
+ this->mExecuter->SetCurrentFileName(words[1]);
+ }
break;
case cLoad:
// It's a user intended message.
// Please don't remove it.
bbtkMessage("Interpreter",1,
- "look for : [" << name
+ "look for : [" << name
<< "] (use_configuration_file == TRUE)" << std::endl);
script_paths = ConfigurationFile::GetInstance().Get_bbs_paths();
}
{
if ((*i).substr((*i).size()-4, 4) != ".bbs")
continue; // ignore non .bbs files
- LoadScript(*i);
+ LoadScript(*i,name);
nbBssFiles++;
}
if (nbBssFiles==0)
if ((*i).substr((*i).size()-4, 4) != ".bbs")
continue; // ignore non .bbs files
- LoadScript(*i);
+ LoadScript(*i,name);
nbBssFiles++;
}
if (nbBssFiles==0)
return;
}
else
- LoadScript(fullPathScriptName);
+ LoadScript(fullPathScriptName,name);
return;
}
//=======================================================================
- void Interpreter::LoadScript( std::string fullPathScriptName)
+ void Interpreter::LoadScript( std::string fullPathScriptName,
+ std::string includeScriptName)
{
if (find(mFileName.begin(),mFileName.end(),fullPathScriptName)
!=mFileName.end())
mFile.push_back(s);
mFileName.push_back(fullPathScriptName);
+ mIncludeFileName.push_back(includeScriptName);
mLine.push_back(0);
return;
}
" Closing file '"<<mFileName.back()<<"'"<<std::endl);
mFileName.pop_back();
+ mIncludeFileName.pop_back();
mLine.pop_back();
bbtkDebugMessage("Interpreter",9," Remains "
<<mFile.size()
bbtkDebugMessage("Interpreter",9,
" Closing file '"<<mFileName.back()<<"'"<<std::endl);
mFileName.pop_back();
+ mIncludeFileName.pop_back();
mLine.pop_back();
}
bbtkDebugMessage("Interpreter",9,"EO Interpreter::CloseAllFiles()"
try
{
HelpPackage(words[1]);
+#ifdef _USE_WXWIDGETS_
+ if ( WxConsole::GetInstance() != 0 )
+ {
+ std::string url = ConfigurationFile::GetInstance().Get_url();
+ url += "/bbdoc/" + words[1] + "/index.html";
+ if (Utilities::FileExists(url))
+ {
+ WxConsole::GetInstance()->ShowHtmlPage(url);
+ }
+ }
+#endif
}
catch (bbtk::Exception f)
{
try
{
- HelpBlackBox(words[1]);
- }
- catch (bbtk::Exception g)
- {
- try
- {
- this->mExecuter->ShowRelations(words[1],"0","9999");
- }
- catch (bbtk::Exception h){
- bbtkError("\""<<words[1].c_str()
- <<"\" is not a known command, package, black box type or black box name");
- }
- }
+ std::string package;
+ HelpBlackBox(words[1],package);
+#ifdef _USE_WXWIDGETS_
+ if ( WxConsole::GetInstance() != 0 )
+ {
+ std::string url = ConfigurationFile::GetInstance().Get_url();
+ url += "/bbdoc/" + package + "/index.html";
+ if (Utilities::FileExists(url))
+ {
+ url += "#" + words[1];
+ WxConsole::GetInstance()->ShowHtmlPage(url);
+ }
+ }
+#endif
+ }
+ catch (bbtk::Exception g)
+ {
+ try
+ {
+ this->mExecuter->ShowRelations(words[1],"0","9999");
+ }
+ catch (bbtk::Exception h){
+ bbtkError("\""<<words[1].c_str()
+ <<"\" is not a known command, package, black box type or black box name");
+ }
+ }
}
- }
+ }
}
else if (nbarg==2)
{
const std::string description = cf.Get_description();
const std::string url = cf.Get_url();
const std::string data_path = cf.Get_data_path();
- const std::string default_doc_tmp = cf.Get_default_doc_tmp();
+ const std::string default_temp_dir = cf.Get_default_temp_dir();
const std::string file_separator = cf.Get_file_separator();
const std::vector<std::string>bbs_paths = cf.Get_bbs_paths();
const std::vector<std::string>package_paths = cf.Get_package_paths();
bbtkMessage("Help",1, "bbtk_config.xml : [" << config_xml_full_path << "]" << std::endl);
bbtkMessage("Help",1, "Documentation Url : [" << url << "]" << std::endl);
bbtkMessage("Help",1, "Data Path : [" << data_path << "]" << std::endl);
- bbtkMessage("Help",1, "Default Doc_tmp : [" << default_doc_tmp << "]" << std::endl);
+ bbtkMessage("Help",1, "Default Temp-Dir : [" << default_temp_dir << "]" << std::endl);
bbtkMessage("Help",1, "File Separator : [" << file_separator << "]" << std::endl);
std::vector<std::string>::const_iterator i;