1 #include "vvSaveState.h"
2 #include "vvMainWindow.h"
7 #include <QTreeWidgetItem>
8 #include <QXmlStreamWriter>
13 vvSaveState::vvSaveState() : m_XmlWriter(new QXmlStreamWriter), m_File(new QFile)
17 vvSaveState::~vvSaveState()
21 void vvSaveState::Run(vvMainWindow* vvWindow, const std::string& file)
25 m_File->setFileName(file.c_str());
27 m_File->open(QIODevice::Text | QIODevice::ReadWrite);
31 m_XmlWriter->setDevice(m_File.get());
32 m_XmlWriter->setAutoFormatting(true);
33 m_XmlWriter->setAutoFormattingIndent(2);
34 m_XmlWriter->writeStartDocument();
35 m_XmlWriter->writeStartElement("VVState");
39 m_XmlWriter->writeEndDocument();
40 m_XmlWriter->writeEndElement();
43 void vvSaveState::SaveGlobals()
45 m_XmlWriter->writeStartElement("Globals");
46 m_XmlWriter->writeEndElement();
49 void vvSaveState::SaveTree()
51 QTreeWidget* tree = m_Window->GetTree();
52 QTreeWidgetItem* item;
54 m_XmlWriter->writeStartElement("Images");
55 for (int i = 0; i < tree->topLevelItemCount(); i++) {
56 item = tree->topLevelItem(i);
59 m_XmlWriter->writeEndElement();
62 void vvSaveState::SaveImage(const QTreeWidgetItem* item, int index)
64 const vvSlicerManager * slicerManager = m_Window->GetSlicerManagers()[index];
65 m_XmlWriter->writeStartElement("Image");
67 std::ostringstream indexStr;
70 m_XmlWriter->writeAttribute("Index", indexStr.str().c_str());
72 std::string filename = item->data(0, Qt::UserRole).toString().toStdString();
73 m_XmlWriter->writeTextElement("FileName", QDir::current().absoluteFilePath(filename.c_str()));
75 QTreeWidgetItem* item_child;
77 for (int i = 0; i < item->childCount(); i++) {
78 item_child = item->child(i);
79 role = item_child->data(1,Qt::UserRole).toString().toStdString();
81 SaveFusion(item_child, slicerManager);
82 else if (role == "overlay")
83 SaveOverlay(item_child, slicerManager);
84 else if (role == "vector")
85 SaveVector(item_child);
88 m_XmlWriter->writeEndElement();
91 void vvSaveState::SaveFusion(const QTreeWidgetItem* item, const vvSlicerManager* vvManager)
93 m_XmlWriter->writeStartElement("Fusion");
94 std::string filename = item->data(0, Qt::UserRole).toString().toStdString();
95 m_XmlWriter->writeTextElement("FileName", QDir::current().absoluteFilePath(filename.c_str()));
96 m_XmlWriter->writeTextElement("FusionOpacity", QString::number(vvManager->GetFusionOpacity()));
97 m_XmlWriter->writeTextElement("FusionThresholdOpacity", QString::number(vvManager->GetFusionThresholdOpacity()));
98 m_XmlWriter->writeTextElement("FusionColorMap", QString::number(vvManager->GetFusionColorMap()));
99 m_XmlWriter->writeTextElement("FusionWindow", QString::number(vvManager->GetFusionWindow()));
100 m_XmlWriter->writeTextElement("FusionLevel", QString::number(vvManager->GetFusionLevel()));
101 m_XmlWriter->writeEndElement();
104 void vvSaveState::SaveOverlay(const QTreeWidgetItem* item, const vvSlicerManager* vvManager)
106 m_XmlWriter->writeStartElement("Overlay");
107 std::string filename = item->data(0, Qt::UserRole).toString().toStdString();
108 m_XmlWriter->writeTextElement("FileName", QDir::current().absoluteFilePath(filename.c_str()));
109 m_XmlWriter->writeTextElement("OverlayColorWindow", QString::number(vvManager->GetOverlayColorWindow()));
110 m_XmlWriter->writeTextElement("OverlayColorLevel", QString::number(vvManager->GetOverlayColorLevel()));
111 m_XmlWriter->writeTextElement("LinkOverlayWindowLevel", QString::number(vvManager->GetLinkOverlayWindowLevel()));
112 m_XmlWriter->writeTextElement("OverlayColor", QString::number(vvManager->GetOverlayColor()));
113 m_XmlWriter->writeEndElement();
116 void vvSaveState::SaveVector(const QTreeWidgetItem* item)
118 m_XmlWriter->writeStartElement("Vector");
119 std::string filename = item->data(0, Qt::UserRole).toString().toStdString();
120 m_XmlWriter->writeTextElement("FileName", QDir::current().absoluteFilePath(filename.c_str()));
121 m_XmlWriter->writeEndElement();
124 void vvSaveState::SaveGUI()
126 m_XmlWriter->writeStartElement("GUI");
127 m_XmlWriter->writeEndElement();