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

0001 /*
0002     SPDX-FileCopyrightText: 2009 Aleix Pol <aleixpol@kde.org>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifndef KALGEBRA_SESSION_H
0008 #define KALGEBRA_SESSION_H
0009 
0010 #include "session.h"
0011 
0012 class OperatorsModel;
0013 class KAlgebraExpression;
0014 
0015 namespace Analitza {
0016 class Analyzer;
0017 class VariablesModel;
0018 }
0019 
0020 class KAlgebraSession : public Cantor::Session
0021 {
0022     Q_OBJECT
0023     public:
0024         explicit KAlgebraSession( Cantor::Backend* backend);
0025         ~KAlgebraSession() override;
0026 
0027         void login() override;
0028         void logout() override;
0029 
0030         void interrupt() override;
0031 
0032         Cantor::Expression* evaluateExpression(const QString& command, Cantor::Expression::FinishingBehavior behave = Cantor::Expression::FinishingBehavior::DoNotDelete, bool internal = false) override;
0033         Cantor::CompletionObject* completionFor(const QString& cmd, int index=-1) override;
0034         Cantor::SyntaxHelpObject* syntaxHelpFor(const QString& cmd) override;
0035         Analitza::Analyzer* analyzer() const { return m_analyzer; }
0036         OperatorsModel* operatorsModel();
0037         QSyntaxHighlighter* syntaxHighlighter(QObject* parent) override;
0038         QAbstractItemModel* variableDataModel() const override;
0039 
0040     private:
0041         Analitza::Analyzer* m_analyzer;
0042         OperatorsModel* m_operatorsModel;
0043         Analitza::VariablesModel* m_variablesModel;
0044 };
0045 
0046 #endif