40 m_ignoreStatus = NULL;
43 m_editLockStatus = NULL;
45 m_notEditLocked = NULL;
48 m_pointType =
new QGroupBox(
"Filter by Point Type(s)");
49 m_pointType->setCheckable(
true);
50 m_free =
new QCheckBox(
"Free");
51 m_constrained =
new QCheckBox(
"Constrained");
52 m_fixed =
new QCheckBox(
"Fixed");
54 m_free->setChecked(
true);
56 QVBoxLayout *typeLayout =
new QVBoxLayout();
57 typeLayout->addWidget(m_free);
58 typeLayout->addWidget(m_constrained);
59 typeLayout->addWidget(m_fixed);
60 typeLayout->addStretch(1);
61 m_pointType->setLayout(typeLayout);
63 m_ignoreStatus =
new QGroupBox(
"Filter by Ignore Status");
64 m_ignoreStatus->setCheckable(
true);
65 m_ignoreStatus->setChecked(
false);
66 m_ignored =
new QRadioButton(
"Ignored");
67 m_notIgnored =
new QRadioButton(
"Not Ignored");
69 m_ignored->setChecked(
true);
71 QVBoxLayout *ignoreLayout =
new QVBoxLayout();
72 ignoreLayout->addWidget(m_ignored);
73 ignoreLayout->addWidget(m_notIgnored);
74 m_ignoreStatus->setLayout(ignoreLayout);
76 m_editLockStatus =
new QGroupBox(
"Filter by Edit Lock Status");
77 m_editLockStatus->setCheckable(
true);
78 m_editLockStatus->setChecked(
false);
79 m_editLocked =
new QRadioButton(
"Edit Locked");
80 m_notEditLocked =
new QRadioButton(
"Not Edit Locked");
82 m_editLocked->setChecked(
true);
84 QVBoxLayout *lockLayout =
new QVBoxLayout();
85 lockLayout->addWidget(m_editLocked);
86 lockLayout->addWidget(m_notEditLocked);
87 m_editLockStatus->setLayout(lockLayout);
94 QVBoxLayout *statusLayout =
new QVBoxLayout();
95 statusLayout->addWidget(m_ignoreStatus);
96 statusLayout->addWidget(m_editLockStatus);
98 QHBoxLayout *layout =
new QHBoxLayout();
99 layout->addWidget(m_pointType);
100 layout->addLayout(statusLayout);
102 this->setLayout(layout);
133 if (controlNet() == NULL) {
134 QMessageBox::information((
QWidget *)parent(),
135 "Error",
"No points to filter");
140 if (!m_pointType->isChecked() && !m_ignoreStatus->isChecked() &&
141 !m_editLockStatus->isChecked()) {
142 QMessageBox::information((
QWidget *)parent(),
"Input Error",
143 "You must select something to filter.");
148 if ((m_pointType->isChecked()) &&
149 !(m_fixed->isChecked() || m_constrained->isChecked() ||
150 m_free->isChecked())) {
151 QMessageBox::information((
QWidget *)parent(),
"Input Error",
152 "Filter by Point Type is selected. You must choose at least one "
153 "Point Type to filter");
160 for (
int i = filteredPoints().size() - 1; i >= 0; i--) {
161 ControlPoint &cp = *(*controlNet())[filteredPoints()[i]];
164 if (m_pointType->isChecked()) {
168 if (keep && m_ignoreStatus->isChecked()) {
172 bool allMeasuresIgnored =
true;
173 for (
int j = 0; j < cp.GetNumMeasures(); j++) {
174 if (!cp[j]->IsIgnored()) {
175 allMeasuresIgnored =
false;
179 if (m_ignored->isChecked() && !cp.IsIgnored() && !allMeasuresIgnored) {
182 else if (m_notIgnored->isChecked() &&
183 (cp.IsIgnored() || allMeasuresIgnored)) {
188 if (keep && m_editLockStatus->isChecked()) {
189 if (m_editLocked->isChecked() && !cp.IsEditLocked()) {
192 else if (m_notEditLocked->isChecked() && cp.IsEditLocked()) {
197 if (!keep) filteredPoints().removeAt(i);
201 emit filteredListModified();