Skip to content

Commit

Permalink
Take advantage of our new 'global' solver and data store interfaces (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
agarny committed Jul 15, 2017
1 parent 3b06275 commit f3870d7
Show file tree
Hide file tree
Showing 10 changed files with 26 additions and 99 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.

#include "cellmlfileruntime.h"
#include "corecliutils.h"
#include "interfaces.h"
#include "simulationexperimentviewinformationsolverswidget.h"
#include "simulationexperimentviewsimulation.h"
#include "simulationexperimentviewwidget.h"
Expand Down Expand Up @@ -83,8 +84,7 @@ QMap<QString, Core::Properties> SimulationExperimentViewInformationSolversWidget

//==============================================================================

SimulationExperimentViewInformationSolversWidget::SimulationExperimentViewInformationSolversWidget(SimulationExperimentViewWidget *pViewWidget,
QWidget *pParent) :
SimulationExperimentViewInformationSolversWidget::SimulationExperimentViewInformationSolversWidget(QWidget *pParent) :
PropertyEditorWidget(true, pParent),
mDescriptions(QMap<Core::Property *, Descriptions>())
{
Expand All @@ -94,9 +94,9 @@ SimulationExperimentViewInformationSolversWidget::SimulationExperimentViewInform

// Add properties for our different solvers

mOdeSolverData = addSolverProperties(pViewWidget->solverInterfaces(), Solver::Ode);
mDaeSolverData = addSolverProperties(pViewWidget->solverInterfaces(), Solver::Dae);
mNlaSolverData = addSolverProperties(pViewWidget->solverInterfaces(), Solver::Nla);
mOdeSolverData = addSolverProperties(Solver::Ode);
mDaeSolverData = addSolverProperties(Solver::Dae);
mNlaSolverData = addSolverProperties(Solver::Nla);

// Show/hide the relevant properties

Expand Down Expand Up @@ -192,14 +192,8 @@ void SimulationExperimentViewInformationSolversWidget::retranslateUi()

//==============================================================================

SimulationExperimentViewInformationSolversWidgetData * SimulationExperimentViewInformationSolversWidget::addSolverProperties(const SolverInterfaces &pSolverInterfaces,
const Solver::Type &pSolverType)
SimulationExperimentViewInformationSolversWidgetData * SimulationExperimentViewInformationSolversWidget::addSolverProperties(const Solver::Type &pSolverType)
{
// Make sure that we have at least one solver interface

if (pSolverInterfaces.isEmpty())
return 0;

// Retrieve the name of the solvers which type is the one in which we are
// interested

Expand All @@ -209,7 +203,7 @@ SimulationExperimentViewInformationSolversWidgetData * SimulationExperimentViewI
QStringList solversNames = QStringList();
QMap<QString, Core::Properties> solversProperties = QMap<QString, Core::Properties>();

foreach (SolverInterface *solverInterface, pSolverInterfaces) {
foreach (SolverInterface *solverInterface, Core::solverInterfaces()) {
if (solverInterface->solverType() == pSolverType) {
// Keep track of the solver's interface

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,6 @@ namespace SimulationExperimentView {
//==============================================================================

class SimulationExperimentViewSimulation;
class SimulationExperimentViewWidget;

//==============================================================================

Expand Down Expand Up @@ -74,8 +73,7 @@ class SimulationExperimentViewInformationSolversWidget : public Core::PropertyEd
Q_OBJECT

public:
explicit SimulationExperimentViewInformationSolversWidget(SimulationExperimentViewWidget *pViewWidget,
QWidget *pParent);
explicit SimulationExperimentViewInformationSolversWidget(QWidget *pParent);
~SimulationExperimentViewInformationSolversWidget();

virtual void retranslateUi();
Expand All @@ -101,8 +99,7 @@ class SimulationExperimentViewInformationSolversWidget : public Core::PropertyEd

void updateSolverGui(SimulationExperimentViewInformationSolversWidgetData *pSolverData);

SimulationExperimentViewInformationSolversWidgetData * addSolverProperties(const SolverInterfaces &pSolverInterfaces,
const Solver::Type &pSolverType);
SimulationExperimentViewInformationSolversWidgetData * addSolverProperties(const Solver::Type &pSolverType);

void doSolverChanged(SimulationExperimentViewInformationSolversWidgetData *pSolverData,
const QString &pSolverName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ SimulationExperimentViewInformationWidget::SimulationExperimentViewInformationWi

// Create our solvers widget

mSolversWidget = new SimulationExperimentViewInformationSolversWidget(pViewWidget, mCollapsibleWidget);
mSolversWidget = new SimulationExperimentViewInformationSolversWidget(mCollapsibleWidget);

mSolversWidget->setObjectName("Solvers");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,8 +59,6 @@ PLUGININFO_FUNC SimulationExperimentViewPluginInfo()
//==============================================================================

SimulationExperimentViewPlugin::SimulationExperimentViewPlugin() :
mSolverInterfaces(SolverInterfaces()),
mDataStoreInterfaces(DataStoreInterfaces()),
mCellmlEditingViewPlugins(Plugins()),
mCellmlSimulationViewPlugins(Plugins())
{
Expand Down Expand Up @@ -191,25 +189,9 @@ void SimulationExperimentViewPlugin::finalizePlugin()

void SimulationExperimentViewPlugin::pluginsInitialized(const Plugins &pLoadedPlugins)
{
// Retrieve the different solvers and data stores that are available to us
// Look for CellML capable editing or simulation views

foreach (Plugin *plugin, pLoadedPlugins) {
// Look for a solver

SolverInterface *solverInterface = qobject_cast<SolverInterface *>(plugin->instance());

if (solverInterface)
mSolverInterfaces << solverInterface;

// Look for a data store

DataStoreInterface *dataStoreInterface = qobject_cast<DataStoreInterface *>(plugin->instance());

if (dataStoreInterface)
mDataStoreInterfaces << dataStoreInterface;

// Look for a CellML capable editing or simulation view

ViewInterface *viewInterface = qobject_cast<ViewInterface *>(plugin->instance());

if ( viewInterface
Expand All @@ -229,8 +211,7 @@ void SimulationExperimentViewPlugin::pluginsInitialized(const Plugins &pLoadedPl

// Create our Simulation Experiment view widget

mViewWidget = new SimulationExperimentViewWidget(this, mSolverInterfaces,
mDataStoreInterfaces,
mViewWidget = new SimulationExperimentViewWidget(this,
mCellmlEditingViewPlugins,
mCellmlSimulationViewPlugins,
Core::mainWindow());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.

//==============================================================================

#include "datastoreinterface.h"
#include "filehandlinginterface.h"
#include "i18ninterface.h"
#include "plugininfo.h"
#include "plugininterface.h"
#include "solverinterface.h"
#include "viewinterface.h"

//==============================================================================
Expand Down Expand Up @@ -74,9 +72,6 @@ class SimulationExperimentViewPlugin : public QObject,
private:
SimulationExperimentViewWidget *mViewWidget;

SolverInterfaces mSolverInterfaces;
DataStoreInterfaces mDataStoreInterfaces;

Plugins mCellmlEditingViewPlugins;
Plugins mCellmlSimulationViewPlugins;
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.

#include "cellmlfile.h"
#include "cellmlfileruntime.h"
#include "interfaces.h"
#include "simulationexperimentviewsimulation.h"
#include "simulationexperimentviewsimulationwidget.h"

Expand All @@ -37,11 +38,9 @@ namespace SimulationExperimentView {

//==============================================================================

SimulationExperimentViewSimulationData::SimulationExperimentViewSimulationData(SimulationExperimentViewSimulation *pSimulation,
const SolverInterfaces &pSolverInterfaces) :
SimulationExperimentViewSimulationData::SimulationExperimentViewSimulationData(SimulationExperimentViewSimulation *pSimulation) :
mSimulation(pSimulation),
mRuntime(pSimulation->runtime()),
mSolverInterfaces(pSolverInterfaces),
mDelay(0),
mStartingPoint(0.0),
mEndingPoint(1000.0),
Expand Down Expand Up @@ -219,7 +218,7 @@ SolverInterface * SimulationExperimentViewSimulationData::solverInterface(const
{
// Return the named solver interface, if any

foreach (SolverInterface *solverInterface, mSolverInterfaces) {
foreach (SolverInterface *solverInterface, Core::solverInterfaces()) {
if (!solverInterface->solverName().compare(pSolverName))
return solverInterface;
}
Expand Down Expand Up @@ -850,12 +849,10 @@ double * SimulationExperimentViewSimulationResults::algebraic(const int &pIndex)

//==============================================================================

SimulationExperimentViewSimulation::SimulationExperimentViewSimulation(CellMLSupport::CellmlFileRuntime *pRuntime,
const SolverInterfaces &pSolverInterfaces) :
SimulationExperimentViewSimulation::SimulationExperimentViewSimulation(CellMLSupport::CellmlFileRuntime *pRuntime) :
mWorker(0),
mRuntime(pRuntime),
mSolverInterfaces(pSolverInterfaces),
mData(new SimulationExperimentViewSimulationData(this, pSolverInterfaces)),
mData(new SimulationExperimentViewSimulationData(this)),
mResults(new SimulationExperimentViewSimulationResults(this))
{
// Keep track of any error occurring in our data
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,7 @@ class SimulationExperimentViewSimulationData : public QObject
Q_OBJECT

public:
explicit SimulationExperimentViewSimulationData(SimulationExperimentViewSimulation *pSimulation,
const SolverInterfaces &pSolverInterfaces);
explicit SimulationExperimentViewSimulationData(SimulationExperimentViewSimulation *pSimulation);
~SimulationExperimentViewSimulationData();

void update();
Expand Down Expand Up @@ -125,8 +124,6 @@ class SimulationExperimentViewSimulationData : public QObject

CellMLSupport::CellmlFileRuntime *mRuntime;

SolverInterfaces mSolverInterfaces;

int mDelay;

double mStartingPoint;
Expand Down Expand Up @@ -220,8 +217,7 @@ class SimulationExperimentViewSimulation : public QObject
friend class SimulationExperimentViewSimulationWorker;

public:
explicit SimulationExperimentViewSimulation(CellMLSupport::CellmlFileRuntime *pRuntime,
const SolverInterfaces &pSolverInterfaces);
explicit SimulationExperimentViewSimulation(CellMLSupport::CellmlFileRuntime *pRuntime);
~SimulationExperimentViewSimulation();

CellMLSupport::CellmlFileRuntime * runtime() const;
Expand Down Expand Up @@ -257,8 +253,6 @@ class SimulationExperimentViewSimulation : public QObject

CellMLSupport::CellmlFileRuntime *mRuntime;

SolverInterfaces mSolverInterfaces;

SimulationExperimentViewSimulationData *mData;
SimulationExperimentViewSimulationResults *mResults;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "coreguiutils.h"
#include "filemanager.h"
#include "graphpanelswidget.h"
#include "interfaces.h"
#include "progressbarwidget.h"
#include "sedmlfilemanager.h"
#include "sedmlinterface.h"
Expand Down Expand Up @@ -263,7 +264,7 @@ SimulationExperimentViewSimulationWidget::SimulationExperimentViewSimulationWidg
simulationDataExportToolButton->setMenu(mSimulationDataExportDropDownMenu);
simulationDataExportToolButton->setPopupMode(QToolButton::InstantPopup);

foreach (DataStoreInterface *dataStoreInterface, pViewWidget->dataStoreInterfaces()) {
foreach (DataStoreInterface *dataStoreInterface, Core::dataStoreInterfaces()) {
QString dataStoreName = dataStoreInterface->dataStoreName();
QAction *action = mSimulationDataExportDropDownMenu->addAction(dataStoreName+"...");

Expand Down Expand Up @@ -455,8 +456,7 @@ SimulationExperimentViewSimulationWidget::SimulationExperimentViewSimulationWidg
retrieveFileDetails(pFileName, mCellmlFile, mSedmlFile, mCombineArchive,
mFileType, mSedmlFileIssues, mCombineArchiveIssues);

mSimulation = new SimulationExperimentViewSimulation(mCellmlFile?mCellmlFile->runtime(true):0,
pViewWidget->solverInterfaces());
mSimulation = new SimulationExperimentViewSimulation(mCellmlFile?mCellmlFile->runtime(true):0);

connect(mSimulation, SIGNAL(running(const bool &)),
this, SLOT(simulationRunning(const bool &)));
Expand Down Expand Up @@ -2156,10 +2156,11 @@ bool SimulationExperimentViewSimulationWidget::doFurtherInitialize()
informationWidget->solversWidget()->daeSolverData();
const libsedml::SedAlgorithm *algorithm = uniformTimeCourseSimulation->getAlgorithm();
SolverInterface *usedSolverInterface = 0;
SolverInterfaces solverInterfaces = Core::solverInterfaces();
Core::Properties solverProperties = Core::Properties();
QString kisaoId = QString::fromStdString(algorithm->getKisaoID());

foreach (SolverInterface *solverInterface, mViewWidget->solverInterfaces()) {
foreach (SolverInterface *solverInterface, solverInterfaces) {
if (!solverInterface->id(kisaoId).compare(solverInterface->solverName())) {
usedSolverInterface = solverInterface;
solverProperties = solverData->solversProperties().value(solverInterface->solverName());
Expand Down Expand Up @@ -2293,7 +2294,7 @@ bool SimulationExperimentViewSimulationWidget::doFurtherInitialize()
mustHaveNlaSolver = true;
nlaSolverName = QString::fromStdString(node.getAttrValue(node.getAttrIndex(SEDMLSupport::NlaSolverName.toStdString())));

foreach (SolverInterface *solverInterface, mViewWidget->solverInterfaces()) {
foreach (SolverInterface *solverInterface, solverInterfaces) {
if (!nlaSolverName.compare(solverInterface->solverName())) {
informationWidget->solversWidget()->nlaSolverData()->solversListProperty()->setValue(nlaSolverName);

Expand Down Expand Up @@ -3330,7 +3331,7 @@ bool SimulationExperimentViewSimulationWidget::sedmlAlgorithmSupported(const lib
SolverInterface *usedSolverInterface = 0;
QString kisaoId = QString::fromStdString(pSedmlAlgorithm->getKisaoID());

foreach (SolverInterface *solverInterface, mViewWidget->solverInterfaces()) {
foreach (SolverInterface *solverInterface, Core::solverInterfaces()) {
if (!solverInterface->id(kisaoId).compare(solverInterface->solverName())) {
usedSolverInterface = solverInterface;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,11 @@ namespace SimulationExperimentView {
//==============================================================================

SimulationExperimentViewWidget::SimulationExperimentViewWidget(SimulationExperimentViewPlugin *pPlugin,
const SolverInterfaces &pSolverInterfaces,
const DataStoreInterfaces &pDataStoreInterfaces,
const Plugins &pCellmlEditingViewPlugins,
const Plugins &pCellmlSimulationViewPlugins,
QWidget *pParent) :
ViewWidget(pParent),
mPlugin(pPlugin),
mSolverInterfaces(pSolverInterfaces),
mDataStoreInterfaces(pDataStoreInterfaces),
mCellmlEditingViewPlugins(pCellmlEditingViewPlugins),
mCellmlSimulationViewPlugins(pCellmlSimulationViewPlugins),
mSimulationWidgetSizes(QIntList()),
Expand Down Expand Up @@ -435,24 +431,6 @@ QStringList SimulationExperimentViewWidget::fileNames() const

//==============================================================================

SolverInterfaces SimulationExperimentViewWidget::solverInterfaces() const
{
// Return our solver interfaces

return mSolverInterfaces;
}

//==============================================================================

DataStoreInterfaces SimulationExperimentViewWidget::dataStoreInterfaces() const
{
// Return our data store interfaces

return mDataStoreInterfaces;
}

//==============================================================================

Plugins SimulationExperimentViewWidget::cellmlEditingViewPlugins() const
{
// Return our CellML editing view plugins
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#include "cellmlfile.h"
#include "combinearchive.h"
#include "corecliutils.h"
#include "datastoreinterface.h"
#include "sedmlfile.h"
#include "solverinterface.h"
#include "viewwidget.h"

//==============================================================================
Expand Down Expand Up @@ -58,8 +56,6 @@ class SimulationExperimentViewWidget : public Core::ViewWidget

public:
explicit SimulationExperimentViewWidget(SimulationExperimentViewPlugin *pPlugin,
const SolverInterfaces &pSolverInterfaces,
const DataStoreInterfaces &pDataStoreInterfaces,
const Plugins &pCellmlEditingViewPlugins,
const Plugins &pCellmlSimulationViewPlugins,
QWidget *pParent);
Expand All @@ -85,9 +81,6 @@ class SimulationExperimentViewWidget : public Core::ViewWidget

QStringList fileNames() const;

SolverInterfaces solverInterfaces() const;
DataStoreInterfaces dataStoreInterfaces() const;

Plugins cellmlEditingViewPlugins() const;
Plugins cellmlSimulationViewPlugins() const;

Expand All @@ -105,9 +98,6 @@ class SimulationExperimentViewWidget : public Core::ViewWidget
private:
SimulationExperimentViewPlugin *mPlugin;

SolverInterfaces mSolverInterfaces;
DataStoreInterfaces mDataStoreInterfaces;

Plugins mCellmlEditingViewPlugins;
Plugins mCellmlSimulationViewPlugins;

Expand Down

0 comments on commit f3870d7

Please sign in to comment.