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)
16 vvReadState::~vvReadState()
20 void vvReadState::Run(vvMainWindow* vvWindow, const std::string& file)
24 m_File->setFileName(file.c_str());
25 m_File->open(QIODevice::ReadOnly);
26 m_XmlReader->setDevice(m_File.get());
28 QTreeWidget* tree = m_Window->GetTree();
29 m_TreeItemCount = tree->topLevelItemCount();
35 void vvReadState::ReadTree()
39 while (!m_XmlReader->atEnd()) {
40 m_XmlReader->readNext();
41 value = m_XmlReader->qualifiedName().toString().toStdString();
42 if (m_XmlReader->isStartElement()) {
48 if (m_XmlReader->hasError())
49 std::cout << "Error " << m_XmlReader->error() << " XML " << std::endl;
52 std::string vvReadState::ReadImage()
55 int current_index = -1;
56 std::vector<std::string> files(1);
58 QXmlStreamAttributes attributes = m_XmlReader->attributes();
59 if (!m_XmlReader->hasError())
60 current_index = attributes.value("Index").toString().toInt();
62 current_index += m_TreeItemCount;
64 while (!m_XmlReader->isEndElement() || value != "Image") {
65 m_XmlReader->readNext();
66 value = m_XmlReader->qualifiedName().toString().toStdString();
67 //std::cout << "Value = " << value << std::endl;
68 if (m_XmlReader->isStartElement()) {
69 if (value == "FileName") {
70 files[0] = m_XmlReader->readElementText().toStdString();
71 if (!m_XmlReader->hasError()) {
72 m_Window->LoadImages(files, vvImageReader::IMAGE);
75 else if (current_index >= 0) {
76 if (value == "Fusion")
77 value = ReadFusion(current_index);
78 else if (value == "Overlay")
79 value = ReadOverlay(current_index);
80 else if (value == "Vector")
81 value = ReadVector(current_index);
89 std::string vvReadState::ReadFusion(int index)
91 std::string file, value;
92 while (!m_XmlReader->isEndElement() || value != "Fusion") {
93 m_XmlReader->readNext();
94 value = m_XmlReader->qualifiedName().toString().toStdString();
95 if (m_XmlReader->isStartElement()) {
96 if (value == "FileName") {
97 file = m_XmlReader->readElementText().toStdString();
98 if (!m_XmlReader->hasError())
99 m_Window->AddFusionImage(index, file.c_str());
106 std::string vvReadState::ReadOverlay(int index)
108 std::string file, value;
109 while (!m_XmlReader->isEndElement() || value != "Overlay") {
110 m_XmlReader->readNext();
111 value = m_XmlReader->qualifiedName().toString().toStdString();
112 if (m_XmlReader->isStartElement()) {
113 if (value == "FileName") {
114 file = m_XmlReader->readElementText().toStdString();
115 if (!m_XmlReader->hasError())
116 m_Window->AddOverlayImage(index, file.c_str());
123 std::string vvReadState::ReadVector(int index)
125 std::string file, value;
126 while (!m_XmlReader->isEndElement() || value != "Vector") {
127 m_XmlReader->readNext();
128 value = m_XmlReader->qualifiedName().toString().toStdString();
129 if (m_XmlReader->isStartElement()) {
130 if (value == "FileName") {
131 file = m_XmlReader->readElementText().toStdString();
132 if (!m_XmlReader->hasError())
133 m_Window->AddField(file.c_str(), index);
140 void vvReadState::ReadGUI()