#ifndef PULSEVIEW_PV_VIEWS_TRACE_MATHSIGNAL_HPP
#define PULSEVIEW_PV_VIEWS_TRACE_MATHSIGNAL_HPP
+#include <memory>
+#include <vector>
+
#include <QComboBox>
+#include <QDialog>
+#include <QPlainTextEdit>
#include <QString>
#include <QTimer>
#include <pv/data/mathsignal.hpp>
#include <pv/views/trace/analogsignal.hpp>
+using std::pair;
using std::shared_ptr;
+using std::string;
+using std::vector;
namespace pv {
namespace views {
namespace trace {
+class MathEditDialog : public QDialog
+{
+ Q_OBJECT
+
+private:
+ static const vector< pair<string, string> > Examples;
+
+public:
+ MathEditDialog(pv::Session &session, shared_ptr<pv::data::MathSignal> math_signal,
+ QWidget *parent = nullptr);
+
+ void set_expr(const QString &expr);
+
+private Q_SLOTS:
+ void accept();
+ void reject();
+
+private:
+ pv::Session &session_;
+ shared_ptr<pv::data::MathSignal> math_signal_;
+ QString old_expression_;
+
+ QPlainTextEdit *expr_edit_;
+};
+
+
class MathSignal : public AnalogSignal
{
Q_OBJECT
void on_expression_changed(const QString &text);
void on_sample_count_changed(const QString &text);
+ void on_edit_clicked();
+
private:
QLineEdit *expression_edit_;
QComboBox *sample_count_cb_, *sample_rate_cb_;