1 /*=========================================================================
4 Module: $RCSfile: bbtkTranscriptor.cxx,v $ $
6 Date: $Date: 2008/10/02 07:43:21 $
7 Version: $Revision: 1.13 $
9 Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
10 l'Image). All rights reserved. See Doc/License.txt or
11 http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
13 This software is distributed WITHOUT ANY WARRANTY; without even
14 the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15 PURPOSE. See the above copyright notices for more information.
17 =========================================================================*/
20 * \brief class Transcriptor: level 0 of script execution (code)
23 #include "bbtkTranscriptor.h"
24 #include "bbtkMessageManager.h"
25 #include "bbtkFactory.h"
26 #include "bbtkUtilities.h"
29 //#ifdef _USE_WXWIDGETS_
30 //#include <wx/textdlg.h>
33 //#include "bbtkWxBlackBox.h"
35 #include "bbtkConfigurationFile.h"
39 Transcriptor::Pointer Transcriptor::New(const std::string& filename)
41 return MakePointer(new Transcriptor(filename));
47 Transcriptor::Transcriptor(const std::string& filename)
52 bbtkDebugMessageInc("Kernel",9,"Transcriptor::Transcriptor()" <<std::endl);
54 //std::ofstream *m_Fp = new std::ofstream();
55 m_Fp.open (filename.c_str(), std::ios::out );
57 std::string file,path;
58 file = bbtk::Utilities::ExtractScriptName(filename,path);
60 m_Fp << "#include \"bbtkExecuter.h\"" << std::endl;
61 m_Fp << "void " << file << "(bbtk::Executer::Pointer e)"<<std::endl;
62 m_Fp << "{"<<std::endl;
65 #ifdef _USE_WXWIDGETS_
66 m_Fp << "#ifdef _USE_WXWIDGETS_"<<std::endl;
67 m_Fp << "#include \"bbtkWx.h\""<< std::endl<<std::endl;
68 m_Fp << "class myApp : public wxApp"<<std::endl;
69 m_Fp << "{"<<std::endl;
70 m_Fp << "public:"<<std::endl;
71 m_Fp << " bool OnInit( );"<<std::endl;
72 m_Fp << " int OnExit() { delete e; return true; }"<<std::endl;
73 m_Fp << " bbtk::Executer* e;"<<std::endl;
74 m_Fp << "};"<<std::endl<<std::endl;
75 m_Fp << "IMPLEMENT_APP(myApp);"<<std::endl<<std::endl;
76 m_Fp << "bool myApp::OnInit( )"<<std::endl;
77 m_Fp << "{"<<std::endl;
78 m_Fp << " wxApp::OnInit();"<<std::endl;
79 m_Fp << "#ifdef __WXGTK__"<<std::endl;
80 m_Fp << " //See http://www.wxwindows.org/faqgtk.htm#locale"<<std::endl;
81 m_Fp << " setlocale(LC_NUMERIC, \"C\");"<<std::endl;
82 m_Fp << "#endif"<<std::endl;
83 m_Fp << " wxInitAllImageHandlers();"<<std::endl;
84 m_Fp << " bbtk::Wx::CreateInvisibleTopWindow();"<<std::endl;
85 m_Fp << " try {"<<std::endl;
86 m_Fp << " e = new bbtk::Executer();"<<std::endl;
88 m_Fp << "main(int argc, char *argv[]) {" << std::endl;
89 m_Fp << " bbtk::Executer *e = new bbtk::Executer();" << std::endl;
92 bbtkDebugDecTab("Kernel",9);
98 Transcriptor::~Transcriptor()
101 bbtkDebugMessageInc("Kernel",9,"Transcriptor::~Transcriptor()" <<std::endl);
103 #ifdef _USE_WXWIDGETS_
104 m_Fp << " }"<<std::endl;
105 m_Fp << " catch (bbtk::Exception err)"<<std::endl;
106 m_Fp << " {"<<std::endl;
107 m_Fp << " err.Print();"<<std::endl;
108 m_Fp << " } "<<std::endl;
109 m_Fp << " return true;"<<std::endl;
110 m_Fp << "}" << std::endl;
111 m_Fp << "#endif"<<std::endl;
113 m_Fp << "}" << std::endl;
116 m_Fp << "}" << std::endl;
119 bbtkDebugDecTab("Kernel",9);
123 void Transcriptor::Reset()
125 m_Fp << " e->Reset( );" << std::endl;
128 void Transcriptor::SetWorkspaceName( const std::string& name )
131 m_Fp << " e->SetWorkspaceName( \"" << name << "\" );" << std::endl;
134 void Transcriptor::BeginPackage (const std::string &name)
136 m_Fp << " e->BeginPackage( \"" << name << "\" );" << std::endl;
139 void Transcriptor::EndPackage()
141 m_Fp << " e->EndPackage( );" << std::endl;
144 void Transcriptor::Define (const std::string &name,
145 const std::string &pack,
146 const std::string &scriptfilename)
148 m_Fp << " e->Define(\"" << name << "\", \"" << pack << "\", \""
149 << scriptfilename << "\" );" << std::endl;
152 void Transcriptor::SetCurrentFileName (const std::string &name )
154 m_Fp << " e->SetCurrentFileName( \"" << name << "\" );" << std::endl;
157 void Transcriptor::EndDefine ()
159 m_Fp << " e->EndDefine( );" << std::endl;
162 void Transcriptor::Kind(const std::string& kind)
164 m_Fp << " e->Kind( \""<<kind<<"\" );" << std::endl;
168 void Transcriptor::Create ( const std::string& nodeType,
169 const std::string& nodeName)
171 m_Fp << " e->Create(\"" << nodeType << "\", \""
172 << nodeName << "\");" << std::endl;
176 void Transcriptor::Destroy (const std::string &nodeName)
178 m_Fp << " e->Destroy(" << nodeName << ");" << std::endl;
181 void Transcriptor::Connect (const std::string &nodeFrom,
182 const std::string &outputLabel,
183 const std::string &nodeTo,
184 const std::string &inputLabel)
186 m_Fp << " e->Connect(\""<< nodeFrom << "\", \""
187 << outputLabel << "\", \""
188 << nodeTo << "\", \"" << inputLabel<< "\");" << std::endl;
192 void Transcriptor::Execute (const std::string &nodeName)
194 m_Fp << " e->Execute(\"" << nodeName << "\");" << std::endl;
197 void Transcriptor::DefineInput ( const std::string &name,
198 const std::string &box,
199 const std::string &input,
200 const std::string& help)
203 m_Fp << " e->DefineInput(\""<< name << "\", \"" << box << "\", \""
204 << input << "\", \"" << help << "\");" << std::endl;
208 void Transcriptor::DefineOutput ( const std::string &name,
209 const std::string &box,
210 const std::string &output,
211 const std::string& help)
213 m_Fp << " e->DefineOutput(\""<< name << "\", \"" << box << "\", \""
214 << output << "\", \"" << help << "\");" << std::endl;
218 void Transcriptor::Set (const std::string &box,
219 const std::string &input,
220 const std::string &value)
222 m_Fp << " e->Set(\""<< box << "\", \"" << input
223 << "\", \"" << value << "\");"
227 std::string Transcriptor::Get(const std::string &box,
228 const std::string &output)
231 m_Fp << " e->Get(\""<< box << "\", \"" << output << "\");"
237 void Transcriptor::Author(const std::string &authorName)
240 m_Fp << " e->Author(\"" << authorName << "\");" << std::endl;
243 void Transcriptor::Category(const std::string &category)
245 m_Fp << " e->Category(\"" << category << "\");" << std::endl;
248 void Transcriptor::Description(const std::string &d)
250 m_Fp << " e->Description(\"" << d << "\");" << std::endl;
253 /// prints the list of the boxes of the current descriptor
254 void Transcriptor::PrintBoxes()
256 m_Fp << " e->PrintBoxes( );" << std::endl;
259 std::string Transcriptor::ShowGraph(const std::string &nameblackbox,
260 const std::string &detailStr,
261 const std::string &levelStr,
262 const std::string &output_html,
263 const std::string &custom_header,
264 const std::string &custom_title,
265 bool system_display )
268 m_Fp << " e->ShowGraph(\"" << nameblackbox << "\", \""
269 << detailStr << "\", \""
270 << levelStr << "\", \""
271 << output_html << "\", \""
272 << custom_header << "\", \""
273 << custom_title << "\");"
279 std::string Transcriptor::ShowGraphInstances(const std::string &nameblackbox, int detail, int level,
286 void Transcriptor::ShowRelations(const std::string &nameblackbox, const std::string &detailStr, const std::string &levelStr)
291 void Transcriptor::Print(const std::string & message)
293 m_Fp << " e->Print(\"" <<message<<"\");"<<std::endl;
298 void Transcriptor::SetMessageLevel(const std::string &kind,
301 m_Fp << " e->SetMessageLevel(\"" <<kind<<"\","<<level<<");"<<std::endl;
305 void Transcriptor::HelpMessages()
307 m_Fp << " e->HelpMessages();"<<std::endl;
310 void Transcriptor::LoadPackage(const std::string &name )
312 m_Fp << " e->LoadPackage(\"" <<name<<"\");"<<std::endl;
316 void Transcriptor::UnLoadPackage(const std::string &name )
318 m_Fp << " e->UnLoadPackage(\"" <<name<<"\");"<<std::endl;
321 //==========================================================================
322 std::string Transcriptor::GetObjectName() const
324 return std::string("Transcriptor");
326 //==========================================================================
328 //==========================================================================
329 std::string Transcriptor::GetObjectInfo() const
334 //==========================================================================
336 //==========================================================================
337 size_t Transcriptor::GetObjectSize() const
339 size_t s = Superclass::GetObjectSize();
340 s += Transcriptor::GetObjectInternalSize();
343 //==========================================================================
344 //==========================================================================
345 size_t Transcriptor::GetObjectInternalSize() const
347 size_t s = sizeof(Transcriptor);
350 //==========================================================================
351 //==========================================================================
352 size_t Transcriptor::GetObjectRecursiveSize() const
354 size_t s = Superclass::GetObjectRecursiveSize();
355 s += Transcriptor::GetObjectInternalSize();
358 //==========================================================================