34 #include <QTreeWidget>
35 #include <QTreeWidgetItem>
36 #include <QStringList>
37 #include <QVBoxLayout>
38 #include <QHeaderView>
57 BaseWidget(parent,
"PointSamplingWidget",
"Point sampler/3D ruler"),
58 mVerticalLayout(new QVBoxLayout(this)),
59 mTable(new QTableWidget(this)),
61 mAddButton(new QPushButton(
"Add", this)),
62 mEditButton(new QPushButton(
"Resample", this)),
63 mRemoveButton(new QPushButton(
"Remove", this)),
64 mLoadReferencePointsButton(new QPushButton(
"Load reference points", this))
84 QHBoxLayout* buttonLayout =
new QHBoxLayout;
99 "<h3>Utility for sampling points in 3D</h3>"
100 "<p>Lets you sample points in 3D and get the distance between sampled points.</p>"
109 QTableWidgetItem* item =
mTable->currentItem();
113 for (
unsigned i=0; i<
mSamples.size(); ++i)
126 QWidget::showEvent(event);
131 data->setOptions(options);
138 QWidget::hideEvent(event);
143 mTable->blockSignals(
true);
148 mTable->setColumnCount(3);
149 QStringList headerItems(QStringList() <<
"Name" <<
"Coordinates(r)" <<
"Delta (mm)");
150 mTable->setHorizontalHeaderLabels(headerItems);
151 mTable->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
152 mTable->setSelectionBehavior(QAbstractItemView::SelectRows);
154 for (
unsigned i = 0; i <
mSamples.size(); ++i)
156 std::vector<QTableWidgetItem*> items(3);
165 coordText = tr(
"(%1, %2, %3)").arg(coord[0], width,
'f', prec).arg(coord[1], width,
'f', prec).arg(coord[2],
168 items[1] =
new QTableWidgetItem(coordText);
172 items[2] =
new QTableWidgetItem;
177 items[2] =
new QTableWidgetItem(tr(
"%1").arg(delta, width,
'f', prec));
180 for (
unsigned j = 0; j < items.size(); ++j)
183 mTable->setItem(i, j, items[j]);
189 mTable->setCurrentItem(items[1]);
193 mTable->blockSignals(
false);
210 for (
unsigned i=0; i<
mSamples.size(); ++i)
231 Vector3D tool_t(0,0,tool->getTooltipOffset());
241 Vector3D delta_pr = rMpr.inv().vector(delta_r);
246 tool->set_prMt(MD*prMt);
264 for (
unsigned i=0; i<
mSamples.size(); ++i)
275 for (
unsigned i=0; i<
mSamples.size(); ++i)
298 reportDebug(
"No reference tool, cannot load reference points into the pointsampler");
302 std::map<int, Vector3D> referencePoints_s = refTool->getReferencePoints();
303 if(referencePoints_s.empty())
305 reportWarning(
"No referenceppoints in reference tool "+refTool->getName());
312 std::map<int, Vector3D>::iterator it = referencePoints_s.begin();
313 for(; it != referencePoints_s.end(); ++it)
QString qstring_cast(const T &val)
boost::shared_ptr< class ViewGroupData > ViewGroupDataPtr
One landmark, or fiducial, coordinate.
Transform3D Transform3D
Transform3D is a representation of an affine 3D transform.
static CoordinateSystem reference()
void reportWarning(QString msg)
Transform3D createTransformTranslate(const Vector3D &translation)
Identification of a Coordinate system.
cxLogicManager_EXPORT SpaceProviderPtr spaceProvider()
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
cxLogicManager_EXPORT ViewServicePtr viewService()
cxLogicManager_EXPORT PatientModelServicePtr patientService()
RealScalar length() const
cxLogicManager_EXPORT TrackingServicePtr trackingService()
bool mShowPointPickerProbe
void reportDebug(QString msg)
boost::shared_ptr< class Tool > ToolPtr