1 #include "vvReadState.h"
2 #include "vvMainWindow.h"
4 #include <qtreewidget.h>
7 #include <QXmlStreamReader>
12 vvReadState::vvReadState() : m_XmlReader(new QXmlStreamReader), m_File(new QFile)
17 vvReadState::~vvReadState()
21 void vvReadState::Run(vvMainWindow* vvWindow, const std::string& file)
26 m_File->setFileName(file.c_str());
27 m_File->open(QIODevice::ReadOnly);
28 m_XmlReader->setDevice(m_File.get());
30 QTreeWidget* tree = m_Window->GetTree();
31 m_TreeItemCount = tree->topLevelItemCount();
37 void vvReadState::ReadTree()
41 while (!m_XmlReader->atEnd()) {
42 m_XmlReader->readNext();
43 value = m_XmlReader->qualifiedName().toString().toStdString();
44 if (m_XmlReader->isStartElement()) {
50 if (m_XmlReader->hasError())
51 std::cout << "Error " << m_XmlReader->error() << " XML " << std::endl;
54 std::string vvReadState::ReadImage()
57 int current_index = -1;
58 std::vector<std::string> files(1);
60 QXmlStreamAttributes attributes = m_XmlReader->attributes();
61 if (!m_XmlReader->hasError())
62 current_index = attributes.value("Index").toString().toInt();
64 current_index += m_TreeItemCount;
66 while (!m_XmlReader->isEndElement() || value != "Image") {
67 m_XmlReader->readNext();
68 value = m_XmlReader->qualifiedName().toString().toStdString();
69 //std::cout << "Value = " << value << std::endl;
70 if (m_XmlReader->isStartElement()) {
71 if (value == "FileName") {
72 files[0] = m_XmlReader->readElementText().toStdString();
73 if (!m_XmlReader->hasError()) {
74 m_Window->LoadImages(files, vvImageReader::IMAGE);
77 else if (current_index >= 0) {
78 if (value == "Fusion")
79 value = ReadFusion(current_index);
80 else if (value == "Overlay")
81 value = ReadOverlay(current_index);
82 else if (value == "Vector")
83 value = ReadVector(current_index);
88 if (!m_XmlReader->hasError())
94 std::string vvReadState::ReadFusion(int index)
96 std::string file, value;
97 while (!m_XmlReader->isEndElement() || value != "Fusion") {
98 m_XmlReader->readNext();
99 value = m_XmlReader->qualifiedName().toString().toStdString();
100 if (m_XmlReader->isStartElement()) {
101 if (value == "FileName") {
102 file = m_XmlReader->readElementText().toStdString();
103 if (!m_XmlReader->hasError())
104 m_Window->AddFusionImage(index, file.c_str());
111 std::string vvReadState::ReadOverlay(int index)
113 std::string file, value;
114 while (!m_XmlReader->isEndElement() || value != "Overlay") {
115 m_XmlReader->readNext();
116 value = m_XmlReader->qualifiedName().toString().toStdString();
117 if (m_XmlReader->isStartElement()) {
118 if (value == "FileName") {
119 file = m_XmlReader->readElementText().toStdString();
120 if (!m_XmlReader->hasError())
121 m_Window->AddOverlayImage(index, file.c_str());
128 std::string vvReadState::ReadVector(int index)
130 std::string file, value;
131 while (!m_XmlReader->isEndElement() || value != "Vector") {
132 m_XmlReader->readNext();
133 value = m_XmlReader->qualifiedName().toString().toStdString();
134 if (m_XmlReader->isStartElement()) {
135 if (value == "FileName") {
136 file = m_XmlReader->readElementText().toStdString();
137 if (!m_XmlReader->hasError())
138 m_Window->AddField(file.c_str(), index);
145 void vvReadState::ReadGUI()