Changeset - e40119cdbdb9
[Not reviewed]
default
0 8 0
Roeland Merks - 15 years ago 2010-10-14 21:58:12
roeland.merks@cwi.nl
A few last updates before submitting the revised Plant Phys. paper. Corrected the invocation of TransporterDialog and added parameter 'yield_threshold'

user: Roeland Merks <roeland.merks@cwi.nl>
branch 'default'
changed src/ChangeLog
changed src/VirtualLeafpar.tmpl
changed src/mesh.cpp
changed src/parameter.cpp
changed src/parameter.h
changed src/pardialog.cpp
changed src/pardialog.h
changed src/wallitem.cpp
8 files changed with 243 insertions and 205 deletions:
0 comments (0 inline, 0 general)
src/ChangeLog
Show inline comments
 
2010-10-14    <merks@cwi.nl>
 

	
 
	* mesh.cpp: In response to referees' comments, added new parameter "yield_threshold" instead of fixed parameter '4' for yield threshold. 
 

	
 
	* wallitem.cpp: when clicking a wall, both the wall type was cycled and the transporterdialog popped up. Corrected this - for wall type cycling, hold the Control button while left clicking. TransporterDialog only pops up for left click. Also made sure the wall is redrawn after changing the transporter values.
 
	
 

	
 
	* cell.cpp (DivideWalls): accomodated for rename of Circumference -> WallCircumference
 

	
 
	* hull.h: added an operator< to sort Points
 

	
 
	* hull.cpp: added an operator< to sort Points
 

	
 
	* cellbase.cpp (ExactCircumference): I added a new function ExactCircumference, yielding the circumference of the cell along its wall_elements
 

	
 
	* VirtualLeaf.cpp: adjust info_string to accomodate for new name of function CellBase::Circumference -> CellBase::WallCircumference
 
	* mesh.cpp: corrected Mesh::Compactness, the boundary coordinates need to be sorted in x,y order for the convex hull algorithm (thanks Margriet!). I updated CSVExportCellData so it exports the circumferences of hull and boundary_polygon.
 
	
 
2010-10-14    <guravage@caterpie.sen.cwi.nl>
src/VirtualLeafpar.tmpl
Show inline comments
 
@@ -4,24 +4,25 @@ arrowcolor = white / string
 
arrowsize = 100 / double
 
textcolor = red / string
 
cellnumsize = 1 / int
 
nodenumsize = 1 / int
 
node_mag = 1.0 / double 
 
outlinewidth = 1.0 / double
 
cell_outline_color = forestgreen / string
 
resize_stride = 0 / int
 
label = / label
 
label = <b>Cell mechanics</b> / label
 
T = 1.0 / double
 
lambda_length = 100. / double
 
yielding_threshold = 4. / double
 
lambda_celllength = 0. / double
 
target_length = 60. / double 
 
cell_expansion_rate = 1. / double
 
cell_div_expansion_rate = 0. / double
 
auxin_dependent_growth = true / bool
 
ode_accuracy = 1e-4 / double
 
mc_stepsize = 0.4 / double
 
mc_cell_stepsize = 0.2 / double
 
energy_threshold = 1000. / double
 
bend_lambda = 0. / double
 
alignment_lambda = 0. / double
 
rel_cell_div_threshold = 2. / double
src/mesh.cpp
Show inline comments
 
