Files @ 21afbd2a2c01
Branch filter:

Location: EI/VirtualLeaf/src/transporterdialog.cpp

Michael Guravage
Renamed tutorial examples and added makefile, etc.

--
user: Michael Guravage <michael.guravage@cwi.nl>
branch 'default'
added doc/gpl3.txt
added doc/installation.pdf
added doc/installation.rst
added src/TutorialCode/Makefile
added src/TutorialCode/Tutorial0/Makefile
added src/TutorialCode/Tutorial0/tutorial0.cpp
added src/TutorialCode/Tutorial0/tutorial0.h
added src/TutorialCode/Tutorial0/tutorial0.pro
added src/TutorialCode/Tutorial1A/Makefile
added src/TutorialCode/Tutorial1A/tutorial1A.cpp
added src/TutorialCode/Tutorial1A/tutorial1A.h
added src/TutorialCode/Tutorial1A/tutorial1A.pro
added src/TutorialCode/Tutorial1B/Makefile
added src/TutorialCode/Tutorial1B/tutorial1B.cpp
added src/TutorialCode/Tutorial1B/tutorial1B.h
added src/TutorialCode/Tutorial1B/tutorial1B.pro
added src/TutorialCode/Tutorial1C/Makefile
added src/TutorialCode/Tutorial1C/tutorial1C.cpp
added src/TutorialCode/Tutorial1C/tutorial1C.h
added src/TutorialCode/Tutorial1C/tutorial1C.pro
added src/TutorialCode/Tutorial1D/Makefile
added src/TutorialCode/Tutorial1D/tutorial1D.cpp
added src/TutorialCode/Tutorial1D/tutorial1D.h
added src/TutorialCode/Tutorial1D/tutorial1D.pro
added src/TutorialCode/Tutorial2/Makefile
added src/TutorialCode/Tutorial2/tutorial2.cpp
added src/TutorialCode/Tutorial2/tutorial2.h
added src/TutorialCode/Tutorial2/tutorial2.pro
added src/TutorialCode/Tutorial3/Makefile
added src/TutorialCode/Tutorial3/tutorial3.cpp
added src/TutorialCode/Tutorial3/tutorial3.h
added src/TutorialCode/Tutorial3/tutorial3.pro
added src/TutorialCode/Tutorial4/Makefile
added src/TutorialCode/Tutorial4/tutorial4.cpp
added src/TutorialCode/Tutorial4/tutorial4.h
added src/TutorialCode/Tutorial4/tutorial4.pro
added src/TutorialCode/Tutorial5/Makefile
added src/TutorialCode/Tutorial5/tutorial5.cpp
added src/TutorialCode/Tutorial5/tutorial5.h
added src/TutorialCode/Tutorial5/tutorial5.pro
added src/perl/ChangeLog
changed src/ChangeLog
changed src/Makefile
changed src/build_models/ChangeLog
changed src/build_models/Makefile
changed src/canvas.cpp
changed src/parameter.cpp
changed src/parameter.h
changed src/pardialog.cpp
changed src/pardialog.h
changed src/perl/make_parameter_source.pl
changed src/perl/make_pardialog_source.pl
changed src/perl/make_xmlwritecode.pl
changed src/vleafmodel.h
removed doc/GPL
removed src/TutorialCode/Tutorial0/mymodel.cpp
removed src/TutorialCode/Tutorial0/mymodel.h
removed src/TutorialCode/Tutorial0/mymodel.pro
removed src/TutorialCode/Tutorial1/mymodel.cpp
removed src/TutorialCode/Tutorial1/mymodel.h
removed src/TutorialCode/Tutorial1/mymodel.pro
removed src/TutorialCode/Tutorial1A/mymodel.cpp
removed src/TutorialCode/Tutorial1A/mymodel.h
removed src/TutorialCode/Tutorial1A/mymodel.pro
removed src/TutorialCode/Tutorial1B/mymodel.cpp
removed src/TutorialCode/Tutorial1B/mymodel.h
removed src/TutorialCode/Tutorial1B/mymodel.pro
removed src/TutorialCode/Tutorial1C/mymodel.cpp
removed src/TutorialCode/Tutorial1C/mymodel.h
removed src/TutorialCode/Tutorial1C/mymodel.pro
removed src/TutorialCode/Tutorial1D/mymodel.cpp
removed src/TutorialCode/Tutorial1D/mymodel.h
removed src/TutorialCode/Tutorial1D/mymodel.pro
removed src/TutorialCode/Tutorial2/mymodel.cpp
removed src/TutorialCode/Tutorial2/mymodel.h
removed src/TutorialCode/Tutorial2/mymodel.pro
removed src/TutorialCode/Tutorial3/mymodel.cpp
removed src/TutorialCode/Tutorial3/mymodel.h
removed src/TutorialCode/Tutorial3/mymodel.pro
removed src/TutorialCode/Tutorial4/mymodel
removed src/TutorialCode/Tutorial4/mymodel.cpp
removed src/TutorialCode/Tutorial4/mymodel.h
removed src/TutorialCode/Tutorial4/mymodel.pro
removed src/TutorialCode/Tutorial5/mymodel
removed src/TutorialCode/Tutorial5/mymodel.cpp
removed src/TutorialCode/Tutorial5/mymodel.h
removed src/TutorialCode/Tutorial5/mymodel.pro
/*
 *
 *  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 <http://www.gnu.org/licenses/>.
 *
 *  Copyright 2010 Roeland Merks.
 *
 */

