60 mAcquisitionService(acquisitionService),
65 "Select tracker data",
"", QStringList(),
68 connect(mSessionSelector.get(), &
StringProperty::changed,
this, &SelectRecordSession::showSelectedRecordingInView);
70 this->recordedSessionsChanged();
71 this->updateHelpText();
81 if (tool==mToolOverride)
86 this->showSelectedRecordingInView();
89 void SelectRecordSession::recordedSessionsChanged()
91 std::vector<RecordSessionPtr> sessions = mAcquisitionService->getSessions();
93 std::map<QString, QString> names;
94 for(
unsigned i=0; i<sessions.size(); ++i)
96 QString uid = sessions[i]->getUid();
98 names[uid] = sessions[i]->getHumanDescription();
101 names[
""] =
"<none>";
103 mSessionSelector->setValueRange(uids);
104 mSessionSelector->setDisplayNames(names);
106 if(mSessionSelector->getValue().isEmpty() && !uids.isEmpty())
107 mSessionSelector->setValue(uids.last());
109 this->showSelectedRecordingInView();
112 void SelectRecordSession::warnIfNoTrackingDataInSession()
116 if (session && !tool)
118 CX_LOG_WARNING() << QString(
"Could not find any tracking data for any loaded tools in session [%2]. ")
119 .arg(session.get() ? session->getHumanDescription() :
"NULL");
125 QString uid = mSessionSelector->getValue();
127 return mAcquisitionService->getSession(uid);
138 return trackerRecordedData_prMt;
144 return mToolOverride;
149 ToolPtr tool = this->findToolContainingMostDataForSession(tools, session);
156 this->showSelectedRecordingInView();
159 ToolPtr SelectRecordSession::findToolContainingMostDataForSession(std::map<QString, ToolPtr> tools,
RecordSessionPtr session)
161 std::map<int,ToolPtr> tooldata;
163 for (TrackingService::ToolMap::iterator i=tools.begin(); i!=tools.end(); ++i)
168 tooldata[trackerRecordedData_prMt.size()] = i->second;
171 if (!tooldata.empty() && (tooldata.rbegin()->first!=0))
172 return tooldata.rbegin()->second;
177 void SelectRecordSession::updateHelpText()
180 QString toolname = tool ? tool->getName() :
"<none>";
181 mSessionSelector->setHelp(QString(
"Select tracker data, current data uses tool %2")
187 return mServices->view()->get3DReps(0, 0)->findFirst<ToolRep3D>(tool);
190 void SelectRecordSession::showSelectedRecordingInView()
196 this->warnIfNoTrackingDataInSession();
199 if (trackerRecordedData_prMt.empty())
202 mCurrentTracedTool = this->
getTool();
203 this->updateHelpText();
205 ToolRep3DPtr activeRep3D = this->getToolRepIn3DView(mCurrentTracedTool);
209 if(!trackerRecordedData_prMt.empty())
211 activeRep3D->getTracer()->clear();
212 activeRep3D->getTracer()->setColor(QColor(
"green"));
213 activeRep3D->getTracer()->addManyPositions(trackerRecordedData_prMt);
217 activeRep3D->getTracer()->clear();
221 void SelectRecordSession::clearTracer()
223 ToolRep3DPtr activeRep3D = this->getToolRepIn3DView(mCurrentTracedTool);
227 activeRep3D->getTracer()->clear();
230 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