X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSaveState.cxx;h=894e8e4a3aefb67968e9452a67dcf3c707d8d2bd;hb=85d87a4260fedf7ce53875ebd8654787a2dd941c;hp=e573bb9e0f9bcb940c5863f7a6dd5a6ab8b447dd;hpb=1d616cc7be31f7195c8bba4142e02350cd2fb958;p=clitk.git diff --git a/vv/vvSaveState.cxx b/vv/vvSaveState.cxx index e573bb9..894e8e4 100644 --- a/vv/vvSaveState.cxx +++ b/vv/vvSaveState.cxx @@ -1,5 +1,7 @@ #include "vvSaveState.h" #include "vvMainWindow.h" +#include "vvToolCreatorBase.h" +#include "vvToolBaseBase.h" #include #include @@ -10,14 +12,20 @@ #include #include +//------------------------------------------------------------------------------ vvSaveState::vvSaveState() : m_XmlWriter(new QXmlStreamWriter), m_File(new QFile) { } +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ vvSaveState::~vvSaveState() { } +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ void vvSaveState::Run(vvMainWindow* vvWindow, const std::string& file) { assert(vvWindow); @@ -36,16 +44,23 @@ void vvSaveState::Run(vvMainWindow* vvWindow, const std::string& file) SaveGlobals(); SaveGUI(); SaveTree(); + SaveTools(); m_XmlWriter->writeEndDocument(); m_XmlWriter->writeEndElement(); } +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ void vvSaveState::SaveGlobals() { m_XmlWriter->writeStartElement("Globals"); m_XmlWriter->writeEndElement(); } +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ void vvSaveState::SaveTree() { QTreeWidget* tree = m_Window->GetTree(); @@ -57,19 +72,36 @@ void vvSaveState::SaveTree() SaveImage(item, i); } m_XmlWriter->writeEndElement(); + + m_XmlWriter->writeStartElement("Links"); + for (int i = 0; i < tree->topLevelItemCount(); i++) { + const vvSlicerManager * slicerManager = m_Window->GetSlicerManagers()[i]; + SaveLink(slicerManager); + } + m_XmlWriter->writeEndElement(); } +//------------------------------------------------------------------------------ -void vvSaveState::SaveImage(QTreeWidgetItem* item, int index) + +//------------------------------------------------------------------------------ +void vvSaveState::SaveImage(const QTreeWidgetItem* item, int index) { + const vvSlicerManager * slicerManager = m_Window->GetSlicerManagers()[index]; m_XmlWriter->writeStartElement("Image"); - - std::ostringstream indexStr; - indexStr.str(""); - indexStr << index; - m_XmlWriter->writeAttribute("Index", indexStr.str().c_str()); + + std::ostringstream valueStr; + valueStr.str(""); + valueStr << index; + m_XmlWriter->writeAttribute("Index", valueStr.str().c_str()); std::string filename = item->data(0, Qt::UserRole).toString().toStdString(); m_XmlWriter->writeTextElement("FileName", QDir::current().absoluteFilePath(filename.c_str())); + int preset = slicerManager->GetPreset(); + m_XmlWriter->writeTextElement("Preset", QString::number(preset)); + if (preset == 6) { + m_XmlWriter->writeTextElement("Window", QString::number(slicerManager->GetColorWindow())); + m_XmlWriter->writeTextElement("Level", QString::number(slicerManager->GetColorLevel())); + } QTreeWidgetItem* item_child; std::string role; @@ -77,43 +109,106 @@ void vvSaveState::SaveImage(QTreeWidgetItem* item, int index) item_child = item->child(i); role = item_child->data(1,Qt::UserRole).toString().toStdString(); if (role == "fusion") - SaveFusion(item_child); + SaveFusion(item_child, slicerManager); else if (role == "overlay") - SaveOverlay(item_child); + SaveOverlay(item_child, slicerManager); else if (role == "vector") SaveVector(item_child); } - + + // End m_XmlWriter->writeEndElement(); } +//------------------------------------------------------------------------------ -void vvSaveState::SaveFusion(QTreeWidgetItem* item) + +//------------------------------------------------------------------------------ +void vvSaveState::SaveFusion(const QTreeWidgetItem* item, const vvSlicerManager* vvManager) { m_XmlWriter->writeStartElement("Fusion"); std::string filename = item->data(0, Qt::UserRole).toString().toStdString(); m_XmlWriter->writeTextElement("FileName", QDir::current().absoluteFilePath(filename.c_str())); + m_XmlWriter->writeTextElement("FusionOpacity", QString::number(vvManager->GetFusionOpacity())); + m_XmlWriter->writeTextElement("FusionThresholdOpacity", QString::number(vvManager->GetFusionThresholdOpacity())); + m_XmlWriter->writeTextElement("FusionColorMap", QString::number(vvManager->GetFusionColorMap())); + m_XmlWriter->writeTextElement("FusionWindow", QString::number(vvManager->GetFusionWindow())); + m_XmlWriter->writeTextElement("FusionLevel", QString::number(vvManager->GetFusionLevel())); m_XmlWriter->writeEndElement(); } +//------------------------------------------------------------------------------ + -void vvSaveState::SaveOverlay(QTreeWidgetItem* item) +//------------------------------------------------------------------------------ +void vvSaveState::SaveOverlay(const QTreeWidgetItem* item, const vvSlicerManager* vvManager) { m_XmlWriter->writeStartElement("Overlay"); std::string filename = item->data(0, Qt::UserRole).toString().toStdString(); m_XmlWriter->writeTextElement("FileName", QDir::current().absoluteFilePath(filename.c_str())); + m_XmlWriter->writeTextElement("OverlayColorWindow", QString::number(vvManager->GetOverlayColorWindow())); + m_XmlWriter->writeTextElement("OverlayColorLevel", QString::number(vvManager->GetOverlayColorLevel())); + m_XmlWriter->writeTextElement("LinkOverlayWindowLevel", QString::number(vvManager->GetLinkOverlayWindowLevel())); + m_XmlWriter->writeTextElement("OverlayColor", QString::number(vvManager->GetOverlayColor())); m_XmlWriter->writeEndElement(); } +//------------------------------------------------------------------------------ -void vvSaveState::SaveVector(QTreeWidgetItem* item) + +//------------------------------------------------------------------------------ +void vvSaveState::SaveVector(const QTreeWidgetItem* item) { m_XmlWriter->writeStartElement("Vector"); std::string filename = item->data(0, Qt::UserRole).toString().toStdString(); m_XmlWriter->writeTextElement("FileName", QDir::current().absoluteFilePath(filename.c_str())); m_XmlWriter->writeEndElement(); } +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +void vvSaveState::SaveLink(const vvSlicerManager* vvManager) +{ + typedef std::list LinkListType; + LinkListType links = vvManager->GetLinks(); + if (!links.empty()) { + std::string my_id = vvManager->GetId(); + m_XmlWriter->writeStartElement("LinkedFrom"); + m_XmlWriter->writeAttribute("Id", my_id.c_str()); + LinkListType::iterator i; + for (i = links.begin(); i != links.end(); i++) { + std::string link_id = *i; + m_XmlWriter->writeTextElement("LinkedTo", link_id.c_str()); + } + m_XmlWriter->writeEndElement(); + } +} +//------------------------------------------------------------------------------ +//------------------------------------------------------------------------------ void vvSaveState::SaveGUI() { m_XmlWriter->writeStartElement("GUI"); m_XmlWriter->writeEndElement(); } +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ +void vvSaveState::SaveTools() +{ + + m_XmlWriter->writeStartElement("Tools"); + // Check if a tool is open and need to be store + std::vector & v = vvToolManager::GetInstance()->GetListOfTools(); + for(uint i=0; i & t = v[i]->GetListOfTool(); + for(uint j=0; jmToolName.toStdString(); + m_XmlWriter->writeStartElement(name.c_str()); + m_XmlWriter->writeTextElement("ToolType_Index", QString::number(i)); + m_XmlWriter->writeTextElement("Tool_Index", QString::number(j)); + t[j]->SaveState(m_XmlWriter); + m_XmlWriter->writeEndElement(); + } + } + m_XmlWriter->writeEndElement(); +} +//------------------------------------------------------------------------------