2010-03-20 23:45:54 +01:00
|
|
|
#ifndef ANALYZERCONTAINER_H
|
|
|
|
#define ANALYZERCONTAINER_H
|
|
|
|
|
|
|
|
#include <QWidget>
|
|
|
|
#include <QMenu>
|
|
|
|
#include <QSignalMapper>
|
|
|
|
|
|
|
|
#include "analyzerbase.h"
|
|
|
|
#include "engine_fwd.h"
|
|
|
|
|
|
|
|
class AnalyzerContainer : public QWidget {
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
AnalyzerContainer(QWidget* parent);
|
|
|
|
|
|
|
|
void set_engine(EngineBase* engine);
|
|
|
|
|
|
|
|
static const char* kSettingsGroup;
|
|
|
|
|
|
|
|
protected:
|
2010-03-21 17:20:27 +01:00
|
|
|
void mouseReleaseEvent(QMouseEvent *);
|
2010-03-20 23:45:54 +01:00
|
|
|
|
|
|
|
private slots:
|
|
|
|
void ChangeAnalyzer(int id);
|
|
|
|
void DisableAnalyzer();
|
|
|
|
|
|
|
|
private:
|
|
|
|
void Load();
|
|
|
|
void Save();
|
|
|
|
template <typename T>
|
|
|
|
void AddAnalyzerType();
|
|
|
|
|
|
|
|
private:
|
|
|
|
QMenu* context_menu_;
|
|
|
|
QActionGroup* group_;
|
|
|
|
QSignalMapper* mapper_;
|
|
|
|
|
|
|
|
QList<const QMetaObject*> analyzer_types_;
|
|
|
|
QList<QAction*> actions_;
|
|
|
|
QAction* disable_action_;
|
|
|
|
|
|
|
|
Analyzer::Base* current_analyzer_;
|
|
|
|
EngineBase* engine_;
|
|
|
|
};
|
|
|
|
|
|
|
|
template <typename T>
|
|
|
|
void AnalyzerContainer::AddAnalyzerType() {
|
|
|
|
int id = analyzer_types_.count();
|
|
|
|
analyzer_types_ << &T::staticMetaObject;
|
|
|
|
|
|
|
|
QAction* action = context_menu_->addAction(tr(T::kName), mapper_, SLOT(map()));
|
|
|
|
group_->addAction(action);
|
|
|
|
mapper_->setMapping(action, id);
|
|
|
|
action->setCheckable(true);
|
|
|
|
actions_ << action;
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|