60 mAcquisitionService(acquisitionService),
65 "Select tracker data",
"", QStringList(),
68 connect(mSessionSelector.get(), &
StringProperty::changed,
this, &SelectRecordSession::showSelectedRecordingInView);
70 this->recordedSessionsChanged();
80 if (tool==mToolOverride)
85 this->showSelectedRecordingInView();
88 void SelectRecordSession::recordedSessionsChanged()
90 std::vector<RecordSessionPtr> sessions = mAcquisitionService->getSessions();
92 std::map<QString, QString> names;
93 for(
unsigned i=0; i<sessions.size(); ++i)
95 QString uid = sessions[i]->getUid();
97 names[uid] = sessions[i]->getHumanDescription();
100 names[
""] =
"<none>";
102 mSessionSelector->setValueRange(uids);
103 mSessionSelector->setDisplayNames(names);
105 if(mSessionSelector->getValue().isEmpty() && !uids.isEmpty())
106 mSessionSelector->setValue(uids.last());
108 this->showSelectedRecordingInView();
111 void SelectRecordSession::warnIfNoTrackingDataInSession()
115 if (session && !tool)
117 CX_LOG_WARNING() << QString(
"Could not find any tracking data for any loaded tools in session [%2]. ")
118 .arg(session.get() ? session->getHumanDescription() :
"NULL");
124 QString uid = mSessionSelector->getValue();
126 return mAcquisitionService->getSession(uid);
137 return trackerRecordedData_prMt;
143 return mToolOverride;
148 ToolPtr tool = this->findToolContainingMostDataForSession(tools, session);
155 this->showSelectedRecordingInView();
158 ToolPtr SelectRecordSession::findToolContainingMostDataForSession(std::map<QString, ToolPtr> tools,
RecordSessionPtr session)
160 std::map<int,ToolPtr> tooldata;
162 for (TrackingService::ToolMap::iterator i=tools.begin(); i!=tools.end(); ++i)
165 tooldata[trackerRecordedData_prMt.size()] = i->second;
168 if (!tooldata.empty() && (tooldata.rbegin()->first!=0))
169 return tooldata.rbegin()->second;
176 return mServices->view()->get3DReps(0, 0)->findFirst<ToolRep3D>(tool);
179 void SelectRecordSession::showSelectedRecordingInView()
185 this->warnIfNoTrackingDataInSession();
188 if (trackerRecordedData_prMt.empty())
191 mCurrentTracedTool = this->
getTool();
193 ToolRep3DPtr activeRep3D = this->getToolRepIn3DView(mCurrentTracedTool);
197 if(!trackerRecordedData_prMt.empty())
199 activeRep3D->getTracer()->clear();
200 activeRep3D->getTracer()->setColor(QColor(
"green"));
201 activeRep3D->getTracer()->addManyPositions(trackerRecordedData_prMt);
205 activeRep3D->getTracer()->clear();
209 void SelectRecordSession::clearTracer()
211 ToolRep3DPtr activeRep3D = this->getToolRepIn3DView(mCurrentTracedTool);
215 activeRep3D->getTracer()->clear();
218 mCurrentTracedTool.reset();
SelectRecordSession(XmlOptionFile options, AcquisitionServicePtr acquisitionService, VisServicesPtr services)
boost::shared_ptr< class AcquisitionService > AcquisitionServicePtr
boost::shared_ptr< class VisServices > VisServicesPtr
QDomElement getElement()
return the current element
static TimedTransformMap getToolHistory_prMt(ToolPtr tool, RecordSessionPtr session, bool verbose)
void setTool(ToolPtr tool)
boost::shared_ptr< class RecordSession > RecordSessionPtr
TimedTransformMap getRecordedTrackerData_prMt()
cxLogicManager_EXPORT AcquisitionServicePtr acquisitionService()
void changed()
emit when the underlying data value is changed: The user interface will be updated.
static StringPropertyPtr initialize(const QString &uid, QString name, QString help, QString value, QStringList range, QDomNode root=QDomNode())
virtual ~SelectRecordSession()
std::map< QString, ToolPtr > ToolMap
void recordedSessionsChanged()
boost::shared_ptr< class ToolRep3D > ToolRep3DPtr
Helper class for xml files used to store ssc/cx data.
std::map< double, Transform3D > TimedTransformMap
boost::shared_ptr< class Tool > ToolPtr