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