#include <QtGui>
#include <QDoubleValidator>
#include <sstream>
#include "canvas.h"
#include "transporterdialog.h"

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

TransporterDialog::TransporterDialog(Wall *w, CellBase *c, int wn, QWidget *parent)
  : wall(w), cell(c), wall_num(wn), QDialog(parent)
{
  int frameStyle = QFrame::Plain | QFrame::NoFrame;
  QPushButton *ok = new QPushButton(tr("Ok"));
  QPushButton *cancel = new QPushButton(tr("Cancel"));
  QGridLayout *t_grid = new QGridLayout; // transporter grid

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

  // compose a label for the dialog box
  std::stringstream label_text; 
  label_text << "C("<< wall->C1()->Index() << "," << wall->C2()->Index() << "), N(" 
	     << wall->N1()->Index() << "," << wall->N2()->Index() << ")";

  // retrieve the current transporters
  QVector <double> transporters;  // transporter vector
  ntransporters = cell->NChem(); // size of transporter vector
  for (int i=0; i<ntransporters; ++i){
    transporters << ((wall_num == 1) ? wall->Transporters1(i) : wall->Transporters2(i)); // dependent on the wall number of course.
  }

  // iterate over the vector of transporter values making a label/edit line for each
  for (int i=0; i<transporters.size(); ++i) {

    // label
    label = new QLabel;
    label->setFrameStyle(frameStyle);
    label->setText(QString("%1").arg(i+1)); // cardinal numbering

    // line editor
    QLineEdit *editor = new QLineEdit();
    editors << editor;
    editor->setValidator(new QDoubleValidator(editor)); // validator settings

    // assign the current transporter value
    QString n;
    editor->setText(n.setNum(transporters[i]));

    // insert the label and editor into the transporter grid
    t_grid->addWidget(label, i, 0);
    t_grid->addWidget(editor, i, 1);
  }

  // add OK and Cancel buttons
  QGridLayout *b_grid = new QGridLayout; // button grid
  b_grid->addWidget(ok, 0, 0);
  b_grid->addWidget(cancel, 0, 1);

  // add both transporter and button grids to the box layout widget
  QVBoxLayout *layout = new QVBoxLayout;
  layout->addLayout(t_grid);
  layout->addLayout(b_grid);
  setLayout(layout);

  setWindowTitle(tr(label_text.str().c_str()));
}

void TransporterDialog::setTransporterValues()
{
  // iterate over the editor widgets soliciting their values and setting the wall's transporters accordingly.
  for (int i=0; i<ntransporters; ++i){
#ifdef QDEBUG  
    qDebug() << "Transporter(" << i << "): " << editors[i]->text().toDouble() << endl;
#endif
    if (wall_num == 1)
      wall->setTransporters1(i, editors[i]->text().toDouble());
    else 
      wall->setTransporters2(i, editors[i]->text().toDouble());
  }
  editors.resize(0);
  close();
}

/* finis */