File indexing completed on 2024-12-01 09:37:29
0001 /* 0002 SPDX-License-Identifier: GPL-2.0-or-later 0003 SPDX-FileCopyrightText: 2009-2012 Alexander Rieder <alexanderrieder@gmail.com> 0004 SPDX-FileCopyrightText: 2018-2021 by Alexander Semke (alexander.semke@web.de) 0005 */ 0006 0007 #ifndef _MAXIMAEXPRESSION_H 0008 #define _MAXIMAEXPRESSION_H 0009 0010 #include "expression.h" 0011 #include <QStringList> 0012 #include <QFileSystemWatcher> 0013 0014 class QTemporaryFile; 0015 0016 class MaximaExpression : public Cantor::Expression 0017 { 0018 Q_OBJECT 0019 0020 public: 0021 explicit MaximaExpression(Cantor::Session*, bool internal = false); 0022 ~MaximaExpression() override; 0023 0024 void evaluate() override; 0025 QString internalCommand() override; 0026 0027 //Forces the status of this Expression to done 0028 void forceDone(); 0029 0030 //reads from @param out until a prompt indicates that a new expression has started 0031 void parseOutput(const QString&) override; 0032 void parseError(const QString&) override; 0033 0034 void addInformation(const QString&) override; 0035 0036 private Q_SLOTS: 0037 void imageChanged(); 0038 0039 private: 0040 void parseResult(const QString&); 0041 0042 QTemporaryFile* m_tempFile = nullptr; 0043 QFileSystemWatcher m_fileWatch; 0044 bool m_isHelpRequest = false; 0045 bool m_isHelpRequestAdditional = false; 0046 bool m_isPlot = false; 0047 bool m_isDraw = false; 0048 Cantor::Result* m_plotResult = nullptr; 0049 int m_plotResultIndex = -1; 0050 QString m_errorBuffer; 0051 bool m_gotErrorContent = false; 0052 }; 0053 0054 #endif /* _MAXIMAEXPRESSION_H */