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

0001 /*
0002     SPDX-License-Identifier: GPL-2.0-or-later
0003     SPDX-FileCopyrightText: 2011 Filipe Saraiva <filipe@kde.org>
0004 */
0005 
0006 #ifndef _SCILABSESSION_H
0007 #define _SCILABSESSION_H
0008 
0009 #include "session.h"
0010 #include "scilabexpression.h"
0011 #include <QStringList>
0012 #include <QQueue>
0013 
0014 namespace Cantor {
0015     class DefaultVariableModel;
0016 }
0017 
0018 class ScilabExpression;
0019 class KDirWatch;
0020 class QProcess;
0021 
0022 class ScilabSession : public Cantor::Session
0023 {
0024     Q_OBJECT
0025 
0026     public:
0027         explicit ScilabSession(Cantor::Backend* backend);
0028         ~ScilabSession() override;
0029 
0030         void login() override;
0031         void logout() override;
0032 
0033         void interrupt() override;
0034         void runExpression(ScilabExpression* expr);
0035 
0036         QSyntaxHighlighter* syntaxHighlighter(QObject* parent) override;
0037 
0038         Cantor::Expression* evaluateExpression(const QString& command, Cantor::Expression::FinishingBehavior behave = Cantor::Expression::FinishingBehavior::DoNotDelete, bool internal = false) override;
0039         Cantor::CompletionObject* completionFor(const QString& command, int index=-1) override;
0040         void runFirstExpression() override;
0041         Cantor::DefaultVariableModel* variableModel() const override;
0042 
0043     public Q_SLOTS:
0044         void readOutput();
0045         void readError();
0046         void plotFileChanged(const QString& filename);
0047 
0048     private:
0049         QProcess* m_process;
0050         KDirWatch* m_watch;
0051         QStringList m_listPlotName;
0052         QString m_output;
0053         Cantor::DefaultVariableModel* m_variableModel;
0054     private Q_SLOTS:
0055         void currentExpressionStatusChanged(Cantor::Expression::Status status);
0056 
0057 };
0058 
0059 #endif /* _SCILABSESSION_H */