@@ -752,28 +752,28 @@ double Mesh::DisplaceNodes(void) {
 

	
 
	  old_l1=(old_p-i_min_1).Norm();
 
	  old_l2=(old_p-i_plus_1).Norm();
 
	  new_l1=(new_p-i_min_1).Norm();
 
	  new_l2=(new_p-i_plus_1).Norm();
 

	
 

	
 

	
 

	
 
	  static int count=0;
 
	  // Insertion of nodes (cell wall yielding)
 
	  if (!node.fixed) {
 
	    if (old_l1 > 4*Node::target_length && !cit->nb1->fixed) {
 
	    if (old_l1 > par.yielding_threshold*Node::target_length && !cit->nb1->fixed) {
 
	      node_insertion_queue.push( Edge(cit->nb1, &node) );
 
	    }
 
	    if (old_l2 > 4*Node::target_length && !cit->nb2->fixed) {
 
	    if (old_l2 > par.yielding_threshold*Node::target_length && !cit->nb2->fixed) {
 
	      node_insertion_queue.push( Edge(&node, cit->nb2 ) );
 
	    }
 
	    count++;
 

	
 
	  }
 

	
 

	
 
	
 
	  length_dh += 2*Node::target_length * ( w1*(old_l1 - new_l1) + 
 
						 w2*(old_l2 - new_l2) ) +
 
	    w1*(DSQR(new_l1) 
 
		- DSQR(old_l1)) 
src/parameter.cpp
Show inline comments
 
@@ -44,24 +44,25 @@ static const std::string _module_id("$Id
 
Parameter::Parameter() {
 
  arrowcolor = strdup("white");
 
  arrowsize = 100;
 
  textcolor = strdup("red");
 
  cellnumsize = 1;
 
  nodenumsize = 1;
 
  node_mag = 1.0;
 
  outlinewidth = 1.0;
 
  cell_outline_color = strdup("forestgreen");
 
  resize_stride = 0;
 
  T = 1.0;
 
  lambda_length = 100.;
 
  yielding_threshold = 4.;
 
  lambda_celllength = 0.;
 
  target_length = 60.;
 
  cell_expansion_rate = 1.;
 
  cell_div_expansion_rate = 0.;
 
  auxin_dependent_growth = true;
 
  ode_accuracy = 1e-4;
 
  mc_stepsize = 0.4;
 
  mc_cell_stepsize = 0.2;
 
  energy_threshold = 1000.;
 
  bend_lambda = 0.;
 
  alignment_lambda = 0.;
 
  rel_cell_div_threshold = 2.;
 
@@ -244,24 +245,25 @@ void Parameter::Read(const char *filenam
 

	
 
  arrowcolor = sgetpar(fp, "arrowcolor", "white", true);
 
  arrowsize = fgetpar(fp, "arrowsize", 100, true);
 
  textcolor = sgetpar(fp, "textcolor", "red", true);
 
  cellnumsize = igetpar(fp, "cellnumsize", 1, true);
 
  nodenumsize = igetpar(fp, "nodenumsize", 1, true);
 
  node_mag = fgetpar(fp, "node_mag", 1.0, true);
 
  outlinewidth = fgetpar(fp, "outlinewidth", 1.0, true);
 
  cell_outline_color = sgetpar(fp, "cell_outline_color", "forestgreen", true);
 
  resize_stride = igetpar(fp, "resize_stride", 0, true);
 
  T = fgetpar(fp, "T", 1.0, true);
 
  lambda_length = fgetpar(fp, "lambda_length", 100., true);
 
  yielding_threshold = fgetpar(fp, "yielding_threshold", 4., true);
 
  lambda_celllength = fgetpar(fp, "lambda_celllength", 0., true);
 
  target_length = fgetpar(fp, "target_length", 60., true);
 
  cell_expansion_rate = fgetpar(fp, "cell_expansion_rate", 1., true);
 
  cell_div_expansion_rate = fgetpar(fp, "cell_div_expansion_rate", 0., true);
 
  auxin_dependent_growth = bgetpar(fp, "auxin_dependent_growth", true, true);
 
  ode_accuracy = fgetpar(fp, "ode_accuracy", 1e-4, true);
 
  mc_stepsize = fgetpar(fp, "mc_stepsize", 0.4, true);
 
  mc_cell_stepsize = fgetpar(fp, "mc_cell_stepsize", 0.2, true);
 
  energy_threshold = fgetpar(fp, "energy_threshold", 1000., true);
 
  bend_lambda = fgetpar(fp, "bend_lambda", 0., true);
 
  alignment_lambda = fgetpar(fp, "alignment_lambda", 0., true);
 
  rel_cell_div_threshold = fgetpar(fp, "rel_cell_div_threshold", 2., true);
 
@@ -371,24 +373,25 @@ void Parameter::Write(ostream &os) const
 
  if (textcolor) 
 
  os << " textcolor = " << textcolor << endl;
 
  os << " cellnumsize = " << cellnumsize << endl;
 
  os << " nodenumsize = " << nodenumsize << endl;
 
  os << " node_mag = " << node_mag << endl;
 
  os << " outlinewidth = " << outlinewidth << endl;
 

	
 
  if (cell_outline_color) 
 
  os << " cell_outline_color = " << cell_outline_color << endl;
 
  os << " resize_stride = " << resize_stride << endl;
 
  os << " T = " << T << endl;
 
  os << " lambda_length = " << lambda_length << endl;
 
  os << " yielding_threshold = " << yielding_threshold << endl;
 
  os << " lambda_celllength = " << lambda_celllength << endl;
 
  os << " target_length = " << target_length << endl;
 
  os << " cell_expansion_rate = " << cell_expansion_rate << endl;
 
  os << " cell_div_expansion_rate = " << cell_div_expansion_rate << endl;
 
  os << " auxin_dependent_growth = " << sbool(auxin_dependent_growth) << endl;
 
  os << " ode_accuracy = " << ode_accuracy << endl;
 
  os << " mc_stepsize = " << mc_stepsize << endl;
 
  os << " mc_cell_stepsize = " << mc_cell_stepsize << endl;
 
  os << " energy_threshold = " << energy_threshold << endl;
 
  os << " bend_lambda = " << bend_lambda << endl;
 
  os << " alignment_lambda = " << alignment_lambda << endl;
 
  os << " rel_cell_div_threshold = " << rel_cell_div_threshold << endl;
 
@@ -567,24 +570,31 @@ xmlNewProp(xmlpar, BAD_CAST "val", BAD_C
 
    text << T;
 
xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
 
}
 
{
 
  xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
 
  xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "lambda_length" );
 
  ostringstream text;
 
    text << lambda_length;
 
xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
 
}
 
{
 
  xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
 
  xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "yielding_threshold" );
 
  ostringstream text;
 
    text << yielding_threshold;
 
xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
 
}
 
{
 
  xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
 
  xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "lambda_celllength" );
 
  ostringstream text;
 
    text << lambda_celllength;
 
xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
 
}
 
{
 
  xmlNode *xmlpar = xmlNewChild(xmlparameter, NULL, BAD_CAST "par", NULL);
 
  xmlNewProp(xmlpar, BAD_CAST "name", BAD_CAST "target_length" );
 
  ostringstream text;
 
    text << target_length;
 
xmlNewProp(xmlpar, BAD_CAST "val", BAD_CAST text.str().c_str());
 
}
 
@@ -1516,24 +1526,28 @@ if (!strcmp(namec, "cell_outline_color")
 
if (!strcmp(namec, "resize_stride")) {
 
  resize_stride = standardlocale.toInt(valc, &ok);
 
  if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to integer while reading parameter 'resize_stride' from XML file.",valc); }
 
}
 
if (!strcmp(namec, "T")) {
 
  T = standardlocale.toDouble(valc, &ok);
 
  if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'T' from XML file.",valc); }
 
}
 
if (!strcmp(namec, "lambda_length")) {
 
  lambda_length = standardlocale.toDouble(valc, &ok);
 
  if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'lambda_length' from XML file.",valc); }
 
}
 
if (!strcmp(namec, "yielding_threshold")) {
 
  yielding_threshold = standardlocale.toDouble(valc, &ok);
 
  if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'yielding_threshold' from XML file.",valc); }
 
}
 
if (!strcmp(namec, "lambda_celllength")) {
 
  lambda_celllength = standardlocale.toDouble(valc, &ok);
 
  if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'lambda_celllength' from XML file.",valc); }
 
}
 
if (!strcmp(namec, "target_length")) {
 
  target_length = standardlocale.toDouble(valc, &ok);
 
  if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'target_length' from XML file.",valc); }
 
}
 
if (!strcmp(namec, "cell_expansion_rate")) {
 
  cell_expansion_rate = standardlocale.toDouble(valc, &ok);
 
  if (!ok) { MyWarning::error("Read error: cannot convert string \"%s\" to double while reading parameter 'cell_expansion_rate' from XML file.",valc); }
 
}
src/parameter.h
Show inline comments
 
@@ -46,24 +46,25 @@
 
   void AssignValArrayToPar(const char *namec, vector<double> valarray);
 
  char * arrowcolor;
 
  double arrowsize;
 
  char * textcolor;
 
  int cellnumsize;
 
  int nodenumsize;
 
  double node_mag;
 
  double outlinewidth;
 
  char * cell_outline_color;
 
  int resize_stride;
 
  double T;
 
  double lambda_length;
 
  double yielding_threshold;
 
  double lambda_celllength;
 
  double target_length;
 
  double cell_expansion_rate;
 
  double cell_div_expansion_rate;
 
  bool auxin_dependent_growth;
 
  double ode_accuracy;
 
  double mc_stepsize;
 
  double mc_cell_stepsize;
 
  double energy_threshold;
 
  double bend_lambda;
 
  double alignment_lambda;
 
  double rel_cell_div_threshold;
src/pardialog.cpp
Show inline comments
 
@@ -36,24 +36,25 @@ ParameterDialog::ParameterDialog(QWidget
 
    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" );
 
  yielding_threshold_edit = new QLineEdit( QString("%1").arg(par.yielding_threshold), this, "yielding_threshold_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" );
 
@@ -163,234 +164,237 @@ QGridLayout *grid = new QGridLayout( thi
 
  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( " <b>Cell mechanics</b>", 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( " <b>Auxin transport and PIN1 dynamics</b>", 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( " <b>Integration parameters</b>", 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( " <b>Meinhardt leaf venation model</b>", 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( " <b>User-defined parameters</b>", 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  );
 
  grid->addWidget( new QLabel( "export_interval", this ),4, 8 );
 
  grid->addWidget( export_interval_edit, 4, 8+1  );
 
  grid->addWidget( new QLabel( "export_fn_prefix", this ),5, 8 );
 
  grid->addWidget( export_fn_prefix_edit, 5, 8+1  );
 
  grid->addWidget( new QLabel( "yielding_threshold", this ),17, 0 );
 
  grid->addWidget( yielding_threshold_edit, 17, 0+1  );
 
  grid->addWidget( new QLabel( "lambda_celllength", this ),18, 0 );
 
  grid->addWidget( lambda_celllength_edit, 18, 0+1  );
 
  grid->addWidget( new QLabel( "target_length", this ),19, 0 );
 
  grid->addWidget( target_length_edit, 19, 0+1  );
 
  grid->addWidget( new QLabel( "cell_expansion_rate", this ),20, 0 );
 
  grid->addWidget( cell_expansion_rate_edit, 20, 0+1  );
 
  grid->addWidget( new QLabel( "cell_div_expansion_rate", this ),21, 0 );
 
  grid->addWidget( cell_div_expansion_rate_edit, 21, 0+1  );
 
  grid->addWidget( new QLabel( "auxin_dependent_growth", this ),22, 0 );
 
  grid->addWidget( auxin_dependent_growth_edit, 22, 0+1  );
 
  grid->addWidget( new QLabel( "ode_accuracy", this ),23, 0 );
 
  grid->addWidget( ode_accuracy_edit, 23, 0+1  );
 
  grid->addWidget( new QLabel( "mc_stepsize", this ),24, 0 );
 
  grid->addWidget( mc_stepsize_edit, 24, 0+1  );
 
  grid->addWidget( new QLabel( "mc_cell_stepsize", this ),25, 0 );
 
  grid->addWidget( mc_cell_stepsize_edit, 25, 0+1  );
 
  grid->addWidget( new QLabel( "energy_threshold", this ),26, 0 );
 
  grid->addWidget( energy_threshold_edit, 26, 0+1  );
 
  grid->addWidget( new QLabel( "bend_lambda", this ),27, 0 );
 
  grid->addWidget( bend_lambda_edit, 27, 0+1  );
 
  grid->addWidget( new QLabel( "alignment_lambda", this ),28, 0 );
 
  grid->addWidget( alignment_lambda_edit, 28, 0+1  );
 
  grid->addWidget( new QLabel( "rel_cell_div_threshold", this ),29, 0 );
 
  grid->addWidget( rel_cell_div_threshold_edit, 29, 0+1  );
 
  grid->addWidget( new QLabel( "rel_perimeter_stiffness", this ),3, 2 );
 
  grid->addWidget( rel_perimeter_stiffness_edit, 3, 2+1  );
 
  grid->addWidget( new QLabel( "collapse_node_threshold", this ),4, 2 );
 
  grid->addWidget( collapse_node_threshold_edit, 4, 2+1  );
 
  grid->addWidget( new QLabel( "morphogen_div_threshold", this ),5, 2 );
 
  grid->addWidget( morphogen_div_threshold_edit, 5, 2+1  );
 
  grid->addWidget( new QLabel( "morphogen_expansion_threshold", this ),6, 2 );
 
  grid->addWidget( morphogen_expansion_threshold_edit, 6, 2+1  );
 
  grid->addWidget( new QLabel( "copy_wall", this ),7, 2 );
 
  grid->addWidget( copy_wall_edit, 7, 2+1  );
 
  grid->addWidget( new QLabel( "", this), 8, 2, 1, 2 );
 
  grid->addWidget( new QLabel( " <b>Auxin transport and PIN1 dynamics</b>", this), 9, 2, 1, 2 );
 
  grid->addWidget( new QLabel( "source", this ),10, 2 );
 
  grid->addWidget( source_edit, 10, 2+1  );
 
  grid->addWidget( new QLabel( "D", this ),11, 2 );
 
  grid->addWidget( D_edit, 11, 2+1  );
 
  grid->addWidget( new QLabel( "initval", this ),12, 2 );
 
  grid->addWidget( initval_edit, 12, 2+1  );
 
  grid->addWidget( new QLabel( "k1", this ),13, 2 );
 
  grid->addWidget( k1_edit, 13, 2+1  );
 
  grid->addWidget( new QLabel( "k2", this ),14, 2 );
 
  grid->addWidget( k2_edit, 14, 2+1  );
 
  grid->addWidget( new QLabel( "r", this ),15, 2 );
 
  grid->addWidget( r_edit, 15, 2+1  );
 
  grid->addWidget( new QLabel( "kr", this ),16, 2 );
 
  grid->addWidget( kr_edit, 16, 2+1  );
 
  grid->addWidget( new QLabel( "km", this ),17, 2 );
 
  grid->addWidget( km_edit, 17, 2+1  );
 
  grid->addWidget( new QLabel( "Pi_tot", this ),18, 2 );
 
  grid->addWidget( Pi_tot_edit, 18, 2+1  );
 
  grid->addWidget( new QLabel( "transport", this ),19, 2 );
 
  grid->addWidget( transport_edit, 19, 2+1  );
 
  grid->addWidget( new QLabel( "ka", this ),20, 2 );
 
  grid->addWidget( ka_edit, 20, 2+1  );
 
  grid->addWidget( new QLabel( "pin_prod", this ),21, 2 );
 
  grid->addWidget( pin_prod_edit, 21, 2+1  );
 
  grid->addWidget( new QLabel( "pin_prod_in_epidermis", this ),22, 2 );
 
  grid->addWidget( pin_prod_in_epidermis_edit, 22, 2+1  );
 
  grid->addWidget( new QLabel( "pin_breakdown", this ),23, 2 );
 
  grid->addWidget( pin_breakdown_edit, 23, 2+1  );
 
  grid->addWidget( new QLabel( "pin_breakdown_internal", this ),24, 2 );
 
  grid->addWidget( pin_breakdown_internal_edit, 24, 2+1  );
 
  grid->addWidget( new QLabel( "aux1prod", this ),25, 2 );
 
  grid->addWidget( aux1prod_edit, 25, 2+1  );
 
  grid->addWidget( new QLabel( "aux1prodmeso", this ),26, 2 );
 
  grid->addWidget( aux1prodmeso_edit, 26, 2+1  );
 
  grid->addWidget( new QLabel( "aux1decay", this ),27, 2 );
 
  grid->addWidget( aux1decay_edit, 27, 2+1  );
 
  grid->addWidget( new QLabel( "aux1decaymeso", this ),28, 2 );
 
  grid->addWidget( aux1decaymeso_edit, 28, 2+1  );
 
  grid->addWidget( new QLabel( "aux1transport", this ),29, 2 );
 
  grid->addWidget( aux1transport_edit, 29, 2+1  );
 
  grid->addWidget( new QLabel( "aux_cons", this ),3, 4 );
 
  grid->addWidget( aux_cons_edit, 3, 4+1  );
 
  grid->addWidget( new QLabel( "aux_breakdown", this ),4, 4 );
 
  grid->addWidget( aux_breakdown_edit, 4, 4+1  );
 
  grid->addWidget( new QLabel( "kaux1", this ),5, 4 );
 
  grid->addWidget( kaux1_edit, 5, 4+1  );
 
  grid->addWidget( new QLabel( "kap", this ),6, 4 );
 
  grid->addWidget( kap_edit, 6, 4+1  );
 
  grid->addWidget( new QLabel( "leaf_tip_source", this ),7, 4 );
 
  grid->addWidget( leaf_tip_source_edit, 7, 4+1  );
 
  grid->addWidget( new QLabel( "sam_efflux", this ),8, 4 );
 
  grid->addWidget( sam_efflux_edit, 8, 4+1  );
 
  grid->addWidget( new QLabel( "sam_auxin", this ),9, 4 );
 
  grid->addWidget( sam_auxin_edit, 9, 4+1  );
 
  grid->addWidget( new QLabel( "sam_auxin_breakdown", this ),10, 4 );
 
  grid->addWidget( sam_auxin_breakdown_edit, 10, 4+1  );
 
  grid->addWidget( new QLabel( "van3prod", this ),11, 4 );
 
  grid->addWidget( van3prod_edit, 11, 4+1  );
 
  grid->addWidget( new QLabel( "van3autokat", this ),12, 4 );
 
  grid->addWidget( van3autokat_edit, 12, 4+1  );
 
  grid->addWidget( new QLabel( "van3sat", this ),13, 4 );
 
  grid->addWidget( van3sat_edit, 13, 4+1  );
 
  grid->addWidget( new QLabel( "k2van3", this ),14, 4 );
 
  grid->addWidget( k2van3_edit, 14, 4+1  );
 
  grid->addWidget( new QLabel( "", this), 15, 4, 1, 2 );
 
  grid->addWidget( new QLabel( " <b>Integration parameters</b>", this), 16, 4, 1, 2 );
 
  grid->addWidget( new QLabel( "dt", this ),17, 4 );
 
  grid->addWidget( dt_edit, 17, 4+1  );
 
  grid->addWidget( new QLabel( "rd_dt", this ),18, 4 );
 
  grid->addWidget( rd_dt_edit, 18, 4+1  );
 
  grid->addWidget( new QLabel( "datadir", this ),19, 4 );
 
  grid->addWidget( datadir_edit, 19, 4+1  );
 
  grid->addWidget( new QLabel( "movie", this ),20, 4 );
 
  grid->addWidget( movie_edit, 20, 4+1  );
 
  grid->addWidget( new QLabel( "nit", this ),21, 4 );
 
  grid->addWidget( nit_edit, 21, 4+1  );
 
  grid->addWidget( new QLabel( "maxt", this ),22, 4 );
 
  grid->addWidget( maxt_edit, 22, 4+1  );
 
  grid->addWidget( new QLabel( "storage_stride", this ),23, 4 );
 
  grid->addWidget( storage_stride_edit, 23, 4+1  );
 
  grid->addWidget( new QLabel( "xml_storage_stride", this ),24, 4 );
 
  grid->addWidget( xml_storage_stride_edit, 24, 4+1  );
 
  grid->addWidget( new QLabel( "rseed", this ),25, 4 );
 
  grid->addWidget( rseed_edit, 25, 4+1  );
 
  grid->addWidget( new QLabel( "", this), 26, 4, 1, 2 );
 
  grid->addWidget( new QLabel( " <b>Meinhardt leaf venation model</b>", this), 27, 4, 1, 2 );
 
  grid->addWidget( new QLabel( "constituous_expansion_limit", this ),28, 4 );
 
  grid->addWidget( constituous_expansion_limit_edit, 28, 4+1  );
 
  grid->addWidget( new QLabel( "vessel_inh_level", this ),29, 4 );
 
  grid->addWidget( vessel_inh_level_edit, 29, 4+1  );
 
  grid->addWidget( new QLabel( "vessel_expansion_rate", this ),3, 6 );
 
  grid->addWidget( vessel_expansion_rate_edit, 3, 6+1  );
 
  grid->addWidget( new QLabel( "d", this ),4, 6 );
 
  grid->addWidget( d_edit, 4, 6+1  );
 
  grid->addWidget( new QLabel( "e", this ),5, 6 );
 
  grid->addWidget( e_edit, 5, 6+1  );
 
  grid->addWidget( new QLabel( "f", this ),6, 6 );
 
  grid->addWidget( f_edit, 6, 6+1  );
 
  grid->addWidget( new QLabel( "c", this ),7, 6 );
 
  grid->addWidget( c_edit, 7, 6+1  );
 
  grid->addWidget( new QLabel( "mu", this ),8, 6 );
 
  grid->addWidget( mu_edit, 8, 6+1  );
 
  grid->addWidget( new QLabel( "nu", this ),9, 6 );
 
  grid->addWidget( nu_edit, 9, 6+1  );
 
  grid->addWidget( new QLabel( "rho0", this ),10, 6 );
 
  grid->addWidget( rho0_edit, 10, 6+1  );
 
  grid->addWidget( new QLabel( "rho1", this ),11, 6 );
 
  grid->addWidget( rho1_edit, 11, 6+1  );
 
  grid->addWidget( new QLabel( "c0", this ),12, 6 );
 
  grid->addWidget( c0_edit, 12, 6+1  );
 
  grid->addWidget( new QLabel( "gamma", this ),13, 6 );
 
  grid->addWidget( gamma_edit, 13, 6+1  );
 
  grid->addWidget( new QLabel( "eps", this ),14, 6 );
 
  grid->addWidget( eps_edit, 14, 6+1  );
 
  grid->addWidget( new QLabel( "", this), 15, 6, 1, 2 );
 
  grid->addWidget( new QLabel( " <b>User-defined parameters</b>", this), 16, 6, 1, 2 );
 
  grid->addWidget( new QLabel( "k", this ),17, 6 );
 
  grid->addWidget( k_edit, 17, 6+1  );
 
  grid->addWidget( new QLabel( "i1", this ),18, 6 );
 
  grid->addWidget( i1_edit, 18, 6+1  );
 
  grid->addWidget( new QLabel( "i2", this ),19, 6 );
 
  grid->addWidget( i2_edit, 19, 6+1  );
 
  grid->addWidget( new QLabel( "i3", this ),20, 6 );
 
  grid->addWidget( i3_edit, 20, 6+1  );
 
  grid->addWidget( new QLabel( "i4", this ),21, 6 );
 
  grid->addWidget( i4_edit, 21, 6+1  );
 
  grid->addWidget( new QLabel( "i5", this ),22, 6 );
 
  grid->addWidget( i5_edit, 22, 6+1  );
 
  grid->addWidget( new QLabel( "s1", this ),23, 6 );
 
  grid->addWidget( s1_edit, 23, 6+1  );
 
  grid->addWidget( new QLabel( "s2", this ),24, 6 );
 
  grid->addWidget( s2_edit, 24, 6+1  );
 
  grid->addWidget( new QLabel( "s3", this ),25, 6 );
 
  grid->addWidget( s3_edit, 25, 6+1  );
 
  grid->addWidget( new QLabel( "b1", this ),26, 6 );
 
  grid->addWidget( b1_edit, 26, 6+1  );
 
  grid->addWidget( new QLabel( "b2", this ),27, 6 );
 
  grid->addWidget( b2_edit, 27, 6+1  );
 
  grid->addWidget( new QLabel( "b3", this ),28, 6 );
 
  grid->addWidget( b3_edit, 28, 6+1  );
 
  grid->addWidget( new QLabel( "b4", this ),29, 6 );
 
  grid->addWidget( b4_edit, 29, 6+1  );
 
  grid->addWidget( new QLabel( "dir1", this ),3, 8 );
 
  grid->addWidget( dir1_edit, 3, 8+1  );
 
  grid->addWidget( new QLabel( "dir2", this ),4, 8 );
 
  grid->addWidget( dir2_edit, 4, 8+1  );
 
  grid->addWidget( new QLabel( "export_interval", this ),5, 8 );
 
  grid->addWidget( export_interval_edit, 5, 8+1  );
 
  grid->addWidget( new QLabel( "export_fn_prefix", this ),6, 8 );
 
  grid->addWidget( export_fn_prefix_edit, 6, 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 yielding_threshold_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;
 
@@ -479,24 +483,25 @@ 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.yielding_threshold = yielding_threshold_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();
 
@@ -713,24 +718,25 @@ 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) );
 
  yielding_threshold_edit->setText( QString("%1").arg(par.yielding_threshold) );
 
  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) );
src/pardialog.h
Show inline comments
 
@@ -48,24 +48,25 @@ class ParameterDialog : public QDialog {
 
  private:
 
  QLineEdit *arrowcolor_edit;
 
  QLineEdit *arrowsize_edit;
 
  QLineEdit *textcolor_edit;
 
  QLineEdit *cellnumsize_edit;
 
  QLineEdit *nodenumsize_edit;
 
  QLineEdit *node_mag_edit;
 
  QLineEdit *outlinewidth_edit;
 
  QLineEdit *cell_outline_color_edit;
 
  QLineEdit *resize_stride_edit;
 
  QLineEdit *T_edit;
 
  QLineEdit *lambda_length_edit;
 
  QLineEdit *yielding_threshold_edit;
 
  QLineEdit *lambda_celllength_edit;
 
  QLineEdit *target_length_edit;
 
  QLineEdit *cell_expansion_rate_edit;
 
  QLineEdit *cell_div_expansion_rate_edit;
 
  QLineEdit *auxin_dependent_growth_edit;
 
  QLineEdit *ode_accuracy_edit;
 
  QLineEdit *mc_stepsize_edit;
 
  QLineEdit *mc_cell_stepsize_edit;
 
  QLineEdit *energy_threshold_edit;
 
  QLineEdit *bend_lambda_edit;
 
  QLineEdit *alignment_lambda_edit;
 
  QLineEdit *rel_cell_div_threshold_edit;
src/wallitem.cpp
Show inline comments
 
@@ -77,56 +77,66 @@ void WallItem::setColor(void) {
 
    setPen( QPen(purple , par.outlinewidth) );
 
  } else {
 
    if (w->AuxinSink() && c->BoundaryPolP()) {
 
      setPen( QPen(blue, par.outlinewidth));
 
    } else {
 
      setPen (QPen(diffcolor, par.outlinewidth) );
 
    }
 
  }
 
}
 

	
 
void WallItem::OnClick(QMouseEvent *e) {
 

	
 

	
 
  Wall *w=&getWall();
 
#ifdef QDEBUG
 
  qDebug() << "Wall ID = " << w->Index() << ", this = " << w << endl;
 
  qDebug() << "Wall item = " << this << endl;
 
  qDebug() << "C1 = " << w->C1()->Index() << ", C2 = " << w->C2()->Index() << endl;
 
  qDebug() << "N1 = " << w->N1()->Index() << ", N2 = " << w->N2()->Index() << endl;
 
#endif
 
  CellBase *c = wn==1?w->C1():w->C2();
 

	
 
  TransporterDialog dialog(w, c, wn);
 
  dialog.exec();
 

	
 
  
 
  
 
  if (e->button() == Qt::RightButton) {
 
    QString message;
 
    if (wn==1) {
 
      message=QString("Transporter 1 = %1, color = %2, length = %3\n").arg(w->Transporters1(1)).arg(pen().color().red()).arg(getWall().Length());
 
    } else {
 
      message=QString("Transporter 2 = %1, color = %2, length = %3\n").arg(w->Transporters2(1)).arg(pen().color().red()).arg(getWall().Length());
 
    }
 

	
 
    //extern MainBase *main_window;
 

	
 
  } else {
 
    if (e->button() == Qt::LeftButton) {
 
      if (c->BoundaryPolP()) {
 
	w->cycleWallType();
 
      } else {
 
	if (e->modifiers() == Qt::ShiftModifier) {
 
	  wn==1?w->setTransporters1(1,0):w->setTransporters2(1,0);					
 
 
 
      if (e->modifiers() == Qt::ControlModifier) {
 
	// let's consider wall type cycling an "easter egg". 
 
	// Ctrl modifier key required 
 

	
 
	if (c->BoundaryPolP()) {
 
	  w->cycleWallType();
 
	} else {
 
	  // set high amount of PIN1
 
	  //cerr << "Setting PIN1\n";
 
	  wn==1?w->setTransporters1(1,10):w->setTransporters2(1,10);
 
	  if (e->modifiers() == Qt::ShiftModifier) {
 
	    wn==1?w->setTransporters1(1,0):w->setTransporters2(1,0);					
 

	
 
	  } else {
 
	    // set high amount of PIN1
 
	    //cerr << "Setting PIN1\n";
 
	    wn==1?w->setTransporters1(1,10):w->setTransporters2(1,10);
 
	  }
 
	}
 
	setColor();
 
      } else {
 
	TransporterDialog dialog(w, c, wn);
 
	dialog.exec();
 
      }
 
      setColor();
 
      update(boundingRect());
 
    } 
 

	
 
    }
 
 
 
  }
 
  setColor();
 
  update(boundingRect());
 

	
 
}
 

	
 
/* finis */
 
  /* finis */
0 comments (0 inline, 0 general)