Warning, file /education/cantor/src/backends/octave/octavesession.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 SPDX-FileCopyrightText: 2010 Miha Čančula <miha.cancula@gmail.com> 0003 SPDX-FileCopyrightText: 2017-2023 by Alexander Semke (alexander.semke@web.de) 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #ifndef OCTAVESESSION_H 0009 #define OCTAVESESSION_H 0010 0011 #include <session.h> 0012 #include <QTextStream> 0013 #include <QRegularExpression> 0014 0015 namespace Cantor { 0016 class DefaultVariableModel; 0017 } 0018 0019 class OctaveExpression; 0020 class QProcess; 0021 0022 class OctaveSession : public Cantor::Session 0023 { 0024 Q_OBJECT 0025 public: 0026 explicit OctaveSession(Cantor::Backend*); 0027 ~OctaveSession() override; 0028 void interrupt() override; 0029 Cantor::Expression* evaluateExpression(const QString& cmd, Cantor::Expression::FinishingBehavior behavior = Cantor::Expression::FinishingBehavior::DoNotDelete, bool internal = false) override; 0030 void logout() override; 0031 void login() override; 0032 Cantor::CompletionObject* completionFor(const QString& cmd, int index=-1) override; 0033 Cantor::SyntaxHelpObject* syntaxHelpFor(const QString& cmd) override; 0034 QSyntaxHighlighter* syntaxHighlighter(QObject* parent) override; 0035 void runFirstExpression() override; 0036 void setWorksheetPath(const QString&) override; 0037 0038 bool isIntegratedPlotsEnabled() const; 0039 QString plotFilePrefixPath() const; 0040 0041 private: 0042 const static QRegularExpression PROMPT_UNCHANGEABLE_COMMAND; 0043 0044 private: 0045 QProcess* m_process{nullptr}; 0046 QTextStream m_stream; 0047 QRegularExpression m_prompt; 0048 QRegularExpression m_subprompt; 0049 int m_previousPromptNumber{1}; 0050 bool m_syntaxError{false}; 0051 QString m_output; 0052 QString m_plotFilePrefixPath; 0053 QString m_worksheetPath; 0054 bool m_isIntegratedPlotsEnabled{false}; // Better move it in worksheet, like isCompletion, etc. 0055 bool m_writableTempFolder{false}; 0056 0057 private: 0058 void readFromOctave(QByteArray); 0059 bool isDoNothingCommand(const QString&); 0060 bool isSpecialOctaveCommand(const QString&); 0061 void checkWritableTempFolder(); 0062 0063 private Q_SLOTS: 0064 void readOutput(); 0065 void readError(); 0066 void processError(); 0067 }; 0068 0069 #endif // OCTAVESESSION_H