35 #include <QVBoxLayout>
36 #include <QTreeWidget>
37 #include <QTreeWidgetItem>
46 BaseWidget(parent,
"FrameTreeWidget",
"Frame Tree"),
47 mPatientService(patientService)
49 QVBoxLayout* layout =
new QVBoxLayout(
this);
52 mTreeWidget =
new QTreeWidget(
this);
53 layout->addWidget(mTreeWidget);
54 mTreeWidget->setHeaderLabels(QStringList() <<
"Frame");
57 connect(mPatientService.get(), SIGNAL(dataAddedOrRemoved()),
this, SLOT(dataLoadedSlot()));
63 "<h3>Frame dependencies display.</h3>"
64 "<p>Lets you look at the frame dependencies between different data.</p>"
69 void FrameTreeWidget::dataLoadedSlot()
71 for (std::map<QString, DataPtr>::iterator iter=mConnectedData.begin(); iter!=mConnectedData.end(); ++iter)
73 disconnect(iter->second.get(), SIGNAL(transformChanged()),
this, SLOT(
setModified()));
76 mConnectedData = mPatientService->getData();
78 for (std::map<QString, DataPtr>::iterator iter=mConnectedData.begin(); iter!=mConnectedData.end(); ++iter)
80 connect(iter->second.get(), SIGNAL(transformChanged()),
this, SLOT(
setModified()));
91 void FrameTreeWidget::rebuild()
96 QDomElement root = forest.
getDocument().documentElement();
98 this->fill(mTreeWidget->invisibleRootItem(), root);
100 mTreeWidget->expandToDepth(10);
101 mTreeWidget->resizeColumnToContents(0);
104 void FrameTreeWidget::fill(QTreeWidgetItem* parent, QDomNode node)
106 for (QDomNode child = node.firstChild(); !child.isNull(); child = child.nextSibling())
108 QString frameName = child.toElement().tagName();
111 DataPtr data = mPatientService->getData(frameName);
113 frameName = data->getName();
115 QTreeWidgetItem* item =
new QTreeWidgetItem(parent, QStringList() << frameName);
116 this->fill(item, child);
A graph combining Space dependencies between all Data.Relations between coordinate spaces among Data ...
boost::shared_ptr< class Data > DataPtr
boost::shared_ptr< class PatientModelService > PatientModelServicePtr
QDomDocument getDocument()
cxLogicManager_EXPORT PatientModelServicePtr patientService()