3 #include "MeasureCountFilter.h" 7 #include <QButtonGroup> 14 #include <QRadioButton> 24 MeasureCountFilter::MeasureCountFilter(
25 AbstractFilter::FilterEffectivenessFlag flag,
26 int minimumForSuccess) : AbstractFilter(flag, minimumForSuccess) {
32 MeasureCountFilter::MeasureCountFilter(
const MeasureCountFilter &other) : AbstractFilter(other) {
36 m_count = other.m_count;
37 m_minimum = other.m_minimum;
38 m_countSpinBox->setValue(other.m_countSpinBox->value());
39 m_minMaxGroup->button(other.m_minMaxGroup->checkedId())->click();
44 MeasureCountFilter::~MeasureCountFilter() {
48 void MeasureCountFilter::init() {
50 m_countSpinBox = NULL;
56 void MeasureCountFilter::createWidget() {
57 QFont minMaxFont(
"SansSerif", 9);
58 QRadioButton *minButton =
new QRadioButton(
"Minimum");
59 minButton->setFont(minMaxFont);
60 QRadioButton *maxButton =
new QRadioButton(
"Maximum");
61 maxButton->setFont(minMaxFont);
63 m_minMaxGroup =
new QButtonGroup;
64 connect(m_minMaxGroup, SIGNAL(buttonClicked(
int)),
65 this, SLOT(updateMinMax(
int)));
66 m_minMaxGroup->addButton(minButton, 0);
67 m_minMaxGroup->addButton(maxButton, 1);
72 m_countSpinBox->setRange(0, std::numeric_limits< int >::max());
73 m_countSpinBox->setValue(m_count);
74 connect(m_countSpinBox, SIGNAL(valueChanged(
int)),
75 this, SLOT(updateMeasureCount(
int)));
79 getInclusiveExclusiveLayout()->itemAt(0)->widget()->setVisible(
false);
80 getInclusiveExclusiveLayout()->itemAt(1)->widget()->setVisible(
false);
81 getInclusiveExclusiveLayout()->addWidget(minButton);
82 getInclusiveExclusiveLayout()->addWidget(maxButton);
83 getInclusiveExclusiveLayout()->addSpacing(8);
84 getInclusiveExclusiveLayout()->addWidget(m_countSpinBox);
89 return AbstractFilter::evaluateImageFromPointFilter(imageAndNet);
93 bool MeasureCountFilter::evaluate(
const ControlPoint *point)
const {
94 return (point->getMeasures().size() >= m_count && m_minimum) ||
95 (point->getMeasures().size() <= m_count && !m_minimum);
99 bool MeasureCountFilter::evaluate(
const ControlMeasure *measure)
const {
104 AbstractFilter *MeasureCountFilter::clone()
const {
105 return new MeasureCountFilter(*
this);
109 QString MeasureCountFilter::getImageDescription()
const {
110 QString description = AbstractFilter::getImageDescription();
112 if (getMinForSuccess() == 1) {
113 description +=
"point that ";
116 description +=
"doesn't have";
118 description +=
"has ";
121 description +=
"points that ";
124 description +=
"don't ";
126 description +=
"have ";
129 description +=
"at ";
132 description +=
"least ";
134 description +=
"most ";
136 description += QString::number(m_count) +
" measures";
142 QString MeasureCountFilter::getPointDescription()
const {
146 description =
"don't ";
148 description =
"have at ";
151 description +=
"least ";
153 description +=
"most ";
155 description += QString::number(m_count) +
" measures";
161 void MeasureCountFilter::updateMinMax(
int buttonId) {
162 m_minimum = (buttonId == 0);
163 emit filterChanged();
167 void MeasureCountFilter::updateMeasureCount(
int newCount) {
169 emit filterChanged();
Namespace for ISIS/Bullet specific routines.