File indexing completed on 2024-05-12 11:32:22
0001 /* 0002 SPDX-License-Identifier: GPL-2.0-or-later 0003 SPDX-FileCopyrightText: 2009 Alexander Rieder <alexanderrieder@gmail.com> 0004 */ 0005 0006 #include "integrateassistant.h" 0007 0008 #include <QAction> 0009 #include <QIcon> 0010 #include <QDialog> 0011 #include <QPushButton> 0012 #include <QStyle> 0013 0014 #include <KActionCollection> 0015 #include <KConfigGroup> 0016 #include "ui_integratedlg.h" 0017 #include "cantor_macros.h" 0018 #include "backend.h" 0019 #include "extension.h" 0020 0021 IntegrateAssistant::IntegrateAssistant(QObject* parent, QList<QVariant> args) : Assistant(parent) 0022 { 0023 Q_UNUSED(args) 0024 } 0025 0026 void IntegrateAssistant::initActions() 0027 { 0028 setXMLFile(QLatin1String("cantor_integrate_assistant.rc")); 0029 QAction* integrate=new QAction(i18n("Integrate"), actionCollection()); 0030 integrate->setIcon(QIcon::fromTheme(icon())); 0031 actionCollection()->addAction(QLatin1String("integrate_assistant"), integrate); 0032 connect(integrate, &QAction::triggered, this, &IntegrateAssistant::requested); 0033 } 0034 0035 QStringList IntegrateAssistant::run(QWidget* parent) 0036 { 0037 QPointer<QDialog> dlg=new QDialog(parent); 0038 QWidget* widget=new QWidget(dlg); 0039 Ui::IntegrateAssistantBase base; 0040 base.setupUi(widget); 0041 QVBoxLayout *mainLayout = new QVBoxLayout; 0042 dlg->setLayout(mainLayout); 0043 mainLayout->addWidget(widget); 0044 0045 base.buttonBox->button(QDialogButtonBox::Ok)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogOkButton)); 0046 base.buttonBox->button(QDialogButtonBox::Cancel)->setIcon(QApplication::style()->standardIcon(QStyle::SP_DialogCancelButton)); 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 QString expression=base.expression->text(); 0054 QString variable=base.variable->text(); 0055 0056 Cantor::CalculusExtension* ext= 0057 dynamic_cast<Cantor::CalculusExtension*>(backend()->extension(QLatin1String("CalculusExtension"))); 0058 if (base.isDefinite->isChecked()) 0059 { 0060 QString lower=base.lowerLimit->text(); 0061 QString upper=base.upperLimit->text(); 0062 0063 result<<ext->integrate(expression, variable, lower, upper); 0064 }else 0065 { 0066 result<<ext->integrate(expression, variable); 0067 } 0068 } 0069 0070 delete dlg; 0071 return result; 0072 } 0073 0074 K_PLUGIN_FACTORY_WITH_JSON(integrateassistant, "integrateassistant.json", registerPlugin<IntegrateAssistant>();) 0075 #include "integrateassistant.moc"