Diana Software
LGuiSessionWriter.cc
Go to the documentation of this file.
1 #include "LGuiSessionWriter.hh"
2 #include "QFileReader.hh"
3 #include "QFileWriter.hh"
4 #include "QGTextFileKeys.hh"
5 #include "QGuiSession.hh"
6 #include "QObject.hh"
7 #include <sstream>
8 
10 
11 using std::endl;
12 using std::list;
13 using std::string;
14 using std::stringstream;
15 
17 {
18 }
19 
21 {
22  Close();
23 }
24 
25 QError LGuiSessionWriter::SetQObject(const string& name, const std::string& className, const QObject* obj, const std::string& descr)
26 {
28  if (const QGuiSession *session = dynamic_cast<const QGuiSession*>(obj)) {
29  fGuiSessionFile << CANVAS_WINDOW_KEY << " " << endl;
30  fGuiSessionFile << NAME_KEY << " " << session->GetName() << endl;
31  list<string> filesList;
32  if (session->GetUseReaderFileList()) {
33  filesList = QReader::GetFilesList();
34  }
35  else {
36  filesList = QFileWriter::GetFileList();
37  }
38  for (list<string>::const_iterator fileIter = filesList.begin(); fileIter != filesList.end(); ++fileIter) {
39  fGuiSessionFile << FILE_KEY << " " << *fileIter << endl;
40  }
41  fGuiSessionFile << endl;
42  session->Dump(fGuiSessionFile);
43  } else {
44  stringstream msg;
45  msg<<"Object \""<< name <<"\" is of type different form QGuiSession so I am not interested in it";
47  err.SetDescription(__FILE__,__LINE__,msg.str());
48  }
49  return err;
50 }
51 
52 QError LGuiSessionWriter::Open(const string& filename, const std::string& opt)
53 {
55  fGuiSessionFile.open(filename.c_str());
56  if (!fGuiSessionFile) {
58  err.SetDescription(filename);
59  }
60  return err;
61 }
62 
64 {
66  fGuiSessionFile.close();
67  return err;
68 }
err
Definition: CheckOF.C:114
Global writer for GUI sessions.
@ QERR_UNKNOWN_ERR
Definition: QError.hh:108
@ QERR_CANNOT_OPEN_FILE
Definition: QError.hh:33
@ QERR_SUCCESS
Definition: QError.hh:27
#define FILE_KEY
#define CANVAS_WINDOW_KEY
#define NAME_KEY
#define REGISTER_GLOBAL_WRITER(clazz, ext)
QError Close()
Close file, called by QGlobalWriterDispatcher.
QError Open(const std::string &filename, const std::string &opt="")
Open file, called by QGlobalWriterDispatcher.
QError SetQObject(const std::string &name, const std::string &className, const Diana::QObject *obj, const std::string &descr)
std::ofstream fGuiSessionFile
error class with error type and description
Definition: QError.hh:115
static const std::list< std::string > & GetFileList()
list of output files
Definition: QFileWriter.hh:99
Abstract class for global writers.
Class to generate session files for the GUI from a Diana module.
Definition: QGuiSession.hh:69
static std::list< std::string > GetFilesList()
list of input files
Definition: QReader.hh:79