]> Creatis software - clitk.git/blobdiff - vv/vvSaveState.cxx
Debug RTStruct conversion with empty struc
[clitk.git] / vv / vvSaveState.cxx
index c1a7e496aa4dacc769832bef41f8e3139d5b050d..894e8e4a3aefb67968e9452a67dcf3c707d8d2bd 100644 (file)
@@ -1,5 +1,7 @@
 #include "vvSaveState.h"
 #include "vvMainWindow.h"
+#include "vvToolCreatorBase.h"
+#include "vvToolBaseBase.h"
 
 #include <QDir>
 #include <QFile>
 #include <cassert>
 #include <string>
 
+//------------------------------------------------------------------------------
 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<std::string> 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<vvToolCreatorBase *> & v = vvToolManager::GetInstance()->GetListOfTools();
+  for(uint i=0; i<v.size(); i++) {
+    std::vector<vvToolBaseBase*> & t = v[i]->GetListOfTool();
+    for(uint j=0; j<t.size(); j++) {
+      std::string name = v[i]->mToolName.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();
+}
+//------------------------------------------------------------------------------