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"