Isis 3 Programmer Reference
AbstractMultipleChoiceFilter.cpp
1 #include "IsisDebug.h"
2 
3 #include "AbstractMultipleChoiceFilter.h"
4 
5 #include <iostream>
6 
7 #include <QComboBox>
8 #include <QHBoxLayout>
9 #include <QMargins>
10 #include <QString>
11 #include <QStringList>
12 
13 
14 namespace Isis {
15  AbstractMultipleChoiceFilter::AbstractMultipleChoiceFilter(
16  AbstractFilter::FilterEffectivenessFlag flag,
17  int minimumForSuccess) : AbstractFilter(flag, minimumForSuccess) {
18  nullify();
19  m_curChoice = new QString;
20  }
21 
22  AbstractMultipleChoiceFilter::AbstractMultipleChoiceFilter(
23  AbstractMultipleChoiceFilter const &other) : AbstractFilter(other) {
24  nullify();
25  m_curChoice = new QString;
26 
27  QStringList options;
28  for (int i = 0; i < other.m_combo->count(); i++)
29  options.append(other.m_combo->itemText(i));
30 
31  createWidget(options);
32 
33  m_combo->setCurrentIndex(other.m_combo->currentIndex());
34  }
35 
36 
37 
38  AbstractMultipleChoiceFilter::~AbstractMultipleChoiceFilter() {
39  if (m_curChoice) {
40  delete m_curChoice;
41  m_curChoice = NULL;
42  }
43  }
44 
45 
46  void AbstractMultipleChoiceFilter::nullify() {
47  m_combo = NULL;
48  m_curChoice = NULL;
49  }
50 
51 
52  void AbstractMultipleChoiceFilter::createWidget(QStringList options) {
53  m_combo = new QComboBox;
54  foreach (QString option, options)
55  m_combo->addItem(option);
56 
57  m_combo->setCurrentIndex(0);
58 
59  *m_curChoice = m_combo->currentText();
60 
61  connect(m_combo, SIGNAL(currentIndexChanged(QString)),
62  this, SLOT(updateCurChoice(QString)));
63 
64  QHBoxLayout *layout = new QHBoxLayout;
65  QMargins margins = layout->contentsMargins();
66  margins.setTop(0);
67  margins.setBottom(0);
68  layout->setContentsMargins(margins);
69  layout->addWidget(m_combo);
70  layout->addStretch();
71 
72  getMainLayout()->addLayout(layout);
73  }
74 
75 
76  QString const &AbstractMultipleChoiceFilter::getCurrentChoice() const {
77  ASSERT(m_curChoice);
78  return *m_curChoice;
79  }
80 
81 
82  void AbstractMultipleChoiceFilter::updateCurChoice(QString newChoice) {
83  ASSERT(m_curChoice);
84 
85  *m_curChoice = newChoice;
86 
87  emit filterChanged();
88  }
89 }
Namespace for ISIS/Bullet specific routines.
Definition: Apollo.h:31