File indexing completed on 2024-05-12 11:32:23

0001 /*
0002     SPDX-License-Identifier: GPL-2.0-or-later
0003     SPDX-FileCopyrightText: 2009 Alexander Rieder <alexanderrieder@gmail.com>
0004 */
0005 
0006 #include "solveassistant.h"
0007 
0008 #include <QAction>
0009 #include <QIcon>
0010 #include <QStyle>
0011 #include <QDialog>
0012 #include <KActionCollection>
0013 #include <KConfigGroup>
0014 #include <QPushButton>
0015 #include "ui_solvedlg.h"
0016 #include "cantor_macros.h"
0017 #include "backend.h"
0018 #include "extension.h"
0019 
0020 SolveAssistant::SolveAssistant(QObject* parent, QList<QVariant> args) : Assistant(parent)
0021 {
0022     Q_UNUSED(args)
0023 }
0024 
0025 void SolveAssistant::initActions()
0026 {
0027     setXMLFile(QLatin1String("cantor_solve_assistant.rc"));
0028     QAction* solve=new QAction(i18n("Solve equations"), actionCollection());
0029     solve->setIcon(QIcon::fromTheme(icon()));
0030     actionCollection()->addAction(QLatin1String("solve_assistant"), solve);
0031     connect(solve, &QAction::triggered, this, &SolveAssistant::requested);
0032 }
0033 
0034 QStringList SolveAssistant::run(QWidget* parent)
0035 {
0036     QPointer<QDialog> dlg=new QDialog(parent);
0037     QWidget *widget=new QWidget(dlg);
0038     Ui::SolveAssistantBase base;
0039     base.setupUi(widget);
0040     QVBoxLayout *mainLayout = new QVBoxLayout;
0041     dlg->setLayout(mainLayout);
0042     mainLayout->addWidget(widget);
0043 
0044     base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton));
0045     base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton));
0046 
0047     connect(base.buttonBox, SIGNAL(accepted()), dlg, SLOT(accept()) );
0048     connect(base.buttonBox, SIGNAL(rejected()), dlg, SLOT(reject()) );
0049 
0050     QStringList result;
0051     if( dlg->exec())
0052     {
0053         QStringList equations=base.equations->toPlainText().split(QLatin1Char('\n'));
0054         QStringList variables=base.variables->text().split(QLatin1String(", "));
0055 
0056         Cantor::CASExtension* ext=
0057             dynamic_cast<Cantor::CASExtension*>(backend()->extension(QLatin1String("CASExtension")));
0058 
0059         result<<ext->solve(equations, variables);
0060     }
0061 
0062     delete dlg;
0063     return result;
0064 }
0065 
0066 K_PLUGIN_FACTORY_WITH_JSON(solveassistant, "solveassistant.json", registerPlugin<SolveAssistant>();)
0067 #include "solveassistant.moc"