]> sigrok.org Git - pulseview.git/blobdiff - pv/views/trace/mathsignal.hpp
Make AnalogSignal inherit LogicSignal
[pulseview.git] / pv / views / trace / mathsignal.hpp
index 461fd4b724cad2e713321907e5c0abc3b1cdb591..6af708e502e97e752e9ddeba7f5eacb2ca7bdd59 100644 (file)
 #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
@@ -49,6 +83,8 @@ private Q_SLOTS:
        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_;