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 "differentiateassistant.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_differentiatedlg.h" 0017 #include "cantor_macros.h" 0018 #include "backend.h" 0019 #include "extension.h" 0020 0021 DifferentiateAssistant::DifferentiateAssistant(QObject* parent, QList<QVariant> args) : Assistant(parent) 0022 { 0023 Q_UNUSED(args) 0024 } 0025 0026 void DifferentiateAssistant::initActions() 0027 { 0028 setXMLFile(QLatin1String("cantor_differentiate_assistant.rc")); 0029 QAction* differentiate=new QAction(i18n("Differentiate"), actionCollection()); 0030 differentiate->setIcon(QIcon::fromTheme(icon())); 0031 actionCollection()->addAction(QLatin1String("differentiate_assistant"), differentiate); 0032 connect(differentiate, &QAction::triggered, this, &DifferentiateAssistant::requested); 0033 } 0034 0035 QStringList DifferentiateAssistant::run(QWidget* parent) 0036 { 0037 QPointer<QDialog> dlg=new QDialog(parent); 0038 QWidget* widget=new QWidget(dlg); 0039 Ui::DifferentiateAssistantBase 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 int times=base.times->value(); 0056 0057 Cantor::CalculusExtension* ext= 0058 dynamic_cast<Cantor::CalculusExtension*>(backend()->extension(QLatin1String("CalculusExtension"))); 0059 0060 result<<ext->differentiate(expression, variable, times); 0061 } 0062 0063 delete dlg; 0064 return result; 0065 } 0066 0067 K_PLUGIN_FACTORY_WITH_JSON(differentiateassistant, "differentiateassistant.json", registerPlugin<DifferentiateAssistant>();) 0068 #include "differentiateassistant.moc"