51 #include <boost/bind.hpp>
52 #include <boost/shared_ptr.hpp>
53 #include <boost/shared_ptr.hpp>
60 BaseWidget(parent,
"algorithm_widgets_configurable_filter",
"Configurable Filter")
71 mServiceListener.reset(
74 boost::bind(&AllFiltersWidget::onServiceAdded,
this, _1),
75 boost::function<
void(
Filter*)>(),
76 boost::bind(&AllFiltersWidget::onServiceRemoved,
this, _1)));
77 mServiceListener->open();
79 QStringList availableFilters;
80 std::map<QString,QString> names;
81 for (
unsigned i=0; i<mFilters->size(); ++i)
83 availableFilters << mFilters->get(i)->getUid();
84 names[mFilters->get(i)->getUid()] = mFilters->get(i)->getName();
89 "Select which filter to use.",
93 mFilterSelector->setDisplayNames(names);
95 this, &AllFiltersWidget::filterChangedSlot);
97 QVBoxLayout* topLayout =
new QVBoxLayout(
this);
99 QHBoxLayout* filterLayout =
new QHBoxLayout;
100 topLayout->addLayout(filterLayout);
106 QIcon(
":/icons/open_icon_library/system-run-5.png"),
107 "Details",
"Show Details",
108 SLOT(toggleDetailsSlot()),
111 QToolButton* detailsButton =
new QToolButton();
112 detailsButton->setObjectName(
"DetailedButton");
113 detailsButton->setDefaultAction(detailsAction);
115 filterLayout->addWidget(detailsButton);
119 QIcon(
":/icons/open_icon_library/arrow-right-3.png"),
121 SLOT(runFilterSlot()),
125 button->setObjectName(
"RunFilterButton");
126 button->setDefaultAction(runAction);
127 filterLayout->addWidget(button);
130 topLayout->addWidget(mTimedAlgorithmProgressBar);
133 topLayout->addWidget(mSetupWidget);
135 topLayout->addStretch();
137 this->filterChangedSlot();
142 return QString(
"<html>"
143 "<h3>Filter Widget.</h3>"
144 "<p>Select one type of filter.</p>"
145 "<p><i>Currently selected filter:</i></p>"
150 void AllFiltersWidget::filterChangedSlot()
152 for (
unsigned i=0; i<mFilters->size(); ++i)
154 if (mFilters->get(i)->getUid() == mFilterSelector->getValue())
156 mCurrentFilter = mFilters->get(i);
164 void AllFiltersWidget::toggleDetailsSlot()
170 void AllFiltersWidget::runFilterSlot()
176 reportWarning(QString(
"Last operation on %1 is not finished. Could not start filtering")
177 .arg(mThread->getFilter()->getName()));
181 mThread.reset(
new FilterTimedAlgorithm(mCurrentFilter));
182 connect(mThread.get(), SIGNAL(finished()),
this, SLOT(finishedSlot()));
183 mTimedAlgorithmProgressBar->
attach(mThread);
188 void AllFiltersWidget::finishedSlot()
190 mTimedAlgorithmProgressBar->
detach(mThread);
191 disconnect(mThread.get(), SIGNAL(finished()),
this, SLOT(finishedSlot()));
195 void AllFiltersWidget::onServiceAdded(Filter* service)
197 mFilters->append(
FilterPtr(service, null_deleter()));
200 void AllFiltersWidget::onServiceRemoved(Filter *service)
202 mFilters->remove(service);
cxResource_EXPORT ProfilePtr profile()
boost::shared_ptr< class VisServices > VisServicesPtr
Show progress for a TimedBaseAlgorithm.
QDomElement getElement()
return the current element
void detach(TimedAlgorithmPtr algorithm)
boost::shared_ptr< class Filter > FilterPtr
void reportWarning(QString msg)
static LogicManager * getInstance()
void attach(TimedAlgorithmPtr algorithm)
static StringPropertyPtr initialize(const QString &uid, QString name, QString help, QString value, QStringList range, QDomNode root=QDomNode())
Helper class for listening to services being added, modified and removed.
Helper class for xml files used to store ssc/cx data.