3 #include "PointTableDelegate.h" 17 #include "AbstractPointItem.h" 18 #include "AbstractTreeItem.h" 19 #include "PointTableModel.h" 20 #include "TableColumn.h" 23 PointTableDelegate::PointTableDelegate() {
27 PointTableDelegate::~PointTableDelegate() {
31 QWidget *PointTableDelegate::getWidget(TableColumn
const *col)
const {
32 AbstractPointItem::Column column =
33 AbstractPointItem::getColumn(col->getTitle());
37 case AbstractPointItem::PointType:
38 case AbstractPointItem::EditLock:
39 case AbstractPointItem::Ignored:
40 case AbstractPointItem::Reference:
41 case AbstractPointItem::APrioriSPSource:
42 case AbstractPointItem::APrioriRadiusSource: {
46 case AbstractPointItem::PointType:
47 for (
int i = 0; i < ControlPoint::PointTypeCount; i++) {
52 case AbstractPointItem::EditLock:
53 combo->insertItem(0,
"Yes");
54 combo->insertItem(1,
"No");
56 case AbstractPointItem::Ignored:
57 combo->insertItem(0,
"Yes");
58 combo->insertItem(1,
"No");
60 case AbstractPointItem::Reference:
64 case AbstractPointItem::APrioriSPSource:
65 combo->insertItem(0,
"None");
66 combo->insertItem(1,
"User");
67 combo->insertItem(2,
"AverageOfMeasures");
68 combo->insertItem(3,
"Reference");
69 combo->insertItem(4,
"Basemap");
70 combo->insertItem(5,
"BundleSolution");
72 case AbstractPointItem::APrioriRadiusSource:
73 combo->insertItem(0,
"None");
74 combo->insertItem(1,
"User");
75 combo->insertItem(2,
"AverageOfMeasures");
76 combo->insertItem(3,
"Ellipsoid");
77 combo->insertItem(4,
"DEM");
78 combo->insertItem(5,
"BundleSolution");
89 return new QLineEdit();
92 QString msg =
"Could not create delegate widget for column [" 93 + col->getTitle() +
"]";
98 void PointTableDelegate::readData(
QWidget *widget,
99 AbstractTreeItem *row, TableColumn
const *col)
const {
100 QString columnTitle = col->getTitle();
101 AbstractPointItem::Column column =
102 AbstractPointItem::getColumn(columnTitle);
104 QString data = row->getFormattedData(columnTitle);
105 ASSERT(row->getPointerType() == AbstractTreeItem::Point);
106 ControlPoint *point = (ControlPoint *)row->getPointer();
109 case AbstractPointItem::Reference: {
112 for (
int i = 0; i < point->GetNumMeasures(); i++)
113 combo->insertItem(i, point->GetMeasure(i)->GetCubeSerialNumber());
114 combo->setCurrentIndex(point->IndexOfRefMeasure());
118 case AbstractPointItem::PointType:
119 case AbstractPointItem::EditLock:
120 case AbstractPointItem::Ignored:
121 case AbstractPointItem::APrioriSPSource:
122 case AbstractPointItem::APrioriRadiusSource: {
126 case AbstractPointItem::PointType:
127 combo->setCurrentIndex(
128 (
int) point->StringToPointType(data));
130 case AbstractPointItem::EditLock:
131 combo->setCurrentIndex(point->IsEditLocked() ? 0 : 1);
133 case AbstractPointItem::Ignored:
134 combo->setCurrentIndex(point->IsIgnored() ? 0 : 1);
136 case AbstractPointItem::APrioriSPSource:
137 combo->setCurrentIndex(
138 (
int) point->StringToSurfacePointSource(data));
140 case AbstractPointItem::APrioriRadiusSource:
141 combo->setCurrentIndex(
142 (
int) point->StringToRadiusSource(data));
150 QLineEdit *lineEdit =
static_cast< QLineEdit *
>(widget);
151 lineEdit->setText(data);
157 void PointTableDelegate::readData(
QWidget *widget,
158 AbstractTreeItem *row, TableColumn
const *col,
159 QString newData)
const {
160 QString columnTitle = col->getTitle();
161 AbstractPointItem::Column column =
162 AbstractPointItem::getColumn(columnTitle);
164 QString data = row->getFormattedData(columnTitle);
165 ASSERT(row->getPointerType() == AbstractTreeItem::Point);
166 ControlPoint *point = (ControlPoint *)row->getPointer();
169 case AbstractPointItem::Reference: {
172 for (
int i = 0; i < point->GetNumMeasures(); i++)
173 combo->insertItem(i, point->GetMeasure(i)->GetCubeSerialNumber());
175 combo->setCurrentIndex(point->IndexOfRefMeasure());
177 for (
int i = combo->count() - 1; i >= 0; --i)
178 if (combo->itemText(i).toLower().startsWith(newData.toLower()))
179 combo->setCurrentIndex(i);
183 case AbstractPointItem::PointType:
184 case AbstractPointItem::EditLock:
185 case AbstractPointItem::Ignored:
186 case AbstractPointItem::APrioriSPSource:
187 case AbstractPointItem::APrioriRadiusSource: {
191 case AbstractPointItem::PointType:
192 combo->setCurrentIndex(
193 (
int) point->StringToPointType(data));
195 case AbstractPointItem::EditLock:
196 combo->setCurrentIndex(point->IsEditLocked() ? 0 : 1);
198 case AbstractPointItem::Ignored:
199 combo->setCurrentIndex(point->IsIgnored() ? 0 : 1);
201 case AbstractPointItem::APrioriSPSource:
202 combo->setCurrentIndex(
203 (
int) point->StringToSurfacePointSource(data));
205 case AbstractPointItem::APrioriRadiusSource:
206 combo->setCurrentIndex(
207 (
int) point->StringToRadiusSource(data));
213 for (
int i = combo->count() - 1; i >= 0; --i)
214 if (combo->itemText(i).toLower().startsWith(newData.toLower()))
215 combo->setCurrentIndex(i);
219 QLineEdit *lineEdit =
static_cast< QLineEdit *
>(widget);
220 lineEdit->setText(newData);
226 void PointTableDelegate::saveData(
QWidget *widget,
227 AbstractTreeItem *row,
const TableColumn *col)
const {
228 AbstractPointItem::Column column =
229 AbstractPointItem::getColumn(col->getTitle());
234 case AbstractPointItem::PointType:
235 case AbstractPointItem::EditLock:
236 case AbstractPointItem::Ignored:
237 case AbstractPointItem::Reference:
238 case AbstractPointItem::APrioriSPSource:
239 case AbstractPointItem::APrioriRadiusSource: {
241 newData = combo->currentText();
245 QLineEdit *lineEdit =
static_cast< QLineEdit *
>(widget);
246 newData = lineEdit->text();
250 QString warningText = PointTableModel::getPointWarningMessage(
253 bool changeData =
true;
255 if (!warningText.isEmpty()) {
256 QMessageBox::StandardButton status = QMessageBox::warning(
257 NULL,
"Change cell?", warningText, QMessageBox::Yes |
260 changeData = (status == QMessageBox::Yes);
264 row->setData(col->getTitle(), newData);
PointType
These are the valid 'types' of point.
This error is for when a programmer made an API call that was illegal.
#define _FILEINFO_
Macro for the filename and line number.
Namespace for ISIS/Bullet specific routines.
static QString PointTypeToString(PointType type)
Obtain a string representation of a given PointType.