/*
*
* This file is part of the Virtual Leaf.
*
* The Virtual Leaf 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.
*
* The Virtual Leaf 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 .
*
* Copyright 2010 Roeland Merks.
*
*/
#include "pardialog.h"
#include "parameter.h"
#include
#include
#include
#include
#include
static const std::string _module_id("$Id$");
ParameterDialog::ParameterDialog(QWidget *parent, const char *name, Qt::WindowFlags f) : QDialog(parent,name,false,f) {
extern Parameter par;
arrowcolor_edit = new QLineEdit( QString("%1").arg(par.arrowcolor), this, "arrowcolor_edit" );
arrowsize_edit = new QLineEdit( QString("%1").arg(par.arrowsize), this, "arrowsize_edit" );
textcolor_edit = new QLineEdit( QString("%1").arg(par.textcolor), this, "textcolor_edit" );
cellnumsize_edit = new QLineEdit( QString("%1").arg(par.cellnumsize), this, "cellnumsize_edit" );
nodenumsize_edit = new QLineEdit( QString("%1").arg(par.nodenumsize), this, "nodenumsize_edit" );
node_mag_edit = new QLineEdit( QString("%1").arg(par.node_mag), this, "node_mag_edit" );
outlinewidth_edit = new QLineEdit( QString("%1").arg(par.outlinewidth), this, "outlinewidth_edit" );
cell_outline_color_edit = new QLineEdit( QString("%1").arg(par.cell_outline_color), this, "cell_outline_color_edit" );
resize_stride_edit = new QLineEdit( QString("%1").arg(par.resize_stride), this, "resize_stride_edit" );
T_edit = new QLineEdit( QString("%1").arg(par.T), this, "T_edit" );
lambda_length_edit = new QLineEdit( QString("%1").arg(par.lambda_length), this, "lambda_length_edit" );
lambda_celllength_edit = new QLineEdit( QString("%1").arg(par.lambda_celllength), this, "lambda_celllength_edit" );
target_length_edit = new QLineEdit( QString("%1").arg(par.target_length), this, "target_length_edit" );
cell_expansion_rate_edit = new QLineEdit( QString("%1").arg(par.cell_expansion_rate), this, "cell_expansion_rate_edit" );
cell_div_expansion_rate_edit = new QLineEdit( QString("%1").arg(par.cell_div_expansion_rate), this, "cell_div_expansion_rate_edit" );
auxin_dependent_growth_edit = new QLineEdit( QString("%1").arg(sbool(par.auxin_dependent_growth)), this, "auxin_dependent_growth_edit" );
ode_accuracy_edit = new QLineEdit( QString("%1").arg(par.ode_accuracy), this, "ode_accuracy_edit" );
mc_stepsize_edit = new QLineEdit( QString("%1").arg(par.mc_stepsize), this, "mc_stepsize_edit" );
mc_cell_stepsize_edit = new QLineEdit( QString("%1").arg(par.mc_cell_stepsize), this, "mc_cell_stepsize_edit" );
energy_threshold_edit = new QLineEdit( QString("%1").arg(par.energy_threshold), this, "energy_threshold_edit" );
bend_lambda_edit = new QLineEdit( QString("%1").arg(par.bend_lambda), this, "bend_lambda_edit" );
alignment_lambda_edit = new QLineEdit( QString("%1").arg(par.alignment_lambda), this, "alignment_lambda_edit" );
rel_cell_div_threshold_edit = new QLineEdit( QString("%1").arg(par.rel_cell_div_threshold), this, "rel_cell_div_threshold_edit" );
rel_perimeter_stiffness_edit = new QLineEdit( QString("%1").arg(par.rel_perimeter_stiffness), this, "rel_perimeter_stiffness_edit" );
collapse_node_threshold_edit = new QLineEdit( QString("%1").arg(par.collapse_node_threshold), this, "collapse_node_threshold_edit" );
morphogen_div_threshold_edit = new QLineEdit( QString("%1").arg(par.morphogen_div_threshold), this, "morphogen_div_threshold_edit" );
morphogen_expansion_threshold_edit = new QLineEdit( QString("%1").arg(par.morphogen_expansion_threshold), this, "morphogen_expansion_threshold_edit" );
copy_wall_edit = new QLineEdit( QString("%1").arg(sbool(par.copy_wall)), this, "copy_wall_edit" );
source_edit = new QLineEdit( QString("%1").arg(par.source), this, "source_edit" );
QString D_string("%1,%2,%3,%4,%5,%6,%7,%8,%9,%10,%11,%12,%13,%14,%15");
D_string = D_string.arg(par.D[0]).arg(par.D[1]).arg(par.D[2]).arg(par.D[3]).arg(par.D[4]).arg(par.D[5]).arg(par.D[6]).arg(par.D[7]).arg(par.D[8]).arg(par.D[9]).arg(par.D[10]).arg(par.D[11]).arg(par.D[12]).arg(par.D[13]).arg(par.D[14]);
D_edit = new QLineEdit( D_string, this, "D_edit" );
QString initval_string("%1,%2,%3,%4,%5,%6,%7,%8,%9,%10,%11,%12,%13,%14,%15");
initval_string = initval_string.arg(par.initval[0]).arg(par.initval[1]).arg(par.initval[2]).arg(par.initval[3]).arg(par.initval[4]).arg(par.initval[5]).arg(par.initval[6]).arg(par.initval[7]).arg(par.initval[8]).arg(par.initval[9]).arg(par.initval[10]).arg(par.initval[11]).arg(par.initval[12]).arg(par.initval[13]).arg(par.initval[14]);
initval_edit = new QLineEdit( initval_string, this, "initval_edit" );
k1_edit = new QLineEdit( QString("%1").arg(par.k1), this, "k1_edit" );
k2_edit = new QLineEdit( QString("%1").arg(par.k2), this, "k2_edit" );
r_edit = new QLineEdit( QString("%1").arg(par.r), this, "r_edit" );
kr_edit = new QLineEdit( QString("%1").arg(par.kr), this, "kr_edit" );
km_edit = new QLineEdit( QString("%1").arg(par.km), this, "km_edit" );
Pi_tot_edit = new QLineEdit( QString("%1").arg(par.Pi_tot), this, "Pi_tot_edit" );
transport_edit = new QLineEdit( QString("%1").arg(par.transport), this, "transport_edit" );
ka_edit = new QLineEdit( QString("%1").arg(par.ka), this, "ka_edit" );
pin_prod_edit = new QLineEdit( QString("%1").arg(par.pin_prod), this, "pin_prod_edit" );
pin_prod_in_epidermis_edit = new QLineEdit( QString("%1").arg(par.pin_prod_in_epidermis), this, "pin_prod_in_epidermis_edit" );
pin_breakdown_edit = new QLineEdit( QString("%1").arg(par.pin_breakdown), this, "pin_breakdown_edit" );
pin_breakdown_internal_edit = new QLineEdit( QString("%1").arg(par.pin_breakdown_internal), this, "pin_breakdown_internal_edit" );
aux1prod_edit = new QLineEdit( QString("%1").arg(par.aux1prod), this, "aux1prod_edit" );
aux1prodmeso_edit = new QLineEdit( QString("%1").arg(par.aux1prodmeso), this, "aux1prodmeso_edit" );
aux1decay_edit = new QLineEdit( QString("%1").arg(par.aux1decay), this, "aux1decay_edit" );
aux1decaymeso_edit = new QLineEdit( QString("%1").arg(par.aux1decaymeso), this, "aux1decaymeso_edit" );
aux1transport_edit = new QLineEdit( QString("%1").arg(par.aux1transport), this, "aux1transport_edit" );
aux_cons_edit = new QLineEdit( QString("%1").arg(par.aux_cons), this, "aux_cons_edit" );
aux_breakdown_edit = new QLineEdit( QString("%1").arg(par.aux_breakdown), this, "aux_breakdown_edit" );
kaux1_edit = new QLineEdit( QString("%1").arg(par.kaux1), this, "kaux1_edit" );
kap_edit = new QLineEdit( QString("%1").arg(par.kap), this, "kap_edit" );
leaf_tip_source_edit = new QLineEdit( QString("%1").arg(par.leaf_tip_source), this, "leaf_tip_source_edit" );
sam_efflux_edit = new QLineEdit( QString("%1").arg(par.sam_efflux), this, "sam_efflux_edit" );
sam_auxin_edit = new QLineEdit( QString("%1").arg(par.sam_auxin), this, "sam_auxin_edit" );
sam_auxin_breakdown_edit = new QLineEdit( QString("%1").arg(par.sam_auxin_breakdown), this, "sam_auxin_breakdown_edit" );
van3prod_edit = new QLineEdit( QString("%1").arg(par.van3prod), this, "van3prod_edit" );
van3autokat_edit = new QLineEdit( QString("%1").arg(par.van3autokat), this, "van3autokat_edit" );
van3sat_edit = new QLineEdit( QString("%1").arg(par.van3sat), this, "van3sat_edit" );
k2van3_edit = new QLineEdit( QString("%1").arg(par.k2van3), this, "k2van3_edit" );
dt_edit = new QLineEdit( QString("%1").arg(par.dt), this, "dt_edit" );
rd_dt_edit = new QLineEdit( QString("%1").arg(par.rd_dt), this, "rd_dt_edit" );
datadir_edit = new QLineEdit( QString("%1").arg(par.datadir), this, "datadir_edit" );
movie_edit = new QLineEdit( QString("%1").arg(sbool(par.movie)), this, "movie_edit" );
nit_edit = new QLineEdit( QString("%1").arg(par.nit), this, "nit_edit" );
maxt_edit = new QLineEdit( QString("%1").arg(par.maxt), this, "maxt_edit" );
storage_stride_edit = new QLineEdit( QString("%1").arg(par.storage_stride), this, "storage_stride_edit" );
xml_storage_stride_edit = new QLineEdit( QString("%1").arg(par.xml_storage_stride), this, "xml_storage_stride_edit" );
rseed_edit = new QLineEdit( QString("%1").arg(par.rseed), this, "rseed_edit" );
constituous_expansion_limit_edit = new QLineEdit( QString("%1").arg(par.constituous_expansion_limit), this, "constituous_expansion_limit_edit" );
vessel_inh_level_edit = new QLineEdit( QString("%1").arg(par.vessel_inh_level), this, "vessel_inh_level_edit" );
vessel_expansion_rate_edit = new QLineEdit( QString("%1").arg(par.vessel_expansion_rate), this, "vessel_expansion_rate_edit" );
d_edit = new QLineEdit( QString("%1").arg(par.d), this, "d_edit" );
e_edit = new QLineEdit( QString("%1").arg(par.e), this, "e_edit" );
f_edit = new QLineEdit( QString("%1").arg(par.f), this, "f_edit" );
c_edit = new QLineEdit( QString("%1").arg(par.c), this, "c_edit" );
mu_edit = new QLineEdit( QString("%1").arg(par.mu), this, "mu_edit" );
nu_edit = new QLineEdit( QString("%1").arg(par.nu), this, "nu_edit" );
rho0_edit = new QLineEdit( QString("%1").arg(par.rho0), this, "rho0_edit" );
rho1_edit = new QLineEdit( QString("%1").arg(par.rho1), this, "rho1_edit" );
c0_edit = new QLineEdit( QString("%1").arg(par.c0), this, "c0_edit" );
gamma_edit = new QLineEdit( QString("%1").arg(par.gamma), this, "gamma_edit" );
eps_edit = new QLineEdit( QString("%1").arg(par.eps), this, "eps_edit" );
QString k_string("%1,%2,%3,%4,%5,%6,%7,%8,%9,%10,%11,%12,%13,%14,%15");
k_string = k_string.arg(par.k[0]).arg(par.k[1]).arg(par.k[2]).arg(par.k[3]).arg(par.k[4]).arg(par.k[5]).arg(par.k[6]).arg(par.k[7]).arg(par.k[8]).arg(par.k[9]).arg(par.k[10]).arg(par.k[11]).arg(par.k[12]).arg(par.k[13]).arg(par.k[14]);
k_edit = new QLineEdit( k_string, this, "k_edit" );
i1_edit = new QLineEdit( QString("%1").arg(par.i1), this, "i1_edit" );
i2_edit = new QLineEdit( QString("%1").arg(par.i2), this, "i2_edit" );
i3_edit = new QLineEdit( QString("%1").arg(par.i3), this, "i3_edit" );
i4_edit = new QLineEdit( QString("%1").arg(par.i4), this, "i4_edit" );
i5_edit = new QLineEdit( QString("%1").arg(par.i5), this, "i5_edit" );
s1_edit = new QLineEdit( QString("%1").arg(par.s1), this, "s1_edit" );
s2_edit = new QLineEdit( QString("%1").arg(par.s2), this, "s2_edit" );
s3_edit = new QLineEdit( QString("%1").arg(par.s3), this, "s3_edit" );
b1_edit = new QLineEdit( QString("%1").arg(sbool(par.b1)), this, "b1_edit" );
b2_edit = new QLineEdit( QString("%1").arg(sbool(par.b2)), this, "b2_edit" );
b3_edit = new QLineEdit( QString("%1").arg(sbool(par.b3)), this, "b3_edit" );
b4_edit = new QLineEdit( QString("%1").arg(sbool(par.b4)), this, "b4_edit" );
dir1_edit = new QLineEdit( QString("%1").arg(par.dir1), this, "dir1_edit" );
dir2_edit = new QLineEdit( QString("%1").arg(par.dir2), this, "dir2_edit" );
// make a 1x1 grid; it will auto-expand
QGridLayout *grid = new QGridLayout( this, 1, 1 );
// add the first four widgets with (row, column) addressing
setWindowTitle( QString( " Parameter values for The Virtual Leaf") );
grid->addWidget( new QLabel( " Parameter values for The Virtual Leaf
",this), 0, 0, 1, -1, Qt::AlignCenter);
grid->addWidget( new QLabel( "", this), 0+1, 0, 1, -1);
grid->addWidget( new QLabel( " Visualization", this), 3, 0, 1, 2 );
grid->addWidget( new QLabel( "arrowcolor", this ),4, 0 );
grid->addWidget( arrowcolor_edit, 4, 0+1 );
grid->addWidget( new QLabel( "arrowsize", this ),5, 0 );
grid->addWidget( arrowsize_edit, 5, 0+1 );
grid->addWidget( new QLabel( "textcolor", this ),6, 0 );
grid->addWidget( textcolor_edit, 6, 0+1 );
grid->addWidget( new QLabel( "cellnumsize", this ),7, 0 );
grid->addWidget( cellnumsize_edit, 7, 0+1 );
grid->addWidget( new QLabel( "nodenumsize", this ),8, 0 );
grid->addWidget( nodenumsize_edit, 8, 0+1 );
grid->addWidget( new QLabel( "node_mag", this ),9, 0 );
grid->addWidget( node_mag_edit, 9, 0+1 );
grid->addWidget( new QLabel( "outlinewidth", this ),10, 0 );
grid->addWidget( outlinewidth_edit, 10, 0+1 );
grid->addWidget( new QLabel( "cell_outline_color", this ),11, 0 );
grid->addWidget( cell_outline_color_edit, 11, 0+1 );
grid->addWidget( new QLabel( "resize_stride", this ),12, 0 );
grid->addWidget( resize_stride_edit, 12, 0+1 );
grid->addWidget( new QLabel( "", this), 13, 0, 1, 2 );
grid->addWidget( new QLabel( " Cell mechanics", this), 14, 0, 1, 2 );
grid->addWidget( new QLabel( "T", this ),15, 0 );
grid->addWidget( T_edit, 15, 0+1 );
grid->addWidget( new QLabel( "lambda_length", this ),16, 0 );
grid->addWidget( lambda_length_edit, 16, 0+1 );
grid->addWidget( new QLabel( "lambda_celllength", this ),17, 0 );
grid->addWidget( lambda_celllength_edit, 17, 0+1 );
grid->addWidget( new QLabel( "target_length", this ),18, 0 );
grid->addWidget( target_length_edit, 18, 0+1 );
grid->addWidget( new QLabel( "cell_expansion_rate", this ),19, 0 );
grid->addWidget( cell_expansion_rate_edit, 19, 0+1 );
grid->addWidget( new QLabel( "cell_div_expansion_rate", this ),20, 0 );
grid->addWidget( cell_div_expansion_rate_edit, 20, 0+1 );
grid->addWidget( new QLabel( "auxin_dependent_growth", this ),21, 0 );
grid->addWidget( auxin_dependent_growth_edit, 21, 0+1 );
grid->addWidget( new QLabel( "ode_accuracy", this ),22, 0 );
grid->addWidget( ode_accuracy_edit, 22, 0+1 );
grid->addWidget( new QLabel( "mc_stepsize", this ),23, 0 );
grid->addWidget( mc_stepsize_edit, 23, 0+1 );
grid->addWidget( new QLabel( "mc_cell_stepsize", this ),24, 0 );
grid->addWidget( mc_cell_stepsize_edit, 24, 0+1 );
grid->addWidget( new QLabel( "energy_threshold", this ),25, 0 );
grid->addWidget( energy_threshold_edit, 25, 0+1 );
grid->addWidget( new QLabel( "bend_lambda", this ),26, 0 );
grid->addWidget( bend_lambda_edit, 26, 0+1 );
grid->addWidget( new QLabel( "alignment_lambda", this ),27, 0 );
grid->addWidget( alignment_lambda_edit, 27, 0+1 );
grid->addWidget( new QLabel( "rel_cell_div_threshold", this ),28, 0 );
grid->addWidget( rel_cell_div_threshold_edit, 28, 0+1 );
grid->addWidget( new QLabel( "rel_perimeter_stiffness", this ),29, 0 );
grid->addWidget( rel_perimeter_stiffness_edit, 29, 0+1 );
grid->addWidget( new QLabel( "collapse_node_threshold", this ),3, 2 );
grid->addWidget( collapse_node_threshold_edit, 3, 2+1 );
grid->addWidget( new QLabel( "morphogen_div_threshold", this ),4, 2 );
grid->addWidget( morphogen_div_threshold_edit, 4, 2+1 );
grid->addWidget( new QLabel( "morphogen_expansion_threshold", this ),5, 2 );
grid->addWidget( morphogen_expansion_threshold_edit, 5, 2+1 );
grid->addWidget( new QLabel( "copy_wall", this ),6, 2 );
grid->addWidget( copy_wall_edit, 6, 2+1 );
grid->addWidget( new QLabel( "", this), 7, 2, 1, 2 );
grid->addWidget( new QLabel( " Auxin transport and PIN1 dynamics", this), 8, 2, 1, 2 );
grid->addWidget( new QLabel( "source", this ),9, 2 );
grid->addWidget( source_edit, 9, 2+1 );
grid->addWidget( new QLabel( "D", this ),10, 2 );
grid->addWidget( D_edit, 10, 2+1 );
grid->addWidget( new QLabel( "initval", this ),11, 2 );
grid->addWidget( initval_edit, 11, 2+1 );
grid->addWidget( new QLabel( "k1", this ),12, 2 );
grid->addWidget( k1_edit, 12, 2+1 );
grid->addWidget( new QLabel( "k2", this ),13, 2 );
grid->addWidget( k2_edit, 13, 2+1 );
grid->addWidget( new QLabel( "r", this ),14, 2 );
grid->addWidget( r_edit, 14, 2+1 );
grid->addWidget( new QLabel( "kr", this ),15, 2 );
grid->addWidget( kr_edit, 15, 2+1 );
grid->addWidget( new QLabel( "km", this ),16, 2 );
grid->addWidget( km_edit, 16, 2+1 );
grid->addWidget( new QLabel( "Pi_tot", this ),17, 2 );
grid->addWidget( Pi_tot_edit, 17, 2+1 );
grid->addWidget( new QLabel( "transport", this ),18, 2 );
grid->addWidget( transport_edit, 18, 2+1 );
grid->addWidget( new QLabel( "ka", this ),19, 2 );
grid->addWidget( ka_edit, 19, 2+1 );
grid->addWidget( new QLabel( "pin_prod", this ),20, 2 );
grid->addWidget( pin_prod_edit, 20, 2+1 );
grid->addWidget( new QLabel( "pin_prod_in_epidermis", this ),21, 2 );
grid->addWidget( pin_prod_in_epidermis_edit, 21, 2+1 );
grid->addWidget( new QLabel( "pin_breakdown", this ),22, 2 );
grid->addWidget( pin_breakdown_edit, 22, 2+1 );
grid->addWidget( new QLabel( "pin_breakdown_internal", this ),23, 2 );
grid->addWidget( pin_breakdown_internal_edit, 23, 2+1 );
grid->addWidget( new QLabel( "aux1prod", this ),24, 2 );
grid->addWidget( aux1prod_edit, 24, 2+1 );
grid->addWidget( new QLabel( "aux1prodmeso", this ),25, 2 );
grid->addWidget( aux1prodmeso_edit, 25, 2+1 );
grid->addWidget( new QLabel( "aux1decay", this ),26, 2 );
grid->addWidget( aux1decay_edit, 26, 2+1 );
grid->addWidget( new QLabel( "aux1decaymeso", this ),27, 2 );
grid->addWidget( aux1decaymeso_edit, 27, 2+1 );
grid->addWidget( new QLabel( "aux1transport", this ),28, 2 );
grid->addWidget( aux1transport_edit, 28, 2+1 );
grid->addWidget( new QLabel( "aux_cons", this ),29, 2 );
grid->addWidget( aux_cons_edit, 29, 2+1 );
grid->addWidget( new QLabel( "aux_breakdown", this ),3, 4 );
grid->addWidget( aux_breakdown_edit, 3, 4+1 );
grid->addWidget( new QLabel( "kaux1", this ),4, 4 );
grid->addWidget( kaux1_edit, 4, 4+1 );
grid->addWidget( new QLabel( "kap", this ),5, 4 );
grid->addWidget( kap_edit, 5, 4+1 );
grid->addWidget( new QLabel( "leaf_tip_source", this ),6, 4 );
grid->addWidget( leaf_tip_source_edit, 6, 4+1 );
grid->addWidget( new QLabel( "sam_efflux", this ),7, 4 );
grid->addWidget( sam_efflux_edit, 7, 4+1 );
grid->addWidget( new QLabel( "sam_auxin", this ),8, 4 );
grid->addWidget( sam_auxin_edit, 8, 4+1 );
grid->addWidget( new QLabel( "sam_auxin_breakdown", this ),9, 4 );
grid->addWidget( sam_auxin_breakdown_edit, 9, 4+1 );
grid->addWidget( new QLabel( "van3prod", this ),10, 4 );
grid->addWidget( van3prod_edit, 10, 4+1 );
grid->addWidget( new QLabel( "van3autokat", this ),11, 4 );
grid->addWidget( van3autokat_edit, 11, 4+1 );
grid->addWidget( new QLabel( "van3sat", this ),12, 4 );
grid->addWidget( van3sat_edit, 12, 4+1 );
grid->addWidget( new QLabel( "k2van3", this ),13, 4 );
grid->addWidget( k2van3_edit, 13, 4+1 );
grid->addWidget( new QLabel( "", this), 14, 4, 1, 2 );
grid->addWidget( new QLabel( " Integration parameters", this), 15, 4, 1, 2 );
grid->addWidget( new QLabel( "dt", this ),16, 4 );
grid->addWidget( dt_edit, 16, 4+1 );
grid->addWidget( new QLabel( "rd_dt", this ),17, 4 );
grid->addWidget( rd_dt_edit, 17, 4+1 );
grid->addWidget( new QLabel( "datadir", this ),18, 4 );
grid->addWidget( datadir_edit, 18, 4+1 );
grid->addWidget( new QLabel( "movie", this ),19, 4 );
grid->addWidget( movie_edit, 19, 4+1 );
grid->addWidget( new QLabel( "nit", this ),20, 4 );
grid->addWidget( nit_edit, 20, 4+1 );
grid->addWidget( new QLabel( "maxt", this ),21, 4 );
grid->addWidget( maxt_edit, 21, 4+1 );
grid->addWidget( new QLabel( "storage_stride", this ),22, 4 );
grid->addWidget( storage_stride_edit, 22, 4+1 );
grid->addWidget( new QLabel( "xml_storage_stride", this ),23, 4 );
grid->addWidget( xml_storage_stride_edit, 23, 4+1 );
grid->addWidget( new QLabel( "rseed", this ),24, 4 );
grid->addWidget( rseed_edit, 24, 4+1 );
grid->addWidget( new QLabel( "", this), 25, 4, 1, 2 );
grid->addWidget( new QLabel( " Meinhardt leaf venation model", this), 26, 4, 1, 2 );
grid->addWidget( new QLabel( "constituous_expansion_limit", this ),27, 4 );
grid->addWidget( constituous_expansion_limit_edit, 27, 4+1 );
grid->addWidget( new QLabel( "vessel_inh_level", this ),28, 4 );
grid->addWidget( vessel_inh_level_edit, 28, 4+1 );
grid->addWidget( new QLabel( "vessel_expansion_rate", this ),29, 4 );
grid->addWidget( vessel_expansion_rate_edit, 29, 4+1 );
grid->addWidget( new QLabel( "d", this ),3, 6 );
grid->addWidget( d_edit, 3, 6+1 );
grid->addWidget( new QLabel( "e", this ),4, 6 );
grid->addWidget( e_edit, 4, 6+1 );
grid->addWidget( new QLabel( "f", this ),5, 6 );
grid->addWidget( f_edit, 5, 6+1 );
grid->addWidget( new QLabel( "c", this ),6, 6 );
grid->addWidget( c_edit, 6, 6+1 );
grid->addWidget( new QLabel( "mu", this ),7, 6 );
grid->addWidget( mu_edit, 7, 6+1 );
grid->addWidget( new QLabel( "nu", this ),8, 6 );
grid->addWidget( nu_edit, 8, 6+1 );
grid->addWidget( new QLabel( "rho0", this ),9, 6 );
grid->addWidget( rho0_edit, 9, 6+1 );
grid->addWidget( new QLabel( "rho1", this ),10, 6 );
grid->addWidget( rho1_edit, 10, 6+1 );
grid->addWidget( new QLabel( "c0", this ),11, 6 );
grid->addWidget( c0_edit, 11, 6+1 );
grid->addWidget( new QLabel( "gamma", this ),12, 6 );
grid->addWidget( gamma_edit, 12, 6+1 );
grid->addWidget( new QLabel( "eps", this ),13, 6 );
grid->addWidget( eps_edit, 13, 6+1 );
grid->addWidget( new QLabel( "", this), 14, 6, 1, 2 );
grid->addWidget( new QLabel( " User-defined parameters", this), 15, 6, 1, 2 );
grid->addWidget( new QLabel( "k", this ),16, 6 );
grid->addWidget( k_edit, 16, 6+1 );
grid->addWidget( new QLabel( "i1", this ),17, 6 );
grid->addWidget( i1_edit, 17, 6+1 );
grid->addWidget( new QLabel( "i2", this ),18, 6 );
grid->addWidget( i2_edit, 18, 6+1 );
grid->addWidget( new QLabel( "i3", this ),19, 6 );
grid->addWidget( i3_edit, 19, 6+1 );
grid->addWidget( new QLabel( "i4", this ),20, 6 );
grid->addWidget( i4_edit, 20, 6+1 );
grid->addWidget( new QLabel( "i5", this ),21, 6 );
grid->addWidget( i5_edit, 21, 6+1 );
grid->addWidget( new QLabel( "s1", this ),22, 6 );
grid->addWidget( s1_edit, 22, 6+1 );
grid->addWidget( new QLabel( "s2", this ),23, 6 );
grid->addWidget( s2_edit, 23, 6+1 );
grid->addWidget( new QLabel( "s3", this ),24, 6 );
grid->addWidget( s3_edit, 24, 6+1 );
grid->addWidget( new QLabel( "b1", this ),25, 6 );
grid->addWidget( b1_edit, 25, 6+1 );
grid->addWidget( new QLabel( "b2", this ),26, 6 );
grid->addWidget( b2_edit, 26, 6+1 );
grid->addWidget( new QLabel( "b3", this ),27, 6 );
grid->addWidget( b3_edit, 27, 6+1 );
grid->addWidget( new QLabel( "b4", this ),28, 6 );
grid->addWidget( b4_edit, 28, 6+1 );
grid->addWidget( new QLabel( "dir1", this ),29, 6 );
grid->addWidget( dir1_edit, 29, 6+1 );
grid->addWidget( new QLabel( "dir2", this ),3, 8 );
grid->addWidget( dir2_edit, 3, 8+1 );
QPushButton *pb = new QPushButton( "&Write", this );
grid->addWidget(pb, 31, 6 );
connect( pb, SIGNAL( clicked() ), this, SLOT( write() ) );
QPushButton *pb2 = new QPushButton( "&Close", this );
grid->addWidget(pb2,31, 6+1 );
connect( pb2, SIGNAL( clicked() ), this, SLOT( close() ) );
QPushButton *pb3 = new QPushButton( "&Reset", this );
grid->addWidget(pb3, 31, 6+2 );
connect( pb3, SIGNAL( clicked() ), this, SLOT( Reset() ) );
show();
};
ParameterDialog::~ParameterDialog(void) {
delete arrowcolor_edit;
delete arrowsize_edit;
delete textcolor_edit;
delete cellnumsize_edit;
delete nodenumsize_edit;
delete node_mag_edit;
delete outlinewidth_edit;
delete cell_outline_color_edit;
delete resize_stride_edit;
delete T_edit;
delete lambda_length_edit;
delete lambda_celllength_edit;
delete target_length_edit;
delete cell_expansion_rate_edit;
delete cell_div_expansion_rate_edit;
delete auxin_dependent_growth_edit;
delete ode_accuracy_edit;
delete mc_stepsize_edit;
delete mc_cell_stepsize_edit;
delete energy_threshold_edit;
delete bend_lambda_edit;
delete alignment_lambda_edit;
delete rel_cell_div_threshold_edit;
delete rel_perimeter_stiffness_edit;
delete collapse_node_threshold_edit;
delete morphogen_div_threshold_edit;
delete morphogen_expansion_threshold_edit;
delete copy_wall_edit;
delete source_edit;
delete D_edit;
delete initval_edit;
delete k1_edit;
delete k2_edit;
delete r_edit;
delete kr_edit;
delete km_edit;
delete Pi_tot_edit;
delete transport_edit;
delete ka_edit;
delete pin_prod_edit;
delete pin_prod_in_epidermis_edit;
delete pin_breakdown_edit;
delete pin_breakdown_internal_edit;
delete aux1prod_edit;
delete aux1prodmeso_edit;
delete aux1decay_edit;
delete aux1decaymeso_edit;
delete aux1transport_edit;
delete aux_cons_edit;
delete aux_breakdown_edit;
delete kaux1_edit;
delete kap_edit;
delete leaf_tip_source_edit;
delete sam_efflux_edit;
delete sam_auxin_edit;
delete sam_auxin_breakdown_edit;
delete van3prod_edit;
delete van3autokat_edit;
delete van3sat_edit;
delete k2van3_edit;
delete dt_edit;
delete rd_dt_edit;
delete datadir_edit;
delete movie_edit;
delete nit_edit;
delete maxt_edit;
delete storage_stride_edit;
delete xml_storage_stride_edit;
delete rseed_edit;
delete constituous_expansion_limit_edit;
delete vessel_inh_level_edit;
delete vessel_expansion_rate_edit;
delete d_edit;
delete e_edit;
delete f_edit;
delete c_edit;
delete mu_edit;
delete nu_edit;
delete rho0_edit;
delete rho1_edit;
delete c0_edit;
delete gamma_edit;
delete eps_edit;
delete k_edit;
delete i1_edit;
delete i2_edit;
delete i3_edit;
delete i4_edit;
delete i5_edit;
delete s1_edit;
delete s2_edit;
delete s3_edit;
delete b1_edit;
delete b2_edit;
delete b3_edit;
delete b4_edit;
delete dir1_edit;
delete dir2_edit;
}
void ParameterDialog::write(void) {
extern Parameter par;
QString tmpval;
par.arrowcolor = strdup((const char *)arrowcolor_edit->text());
par.arrowsize = arrowsize_edit->text().toDouble();
par.textcolor = strdup((const char *)textcolor_edit->text());
par.cellnumsize = cellnumsize_edit->text().toInt();
par.nodenumsize = nodenumsize_edit->text().toInt();
par.node_mag = node_mag_edit->text().toDouble();
par.outlinewidth = outlinewidth_edit->text().toDouble();
par.cell_outline_color = strdup((const char *)cell_outline_color_edit->text());
par.resize_stride = resize_stride_edit->text().toInt();
par.T = T_edit->text().toDouble();
par.lambda_length = lambda_length_edit->text().toDouble();
par.lambda_celllength = lambda_celllength_edit->text().toDouble();
par.target_length = target_length_edit->text().toDouble();
par.cell_expansion_rate = cell_expansion_rate_edit->text().toDouble();
par.cell_div_expansion_rate = cell_div_expansion_rate_edit->text().toDouble();
tmpval = auxin_dependent_growth_edit->text().stripWhiteSpace();
if (tmpval == "true" || tmpval == "yes" ) par.auxin_dependent_growth = true;
else if (tmpval == "false" || tmpval == "no") par.auxin_dependent_growth = false;
else {
if (QMessageBox::question(this, "Syntax error", tr("Value %1 of parameter %2 is not recognized as Boolean.\nDo you mean TRUE or FALSE?").arg(tmpval).arg("auxin_dependent_growth"),"True","False", QString::null, 0, 1)==0) par.auxin_dependent_growth=true;
else par.auxin_dependent_growth=false;
}
par.ode_accuracy = ode_accuracy_edit->text().toDouble();
par.mc_stepsize = mc_stepsize_edit->text().toDouble();
par.mc_cell_stepsize = mc_cell_stepsize_edit->text().toDouble();
par.energy_threshold = energy_threshold_edit->text().toDouble();
par.bend_lambda = bend_lambda_edit->text().toDouble();
par.alignment_lambda = alignment_lambda_edit->text().toDouble();
par.rel_cell_div_threshold = rel_cell_div_threshold_edit->text().toDouble();
par.rel_perimeter_stiffness = rel_perimeter_stiffness_edit->text().toDouble();
par.collapse_node_threshold = collapse_node_threshold_edit->text().toDouble();
par.morphogen_div_threshold = morphogen_div_threshold_edit->text().toDouble();
par.morphogen_expansion_threshold = morphogen_expansion_threshold_edit->text().toDouble();
tmpval = copy_wall_edit->text().stripWhiteSpace();
if (tmpval == "true" || tmpval == "yes" ) par.copy_wall = true;
else if (tmpval == "false" || tmpval == "no") par.copy_wall = false;
else {
if (QMessageBox::question(this, "Syntax error", tr("Value %1 of parameter %2 is not recognized as Boolean.\nDo you mean TRUE or FALSE?").arg(tmpval).arg("copy_wall"),"True","False", QString::null, 0, 1)==0) par.copy_wall=true;
else par.copy_wall=false;
}
par.source = source_edit->text().toDouble();
tmpval = D_edit->text().section(',', 0, 0);
par.D[0] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 1, 1);
par.D[1] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 2, 2);
par.D[2] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 3, 3);
par.D[3] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 4, 4);
par.D[4] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 5, 5);
par.D[5] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 6, 6);
par.D[6] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 7, 7);
par.D[7] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 8, 8);
par.D[8] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 9, 9);
par.D[9] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 10, 10);
par.D[10] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 11, 11);
par.D[11] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 12, 12);
par.D[12] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 13, 13);
par.D[13] = tmpval.toDouble();
tmpval = D_edit->text().section(',', 14, 14);
par.D[14] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 0, 0);
par.initval[0] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 1, 1);
par.initval[1] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 2, 2);
par.initval[2] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 3, 3);
par.initval[3] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 4, 4);
par.initval[4] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 5, 5);
par.initval[5] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 6, 6);
par.initval[6] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 7, 7);
par.initval[7] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 8, 8);
par.initval[8] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 9, 9);
par.initval[9] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 10, 10);
par.initval[10] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 11, 11);
par.initval[11] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 12, 12);
par.initval[12] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 13, 13);
par.initval[13] = tmpval.toDouble();
tmpval = initval_edit->text().section(',', 14, 14);
par.initval[14] = tmpval.toDouble();
par.k1 = k1_edit->text().toDouble();
par.k2 = k2_edit->text().toDouble();
par.r = r_edit->text().toDouble();
par.kr = kr_edit->text().toDouble();
par.km = km_edit->text().toDouble();
par.Pi_tot = Pi_tot_edit->text().toDouble();
par.transport = transport_edit->text().toDouble();
par.ka = ka_edit->text().toDouble();
par.pin_prod = pin_prod_edit->text().toDouble();
par.pin_prod_in_epidermis = pin_prod_in_epidermis_edit->text().toDouble();
par.pin_breakdown = pin_breakdown_edit->text().toDouble();
par.pin_breakdown_internal = pin_breakdown_internal_edit->text().toDouble();
par.aux1prod = aux1prod_edit->text().toDouble();
par.aux1prodmeso = aux1prodmeso_edit->text().toDouble();
par.aux1decay = aux1decay_edit->text().toDouble();
par.aux1decaymeso = aux1decaymeso_edit->text().toDouble();
par.aux1transport = aux1transport_edit->text().toDouble();
par.aux_cons = aux_cons_edit->text().toDouble();
par.aux_breakdown = aux_breakdown_edit->text().toDouble();
par.kaux1 = kaux1_edit->text().toDouble();
par.kap = kap_edit->text().toDouble();
par.leaf_tip_source = leaf_tip_source_edit->text().toDouble();
par.sam_efflux = sam_efflux_edit->text().toDouble();
par.sam_auxin = sam_auxin_edit->text().toDouble();
par.sam_auxin_breakdown = sam_auxin_breakdown_edit->text().toDouble();
par.van3prod = van3prod_edit->text().toDouble();
par.van3autokat = van3autokat_edit->text().toDouble();
par.van3sat = van3sat_edit->text().toDouble();
par.k2van3 = k2van3_edit->text().toDouble();
par.dt = dt_edit->text().toDouble();
par.rd_dt = rd_dt_edit->text().toDouble();
par.datadir = strdup((const char *)datadir_edit->text());
tmpval = movie_edit->text().stripWhiteSpace();
if (tmpval == "true" || tmpval == "yes" ) par.movie = true;
else if (tmpval == "false" || tmpval == "no") par.movie = false;
else {
if (QMessageBox::question(this, "Syntax error", tr("Value %1 of parameter %2 is not recognized as Boolean.\nDo you mean TRUE or FALSE?").arg(tmpval).arg("movie"),"True","False", QString::null, 0, 1)==0) par.movie=true;
else par.movie=false;
}
par.nit = nit_edit->text().toInt();
par.maxt = maxt_edit->text().toDouble();
par.storage_stride = storage_stride_edit->text().toInt();
par.xml_storage_stride = xml_storage_stride_edit->text().toInt();
par.rseed = rseed_edit->text().toInt();
par.constituous_expansion_limit = constituous_expansion_limit_edit->text().toInt();
par.vessel_inh_level = vessel_inh_level_edit->text().toDouble();
par.vessel_expansion_rate = vessel_expansion_rate_edit->text().toDouble();
par.d = d_edit->text().toDouble();
par.e = e_edit->text().toDouble();
par.f = f_edit->text().toDouble();
par.c = c_edit->text().toDouble();
par.mu = mu_edit->text().toDouble();
par.nu = nu_edit->text().toDouble();
par.rho0 = rho0_edit->text().toDouble();
par.rho1 = rho1_edit->text().toDouble();
par.c0 = c0_edit->text().toDouble();
par.gamma = gamma_edit->text().toDouble();
par.eps = eps_edit->text().toDouble();
tmpval = k_edit->text().section(',', 0, 0);
par.k[0] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 1, 1);
par.k[1] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 2, 2);
par.k[2] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 3, 3);
par.k[3] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 4, 4);
par.k[4] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 5, 5);
par.k[5] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 6, 6);
par.k[6] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 7, 7);
par.k[7] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 8, 8);
par.k[8] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 9, 9);
par.k[9] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 10, 10);
par.k[10] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 11, 11);
par.k[11] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 12, 12);
par.k[12] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 13, 13);
par.k[13] = tmpval.toDouble();
tmpval = k_edit->text().section(',', 14, 14);
par.k[14] = tmpval.toDouble();
par.i1 = i1_edit->text().toInt();
par.i2 = i2_edit->text().toInt();
par.i3 = i3_edit->text().toInt();
par.i4 = i4_edit->text().toInt();
par.i5 = i5_edit->text().toInt();
par.s1 = strdup((const char *)s1_edit->text());
par.s2 = strdup((const char *)s2_edit->text());
par.s3 = strdup((const char *)s3_edit->text());
tmpval = b1_edit->text().stripWhiteSpace();
if (tmpval == "true" || tmpval == "yes" ) par.b1 = true;
else if (tmpval == "false" || tmpval == "no") par.b1 = false;
else {
if (QMessageBox::question(this, "Syntax error", tr("Value %1 of parameter %2 is not recognized as Boolean.\nDo you mean TRUE or FALSE?").arg(tmpval).arg("b1"),"True","False", QString::null, 0, 1)==0) par.b1=true;
else par.b1=false;
}
tmpval = b2_edit->text().stripWhiteSpace();
if (tmpval == "true" || tmpval == "yes" ) par.b2 = true;
else if (tmpval == "false" || tmpval == "no") par.b2 = false;
else {
if (QMessageBox::question(this, "Syntax error", tr("Value %1 of parameter %2 is not recognized as Boolean.\nDo you mean TRUE or FALSE?").arg(tmpval).arg("b2"),"True","False", QString::null, 0, 1)==0) par.b2=true;
else par.b2=false;
}
tmpval = b3_edit->text().stripWhiteSpace();
if (tmpval == "true" || tmpval == "yes" ) par.b3 = true;
else if (tmpval == "false" || tmpval == "no") par.b3 = false;
else {
if (QMessageBox::question(this, "Syntax error", tr("Value %1 of parameter %2 is not recognized as Boolean.\nDo you mean TRUE or FALSE?").arg(tmpval).arg("b3"),"True","False", QString::null, 0, 1)==0) par.b3=true;
else par.b3=false;
}
tmpval = b4_edit->text().stripWhiteSpace();
if (tmpval == "true" || tmpval == "yes" ) par.b4 = true;
else if (tmpval == "false" || tmpval == "no") par.b4 = false;
else {
if (QMessageBox::question(this, "Syntax error", tr("Value %1 of parameter %2 is not recognized as Boolean.\nDo you mean TRUE or FALSE?").arg(tmpval).arg("b4"),"True","False", QString::null, 0, 1)==0) par.b4=true;
else par.b4=false;
}
par.dir1 = strdup((const char *)dir1_edit->text());
par.dir2 = strdup((const char *)dir2_edit->text());
Reset();
}
void ParameterDialog::Reset(void) {
extern Parameter par;
arrowcolor_edit->setText( QString("%1").arg(par.arrowcolor) );
arrowsize_edit->setText( QString("%1").arg(par.arrowsize) );
textcolor_edit->setText( QString("%1").arg(par.textcolor) );
cellnumsize_edit->setText( QString("%1").arg(par.cellnumsize) );
nodenumsize_edit->setText( QString("%1").arg(par.nodenumsize) );
node_mag_edit->setText( QString("%1").arg(par.node_mag) );
outlinewidth_edit->setText( QString("%1").arg(par.outlinewidth) );
cell_outline_color_edit->setText( QString("%1").arg(par.cell_outline_color) );
resize_stride_edit->setText( QString("%1").arg(par.resize_stride) );
T_edit->setText( QString("%1").arg(par.T) );
lambda_length_edit->setText( QString("%1").arg(par.lambda_length) );
lambda_celllength_edit->setText( QString("%1").arg(par.lambda_celllength) );
target_length_edit->setText( QString("%1").arg(par.target_length) );
cell_expansion_rate_edit->setText( QString("%1").arg(par.cell_expansion_rate) );
cell_div_expansion_rate_edit->setText( QString("%1").arg(par.cell_div_expansion_rate) );
auxin_dependent_growth_edit->setText( QString("%1").arg(sbool(par.auxin_dependent_growth)));
ode_accuracy_edit->setText( QString("%1").arg(par.ode_accuracy) );
mc_stepsize_edit->setText( QString("%1").arg(par.mc_stepsize) );
mc_cell_stepsize_edit->setText( QString("%1").arg(par.mc_cell_stepsize) );
energy_threshold_edit->setText( QString("%1").arg(par.energy_threshold) );
bend_lambda_edit->setText( QString("%1").arg(par.bend_lambda) );
alignment_lambda_edit->setText( QString("%1").arg(par.alignment_lambda) );
rel_cell_div_threshold_edit->setText( QString("%1").arg(par.rel_cell_div_threshold) );
rel_perimeter_stiffness_edit->setText( QString("%1").arg(par.rel_perimeter_stiffness) );
collapse_node_threshold_edit->setText( QString("%1").arg(par.collapse_node_threshold) );
morphogen_div_threshold_edit->setText( QString("%1").arg(par.morphogen_div_threshold) );
morphogen_expansion_threshold_edit->setText( QString("%1").arg(par.morphogen_expansion_threshold) );
copy_wall_edit->setText( QString("%1").arg(sbool(par.copy_wall)));
source_edit->setText( QString("%1").arg(par.source) );
QString D_string("%1,%2,%3,%4,%5,%6,%7,%8,%9,%10,%11,%12,%13,%14,%15");
D_string = D_string.arg(par.D[0]).arg(par.D[1]).arg(par.D[2]).arg(par.D[3]).arg(par.D[4]).arg(par.D[5]).arg(par.D[6]).arg(par.D[7]).arg(par.D[8]).arg(par.D[9]).arg(par.D[10]).arg(par.D[11]).arg(par.D[12]).arg(par.D[13]).arg(par.D[14]);
D_edit->setText( D_string );
QString initval_string("%1,%2,%3,%4,%5,%6,%7,%8,%9,%10,%11,%12,%13,%14,%15");
initval_string = initval_string.arg(par.initval[0]).arg(par.initval[1]).arg(par.initval[2]).arg(par.initval[3]).arg(par.initval[4]).arg(par.initval[5]).arg(par.initval[6]).arg(par.initval[7]).arg(par.initval[8]).arg(par.initval[9]).arg(par.initval[10]).arg(par.initval[11]).arg(par.initval[12]).arg(par.initval[13]).arg(par.initval[14]);
initval_edit->setText( initval_string );
k1_edit->setText( QString("%1").arg(par.k1) );
k2_edit->setText( QString("%1").arg(par.k2) );
r_edit->setText( QString("%1").arg(par.r) );
kr_edit->setText( QString("%1").arg(par.kr) );
km_edit->setText( QString("%1").arg(par.km) );
Pi_tot_edit->setText( QString("%1").arg(par.Pi_tot) );
transport_edit->setText( QString("%1").arg(par.transport) );
ka_edit->setText( QString("%1").arg(par.ka) );
pin_prod_edit->setText( QString("%1").arg(par.pin_prod) );
pin_prod_in_epidermis_edit->setText( QString("%1").arg(par.pin_prod_in_epidermis) );
pin_breakdown_edit->setText( QString("%1").arg(par.pin_breakdown) );
pin_breakdown_internal_edit->setText( QString("%1").arg(par.pin_breakdown_internal) );
aux1prod_edit->setText( QString("%1").arg(par.aux1prod) );
aux1prodmeso_edit->setText( QString("%1").arg(par.aux1prodmeso) );
aux1decay_edit->setText( QString("%1").arg(par.aux1decay) );
aux1decaymeso_edit->setText( QString("%1").arg(par.aux1decaymeso) );
aux1transport_edit->setText( QString("%1").arg(par.aux1transport) );
aux_cons_edit->setText( QString("%1").arg(par.aux_cons) );
aux_breakdown_edit->setText( QString("%1").arg(par.aux_breakdown) );
kaux1_edit->setText( QString("%1").arg(par.kaux1) );
kap_edit->setText( QString("%1").arg(par.kap) );
leaf_tip_source_edit->setText( QString("%1").arg(par.leaf_tip_source) );
sam_efflux_edit->setText( QString("%1").arg(par.sam_efflux) );
sam_auxin_edit->setText( QString("%1").arg(par.sam_auxin) );
sam_auxin_breakdown_edit->setText( QString("%1").arg(par.sam_auxin_breakdown) );
van3prod_edit->setText( QString("%1").arg(par.van3prod) );
van3autokat_edit->setText( QString("%1").arg(par.van3autokat) );
van3sat_edit->setText( QString("%1").arg(par.van3sat) );
k2van3_edit->setText( QString("%1").arg(par.k2van3) );
dt_edit->setText( QString("%1").arg(par.dt) );
rd_dt_edit->setText( QString("%1").arg(par.rd_dt) );
datadir_edit->setText( QString("%1").arg(par.datadir) );
movie_edit->setText( QString("%1").arg(sbool(par.movie)));
nit_edit->setText( QString("%1").arg(par.nit) );
maxt_edit->setText( QString("%1").arg(par.maxt) );
storage_stride_edit->setText( QString("%1").arg(par.storage_stride) );
xml_storage_stride_edit->setText( QString("%1").arg(par.xml_storage_stride) );
rseed_edit->setText( QString("%1").arg(par.rseed) );
constituous_expansion_limit_edit->setText( QString("%1").arg(par.constituous_expansion_limit) );
vessel_inh_level_edit->setText( QString("%1").arg(par.vessel_inh_level) );
vessel_expansion_rate_edit->setText( QString("%1").arg(par.vessel_expansion_rate) );
d_edit->setText( QString("%1").arg(par.d) );
e_edit->setText( QString("%1").arg(par.e) );
f_edit->setText( QString("%1").arg(par.f) );
c_edit->setText( QString("%1").arg(par.c) );
mu_edit->setText( QString("%1").arg(par.mu) );
nu_edit->setText( QString("%1").arg(par.nu) );
rho0_edit->setText( QString("%1").arg(par.rho0) );
rho1_edit->setText( QString("%1").arg(par.rho1) );
c0_edit->setText( QString("%1").arg(par.c0) );
gamma_edit->setText( QString("%1").arg(par.gamma) );
eps_edit->setText( QString("%1").arg(par.eps) );
QString k_string("%1,%2,%3,%4,%5,%6,%7,%8,%9,%10,%11,%12,%13,%14,%15");
k_string = k_string.arg(par.k[0]).arg(par.k[1]).arg(par.k[2]).arg(par.k[3]).arg(par.k[4]).arg(par.k[5]).arg(par.k[6]).arg(par.k[7]).arg(par.k[8]).arg(par.k[9]).arg(par.k[10]).arg(par.k[11]).arg(par.k[12]).arg(par.k[13]).arg(par.k[14]);
k_edit->setText( k_string );
i1_edit->setText( QString("%1").arg(par.i1) );
i2_edit->setText( QString("%1").arg(par.i2) );
i3_edit->setText( QString("%1").arg(par.i3) );
i4_edit->setText( QString("%1").arg(par.i4) );
i5_edit->setText( QString("%1").arg(par.i5) );
s1_edit->setText( QString("%1").arg(par.s1) );
s2_edit->setText( QString("%1").arg(par.s2) );
s3_edit->setText( QString("%1").arg(par.s3) );
b1_edit->setText( QString("%1").arg(sbool(par.b1)));
b2_edit->setText( QString("%1").arg(sbool(par.b2)));
b3_edit->setText( QString("%1").arg(sbool(par.b3)));
b4_edit->setText( QString("%1").arg(sbool(par.b4)));
dir1_edit->setText( QString("%1").arg(par.dir1) );
dir2_edit->setText( QString("%1").arg(par.dir2) );
}
/* finis */