3 #include "AbstractMeasureItem.h"
9 #include "CnetDisplayProperties.h"
16 #include "TableColumn.h"
17 #include "TableColumnList.h"
22 QString AbstractMeasureItem::getColumnName(Column col) {
39 return "Measure Type";
40 case Obsolete_Eccentricity:
41 return "Obsolete_Eccentricity";
43 return "Goodness of Fit";
45 return "Minimum Pixel Z-Score";
47 return "Maximum Pixel Z-Score";
49 return "Sample Shift";
53 return "Sample Sigma";
57 return "A Priori Sample";
59 return "A Priori Line";
63 return "Rejected by Jigsaw";
65 return "Residual Sample";
67 return "Residual Line";
68 case ResidualMagnitude:
69 return "Residual Magnitude";
77 AbstractMeasureItem::Column AbstractMeasureItem::getColumn(
78 QString columnTitle) {
79 for (
int i = 0; i < COLS; i++) {
80 if (columnTitle == getColumnName((Column) i))
84 IString msg =
"Column title [" + columnTitle +
"] does not match any of "
85 "the defined column types";
90 TableColumnList *AbstractMeasureItem::createColumns() {
91 TableColumnList *columnList =
new TableColumnList;
93 columnList->append(
new TableColumn(getColumnName(PointId),
true,
false));
94 columnList->append(
new TableColumn(getColumnName(ImageId),
true,
96 columnList->append(
new TableColumn(getColumnName(Sample),
true,
false));
97 columnList->append(
new TableColumn(getColumnName(Line),
true,
false));
98 columnList->append(
new TableColumn(getColumnName(EditLock),
false,
100 columnList->append(
new TableColumn(getColumnName(Ignored),
false,
true));
101 columnList->append(
new TableColumn(getColumnName(Reference),
true,
true));
102 columnList->append(
new TableColumn(getColumnName(Type),
false,
false));
103 columnList->append(
new TableColumn(getColumnName(Obsolete_Eccentricity),
true,
105 columnList->append(
new TableColumn(getColumnName(GoodnessOfFit),
true,
107 columnList->append(
new TableColumn(getColumnName(MinPixelZScore),
true,
109 columnList->append(
new TableColumn(getColumnName(MaxPixelZScore),
true,
111 columnList->append(
new TableColumn(getColumnName(SampleShift),
true,
113 columnList->append(
new TableColumn(getColumnName(LineShift),
true,
115 columnList->append(
new TableColumn(getColumnName(SampleSigma),
false,
117 columnList->append(
new TableColumn(getColumnName(LineSigma),
false,
119 columnList->append(
new TableColumn(getColumnName(APrioriSample),
true,
121 columnList->append(
new TableColumn(getColumnName(APrioriLine),
true,
123 columnList->append(
new TableColumn(getColumnName(Diameter),
false,
125 columnList->append(
new TableColumn(getColumnName(JigsawRejected),
true,
127 columnList->append(
new TableColumn(getColumnName(ResidualSample),
true,
129 columnList->append(
new TableColumn(getColumnName(ResidualLine),
true,
131 columnList->append(
new TableColumn(getColumnName(ResidualMagnitude),
137 AbstractMeasureItem::AbstractMeasureItem(ControlMeasure *cm,
138 int avgCharWidth, AbstractTreeItem *parent)
139 : AbstractTreeItem(parent) {
142 calcDataWidth(avgCharWidth);
144 connect(m_measure, SIGNAL(destroyed(
QObject *)),
this, SLOT(sourceDeleted()));
148 AbstractMeasureItem::~AbstractMeasureItem() {
153 QVariant AbstractMeasureItem::getData()
const {
154 return getData(getColumnName(ImageId));
158 QVariant AbstractMeasureItem::getData(QString columnTitle)
const {
160 Column column = getColumn(columnTitle);
162 switch ((Column) column) {
164 return QVariant((QString) m_measure->Parent()->
GetId());
166 return QVariant(CnetDisplayProperties::getInstance()->getImageName(
169 return QVariant(m_measure->GetSample());
171 return QVariant(m_measure->GetLine());
174 return QVariant(
"Yes");
176 return QVariant(
"No");
178 if (m_measure->IsIgnored())
179 return QVariant(
"Yes");
181 return QVariant(
"No");
184 return QVariant(
"Yes");
186 return QVariant(
"No");
190 case Obsolete_Eccentricity:
192 m_measure->GetLogData(
196 m_measure->GetLogData(
201 GetNumericalValue());
205 GetNumericalValue());
207 return QVariant(m_measure->GetSampleShift());
209 return QVariant(m_measure->GetLineShift());
211 return QVariant(m_measure->GetSampleSigma());
213 return QVariant(m_measure->GetLineSigma());
215 return QVariant(m_measure->GetAprioriSample());
217 return QVariant(m_measure->GetAprioriLine());
221 if (m_measure->IsRejected())
222 return QVariant(
"Yes");
224 return QVariant(
"No");
226 return QVariant(m_measure->GetSampleResidual());
228 return QVariant(m_measure->GetLineResidual());
229 case ResidualMagnitude:
239 void AbstractMeasureItem::setData(QString
const &columnTitle,
240 QString
const &newData) {
242 Column column = getColumn(columnTitle);
244 switch ((Column) column) {
250 CnetDisplayProperties::getInstance()->getSerialNumber(newData));
254 m_measure->GetLine());
261 if (newData ==
"Yes")
262 m_measure->SetEditLock(
true);
264 m_measure->SetEditLock(
false);
267 if (newData ==
"Yes")
268 m_measure->SetIgnored(
true);
269 else if (newData ==
"No")
270 m_measure->SetIgnored(
false);
278 CnetDisplayProperties::getInstance()->getSerialNumber(
281 case Obsolete_Eccentricity:
302 m_measure->SetSampleSigma(catchNull(newData));
305 m_measure->SetLineSigma(catchNull(newData));
308 m_measure->SetAprioriSample(catchNull(newData));
311 m_measure->SetAprioriLine(catchNull(newData));
321 catchNull(newData), m_measure->GetLineResidual());
325 m_measure->GetSampleResidual(), catchNull(newData));
327 case ResidualMagnitude:
340 bool AbstractMeasureItem::isDataEditable(QString columnTitle)
const {
341 bool parentLocked = !m_measure->Parent() ||
342 m_measure->Parent()->IsEditLocked();
343 bool locked = m_measure->
IsEditLocked() || parentLocked;
345 if (getColumn(columnTitle) == EditLock && !parentLocked) {
353 void AbstractMeasureItem::deleteSource() {
355 if (m_measure->Parent()->IsEditLocked()) {
356 IString msg =
"Measures in point [" +
357 getFormattedData(getColumnName(PointId)) +
358 "] cannot be deleted because point is edit locked";
363 IString msg =
"Measure [" + getFormattedData() +
"] in point [" +
364 getFormattedData(getColumnName(PointId)) +
365 "] cannot be deleted because m_measure is edit locked";
375 ControlMeasure *tempMeasure = m_measure;
377 tempMeasure->Parent()->
Delete(tempMeasure);
382 AbstractTreeItem::InternalPointerType AbstractMeasureItem::getPointerType()
384 return AbstractTreeItem::Measure;
388 void *AbstractMeasureItem::getPointer()
const {
393 bool AbstractMeasureItem::hasMeasure(ControlMeasure *m)
const {
394 return m_measure == m;
398 void AbstractMeasureItem::sourceDeleted() {
403 void AbstractMeasureItem::setLogData(ControlMeasure *m_measure,
404 int m_measureLogDataEnum,
const QString &value) {
407 QString newDataStr = value.toLower();
411 if (newDataStr ==
"null") {
412 m_measure->DeleteLogData(type);
415 m_measure->SetLogData(ControlMeasureLogData(type,