Changeset - da628cac41fc
[Not reviewed]
default
0 3 0
Michael Guravage - 14 years ago 2011-01-13 15:15:46
michael.guravage@cwi.nl
Use the wallnumber (wn) to discern which cell a wallitem belongs to.

--
user: Michael Guravage <michael.guravage@cwi.nl>
branch 'default'
changed src/ChangeLog
changed src/transporterdialog.cpp
changed src/wallitem.cpp
3 files changed with 13 insertions and 3 deletions:
0 comments (0 inline, 0 general)
src/ChangeLog
Show inline comments
 
2011-01-13    <guravage@petitdru.sen.cwi.nl>
 

	
 
	* transporterdialog.cpp (TransporterDialog): Use wn to discern
 
	which cell a wallitem belongs to.
 

	
 
	* wallitem.cpp (WallItem): Add a comment explaining how
 
	wallnumber(wn) can be used to tell which cell a wallitem belongs
 
	to.
 

	
 
	* VirtualLeaf-install-windows.nsi: Remove previous change that added icon directory.
 

	
 
	* canvas.cpp: Instead of using a separate icon directory, compile
 
	leaficon_small.xpm directly into canvas.cpp.
 

	
 
	* VirtualLeaf-install-windows.nsi: Add new icons directory
 

	
 
	* canvas.cpp (about): Added virtual leaf logo to About message box.
 

	
 
2011-01-12    <guravage@petitdru.sen.cwi.nl>
 

	
 
	* transporterdialog.cpp (TransporterDialog): Add a proper title to
 
	the dialog, and place the cell and wall pairs in a seperate labe.
 

	
 
2011-01-10    <guravage@petitdru.sen.cwi.nl>
 

	
 
	* transporterdialog.cpp (TransporterDialog): Start numbering Transporter fields at zero.
 
	Resolves issue #1: http://code.google.com/p/virtualleaf/issues/detail?id=1.
 

	
 
	* wallitem.cpp (OnClick): Change dialog modality to Qt::WindowModal.
 
	Resolves issue #2: http://code.google.com/p/virtualleaf/issues/detail?id=2.
 

	
 
	* canvas.cpp (about): Add link to Plant Physiology paper.
 
	Resolves issue #3: http://code.google.com/p/virtualleaf/issues/detail?id=3.
src/transporterdialog.cpp
Show inline comments
 
@@ -21,96 +21,98 @@
 

	
 
#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
 
  QGridLayout *c_grid = new QGridLayout; // context grid
 

	
 
  // connect the slots
 
  connect(ok, SIGNAL(clicked()), this, SLOT(setTransporterValues()));
 
  connect(cancel, SIGNAL(clicked()), this, SLOT(close()));
 

	
 
  // compose a label describing the cells and nodes associated with this wall
 
  std::stringstream desc; 
 
  desc << "between cells "<< wall->C1()->Index() << " and " << wall->C2()->Index() << ", and" << endl <<
 
          "connecting nodes " << wall->N1()->Index() << " and " << wall->N2()->Index();
 

	
 
  desc << "Transporters for cell "<< ((wall_num == 1) ? wall->C1() : wall->C2())->Index()
 
       << "; adjacent to cell " << ((wall_num == 2) ? wall->C1() : wall->C2())->Index() << "," << endl
 
       << "and connecting nodes " << wall->N1()->Index() << " and " << wall->N2()->Index() << ".";
 

	
 
  // description label
 
  label = new QLabel;
 
  label->setFrameStyle(frameStyle);
 
  label->setText(tr(desc.str().c_str()));
 
  c_grid->addWidget(label, 0, 0);
 

	
 
  // 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)); // cardinal numbering, i.e. starts at zero.
 

	
 
    // 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(c_grid);
 
  layout->addLayout(t_grid);
 
  layout->addLayout(b_grid);
 
  setLayout(layout);
 

	
 
  setWindowTitle(QString("Edit Transporters"));
 
  setWindowTitle(QString("Edit Cell Transporters"));
 
}
 

	
 
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 */
 

	
 

	
src/wallitem.cpp
Show inline comments
 
@@ -13,48 +13,49 @@
 
 *  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 <QDebug>
 
#include <string>
 
#include <QGraphicsScene>
 
#include <QVector>
 
#include "canvas.h"
 
#include "wallitem.h"
 
#include "parameter.h"
 
#include "node.h"
 
#include "transporterdialog.h"
 

	
 
static const std::string _module_id("$Id$");
 

	
 
WallItem::WallItem( Wall *w, int wallnumber, QGraphicsScene *canvas )
 
  : QGraphicsLineItem( 0, canvas ), SimItemBase( w, canvas){
 

	
 
  /* wn == 1 -> C1; wn == 2 -> C2. This way we can tell which cell a wallitem belongs to. */
 
  wn = wallnumber;
 

	
 
  extern Parameter par;
 

	
 
  setColor();
 

	
 
  // line with "PIN1"is a bit inside the cell wall
 
  Vector edgevec = (*(w->N2())) - (*(w->N1()));
 
  Vector perp = edgevec.Normalised().Perp2D();
 

	
 
  Vector offs = Cell::Offset();
 
  double factor = Cell::Factor();
 

	
 
  Vector from = ( offs + *(w->N1()) ) * factor + (wn==1?-1:1) * par.outlinewidth * 0.5 * factor * perp;
 
  Vector to = ( offs + *(w->N2()) ) *factor + (wn==1?-1:1) * par.outlinewidth * 0.5 * factor * perp;
 

	
 

	
 
  Vector tmp_centroid = ( *(w->N2()) + *(w->N1()) )/2.;
 
  Vector centroid = ( offs + tmp_centroid ) * factor;
 

	
 
  QString text=QString("%1").arg(w->Index());
 
  setLine(( from.x ),
 
	  ( from.y ),
 
	  ( to.x ),
0 comments (0 inline, 0 general)