Warning, file /education/cantor/src/backends/qalculate/qalculatebackend.cpp 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: 2009 Milian Wolff <mail@milianw.de>
0003     SPDX-FileCopyrightText: 2011 Matteo Agostinelli <agostinelli@gmail.com>
0004     SPDX-FileCopyrightText: 2023 Alexander Semke <alexander.semke@web.de>
0005 
0006     SPDX-License-Identifier: GPL-2.0-or-later
0007 */
0008 
0009 #include "qalculatebackend.h"
0010 #include "settings.h" // settings.h must be included before qalculatesession.h
0011 #include "qalculatesession.h"
0012 #include "qalculateextensions.h"
0013 #include "qalculatesettingswidget.h"
0014 
0015 #include <KLocalizedString>
0016 #include <KPluginFactory>
0017 
0018 QalculateBackend::QalculateBackend(QObject* parent,const QList<QVariant> args)
0019   : Cantor::Backend(parent, args)
0020 {
0021     new QalculateHistoryExtension(this);
0022     new QalculateVariableManagementExtension(this);
0023     new QalculateCalculusExtension(this);
0024     new QalculateCASExtension(this);
0025     new QalculateLinearAlgebraExtension(this);
0026     new QalculatePlotExtension(this);
0027 }
0028 
0029 QString QalculateBackend::id() const
0030 {
0031     return QLatin1String("qalculate");
0032 }
0033 
0034 QString QalculateBackend::version() const
0035 {
0036     return QLatin1String("4.8");
0037 }
0038 
0039 Cantor::Session* QalculateBackend::createSession()
0040 {
0041     return new QalculateSession(this);
0042 }
0043 
0044 Cantor::Backend::Capabilities QalculateBackend::capabilities() const
0045 {
0046     return Cantor::Backend::Completion | Cantor::Backend::SyntaxHighlighting | Cantor::Backend::SyntaxHelp | Cantor::Backend::VariableManagement;
0047 }
0048 
0049 QString QalculateBackend::description() const
0050 {
0051     return i18n("<b>Qalculate!</b> is a multi-purpose cross-platform desktop calculator. "
0052     "It is simple to use but provides power and versatility normally reserved for complicated math packages, "
0053     "as well as useful tools for everyday needs (such as currency conversion and percent calculation). "
0054     "Features include a large library of customizable functions, unit calculations and conversion, "
0055     "physical constants, symbolic calculations (including integrals and equations), arbitrary precision, "
0056     "uncertainty propagation, interval arithmetic, plotting,");
0057 }
0058 
0059 QUrl QalculateBackend::helpUrl() const
0060 {
0061     return QUrl(QString::fromLatin1("https://qalculate.github.io/manual/index.html"));
0062 }
0063 
0064 bool QalculateBackend::requirementsFullfilled(QString* const reason) const
0065 {
0066     const QString& path = QalculateSettings::self()->path().toLocalFile();
0067     return Cantor::Backend::checkExecutable(QLatin1String("Qalculate!"), path, reason);
0068 }
0069 
0070 KConfigSkeleton* QalculateBackend::config() const
0071 {
0072     return QalculateSettings::self();
0073 }
0074 
0075 QWidget* QalculateBackend::settingsWidget(QWidget* parent) const
0076 {
0077     return new QalculateSettingsWidget(parent, id());
0078 }
0079 
0080 K_PLUGIN_FACTORY_WITH_JSON(qalculatebackend, "qalculatebackend.json", registerPlugin<QalculateBackend>();)
0081 #include "qalculatebackend.moc"