11 template<
class T,
class SUPER>
12 boost::shared_ptr<T> castTo(boost::shared_ptr<SUPER> data)
14 return boost::dynamic_pointer_cast<T>(data);
17 template<
class T,
class SUPER>
18 bool isType(boost::shared_ptr<SUPER> data)
20 return (castTo<T>(data) ?
true :
false);
22 template<
class WRAPPER,
class METRIC,
class SUPER>
25 return boost::shared_ptr<WRAPPER>(
new WRAPPER(viewService, patientModelService, castTo<METRIC>(data)));
32 BaseWidget(parent, wrapper->getType()+
"_single_metric_widget", wrapper->getType()+
" Metric Widget"),
34 mValueLabel(valueLabel)
46 QString value =
mWrapper->getValue();
52 mPatientModelService(patientModelService),
53 mViewService(viewService)
60 if (isType<PointMetric>(data))
61 return createMetricWrapperOfType<PointMetricWrapper, PointMetric>(mViewService, mPatientModelService, data);
62 if (isType<DistanceMetric>(data))
63 return createMetricWrapperOfType<DistanceMetricWrapper, DistanceMetric>(mViewService, mPatientModelService, data);
64 if (isType<AngleMetric>(data))
65 return createMetricWrapperOfType<AngleMetricWrapper, AngleMetric>(mViewService, mPatientModelService, data);
66 if (isType<FrameMetric>(data))
67 return createMetricWrapperOfType<FrameMetricWrapper, FrameMetric>(mViewService, mPatientModelService, data);
68 if (isType<ToolMetric>(data))
69 return createMetricWrapperOfType<ToolMetricWrapper, ToolMetric>(mViewService, mPatientModelService, data);
70 if (isType<PlaneMetric>(data))
71 return createMetricWrapperOfType<PlaneMetricWrapper, PlaneMetric>(mViewService, mPatientModelService, data);
72 if (isType<DonutMetric>(data))
73 return createMetricWrapperOfType<DonutMetricWrapper, DonutMetric>(mViewService, mPatientModelService, data);
74 if (isType<CustomMetric>(data))
75 return createMetricWrapperOfType<CustomMetricWrapper, CustomMetric>(mViewService, mPatientModelService, data);
76 if (isType<SphereMetric>(data))
77 return createMetricWrapperOfType<SphereMetricWrapper, SphereMetric>(mViewService, mPatientModelService, data);
78 if (isType<RegionOfInterestMetric>(data))
79 return createMetricWrapperOfType<RegionOfInterestMetricWrapper, RegionOfInterestMetric>(mViewService, mPatientModelService, data);
89 std::vector<MetricBasePtr> retval;
90 std::map<QString, DataPtr> all = mPatientModelService->getDatas();
91 for (std::map<QString, DataPtr>::iterator iter=all.begin(); iter!=all.end(); ++iter)
96 retval.push_back(wrapper);
106 QWidget* widget = wrapper->createWidget();
109 QString value = wrapper->getValue();
110 QString type = wrapper->getType();
112 QLabel* valueLabel =
new QLabel(value);
115 nameAdapter->setData(data);
120 QGroupBox* groupBox =
new QGroupBox(
"Metric type: "+ type, topWidget);
121 groupBox->setFlat(
true);
122 QVBoxLayout* verticalLayout =
new QVBoxLayout(groupBox);
123 verticalLayout->setMargin(4);
125 QHBoxLayout* valueLayout =
new QHBoxLayout();
126 valueLayout->addWidget(
new QLabel(
"Value: "));
127 valueLayout->addWidget(valueLabel);
130 verticalLayout->addLayout(valueLayout);
131 verticalLayout->addWidget(widget, 1);
133 QHBoxLayout* topLayout =
new QHBoxLayout(topWidget);
134 topLayout->addWidget(groupBox);
MetricUtilities(ViewServicePtr viewService, PatientModelServicePtr patientModelService)
void transformChanged()
emitted when transform is changed
boost::shared_ptr< class StringPropertyDataNameEditable > StringPropertyDataNameEditablePtr
std::vector< MetricBasePtr > createMetricWrappers()
boost::shared_ptr< class Data > DataPtr
boost::shared_ptr< class MetricBase > MetricBasePtr
static StringPropertyDataNameEditablePtr New()
boost::shared_ptr< class PatientModelService > PatientModelServicePtr
cxLogicManager_EXPORT ViewServicePtr viewService()
QWidget * createMetricWidget(DataPtr data)
MetricBasePtr createMetricWrapper(DataPtr data)