File indexing completed on 2024-04-28 11:20:38

0001 /*
0002     SPDX-FileCopyrightText: 2009 Milian Wolff <mail@milianw.de>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef QALCULATE_EXPRESSION_H
0008 #define QALCULATE_EXPRESSION_H
0009 
0010 #include "expression.h"
0011 #include <vector>
0012 #include <string>
0013 #include <libqalculate/Calculator.h>
0014 
0015 #include <QSharedPointer>
0016 
0017 class QalculateSession;
0018 class QTemporaryFile;
0019 
0020 class QalculateExpression : public Cantor::Expression
0021 {
0022     Q_OBJECT
0023 
0024 public:
0025     explicit QalculateExpression( QalculateSession* session, bool internal = false);
0026     ~QalculateExpression() override;
0027 
0028     void evaluate() override;
0029     void parseOutput(const QString&) override;
0030     void parseError(const QString&) override;
0031 
0032 private:
0033     QTemporaryFile* m_tempFile{nullptr};
0034 
0035     QString m_message;
0036     enum MsgType { MSG_NONE=0, MSG_INFO=1, MSG_WARN=2, MSG_ERR=4 };
0037 
0038     void evaluatePlotCommand();
0039 
0040     bool stringToBool(const QString&, bool*);
0041     void deletePlotDataParameters(const std::vector<PlotDataParameters*>&);
0042     void showMessage(QString msg, MessageType mtype);
0043     int checkForCalculatorMessages();
0044     void updateVariables();
0045     QSharedPointer<PrintOptions> printOptions();
0046     EvaluationOptions evaluationOptions();
0047     ParseOptions parseOptions();
0048     std::string unlocalizeExpression(QString expr);
0049 };
0050 
0051 #endif