3 #include "MeasureTableDelegate.h" 19 #include "AbstractMeasureItem.h" 20 #include "AbstractTreeItem.h" 21 #include "MeasureTableModel.h" 22 #include "TableColumn.h" 25 MeasureTableDelegate::MeasureTableDelegate() {
29 MeasureTableDelegate::~MeasureTableDelegate() {
33 QWidget *MeasureTableDelegate::getWidget(TableColumn
const *col)
35 AbstractMeasureItem::Column column =
36 AbstractMeasureItem::getColumn(col->getTitle());
39 case AbstractMeasureItem::Ignored:
40 case AbstractMeasureItem::EditLock: {
43 combo->insertItem(0,
"Yes");
44 combo->insertItem(1,
"No");
47 case AbstractMeasureItem::Type: {
50 combo->insertItem(0,
"Candidate");
51 combo->insertItem(1,
"Manual");
52 combo->insertItem(2,
"RegisteredPixel");
53 combo->insertItem(3,
"RegisteredSubPixel");
57 QLineEdit *lineEdit =
new QLineEdit;
62 IString msg =
"Could not create delegate widget for column [" 63 + col->getTitle() +
"]";
68 void MeasureTableDelegate::readData(
QWidget *widget,
69 AbstractTreeItem *row, TableColumn
const *col)
const {
70 AbstractMeasureItem::Column column =
71 AbstractMeasureItem::getColumn(col->getTitle());
73 QString data = row->getFormattedData(col->getTitle());
74 ASSERT(row->getPointerType() == AbstractTreeItem::Measure);
75 ControlMeasure *measure = (ControlMeasure *)row->getPointer();
78 case AbstractMeasureItem::EditLock: {
80 if (measure->IsEditLocked())
81 combo->setCurrentIndex(0);
83 combo->setCurrentIndex(1);
86 case AbstractMeasureItem::Ignored: {
88 if (measure->IsIgnored())
89 combo->setCurrentIndex(0);
91 combo->setCurrentIndex(1);
94 case AbstractMeasureItem::Type: {
96 combo->setCurrentIndex((
int) measure->StringToMeasureType(data));
100 QLineEdit *lineEdit =
static_cast< QLineEdit *
>(widget);
101 lineEdit->setText(data);
107 void MeasureTableDelegate::readData(
QWidget *widget,
108 AbstractTreeItem *row, TableColumn
const *col,
109 QString newData)
const {
110 AbstractMeasureItem::Column column =
111 AbstractMeasureItem::getColumn(col->getTitle());
113 QString data = row->getFormattedData(col->getTitle());
114 ASSERT(row->getPointerType() == AbstractTreeItem::Measure);
115 ControlMeasure *measure = (ControlMeasure *) row->getPointer();
118 case AbstractMeasureItem::EditLock: {
121 if (measure->IsEditLocked())
122 combo->setCurrentIndex(0);
124 combo->setCurrentIndex(1);
126 if (QString(
"yes").startsWith(newData.toLower()))
127 combo->setCurrentIndex(0);
128 else if (QString(
"no").startsWith(newData.toLower()))
129 combo->setCurrentIndex(1);
133 case AbstractMeasureItem::Ignored: {
136 if (measure->IsIgnored())
137 combo->setCurrentIndex(0);
139 combo->setCurrentIndex(1);
141 if (QString(
"yes").startsWith(newData.toLower()))
142 combo->setCurrentIndex(0);
143 if (QString(
"no").startsWith(newData.toLower()))
144 combo->setCurrentIndex(1);
148 case AbstractMeasureItem::Type: {
151 combo->setCurrentIndex((
int) measure->StringToMeasureType(data));
153 for (
int i = combo->count() - 1; i >= 0; --i)
154 if (combo->itemText(i).toLower().startsWith(newData.toLower()))
155 combo->setCurrentIndex(i);
160 QLineEdit *lineEdit =
static_cast< QLineEdit *
>(widget);
161 lineEdit->setText(newData);
167 void MeasureTableDelegate::saveData(
QWidget *widget,
168 AbstractTreeItem *row, TableColumn
const *col)
const {
169 AbstractMeasureItem::Column column =
170 AbstractMeasureItem::getColumn(col->getTitle());
174 case AbstractMeasureItem::EditLock:
175 case AbstractMeasureItem::Ignored:
176 case AbstractMeasureItem::Type: {
178 newData = combo->currentText();
182 QLineEdit *lineEdit =
static_cast< QLineEdit *
>(widget);
183 newData = lineEdit->text();
187 QString warningText = MeasureTableModel::getMeasureWarningMessage(
190 bool changeData =
true;
192 if (!warningText.isEmpty()) {
193 QMessageBox::StandardButton status = QMessageBox::warning(
194 NULL,
"Change cell?", warningText, QMessageBox::Yes |
197 changeData = (status == QMessageBox::Yes);
201 row->setData(col->getTitle(), newData);
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.