Files
@ 6bcb69712a0e
Branch filter:
Location: EI/VirtualLeaf/src/transporterdialog.cpp
6bcb69712a0e
3.5 KiB
text/x-c++src
In response to referee's comment:
"However, (although it is probably not important for model developers), I was
still unable to load the model ‘Meinhardt 1976 with growth’ example from the
‘Models’ drop down menu, I got the ‘Fatal error’ message ‘stepwise underflow in
rkqs, with h=0.000000 and htry = 0.100000’. The model did work when I selected
the Meinhardt model in both the Models and the File -> Read leaf menus together,
it would be preferable if the models loaded from the Models menu worked
automatically. I am not sure that the update referred to in the author’s
response permits the loading of ‘My First Model in Virtual Leaf’ from the
‘Models’ drop down menu; I only got a cell that wiggled."
I made the following changes:
- meinhardt_plugin now reads "meinhardt_init.xml" by default
- changed the name of 'My First Model in Virtual Leaf’ to '0: Empty model template (does nothing)' to make it clear that the wiggle cell is the intended behavior for this model example.
- Added default parameter files for Tutorial1A-D and Tutorial2 to prevent variable behavior depending on the last parameter settings used.
--
user: Roeland Merks <roeland.merks@cwi.nl>
branch 'default'
added data/leaves/tutorial1_init.xml
added data/leaves/tutorial2_init.xml
changed data/leaves/auxin_growth.xml
changed data/leaves/meinhardt_init.xml
changed src/TutorialCode/Tutorial0/tutorial0.cpp
changed src/TutorialCode/Tutorial1A/tutorial1A.h
changed src/TutorialCode/Tutorial1B/tutorial1B.h
changed src/TutorialCode/Tutorial1C/tutorial1C.h
changed src/TutorialCode/Tutorial1D/tutorial1D.h
changed src/TutorialCode/Tutorial2/tutorial2.h
changed src/build_models/meinhardtplugin.h
"However, (although it is probably not important for model developers), I was
still unable to load the model ‘Meinhardt 1976 with growth’ example from the
‘Models’ drop down menu, I got the ‘Fatal error’ message ‘stepwise underflow in
rkqs, with h=0.000000 and htry = 0.100000’. The model did work when I selected
the Meinhardt model in both the Models and the File -> Read leaf menus together,
it would be preferable if the models loaded from the Models menu worked
automatically. I am not sure that the update referred to in the author’s
response permits the loading of ‘My First Model in Virtual Leaf’ from the
‘Models’ drop down menu; I only got a cell that wiggled."
I made the following changes:
- meinhardt_plugin now reads "meinhardt_init.xml" by default
- changed the name of 'My First Model in Virtual Leaf’ to '0: Empty model template (does nothing)' to make it clear that the wiggle cell is the intended behavior for this model example.
- Added default parameter files for Tutorial1A-D and Tutorial2 to prevent variable behavior depending on the last parameter settings used.
--
user: Roeland Merks <roeland.merks@cwi.nl>
branch 'default'
added data/leaves/tutorial1_init.xml
added data/leaves/tutorial2_init.xml
changed data/leaves/auxin_growth.xml
changed data/leaves/meinhardt_init.xml
changed src/TutorialCode/Tutorial0/tutorial0.cpp
changed src/TutorialCode/Tutorial1A/tutorial1A.h
changed src/TutorialCode/Tutorial1B/tutorial1B.h
changed src/TutorialCode/Tutorial1C/tutorial1C.h
changed src/TutorialCode/Tutorial1D/tutorial1D.h
changed src/TutorialCode/Tutorial2/tutorial2.h
changed src/build_models/meinhardtplugin.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 | /*
*
* This file is part of the Virtual Leaf.
*
* VirtualLeaf is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* VirtualLeaf is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the Virtual Leaf. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright 2010 Roeland Merks.
*
*/
#include <QtGui>
#include <QDoubleValidator>
#include <sstream>
#include "canvas.h"
#include "transporterdialog.h"
static const std::string _module_id("$Id$");
TransporterDialog::TransporterDialog(Wall *w, CellBase *c, int wn, QWidget *parent)
: QDialog(parent), wall(w), cell(c), wall_num(wn)
{
int frameStyle = QFrame::Plain | QFrame::NoFrame;
QPushButton *ok = new QPushButton(tr("Ok"));
QPushButton *cancel = new QPushButton(tr("Cancel"));
QGridLayout *t_grid = new QGridLayout; // transporter grid
// connect the slots
connect(ok, SIGNAL(clicked()), this, SLOT(setTransporterValues()));
connect(cancel, SIGNAL(clicked()), this, SLOT(close()));
// compose a label for the dialog box
std::stringstream label_text;
label_text << "C("<< wall->C1()->Index() << "," << wall->C2()->Index() << "), N("
<< wall->N1()->Index() << "," << wall->N2()->Index() << ")";
// retrieve the current transporters
QVector <double> transporters; // transporter vector
ntransporters = cell->NChem(); // size of transporter vector
for (int i=0; i<ntransporters; ++i){
transporters << ((wall_num == 1) ? wall->Transporters1(i) : wall->Transporters2(i)); // dependent on the wall number of course.
}
// iterate over the vector of transporter values making a label/edit line for each
for (int i=0; i<transporters.size(); ++i) {
// label
label = new QLabel;
label->setFrameStyle(frameStyle);
label->setText(QString("%1").arg(i+1)); // cardinal numbering
// line editor
QLineEdit *editor = new QLineEdit();
editors << editor;
editor->setValidator(new QDoubleValidator(editor)); // validator settings
// assign the current transporter value
QString n;
editor->setText(n.setNum(transporters[i]));
// insert the label and editor into the transporter grid
t_grid->addWidget(label, i, 0);
t_grid->addWidget(editor, i, 1);
}
// add OK and Cancel buttons
QGridLayout *b_grid = new QGridLayout; // button grid
b_grid->addWidget(ok, 0, 0);
b_grid->addWidget(cancel, 0, 1);
// add both transporter and button grids to the box layout widget
QVBoxLayout *layout = new QVBoxLayout;
layout->addLayout(t_grid);
layout->addLayout(b_grid);
setLayout(layout);
setWindowTitle(tr(label_text.str().c_str()));
}
void TransporterDialog::setTransporterValues()
{
// iterate over the editor widgets soliciting their values and setting the wall's transporters accordingly.
for (int i=0; i<ntransporters; ++i){
#ifdef QDEBUG
qDebug() << "Transporter(" << i << "): " << editors[i]->text().toDouble() << endl;
#endif
if (wall_num == 1)
wall->setTransporters1(i, editors[i]->text().toDouble());
else
wall->setTransporters2(i, editors[i]->text().toDouble());
}
editors.resize(0);
close();
}
/* finis */
|