X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=vv%2FvvSaveState.cxx;h=894e8e4a3aefb67968e9452a67dcf3c707d8d2bd;hb=a0bcf3084e5092bb1beccdbed6b2710f839346d9;hp=c1a7e496aa4dacc769832bef41f8e3139d5b050d;hpb=b723c3573a7b923bda4a8113159870b9fadabad2;p=clitk.git diff --git a/vv/vvSaveState.cxx b/vv/vvSaveState.cxx index c1a7e49..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,21 +72,37 @@ 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(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; for (int i = 0; i < item->childCount(); i++) { @@ -85,9 +116,13 @@ void vvSaveState::SaveImage(const QTreeWidgetItem* item, int index) SaveVector(item_child); } + // End m_XmlWriter->writeEndElement(); } +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ void vvSaveState::SaveFusion(const QTreeWidgetItem* item, const vvSlicerManager* vvManager) { m_XmlWriter->writeStartElement("Fusion"); @@ -100,7 +135,10 @@ void vvSaveState::SaveFusion(const QTreeWidgetItem* item, const vvSlicerManager* m_XmlWriter->writeTextElement("FusionLevel", QString::number(vvManager->GetFusionLevel())); m_XmlWriter->writeEndElement(); } +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ void vvSaveState::SaveOverlay(const QTreeWidgetItem* item, const vvSlicerManager* vvManager) { m_XmlWriter->writeStartElement("Overlay"); @@ -112,7 +150,10 @@ void vvSaveState::SaveOverlay(const QTreeWidgetItem* item, const vvSlicerManager m_XmlWriter->writeTextElement("OverlayColor", QString::number(vvManager->GetOverlayColor())); m_XmlWriter->writeEndElement(); } +//------------------------------------------------------------------------------ + +//------------------------------------------------------------------------------ void vvSaveState::SaveVector(const QTreeWidgetItem* item) { m_XmlWriter->writeStartElement("Vector"); @@ -120,10 +161,54 @@ void vvSaveState::SaveVector(const QTreeWidgetItem* item) 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(); +} +//------------------------------------------------------------------------------