3 #include "AbstractMeasureItem.h" 9 #include "CnetDisplayProperties.h" 16 #include "TableColumn.h" 17 #include "TableColumnList.h" 21 QString AbstractMeasureItem::getColumnName(Column col) {
38 return "Measure Type";
39 case Obsolete_Eccentricity:
40 return "Obsolete_Eccentricity";
42 return "Goodness of Fit";
44 return "Minimum Pixel Z-Score";
46 return "Maximum Pixel Z-Score";
48 return "Sample Shift";
52 return "Sample Sigma";
56 return "A Priori Sample";
58 return "A Priori Line";
62 return "Rejected by Jigsaw";
64 return "Residual Sample";
66 return "Residual Line";
67 case ResidualMagnitude:
68 return "Residual Magnitude";
76 AbstractMeasureItem::Column AbstractMeasureItem::getColumn(
77 QString columnTitle) {
78 for (
int i = 0; i < COLS; i++) {
79 if (columnTitle == getColumnName((Column) i))
83 QString msg =
"Column title [" + columnTitle +
"] does not match any of " 84 "the defined column types";
89 TableColumnList *AbstractMeasureItem::createColumns() {
90 TableColumnList *columnList =
new TableColumnList;
92 columnList->append(
new TableColumn(getColumnName(PointId),
true,
false));
93 columnList->append(
new TableColumn(getColumnName(ImageId),
true,
95 columnList->append(
new TableColumn(getColumnName(Sample),
true,
false));
96 columnList->append(
new TableColumn(getColumnName(Line),
true,
false));
97 columnList->append(
new TableColumn(getColumnName(EditLock),
false,
99 columnList->append(
new TableColumn(getColumnName(Ignored),
false,
true));
100 columnList->append(
new TableColumn(getColumnName(Reference),
true,
true));
101 columnList->append(
new TableColumn(getColumnName(Type),
false,
false));
102 columnList->append(
new TableColumn(getColumnName(Obsolete_Eccentricity),
true,
104 columnList->append(
new TableColumn(getColumnName(GoodnessOfFit),
true,
106 columnList->append(
new TableColumn(getColumnName(MinPixelZScore),
true,
108 columnList->append(
new TableColumn(getColumnName(MaxPixelZScore),
true,
110 columnList->append(
new TableColumn(getColumnName(SampleShift),
true,
112 columnList->append(
new TableColumn(getColumnName(LineShift),
true,
114 columnList->append(
new TableColumn(getColumnName(SampleSigma),
false,
116 columnList->append(
new TableColumn(getColumnName(LineSigma),
false,
118 columnList->append(
new TableColumn(getColumnName(APrioriSample),
true,
120 columnList->append(
new TableColumn(getColumnName(APrioriLine),
true,
122 columnList->append(
new TableColumn(getColumnName(Diameter),
false,
124 columnList->append(
new TableColumn(getColumnName(JigsawRejected),
true,
126 columnList->append(
new TableColumn(getColumnName(ResidualSample),
true,
128 columnList->append(
new TableColumn(getColumnName(ResidualLine),
true,
130 columnList->append(
new TableColumn(getColumnName(ResidualMagnitude),
136 AbstractMeasureItem::AbstractMeasureItem(ControlMeasure *cm,
137 int avgCharWidth, AbstractTreeItem *parent)
138 : AbstractTreeItem(parent) {
141 calcDataWidth(avgCharWidth);
143 connect(m_measure, SIGNAL(destroyed(
QObject *)),
this, SLOT(sourceDeleted()));
147 AbstractMeasureItem::~AbstractMeasureItem() {
152 QVariant AbstractMeasureItem::getData()
const {
153 return getData(getColumnName(ImageId));
157 QVariant AbstractMeasureItem::getData(QString columnTitle)
const {
159 Column column = getColumn(columnTitle);
161 switch ((Column) column) {
163 return QVariant((QString) m_measure->Parent()->
GetId());
165 return QVariant(CnetDisplayProperties::getInstance()->getImageName(
168 return QVariant(m_measure->GetSample());
170 return QVariant(m_measure->GetLine());
173 return QVariant(
"Yes");
175 return QVariant(
"No");
177 if (m_measure->IsIgnored())
178 return QVariant(
"Yes");
180 return QVariant(
"No");
183 return QVariant(
"Yes");
185 return QVariant(
"No");
189 case Obsolete_Eccentricity:
191 m_measure->GetLogData(
195 m_measure->GetLogData(
200 GetNumericalValue());
204 GetNumericalValue());
206 return QVariant(m_measure->GetSampleShift());
208 return QVariant(m_measure->GetLineShift());
210 return QVariant(m_measure->GetSampleSigma());
212 return QVariant(m_measure->GetLineSigma());
214 return QVariant(m_measure->GetAprioriSample());
216 return QVariant(m_measure->GetAprioriLine());
220 if (m_measure->IsRejected())
221 return QVariant(
"Yes");
223 return QVariant(
"No");
225 return QVariant(m_measure->GetSampleResidual());
227 return QVariant(m_measure->GetLineResidual());
228 case ResidualMagnitude:
238 void AbstractMeasureItem::setData(QString
const &columnTitle,
239 QString
const &newData) {
241 Column column = getColumn(columnTitle);
243 switch ((Column) column) {
249 CnetDisplayProperties::getInstance()->getSerialNumber(newData));
253 m_measure->GetLine());
260 if (newData ==
"Yes")
261 m_measure->SetEditLock(
true);
263 m_measure->SetEditLock(
false);
266 if (newData ==
"Yes")
267 m_measure->SetIgnored(
true);
268 else if (newData ==
"No")
269 m_measure->SetIgnored(
false);
277 CnetDisplayProperties::getInstance()->getSerialNumber(
280 case Obsolete_Eccentricity:
301 m_measure->SetSampleSigma(catchNull(newData));
304 m_measure->SetLineSigma(catchNull(newData));
307 m_measure->SetAprioriSample(catchNull(newData));
310 m_measure->SetAprioriLine(catchNull(newData));
320 catchNull(newData), m_measure->GetLineResidual());
324 m_measure->GetSampleResidual(), catchNull(newData));
326 case ResidualMagnitude:
339 bool AbstractMeasureItem::isDataEditable(QString columnTitle)
const {
340 bool parentLocked = !m_measure->Parent() ||
341 m_measure->Parent()->IsEditLocked();
342 bool locked = m_measure->
IsEditLocked() || parentLocked;
344 if (getColumn(columnTitle) == EditLock && !parentLocked) {
352 void AbstractMeasureItem::deleteSource() {
354 if (m_measure->Parent()->IsEditLocked()) {
355 QString msg =
"Measures in point [" +
356 getFormattedData(getColumnName(PointId)) +
357 "] cannot be deleted because point is edit locked";
362 QString msg =
"Measure [" + getFormattedData() +
"] in point [" +
363 getFormattedData(getColumnName(PointId)) +
364 "] cannot be deleted because m_measure is edit locked";
374 ControlMeasure *tempMeasure = m_measure;
376 tempMeasure->Parent()->
Delete(tempMeasure);
381 AbstractTreeItem::InternalPointerType AbstractMeasureItem::getPointerType()
383 return AbstractTreeItem::Measure;
387 void *AbstractMeasureItem::getPointer()
const {
392 bool AbstractMeasureItem::hasMeasure(ControlMeasure *m)
const {
393 return m_measure == m;
397 void AbstractMeasureItem::sourceDeleted() {
402 void AbstractMeasureItem::setLogData(ControlMeasure *m_measure,
403 int m_measureLogDataEnum,
const QString &value) {
406 QString newDataStr = value.toLower();
410 if (newDataStr ==
"null") {
411 m_measure->DeleteLogData(type);
414 m_measure->SetLogData(ControlMeasureLogData(type,
Status SetType(MeasureType type)
Set how the coordinate was obtained.
Deprecated keyword kept for backwards compatability with older Control Networks.
NumericLogDataType
Please do not change existing values in this list except the size - it will break backwards compadibi...
double GetResidualMagnitude() const
Return Residual magnitude.
This error is for when a programmer made an API call that was illegal.
Control measures store z-scores in pairs.
Status SetDiameter(double diameter)
Set the crater diameter at the coordinate.
Status SetResidual(double sampResidual, double lineResidual)
Set the BundleAdjust Residual of the coordinate.
QString GetId() const
Return the Id of the control point.
#define _FILEINFO_
Macro for the filename and line number.
A type of error that could only have occurred due to a mistake on the user's part (e...
const ControlMeasure * GetRefMeasure() const
Get the reference control measure.
GoodnessOfFit is pointreg information for reference measures.
Namespace for ISIS/Bullet specific routines.
bool IsEditLocked() const
Return value for p_editLock or implicit lock on reference measure.
Status SetCubeSerialNumber(QString newSerialNumber)
Set cube serial number.
Status SetCoordinate(double sample, double line)
Set the coordinate of the measurement.
int Delete(ControlMeasure *measure)
Remove a measurement from the control point, deleting reference measure is allowed.
double GetNumericalValue() const
Get the value associated with this log data.
double GetDiameter() const
Return the diameter of the crater in pixels (0 implies no crater)
QString GetCubeSerialNumber() const
Return the serial number of the cube containing the coordinate.
static MeasureType StringToMeasureType(QString str)
static QString MeasureTypeToString(MeasureType type)
Return the String Control Measure type.