]> Creatis software - bbtk.git/blob - kernel/src/bbtkTranscriptor.cxx
- Finished the Transcriptor
[bbtk.git] / kernel / src / bbtkTranscriptor.cxx
1 /*=========================================================================
2                                                                                 
3   Program:   bbtk
4   Module:    $RCSfile: bbtkTranscriptor.cxx,v $ $
5   Language:  C++
6   Date:      $Date: 2008/03/26 14:47:36 $
7   Version:   $Revision: 1.9 $
8                                                                                 
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.
12
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.
16                                                                                 
17 =========================================================================*/
18 /**
19  *  \file 
20  *  \brief class Transcriptor: level 0 of script execution (code)
21  */
22
23 #include "bbtkTranscriptor.h"
24 #include "bbtkMessageManager.h"
25 #include "bbtkFactory.h"
26 #include "bbtkUtilities.h"
27 #include <fstream>
28
29 //#ifdef _USE_WXWIDGETS_
30 //#include <wx/textdlg.h>
31 //#endif
32
33 //#include "bbtkWxBlackBox.h"
34
35 #include "bbtkConfigurationFile.h"
36
37 namespace bbtk
38 {
39 /**
40  *
41  */
42   Transcriptor::Transcriptor(std::string filename)
43     :
44       mNoExecMode(false),
45       mDialogMode(NoDialog)
46   {
47     //VirtualExec();    
48     bbtkDebugMessageInc("Kernel",9,"Transcriptor::Transcriptor()" <<std::endl);
49  
50      //std::ofstream *m_Fp = new std::ofstream();
51     m_Fp.open (filename.c_str(), std::ios::out );
52
53     std::string file,path;
54     file = bbtk::Utilities::ExtractScriptName(filename,path);
55     
56     m_Fp << "#include \"bbtkExecuter.h\"" << std::endl; 
57     m_Fp << "void " << file << "(bbtk::Executer* e)"<<std::endl;
58     m_Fp << "{"<<std::endl;
59
60     /*
61 #ifdef _USE_WXWIDGETS_
62     m_Fp << "#ifdef _USE_WXWIDGETS_"<<std::endl;
63     m_Fp << "#include \"bbtkWx.h\""<< std::endl<<std::endl;
64     m_Fp << "class myApp : public wxApp"<<std::endl;
65     m_Fp << "{"<<std::endl;
66     m_Fp << "public:"<<std::endl;
67     m_Fp << "  bool OnInit( );"<<std::endl;
68     m_Fp << "  int  OnExit() { delete e; return true; }"<<std::endl;
69     m_Fp << "  bbtk::Executer* e;"<<std::endl;
70     m_Fp << "};"<<std::endl<<std::endl;
71     m_Fp << "IMPLEMENT_APP(myApp);"<<std::endl<<std::endl;
72     m_Fp << "bool myApp::OnInit( )"<<std::endl;
73     m_Fp << "{"<<std::endl;
74     m_Fp << "  wxApp::OnInit();"<<std::endl;
75     m_Fp << "#ifdef __WXGTK__"<<std::endl;
76     m_Fp << "  //See http://www.wxwindows.org/faqgtk.htm#locale"<<std::endl;
77     m_Fp << "  setlocale(LC_NUMERIC, \"C\");"<<std::endl;
78     m_Fp << "#endif"<<std::endl;
79     m_Fp << "  wxInitAllImageHandlers();"<<std::endl;
80     m_Fp << "  bbtk::Wx::CreateInvisibleTopWindow();"<<std::endl;
81     m_Fp << "  try {"<<std::endl;
82     m_Fp << "  e = new bbtk::Executer();"<<std::endl;
83 #else
84     m_Fp << "main(int argc, char *argv[]) {"                << std::endl;
85     m_Fp << "  bbtk::Executer *e = new bbtk::Executer();"   << std::endl;
86 #endif 
87     */
88     bbtkDebugDecTab("Kernel",9);
89  }
90
91 /**
92  *
93  */
94   Transcriptor::~Transcriptor()
95   {
96   
97     bbtkDebugMessageInc("Kernel",9,"Transcriptor::~Transcriptor()" <<std::endl);
98     /*
99 #ifdef _USE_WXWIDGETS_
100     m_Fp << "  }"<<std::endl;
101     m_Fp << "  catch (bbtk::Exception err)"<<std::endl;
102     m_Fp << "  {"<<std::endl;
103     m_Fp << "    err.Print();"<<std::endl;
104     m_Fp << "  } "<<std::endl;
105     m_Fp << "  return true;"<<std::endl;
106     m_Fp << "}"   << std::endl;
107     m_Fp << "#endif"<<std::endl;
108 #else 
109     m_Fp << "}"   << std::endl;
110 #endif
111     */
112     m_Fp << "}"   << std::endl;
113     m_Fp.close();
114
115     bbtkDebugDecTab("Kernel",9);
116   }
117   
118
119   void Transcriptor::Reset()
120   {
121      m_Fp << "  e->Reset( );" << std::endl;
122   }
123
124   void Transcriptor::SetWorkspaceName( const std::string& name )
125   {
126   
127     m_Fp << "  e->SetWorkspaceName( \"" << name << "\" );" << std::endl;
128   }
129
130   void Transcriptor::BeginPackage (const std::string &name)
131   {
132      m_Fp << "  e->BeginPackage( \"" << name << "\" );" << std::endl;
133   }
134
135   void Transcriptor::EndPackage()
136   {
137      m_Fp << "  e->EndPackage( );" << std::endl;
138   }
139
140   void Transcriptor::Define (const std::string &name,
141                              const std::string &pack,
142                              const std::string &scriptfilename)
143   {
144      m_Fp << "  e->Define(\"" << name << "\", \"" <<  pack << "\", \""
145           << scriptfilename  << "\" );" << std::endl;
146   }
147
148   void Transcriptor::SetCurrentFileName (const std::string &name )
149   {
150      m_Fp << "  e->SetCurrentFileName( \"" << name << "\" );" << std::endl;
151   }
152
153   void Transcriptor::EndDefine ()
154   {
155      m_Fp << "  e->EndDefine( );" << std::endl;
156   }
157
158
159   void Transcriptor::Create ( const std::string& nodeType, 
160                               const std::string& nodeName)
161   {
162     m_Fp << "  e->Create(\"" << nodeType << "\", \"" 
163          <<  nodeName << "\");" << std::endl;
164   }
165
166
167   void Transcriptor::Destroy (const std::string &nodeName)
168   {
169     m_Fp << "  e->Destroy(" <<  nodeName << ");" << std::endl;
170   }
171
172   void Transcriptor::Connect (const std::string &nodeFrom,
173                               const std::string &outputLabel,
174                               const std::string &nodeTo, 
175                               const std::string &inputLabel)
176   {
177     m_Fp << "  e->Connect(\""<< nodeFrom << "\", \"" 
178          <<  outputLabel << "\", \""
179          << nodeTo  << "\", \"" << inputLabel<< "\");" << std::endl;
180   }
181
182
183   void Transcriptor::Execute (const std::string &nodeName)
184   {
185      m_Fp << "  e->Execute(\"" << nodeName << "\");" << std::endl;
186   }
187
188   void Transcriptor::DefineInput ( const std::string &name,
189                                    const std::string &box,
190                                    const std::string &input,
191                                    const std::string& help)
192   {
193   
194     m_Fp << "  e->DefineInput(\""<< name << "\", \"" <<  box << "\", \""
195          << input << "\", \"" << help << "\");" << std::endl;
196   }
197
198   
199   void Transcriptor::DefineOutput ( const std::string &name,
200                                     const std::string &box,
201                                     const std::string &output,
202                                     const std::string& help)
203   {
204     m_Fp << "  e->DefineOutput(\""<< name << "\", \"" <<  box << "\", \""
205          << output << "\", \"" << help << "\");" << std::endl;
206   }
207
208  
209   void Transcriptor::Set (const std::string &box,
210                           const std::string &input,
211                           const std::string &value)
212   {
213     m_Fp << "  e->Set(\""<< box << "\", \"" << input
214          << "\", \"" << value << "\");"
215          << std::endl;
216   }
217
218   std::string Transcriptor::Get(const std::string &box,
219                                 const std::string &output)
220   {
221   
222     m_Fp << "  e->Get(\""<< box << "\", \"" << output << "\");"
223          << std::endl;
224     return "";
225   }
226
227
228   void Transcriptor::Author(const std::string &authorName)
229   {
230     
231     m_Fp << "  e->Author(\"" << authorName << "\");" << std::endl;
232   }
233
234   void Transcriptor::Category(const std::string &category)
235   {
236     m_Fp << "  e->Category(\"" << category << "\");" << std::endl;
237   }
238
239   void Transcriptor::Description(const std::string &d)
240   {
241     m_Fp << "  e->Description(\"" << d << "\");" << std::endl;
242   }
243
244   /// prints the list of the boxes of the current descriptor
245   void Transcriptor::PrintBoxes()
246   {
247      m_Fp << "  e->PrintBoxes( );" << std::endl;
248  }
249
250   std::string Transcriptor::ShowGraph(const std::string &nameblackbox,
251                                   const std::string &detailStr,
252                                   const std::string &levelStr,
253                                   const std::string &output_html,
254                                   const std::string &custom_header,
255                                   const std::string &custom_title,
256                                   bool system_display )
257   {
258
259        m_Fp << "  e->ShowGraph(\"" << nameblackbox  << "\", \"" 
260                                       << detailStr     << "\", \""
261                                       << levelStr      << "\", \""
262                                       << output_html   << "\", \""
263                                       << custom_header << "\", \""
264                                       <<  custom_title << "\");"                                     
265                                       << std::endl;
266
267     return ""; 
268   }
269
270    std::string Transcriptor::ShowGraphInstances(const std::string &nameblackbox, int detail, int level,
271                                                bool system_display)
272   {
273     return "";
274   
275   }
276
277 void Transcriptor::ShowRelations(const std::string &nameblackbox, const std::string &detailStr, const std::string &levelStr)
278   {
279      
280   }
281
282   void Transcriptor::Print(const std::string & message)
283   {
284     m_Fp << "  e->Print(\"" <<message<<"\");"<<std::endl;
285   }
286
287
288   
289   void Transcriptor::SetMessageLevel(const std::string &kind,
290                        int level)
291   {
292     m_Fp << "  e->SetMessageLevel(\"" <<kind<<"\","<<level<<");"<<std::endl;
293   }
294   
295
296   void Transcriptor::HelpMessages()
297   {
298     m_Fp << "  e->HelpMessages();"<<std::endl;
299   }
300   
301   void Transcriptor::LoadPackage(const std::string &name )
302   {
303     m_Fp << "  e->LoadPackage(\"" <<name<<"\");"<<std::endl;
304   }
305   
306   
307   void Transcriptor::UnLoadPackage(const std::string &name )
308   {
309     m_Fp << "  e->UnLoadPackage(\"" <<name<<"\");"<<std::endl;
310   }
311
312
313
314 }//namespace