X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=kernel%2Fsrc%2FbbtkTranscriptor.cxx;h=f425a0eb07be0e22eaebdaa1307fd29fbcec167f;hb=cfad95b6e08e6e53846ffcda7fbc5932065f2c47;hp=419fbd5a1098040178e9b96071225eac6490dd9b;hpb=84eba27729ddaf09a031d66eb28212988369d3f9;p=bbtk.git diff --git a/kernel/src/bbtkTranscriptor.cxx b/kernel/src/bbtkTranscriptor.cxx index 419fbd5..f425a0e 100644 --- a/kernel/src/bbtkTranscriptor.cxx +++ b/kernel/src/bbtkTranscriptor.cxx @@ -1,20 +1,40 @@ +/* + # --------------------------------------------------------------------- + # + # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image + # pour la SantÈ) + # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton + # Previous Authors : Laurent Guigues, Jean-Pierre Roux + # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil + # + # This software is governed by the CeCILL-B license under French law and + # abiding by the rules of distribution of free software. You can use, + # modify and/ or redistribute the software under the terms of the CeCILL-B + # license as circulated by CEA, CNRS and INRIA at the following URL + # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html + # or in the file LICENSE.txt. + # + # As a counterpart to the access to the source code and rights to copy, + # modify and redistribute granted by the license, users are provided only + # with a limited warranty and the software's author, the holder of the + # economic rights, and the successive licensors have only limited + # liability. + # + # The fact that you are presently reading this means that you have had + # knowledge of the CeCILL-B license and that you accept its terms. + # ------------------------------------------------------------------------ */ + + /*========================================================================= - Program: bbtk - Module: $RCSfile: bbtkTranscriptor.cxx,v $ $ + Module: $RCSfile: bbtkTranscriptor.cxx,v $ Language: C++ - Date: $Date: 2008/02/14 13:48:13 $ - Version: $Revision: 1.2 $ - - Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de - l'Image). All rights reserved. See Doc/License.txt or - http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details. - - This software is distributed WITHOUT ANY WARRANTY; without even - the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR - PURPOSE. See the above copyright notices for more information. - + Date: $Date: 2012/11/16 08:49:01 $ + Version: $Revision: 1.19 $ =========================================================================*/ + + + /** * \file * \brief class Transcriptor: level 0 of script execution (code) @@ -36,645 +56,338 @@ namespace bbtk { + Transcriptor::Pointer Transcriptor::New(const std::string& filename) + { + return MakePointer(new Transcriptor(filename)); + } + /** * */ - Transcriptor::Transcriptor(std::string filename) - : mPackage(0), - mRoot(0), - mNoExecMode(false), + Transcriptor::Transcriptor(const std::string& filename) + : mDialogMode(NoDialog) { //VirtualExec(); - bbtkDebugMessageInc("Kernel",9,"Transcriptor::Transcriptor()" <UnRegisterBlackBox("workspace"); - delete mRoot; - } - if (mPackage) - { - GetGlobalFactory()->UnLoadPackage("user"); - } + + bbtkDebugMessageInc("kernel",9,"~Transcriptor()" <Reset( );" << std::endl; + } - m_Fp << "e->Reset( );" << std::endl; - /* - bbtkDebugMessageInc("Kernel",9,"Transcriptor::Reset()" <UnRegisterBlackBox(mRoot->GetTypeName()); - delete mRoot; - } - if (mPackage) - { - GetGlobalFactory()->UnLoadPackage("user"); - } - GetGlobalFactory()->Reset(); - // Create user package - mPackage = new Package("user","internal to bbi", - "User defined black boxes", - "", - BBTK_STRINGIFY_SYMBOL(BBTK_VERSION)); - // Create user workspace - mRoot = new ComplexBlackBoxDescriptor("workspace"); //,f); - mRoot->AddToAuthor("bbi (internal)"); - mRoot->AddToDescription("User's workspace"); - mOpenDefinition.push_back(CBBDefinition(mRoot,"user")); - // Register it into the user package - mPackage->RegisterBlackBox(mRoot); - // Insert the user package in the factory - InsertPackage(mPackage); - mOpenPackage.push_back(mPackage); - bbtkDebugDecTab("Kernel",9); - */ + void Transcriptor::Clear() + { + m_Fp << " e->Clear( );" << std::endl; } - /// changes the workspace name - void Transcriptor::SetWorkspaceName( const std::string& n ) + void Transcriptor::SetWorkspaceName( const std::string& name ) { - m_Fp << "// ==> SetWorkspaceName() called here" << std::endl; - // mPackage->ChangeBlackBoxName( mRoot->GetTypeName(), n ); + m_Fp << " e->SetWorkspaceName( \"" << name << "\" );" << std::endl; } void Transcriptor::BeginPackage (const std::string &name) { - m_Fp << "// ==> BeginPackage() called here" << std::endl; - /* - bbtkDebugMessageInc("Kernel",9,"Executer::BeginPackage(\""<GetPackage(name); - } - catch (Exception e) - { - p = new Package(name, - "", - "", - "", - BBTK_STRINGIFY_SYMBOL(BBTK_VERSION)); - InsertPackage(p); - } - mOpenPackage.push_back(p); - */ + m_Fp << " e->BeginPackage( \"" << name << "\" );" << std::endl; } void Transcriptor::EndPackage() { - m_Fp << "// ==> EndPackage() called here" << std::endl; - // if (mOpenPackage.size()>1) mOpenPackage.pop_back(); + m_Fp << " e->EndPackage( );" << std::endl; } void Transcriptor::Define (const std::string &name, - const std::string &pack, - const std::string &scriptfilename) - { - m_Fp << "// on Define, Define() called here" << std::endl; - /* - bbtkDebugMessageInc("Kernel",9,"Executer::Define(\""<SetScriptFileName(scriptfilename); - mOpenDefinition.push_back( CBBDefinition( b, pack ) ); - - bbtkDebugDecTab("Kernel",9); - */ + const std::string &pack, + const std::string &scriptfilename) + { + m_Fp << " e->Define(\"" << name << "\", \"" << pack << "\", \"" + << scriptfilename << "\" );" << std::endl; } - /// Sets the file name to use for the current definition - /// (Used to set it after the Define command) void Transcriptor::SetCurrentFileName (const std::string &name ) - { - m_Fp << "// ==>on Include : SetCurrentFileName( ) called here" << std::endl; - // mOpenDefinition.back().box->SetScriptFileName(name); + m_Fp << " e->SetCurrentFileName( \"" << name << "\" );" << std::endl; } void Transcriptor::EndDefine () { - m_Fp << "// ==> on EndDefine, EndDefine( ); called here " << std::endl; - - /* - bbtkDebugMessageInc("Kernel",9,"Executer::EndDefine(\"" - <GetTypeName()<<"\")" - <0) - { - try - { - p = GetGlobalFactory()->GetPackage(pname); - } - catch (Exception e) - { - p = new Package(pname, - "", - "", - "", - BBTK_STRINGIFY_SYMBOL(BBTK_VERSION)); - InsertPackage(p); - } - } - else - { - p = mOpenPackage.back(); - } - p->RegisterBlackBox(Current()); - - mOpenDefinition.pop_back(); - */ + m_Fp << " e->EndDefine( );" << std::endl; + } + void Transcriptor::Kind(const std::string& kind) + { + m_Fp << " e->Kind( \""<Add(nodeType,nodeName);\" - m_Fp << "e->Add("\" << nodeType << "\", \"" << nodeName << "\");" << std::endl; + m_Fp << " e->Create(\"" << nodeType << "\", \"" + << nodeName << "\");" << std::endl; } - /* - void Transcriptor::Remove (const std::string &nodeName) + void Transcriptor::Destroy (const std::string &nodeName) { - /// \todo Remove - // Current()->RemoveBlackBox(nodeName); - // m_Fp << "e->Remove(" << nodeName << ");" << std::endl; + m_Fp << " e->Destroy(" << nodeName << ");" << std::endl; } - */ -/** - * - */ - void Transcriptor::Connect (const std::string &nodeFrom, - const std::string &outputLabel, - const std::string &nodeTo, - const std::string &inputLabel) - { - //Current()->Connect(nodeFrom, outputLabel, nodeTo, inputLabel); - m_Fp << "e->Connect("<< nodeFrom << "\", \"" << outputLabel << "\", \"" - << nodeTo << "\", \"" << inputLabel<< "\");" << std::endl; - } - - /** - * - */ - void Transcriptor::Update (const std::string &nodeName) // would 'Execute' be more meaningfull ? - { - // if in root - if (Current()==mRoot) - { - if (!mNoExecMode) - { - //Current()->GetPrototype()->bbGetBlackBox(nodeName)->bbExecute(true); - m_Fp << "e->GetPrototype()->bbGetBlackBox("\" << nodeName << "\", true );" << std::endl; - } - } - else - { - //Current()->AddToExecutionList(nodeName) ; - m_Fp << "e->AddToExecutionList("\" << nodeName << "\");" << std::endl; - } + void Transcriptor::Connect (const std::string &nodeFrom, + const std::string &outputLabel, + const std::string &nodeTo, + const std::string &inputLabel) + { + m_Fp << " e->Connect(\""<< nodeFrom << "\", \"" + << outputLabel << "\", \"" + << nodeTo << "\", \"" << inputLabel<< "\");" << std::endl; } - -/** - * - */ - void Transcriptor::DefineInput ( const std::string &name, - const std::string &box, - const std::string &input, - const std::string& help) - { - // If the input is defined in the Root box - if (Current()==mRoot) - { - m_Fp << "// ==> Some extra work to do when Current()==mRoot" << std::endl; - - } - m_Fp << "e->DefineInput(\""<< name << "\", " << box << ", " - << input << ", \"" << help << "\");" << std::endl; - - - /* - // If the input is defined in the Root box - if (Current()==mRoot) - { - // If the dialog mode is set to NoDialog - // and the user passed the name in the Inputs map - // then the associated value is set to the box.input - // This is the way command line parameters are passed to the Root box - if (mDialogMode == NoDialog) - { - // find if name is in mInputs - std::map::iterator i; - i = mInputs.find(name); - if (i!=mInputs.end()) { - Set(box,input,(*i).second); - } - } - // If the dialog mode is set to TextDialog - // The user is prompted for the value - else if (mDialogMode == TextDialog) - { - std::cout << name << "="; - std::string ans; - std::cin >> ans; - Set(box,input,ans); - } -#ifdef _USE_WXWIDGETS_ - // If the dialog mode is set to GraphicalDialog - // A dialog box is pop up - else if (mDialogMode == GraphicalDialog) - { - std::string mess("Enter the value of '"); - mess += name; - mess += "' ("; - mess += help; - mess += ")"; - std::string title(name); - title += " ?"; - - std::string ans = wx2std ( wxGetTextFromUser( std2wx (mess), std2wx(title))); - Set(box,input,ans); - } -#endif - } - Current()->DefineInput(name,box,input,help); -*/ + void Transcriptor::Execute (const std::string &nodeName) + { + m_Fp << " e->Execute(\"" << nodeName << "\");" << std::endl; + } + + void Transcriptor::DefineInput ( const std::string &name, + const std::string &box, + const std::string &input, + const std::string& help) + { + + m_Fp << " e->DefineInput(\""<< name << "\", \"" << box << "\", \"" + << input << "\", \"" << help << "\");" << std::endl; } + - /** - * - */ - void Transcriptor::DefineOutput ( const std::string &name, - const std::string &box, - const std::string &output, - const std::string& help) - { - // Current()->DefineOutput(name,box,output,help); - m_Fp << "e->DefineOutput(\""<< name << "\", \"" << box << "\", \"" - << output << "\", \"" << help << "\");" << std::endl; - } - - /** - * - */ + void Transcriptor::DefineOutput ( const std::string &name, + const std::string &box, + const std::string &output, + const std::string& help) + { + m_Fp << " e->DefineOutput(\""<< name << "\", \"" << box << "\", \"" + << output << "\", \"" << help << "\");" << std::endl; + } + + void Transcriptor::Set (const std::string &box, - const std::string &input, - const std::string &value) + const std::string &input, + const std::string &value) { - - m_Fp << "// ==> Set() called here" << std::endl; -/* - BlackBox* b = Current()->GetPrototype()->bbGetBlackBox(box); - // Looks for the adaptor - - if ( b->bbGetInputType(input) != typeid(std::string) ) - { - BlackBox* a = - NewAdaptor(typeid(std::string), - b->bbGetInputType(input), - "tmp"); - if (!a) - { - bbtkError("No <"<< - TypeName(b->bbGetInputType(input)) - <<"> to found"); - } - std::string v(value); - a->bbSetInput("In",v); - a->bbExecute(); - b->bbSetInput(input,a->bbGetOutput("Out")); - a->bbDelete(); - } - else - { - std::string v(value); - b->bbSetInput(input,v); - } -*/ - } - - /** - * - */ + m_Fp << " e->Set(\""<< box << "\", \"" << input + << "\", \"" << value << "\");" + << std::endl; + } + std::string Transcriptor::Get(const std::string &box, - const std::string &output) + const std::string &output) { - m_Fp << "// ==> Get() called here" << std::endl; -/* - BlackBox* b = Current()->GetPrototype()->bbGetBlackBox(box); - // Looks for the adaptor - if (b->bbGetOutputType(output) != typeid(std::string)) - { - BlackBox* a = - NewAdaptor( - b->bbGetOutputType(output), - typeid(std::string), - "tmp"); - if (!a) - { - bbtkError("No <"<< - TypeName(b->bbGetOutputType(output)) - <<"> to found"); - } - b->bbExecute(); - - a->bbSetInput("In",b->bbGetOutput(output)); - a->bbExecute(); - std::string r = a->bbGetOutput("Out").unsafe_get(); - //std::string v = *((std::string*)a->bbGetOutput("Out")) ; - // std::cout << a->bbGetOutput("Out").unsafe_get() - // << std::endl; - //std::string v(value); - //b->bbSetInput(input,a->bbGetOutput("Out")); - a->bbDelete(); - return r; - } - else - { - b->bbExecute(); - return b->bbGetOutput(output).unsafe_get(); - // std::string v = *((std::string*)b->bbGetOutput(output)) ; - // std::cout << b->bbGetOutput("Out").unsafe_get() - // << std::endl; - // b->bbSetInput(input,&v); - } -*/ + m_Fp << " e->Get(\""<< box << "\", \"" << output << "\");" + << std::endl; + return ""; } void Transcriptor::Author(const std::string &authorName) { - //Current()->AddToAuthor(authorName,Current()==mRoot); - if (Current()==mRoot) - m_Fp << "e->AddToAuthor(\"" << authorName << "\", true)" << std::endl; - else - m_Fp << "e->AddToAuthor(\"" << authorName << "\", false)" << std::endl; + + m_Fp << " e->Author(\"" << authorName << "\");" << std::endl; } void Transcriptor::Category(const std::string &category) - { - //Current()->AddToCategory(category,Current()==mRoot); - if (Current()==mRoot) - m_Fp << "e->AddToCategory(\"" << category << "\", true)" << std::endl; - else - m_Fp << "e->AddToCategory(\"" << category << "\", false)" << std::endl; + { + m_Fp << " e->Category(\"" << category << "\");" << std::endl; } void Transcriptor::Description(const std::string &d) { - // Current()->AddToDescription(d,Current()==mRoot); - if (Current()==mRoot) - m_Fp << "e->AddToDescription(\"" << d << "\", true)" << std::endl; - else - m_Fp << "e->AddToDescription(\"" << d << "\", false)" << std::endl; + m_Fp << " e->Description(\"" << d << "\");" << std::endl; } - /// prints the list of the boxes of the current descriptor - void Transcriptor::PrintBoxes() - { - m_Fp << "// ==> :PrintBoxes() called here" << std::endl; - /* - bbtkMessageInc("Help",1,"The black box descriptor \"" - <GetTypeName()<<"\" contains : "<PrintBlackBoxes(); - bbtkDecTab("Help",1); - */ + void Transcriptor::PrintHelpListBoxes() + { + m_Fp << " e->PrintBoxes( );" << std::endl; } -// =========================End of Battelfield ======================================================================== - - std::string Transcriptor::ShowGraph(const std::string &nameblackbox, - const std::string &detailStr, + std::string Transcriptor::ShowGraph(const std::string &nameblackbox, + const std::string &detailStr, const std::string &levelStr, const std::string &output_html, const std::string &custom_header, const std::string &custom_title, bool system_display ) { - int detail = atoi(detailStr.c_str()); - int level = atoi(levelStr.c_str()); - - std::string filename_rootHtml (output_html) ; - std::string simplefilename_rootHtml ( Utilities::get_file_name(output_html)); - bool relative_link = true; + m_Fp << " e->ShowGraph(\"" << nameblackbox << "\", \"" + << detailStr << "\", \"" + << levelStr << "\", \"" + << output_html << "\", \"" + << custom_header << "\", \"" + << custom_title << "\");" + << std::endl; - // No output provided : automatic generation - if (output_html.length() == 0) - { - // 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 + "temp_dir"; - - filename_rootHtml = directory + "/" + "User.html"; - simplefilename_rootHtml = "User.html" ; - - // Creating directory - std::string command0("mkdir \"" +directory + "\""); - system( command0.c_str() ); - - relative_link = false; - } - - Package* p; - try - { - p = GetGlobalFactory()->GetPackage(nameblackbox); - } - catch (Exception e) - { - p = mPackage; - } - // Generating documentation-help of workspace - p->SetDocURL(filename_rootHtml); - p->SetDocRelativeURL(simplefilename_rootHtml); - - p->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"<GetPrototype(); - } - else - { - blackbox = Current()->GetPrototype()->bbFindBlackBox(nameblackbox); - } - - std::string page; +void Transcriptor::PrintHelpBlackBox(const std::string &nameblackbox, const std::string &detailStr, const std::string &levelStr) + { + + } - if (blackbox) - { - // 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 + "/"; + void Transcriptor::Print(const std::string & message) + { + m_Fp << " e->Print(\"" <BBtk graph diagram\n"; - s << " \n\n"; - if ( blackbox->bbGetName()=="workspacePrototype" ) - { - s << "
Current workspace
"; - } else { - s << "
" << blackbox->bbGetName()<< "
"; - } - - blackbox->bbInsertHTMLGraph( s, detail, level, true, directory, false ); - s << "\n"; - } - s.close(); - - // 2. Starting Browser - if (system_display) system( command2.c_str() ); - } - else - { - bbtkMessageInc("Help",1,"No black box: \"" - <SetMessageLevel(\"" <GetPrototype(); - } else { - blackbox = Current()->GetPrototype()->bbFindBlackBox(nameblackbox); - } - - if (blackbox) - { - found=true; - blackbox->bbShowRelations(blackbox,detail,level); //,mFactory); - } + m_Fp << " e->HelpMessages();"<LoadPackage(\"" <UnLoadPackage(\"" <"); - } + //========================================================================== + std::string Transcriptor::GetObjectName() const + { + return std::string("Transcriptor"); + } + //========================================================================== + + //========================================================================== + std::string Transcriptor::GetObjectInfo() const + { + std::stringstream i; + return i.str(); } + //========================================================================== - /* - /// sets the level of message - void Transcriptor::Message(const std::string &kind, - const std::string& level) + //========================================================================== +size_t Transcriptor::GetObjectSize() const +{ + size_t s = Superclass::GetObjectSize(); + s += Transcriptor::GetObjectInternalSize(); + return s; + } + //========================================================================== + //========================================================================== +size_t Transcriptor::GetObjectInternalSize() const +{ + size_t s = sizeof(Transcriptor); + return s; + } + //========================================================================== + //========================================================================== + size_t Transcriptor::GetObjectRecursiveSize() const { - int l; - sscanf(level.c_str(),"%d",&l); - bbtk::MessageManager::SetMessageLevel(kind,l); + size_t s = Superclass::GetObjectRecursiveSize(); + s += Transcriptor::GetObjectInternalSize(); + return s; } - */ + //========================================================================== + + + //========================================================================== + void Transcriptor::SetTypeOfScript_Application() + { + } + //========================================================================== }//namespace