[Echempp-devel] GUI/Windows/Qt/EChem++/Model batchExperimentDialog.cpp, 1.4, 1.5 dataDialog.cpp, 1.
Status: Beta
Brought to you by:
berndspeiser
Update of /cvsroot/echempp/GUI/Windows/Qt/EChem++/Model In directory sc8-pr-cvs17.sourceforge.net:/tmp/cvs-serv11071/GUI/Windows/Qt/EChem++/Model Modified Files: batchExperimentDialog.cpp dataDialog.cpp equilibriumDialog.cpp equilibriumDialog.hpp equilibriumDialogBase.ui experimentDialog.cpp experimentDialog.hpp experimentDialogBase.ui mediator.cpp mediator.hpp modelMainWindow.cpp modelMainWindow.hpp modelPlotWidget.cpp modelPlotWidget.hpp solverDialog.cpp solverDialog.hpp solverDialogBase.ui svmDataDialog.cpp svmDataDialogBase.ui svmParametersDialogBase.ui Log Message: Changed to use InputFilters and separate load/save for all dialogs. Index: modelPlotWidget.hpp =================================================================== RCS file: /cvsroot/echempp/GUI/Windows/Qt/EChem++/Model/modelPlotWidget.hpp,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** modelPlotWidget.hpp 22 Dec 2007 15:53:16 -0000 1.37 --- modelPlotWidget.hpp 27 Mar 2008 13:11:54 -0000 1.38 *************** *** 153,159 **** //! create new plot void newPlot( const std::vector<double>& x, ! const std::vector<std::vector<double> >& y, const std::vector<std::string>& styles, ! const std::vector<std::string>& colors ); //! create new i-E-plot --- 153,161 ---- //! create new plot void newPlot( const std::vector<double>& x, ! const std::vector<std::vector<double> >& y, const std::vector<std::string>& styles, ! const std::vector<std::string>& colors, ! const std::string xunit = "", ! const std::string yunit = ""); //! create new i-E-plot Index: equilibriumDialog.hpp =================================================================== RCS file: /cvsroot/echempp/GUI/Windows/Qt/EChem++/Model/equilibriumDialog.hpp,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** equilibriumDialog.hpp 22 Dec 2007 15:53:16 -0000 1.21 --- equilibriumDialog.hpp 27 Mar 2008 13:11:51 -0000 1.22 *************** *** 82,85 **** --- 82,87 ---- public slots: + void sltLoad(); + void sltSave(); void sltApply(); void sltOk(); *************** *** 113,117 **** { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! equConcs = _cond_data->equConcs; } --- 115,119 ---- { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! equConcs = _cond_data->eqc.equConcs; } *************** *** 121,125 **** { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! return _cond_data->indices; } --- 123,127 ---- { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! return _cond_data->eqc.indices; } *************** *** 129,133 **** { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! return _cond_data->timeSteps; } --- 131,135 ---- { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! return _cond_data->eqc.timeSteps; } *************** *** 137,141 **** { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! profiles = _cond_data->profiles; } --- 139,143 ---- { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! profiles = _cond_data->eqc.profiles; } *************** *** 145,149 **** { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! _cond_data->dataStorage = false; } --- 147,151 ---- { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! _cond_data->eqc.dataStorage = false; } *************** *** 153,157 **** { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! _cond_data->dataStorage = true; } --- 155,159 ---- { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! _cond_data->eqc.dataStorage = true; } Index: mediator.hpp =================================================================== RCS file: /cvsroot/echempp/GUI/Windows/Qt/EChem++/Model/mediator.hpp,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** mediator.hpp 22 Dec 2007 15:53:16 -0000 1.42 --- mediator.hpp 27 Mar 2008 13:11:54 -0000 1.43 *************** *** 86,91 **** void supply(); - void writeDataFile( const QString& fileName ); - void importData( const QString& fileName ); --- 86,89 ---- *************** *** 99,103 **** void checkDataType( QFile* inFile, std::string& type ); - void createModel( const QDomElement& model ); void positionPlots(); --- 97,100 ---- Index: batchExperimentDialog.cpp =================================================================== RCS file: /cvsroot/echempp/GUI/Windows/Qt/EChem++/Model/batchExperimentDialog.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** batchExperimentDialog.cpp 16 Mar 2008 10:43:36 -0000 1.4 --- batchExperimentDialog.cpp 27 Mar 2008 13:11:51 -0000 1.5 *************** *** 97,104 **** QStringList::split (',', parameterValuesLineEdit3->text()); - std::cout << "pvals1.size()=" << pvals1.size() << std::endl; - std::cout << "pvals2.size()=" << pvals2.size() << std::endl; - std::cout << "pvals3.size()=" << pvals3.size() << std::endl; - if(pvals1.size() == 0) { --- 97,100 ---- *************** *** 199,203 **** else if(name == "v") { ! return cond_data->etExcitation0.derivative(0).value(); } else --- 195,199 ---- else if(name == "v") { ! return cond_data->ec.etExcitation0.derivative(0).value(); } else *************** *** 256,262 **** { // v is in V/s ! cond_data->etExcitation0.clear(); ! cond_data->etExcitation0.add(ExcitationFunctions::Segments::LinearEtSegment(-0.25, 0.25, 0.5*(1/d))); ! cond_data->etExcitation0.add(ExcitationFunctions::Segments::LinearEtSegment(0.25, -0.25, 0.5*(1/d))); } else --- 252,258 ---- { // v is in V/s ! cond_data->ec.etExcitation0.clear(); ! cond_data->ec.etExcitation0.add(ExcitationFunctions::Segments::LinearEtSegment(-0.25, 0.25, 0.5*(1/d))); ! cond_data->ec.etExcitation0.add(ExcitationFunctions::Segments::LinearEtSegment(0.25, -0.25, 0.5*(1/d))); } else *************** *** 413,417 **** experiment::Experiment* ep = mainWindow->getActiveExperiment(); experiment::ConditionDataModSim* cond_data = NULL; ! experiment::MeasurementDataModSim* meas_data = NULL; const QString pname1 = parameterNameComboBox1->currentText(); const QString pname2 = parameterNameComboBox2->currentText(); --- 409,413 ---- experiment::Experiment* ep = mainWindow->getActiveExperiment(); experiment::ConditionDataModSim* cond_data = NULL; ! experiment::MeasurementDataBase* meas_data = NULL; const QString pname1 = parameterNameComboBox1->currentText(); const QString pname2 = parameterNameComboBox2->currentText(); *************** *** 419,435 **** while(ep != NULL) { ! cond_data = dynamic_cast<experiment::ConditionDataModSim*>(ep->get_cond_data()); ! meas_data = dynamic_cast<experiment::MeasurementDataModSim*>(ep->get_meas_data()); ! ofs << pname1 << "=" << getValueName(cond_data, pname1) << "\n"; ! ofs << pname2 << "=" << getValueName(cond_data, pname2) << "\n"; ! ofs << pname3 << "=" << getValueName(cond_data, pname3) << "\n"; ! ofs << meas_data->conversionFactor << "\n"; ! std::copy(meas_data->timeSteps.begin(), ! meas_data->timeSteps.end(), ! std::ostream_iterator<double>(ofs, " ")); ofs << std::endl; ! std::copy(meas_data->responseCurves[0].begin(), ! meas_data->responseCurves[0].end(), ! std::ostream_iterator<double>(ofs, " ")); ofs << std::endl; ep = mainWindow->getNextExperiment(); --- 415,454 ---- while(ep != NULL) { ! cond_data = dynamic_cast<experiment::ConditionDataModSim*>(ep->get_cond_data()); ! meas_data = dynamic_cast<experiment::MeasurementDataBase*>(ep->get_meas_data()); ! ofs << pname1 << "=" << getValueName(cond_data, pname1) << "\n"; ! ofs << pname2 << "=" << getValueName(cond_data, pname2) << "\n"; ! ofs << pname3 << "=" << getValueName(cond_data, pname3) << "\n"; ! ofs << "time_unit=" << meas_data->unitsymbol_i() << "\n"; ! if(cond_data->ec.potentialControlled) ! { ! ofs << "current_unit=" << meas_data->unitsymbol_r() << "\n"; ! } ! if(cond_data->ec.currentControlled) ! { ! ofs << "potential_unit=" << meas_data->unitsymbol_d() << "\n"; ! } ! std::vector<double> vi = meas_data->get_i(); ! for(unsigned int i=0; i<vi.size(); ++i) ! ofs << vi[i] << " "; ofs << std::endl; ! if(cond_data->ec.potentialControlled) ! { ! for(unsigned int i=0; i<cond_data->sc.activeBoundaries; ++i) ! { ! std::vector<double> vr = meas_data[i].get_r(); ! for(unsigned int j=0; j<vr.size(); ++j) ! ofs << vr[j] << " "; ! } ! } ! if(cond_data->ec.currentControlled) ! { ! for(unsigned int i=0; i<cond_data->sc.activeBoundaries; ++i) ! { ! std::vector<double> vd = meas_data[i].get_d(); ! for(unsigned int j=0; j<vd.size(); ++j) ! ofs << vd[j] << " "; ! } ! } ofs << std::endl; ep = mainWindow->getNextExperiment(); *************** *** 438,442 **** ofs.close(); } - } } --- 457,460 ---- Index: svmDataDialog.cpp =================================================================== RCS file: /cvsroot/echempp/GUI/Windows/Qt/EChem++/Model/svmDataDialog.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** svmDataDialog.cpp 22 Dec 2007 15:53:16 -0000 1.2 --- svmDataDialog.cpp 27 Mar 2008 13:11:55 -0000 1.3 *************** *** 314,323 **** // prepare data experiment::Experiment* ep = mainWindow->getActiveExperiment(); raw_data.clear(); labels.clear(); while(ep != NULL) { ! // assume that we have one active boundary so far ! raw_data.push_back(mainWindow->getActiveMeasurementData()->responseCurves[0]); // define class labels --- 314,338 ---- // prepare data experiment::Experiment* ep = mainWindow->getActiveExperiment(); + experiment::ConditionDataModSim* cond_data = NULL; + experiment::MeasurementDataBase* meas_data = NULL; raw_data.clear(); labels.clear(); + std::vector<double> tv; while(ep != NULL) { ! cond_data = dynamic_cast<experiment::ConditionDataModSim*>(ep->get_cond_data()); ! meas_data = dynamic_cast<experiment::MeasurementDataBase*>(ep->get_meas_data()); ! for(unsigned int i=0; i<cond_data->sc.activeBoundaries; ++i) ! { ! std::vector<double> v; ! if(cond_data->ec.potentialControlled) ! v = meas_data[i].get_r(); ! if(cond_data->ec.currentControlled) ! v = meas_data[i].get_d(); ! for(unsigned int j=0; j<v.size(); ++j) ! tv.push_back(v[j]); ! } ! raw_data.push_back(tv); ! tv.clear(); // define class labels Index: svmDataDialogBase.ui =================================================================== RCS file: /cvsroot/echempp/GUI/Windows/Qt/EChem++/Model/svmDataDialogBase.ui,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** svmDataDialogBase.ui 19 Dec 2007 11:56:25 -0000 1.1 --- svmDataDialogBase.ui 27 Mar 2008 13:11:55 -0000 1.2 *************** *** 9,216 **** <x>0</x> <y>0</y> ! <width>335</width> ! <height>288</height> </rect> </property> <property name="caption"> <string>SVM Data</string> </property> <property name="sizeGripEnabled"> ! <bool>true</bool> </property> <widget class="QLayoutWidget"> <property name="name"> ! <cstring>Layout1</cstring> </property> <property name="geometry"> <rect> <x>20</x> ! <y>240</y> ! <width>300</width> ! <height>33</height> </rect> </property> ! <hbox> <property name="name"> <cstring>unnamed</cstring> </property> ! <property name="margin"> ! <number>0</number> ! </property> ! <property name="spacing"> ! <number>6</number> ! </property> ! <widget class="QPushButton"> <property name="name"> ! <cstring>buttonHelp</cstring> ! </property> ! <property name="text"> ! <string>&Help</string> ! </property> ! <property name="accel"> ! <string>F1</string> </property> ! <property name="autoDefault"> ! <bool>true</bool> </property> </widget> ! <spacer> ! <property name="name"> ! <cstring>Horizontal Spacing2</cstring> ! </property> ! <property name="orientation"> ! <enum>Horizontal</enum> ! </property> ! <property name="sizeType"> ! <enum>Expanding</enum> ! </property> ! <property name="sizeHint"> ! <size> ! <width>20</width> ! <height>20</height> ! </size> ! </property> ! </spacer> ! <widget class="QPushButton"> <property name="name"> ! <cstring>buttonOk</cstring> ! </property> ! <property name="text"> ! <string>&OK</string> ! </property> ! <property name="accel"> ! <string></string> ! </property> ! <property name="autoDefault"> ! <bool>true</bool> </property> ! <property name="default"> ! <bool>true</bool> </property> </widget> ! <widget class="QPushButton"> <property name="name"> ! <cstring>buttonCancel</cstring> ! </property> ! <property name="text"> ! <string>&Cancel</string> ! </property> ! <property name="accel"> ! <string></string> ! </property> ! <property name="autoDefault"> ! <bool>true</bool> </property> </widget> ! </hbox> ! </widget> ! <widget class="QButtonGroup"> ! <property name="name"> ! <cstring>buttonGroup7</cstring> ! </property> ! <property name="geometry"> ! <rect> ! <x>20</x> ! <y>10</y> ! <width>301</width> ! <height>100</height> ! </rect> ! </property> ! <property name="title"> ! <string>Training set</string> ! </property> ! <widget class="QCheckBox"> ! <property name="name"> ! <cstring>stratifiedCheckBox</cstring> ! </property> ! <property name="geometry"> ! <rect> ! <x>160</x> ! <y>40</y> ! <width>131</width> ! <height>31</height> ! </rect> ! </property> ! <property name="text"> ! <string>Stratified samples</string> ! </property> ! </widget> ! <widget class="QLabel"> ! <property name="name"> ! <cstring>textLabel12</cstring> ! </property> ! <property name="geometry"> ! <rect> ! <x>20</x> ! <y>30</y> ! <width>120</width> ! <height>21</height> ! </rect> ! </property> ! <property name="text"> ! <string>Number of patterns</string> ! </property> ! </widget> ! <widget class="QSpinBox"> ! <property name="name"> ! <cstring>numTrainSpinBox</cstring> ! </property> ! <property name="geometry"> ! <rect> ! <x>20</x> ! <y>50</y> ! <width>91</width> ! <height>21</height> ! </rect> ! </property> ! <property name="maxValue"> ! <number>100000</number> ! </property> ! </widget> ! </widget> ! <widget class="QButtonGroup"> ! <property name="name"> ! <cstring>buttonGroup8</cstring> ! </property> ! <property name="geometry"> ! <rect> ! <x>20</x> ! <y>130</y> ! <width>300</width> ! <height>80</height> ! </rect> ! </property> ! <property name="title"> ! <string>Test set</string> ! </property> ! <widget class="QLabel"> ! <property name="name"> ! <cstring>textLabel12_2</cstring> ! </property> ! <property name="geometry"> ! <rect> ! <x>20</x> ! <y>20</y> ! <width>120</width> ! <height>21</height> ! </rect> ! </property> ! <property name="text"> ! <string>Number of patterns</string> ! </property> ! </widget> ! <widget class="QSpinBox"> ! <property name="name"> ! <cstring>numTestSpinBox</cstring> ! </property> ! <property name="geometry"> ! <rect> ! <x>20</x> ! <y>40</y> ! <width>91</width> ! <height>21</height> ! </rect> ! </property> ! </widget> </widget> </widget> --- 9,216 ---- <x>0</x> <y>0</y> ! <width>350</width> ! <height>250</height> </rect> </property> + <property name="minimumSize"> + <size> + <width>350</width> + <height>250</height> + </size> + </property> <property name="caption"> <string>SVM Data</string> </property> <property name="sizeGripEnabled"> ! <bool>false</bool> </property> <widget class="QLayoutWidget"> <property name="name"> ! <cstring>layout87</cstring> </property> <property name="geometry"> <rect> <x>20</x> ! <y>10</y> ! <width>313</width> ! <height>224</height> </rect> </property> ! <vbox> <property name="name"> <cstring>unnamed</cstring> </property> ! <widget class="QButtonGroup"> <property name="name"> ! <cstring>buttonGroup7</cstring> </property> ! <property name="title"> ! <string>Training set</string> </property> + <widget class="QCheckBox"> + <property name="name"> + <cstring>stratifiedCheckBox</cstring> + </property> + <property name="geometry"> + <rect> + <x>160</x> + <y>40</y> + <width>131</width> + <height>31</height> + </rect> + </property> + <property name="text"> + <string>Stratified samples</string> + </property> + </widget> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel12</cstring> + </property> + <property name="geometry"> + <rect> + <x>20</x> + <y>30</y> + <width>120</width> + <height>21</height> + </rect> + </property> + <property name="text"> + <string>Number of patterns</string> + </property> + </widget> + <widget class="QSpinBox"> + <property name="name"> + <cstring>numTrainSpinBox</cstring> + </property> + <property name="geometry"> + <rect> + <x>20</x> + <y>50</y> + <width>91</width> + <height>21</height> + </rect> + </property> + <property name="maxValue"> + <number>100000</number> + </property> + </widget> </widget> ! <widget class="QButtonGroup"> <property name="name"> ! <cstring>buttonGroup8</cstring> </property> ! <property name="title"> ! <string>Test set</string> </property> + <widget class="QLabel"> + <property name="name"> + <cstring>textLabel12_2</cstring> + </property> + <property name="geometry"> + <rect> + <x>20</x> + <y>20</y> + <width>120</width> + <height>21</height> + </rect> + </property> + <property name="text"> + <string>Number of patterns</string> + </property> + </widget> + <widget class="QSpinBox"> + <property name="name"> + <cstring>numTestSpinBox</cstring> + </property> + <property name="geometry"> + <rect> + <x>20</x> + <y>40</y> + <width>91</width> + <height>21</height> + </rect> + </property> + </widget> </widget> ! <widget class="QLayoutWidget"> <property name="name"> ! <cstring>Layout1</cstring> </property> + <hbox> + <property name="name"> + <cstring>unnamed</cstring> + </property> + <property name="margin"> + <number>0</number> + </property> + <property name="spacing"> + <number>6</number> + </property> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonHelp</cstring> + </property> + <property name="text"> + <string>&Help</string> + </property> + <property name="accel"> + <string>F1</string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + <spacer> + <property name="name"> + <cstring>Horizontal Spacing2</cstring> + </property> + <property name="orientation"> + <enum>Horizontal</enum> + </property> + <property name="sizeType"> + <enum>Expanding</enum> + </property> + <property name="sizeHint"> + <size> + <width>20</width> + <height>20</height> + </size> + </property> + </spacer> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonOk</cstring> + </property> + <property name="text"> + <string>&OK</string> + </property> + <property name="accel"> + <string></string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + <property name="default"> + <bool>true</bool> + </property> + </widget> + <widget class="QPushButton"> + <property name="name"> + <cstring>buttonCancel</cstring> + </property> + <property name="text"> + <string>&Cancel</string> + </property> + <property name="accel"> + <string></string> + </property> + <property name="autoDefault"> + <bool>true</bool> + </property> + </widget> + </hbox> </widget> ! </vbox> </widget> </widget> Index: equilibriumDialog.cpp =================================================================== RCS file: /cvsroot/echempp/GUI/Windows/Qt/EChem++/Model/equilibriumDialog.cpp,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** equilibriumDialog.cpp 22 Dec 2007 15:53:16 -0000 1.33 --- equilibriumDialog.cpp 27 Mar 2008 13:11:51 -0000 1.34 *************** *** 39,42 **** --- 39,43 ---- #include <qmessagebox.h> #include <qapplication.h> + #include <qfiledialog.h> #include <iostream> *************** *** 54,61 **** experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! _cond_data->maxTime = 100.0; ! _cond_data->accuracy = 1.0e-3; ! _cond_data->initStepSize = 1e-2; ! _cond_data->dataStorage = true; _progress = new QProgressDialog(this,"ProgressDialog"); --- 55,62 ---- experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! _cond_data->eqc.maxTime = 100.0; ! _cond_data->eqc.accuracy = 1.0e-3; ! _cond_data->eqc.initStepSize = 1e-2; ! _cond_data->eqc.dataStorage = true; _progress = new QProgressDialog(this,"ProgressDialog"); *************** *** 63,74 **** _progress->setCancelButtonText("Stop Simulation"); ! _maxTimeLineEdit->setText( QString::number(_cond_data->maxTime) ); ! _accuracyLineEdit->setText( QString::number(_cond_data->accuracy) ); ! _initStepLineEdit->setText( QString::number(_cond_data->initStepSize) ); _homCheckBox->setChecked(true); _adsCheckBox->setChecked(true); _homSurfCheckBox->setChecked(true); _hetSurfCheckBox->setChecked(true); } --- 64,82 ---- _progress->setCancelButtonText("Stop Simulation"); ! _maxTimeLineEdit->setText( QString::number(_cond_data->eqc.maxTime) ); ! _accuracyLineEdit->setText( QString::number(_cond_data->eqc.accuracy) ); ! _initStepLineEdit->setText( QString::number(_cond_data->eqc.initStepSize) ); _homCheckBox->setChecked(true); + _cond_data->eqc.homReactions = true; _adsCheckBox->setChecked(true); + _cond_data->eqc.ads = true; _homSurfCheckBox->setChecked(true); + _cond_data->eqc.homSurfReactions = true; _hetSurfCheckBox->setChecked(true); + _cond_data->eqc.hetSurfReactions = true; + + _cond_data->eqc.plotDiss = false; + _cond_data->eqc.plotAds = false; } *************** *** 85,89 **** // std::cout << "EquilibriumDialog::setInitialConcentrations()" << std::endl; experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! _cond_data->cinit = cinit; // std::map<uint_t,double>::const_iterator p = cinit.begin(); --- 93,97 ---- // std::cout << "EquilibriumDialog::setInitialConcentrations()" << std::endl; experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! _cond_data->eqc.cinit = cinit; // std::map<uint_t,double>::const_iterator p = cinit.begin(); *************** *** 102,107 **** qApp->processEvents(); _progress-> ! setProgress((int)( (-(int)_cond_data->maxTime/_initProgress) ! * equ + (int)_cond_data->maxTime)); } --- 110,115 ---- qApp->processEvents(); _progress-> ! setProgress((int)( (-(int)_cond_data->eqc.maxTime/_initProgress) ! * equ + (int)_cond_data->eqc.maxTime)); } *************** *** 111,114 **** --- 119,154 ---- } + void EquilibriumDialog::sltLoad() + { + QFileDialog* fd = new QFileDialog( this, "file dialog", TRUE ); + fd->setCaption( tr("Open File") ); + fd->setMode( QFileDialog::ExistingFile ); + fd->setFilter( "Equilibrium conditions (*.eqc)" ); + fd->setViewMode( QFileDialog::List ); + fd->setDir( "~/echempp/data" ); + + if ( fd->exec() == QDialog::Accepted ) + { + if(_mainWindow->readEquilibriumConditions(fd->selectedFile().ascii())) + this->supply(); + } + delete fd; + } + + void EquilibriumDialog::sltSave() + { + QFileDialog* fd = new QFileDialog( this, "file dialog", TRUE ); + fd->setCaption( tr("Save File") ); + fd->setMode( QFileDialog::AnyFile ); + fd->setFilter( "Equilibrium conditions (*.eqc)" ); + fd->setViewMode( QFileDialog::List ); + fd->setDir( "~/echempp/data" ); + if ( fd->exec() == QDialog::Accepted ) + { + _mainWindow->saveEquilibriumConditions(fd->selectedFile().ascii()); + } + delete fd; + } + void EquilibriumDialog::sltApply() *************** *** 129,133 **** else { ! _cond_data->maxTime = value; } } --- 169,173 ---- else { ! _cond_data->eqc.maxTime = value; } } *************** *** 156,160 **** else { ! _cond_data->accuracy = value; } } --- 196,200 ---- else { ! _cond_data->eqc.accuracy = value; } } *************** *** 183,187 **** else { ! _cond_data->initStepSize = value; } } --- 223,227 ---- else { ! _cond_data->eqc.initStepSize = value; } } *************** *** 196,205 **** } ! _cond_data->homReactions = _homCheckBox->isChecked(); ! _cond_data->ads = _adsCheckBox->isChecked(); ! _cond_data->homSurfReactions = _homSurfCheckBox->isChecked(); ! _cond_data->hetSurfReactions = _hetSurfCheckBox->isChecked(); ! _cond_data->plotDiss = _plotDissCheckBox->isChecked(); ! _cond_data->plotAds = _plotAdsCheckBox->isChecked(); } --- 236,245 ---- } ! _cond_data->eqc.homReactions = _homCheckBox->isChecked(); ! _cond_data->eqc.ads = _adsCheckBox->isChecked(); ! _cond_data->eqc.homSurfReactions = _homSurfCheckBox->isChecked(); ! _cond_data->eqc.hetSurfReactions = _hetSurfCheckBox->isChecked(); ! _cond_data->eqc.plotDiss = _plotDissCheckBox->isChecked(); ! _cond_data->eqc.plotAds = _plotAdsCheckBox->isChecked(); } *************** *** 217,224 **** experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! _cond_data->timeSteps.clear(); ! _cond_data->profiles.clear(); ! _cond_data->timeSteps.clear(); ! _cond_data->indices.clear(); if( _thermCheckBox->isChecked() ) --- 257,264 ---- experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! _cond_data->eqc.timeSteps.clear(); ! _cond_data->eqc.profiles.clear(); ! _cond_data->eqc.timeSteps.clear(); ! _cond_data->eqc.indices.clear(); if( _thermCheckBox->isChecked() ) *************** *** 265,273 **** solver->setReactionNetwork( _net ); ! solver->setInitialConcentrations( _cond_data->cinit ); ! if( solver->getInitialResidual() <= _cond_data->accuracy ) { ! _cond_data->equConcs = _cond_data->cinit; log << Message << "Equilibrium state reached!" << Flush; if(! _mainWindow->isCompoundExperiment()) --- 305,313 ---- solver->setReactionNetwork( _net ); ! solver->setInitialConcentrations( _cond_data->eqc.cinit ); ! if( solver->getInitialResidual() <= _cond_data->eqc.accuracy ) { ! _cond_data->eqc.equConcs = _cond_data->eqc.cinit; log << Message << "Equilibrium state reached!" << Flush; if(! _mainWindow->isCompoundExperiment()) *************** *** 283,287 **** { solver->solve(); ! solver->getEquilibriumConcentrations( _cond_data->equConcs ); } } --- 323,327 ---- { solver->solve(); ! solver->getEquilibriumConcentrations( _cond_data->eqc.equConcs ); } } *************** *** 293,297 **** QMessageBox::NoButton, QMessageBox::NoButton ); ! _cond_data->equConcs = _cond_data->cinit; } catch( const ecco::EccoError& error ) --- 333,337 ---- QMessageBox::NoButton, QMessageBox::NoButton ); ! _cond_data->eqc.equConcs = _cond_data->eqc.cinit; } catch( const ecco::EccoError& error ) *************** *** 302,311 **** QMessageBox::NoButton, QMessageBox::NoButton ); ! _cond_data->equConcs = _cond_data->cinit; } ! _cond_data->indices = solver->getSpeciesIndices(); delete solver; --- 342,351 ---- QMessageBox::NoButton, QMessageBox::NoButton ); ! _cond_data->eqc.equConcs = _cond_data->eqc.cinit; } ! _cond_data->eqc.indices = solver->getSpeciesIndices(); delete solver; *************** *** 317,323 **** solvers::KineticEquSolver<EquilibriumDialog>* solver = new solvers::KineticEquSolver<EquilibriumDialog>(this); ! solver->setMaxTime(_cond_data->maxTime); ! solver->setAccuracy(_cond_data->accuracy); ! solver->setInitialStepSize(_cond_data->initStepSize); if( _homCheckBox->isChecked() ) --- 357,363 ---- solvers::KineticEquSolver<EquilibriumDialog>* solver = new solvers::KineticEquSolver<EquilibriumDialog>(this); ! solver->setMaxTime(_cond_data->eqc.maxTime); ! solver->setAccuracy(_cond_data->eqc.accuracy); ! solver->setInitialStepSize(_cond_data->eqc.initStepSize); if( _homCheckBox->isChecked() ) *************** *** 356,360 **** ! if( _cond_data->dataStorage ) { solver->enableDataStorage(); --- 396,400 ---- ! if( _cond_data->eqc.dataStorage ) { solver->enableDataStorage(); *************** *** 369,378 **** solver->setReactionNetwork( _net ); ! solver->setInitialConcentrations( _cond_data->cinit ); _initProgress = solver->getInitialResidual(); ! if( _initProgress <= _cond_data->accuracy ) { ! _cond_data->equConcs = _cond_data->cinit; log << Message << "Equilibrium state reached!" << Flush; if(! _mainWindow->isCompoundExperiment()) --- 409,418 ---- solver->setReactionNetwork( _net ); ! solver->setInitialConcentrations( _cond_data->eqc.cinit ); _initProgress = solver->getInitialResidual(); ! if( _initProgress <= _cond_data->eqc.accuracy ) { ! _cond_data->eqc.equConcs = _cond_data->eqc.cinit; log << Message << "Equilibrium state reached!" << Flush; if(! _mainWindow->isCompoundExperiment()) *************** *** 389,400 **** _break = solver->breaker(); _progress->show(); ! _progress->setTotalSteps( int(_cond_data->maxTime) ); solver->solve(); ! solver->getEquilibriumConcentrations( _cond_data->equConcs ); ! if( _cond_data->dataStorage ) { ! _cond_data->timeSteps = solver->getTimeSteps(); ! solver->getProfiles(_cond_data->profiles); } --- 429,440 ---- _break = solver->breaker(); _progress->show(); ! _progress->setTotalSteps( int(_cond_data->eqc.maxTime) ); solver->solve(); ! solver->getEquilibriumConcentrations( _cond_data->eqc.equConcs ); ! if( _cond_data->eqc.dataStorage ) { ! _cond_data->eqc.timeSteps = solver->getTimeSteps(); ! solver->getProfiles(_cond_data->eqc.profiles); } *************** *** 409,413 **** QMessageBox::NoButton, QMessageBox::NoButton ); ! _cond_data->equConcs = _cond_data->cinit; } catch( const ecco::EccoError& error ) --- 449,453 ---- QMessageBox::NoButton, QMessageBox::NoButton ); ! _cond_data->eqc.equConcs = _cond_data->eqc.cinit; } catch( const ecco::EccoError& error ) *************** *** 418,428 **** QMessageBox::NoButton, QMessageBox::NoButton ); ! _cond_data->equConcs = _cond_data->cinit; } ! _cond_data->indices = solver->getSpeciesIndices(); ! _progress->setProgress( int(_cond_data->maxTime) ); _progress->cancel(); delete solver; --- 458,468 ---- QMessageBox::NoButton, QMessageBox::NoButton ); ! _cond_data->eqc.equConcs = _cond_data->eqc.cinit; } ! _cond_data->eqc.indices = solver->getSpeciesIndices(); ! _progress->setProgress( int(_cond_data->eqc.maxTime) ); _progress->cancel(); delete solver; *************** *** 495,499 **** { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! return _cond_data->profiles.find(species)->second; } --- 535,539 ---- { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! return _cond_data->eqc.profiles.find(species)->second; } *************** *** 501,513 **** { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! _homCheckBox->setChecked(_cond_data->homReactions); ! _adsCheckBox->setChecked(_cond_data->ads); ! _homSurfCheckBox->setChecked(_cond_data->homSurfReactions); ! _hetSurfCheckBox->setChecked(_cond_data->hetSurfReactions); ! _plotDissCheckBox->setChecked(_cond_data->plotDiss); ! _plotAdsCheckBox->setChecked(_cond_data->plotDiss); ! _maxTimeLineEdit->setText(QString::number(_cond_data->maxTime)); ! _accuracyLineEdit->setText(QString::number(_cond_data->accuracy)); ! _initStepLineEdit->setText(QString::number(_cond_data->initStepSize)); } --- 541,553 ---- { experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); ! _homCheckBox->setChecked(_cond_data->eqc.homReactions); ! _adsCheckBox->setChecked(_cond_data->eqc.ads); ! _homSurfCheckBox->setChecked(_cond_data->eqc.homSurfReactions); ! _hetSurfCheckBox->setChecked(_cond_data->eqc.hetSurfReactions); ! _plotDissCheckBox->setChecked(_cond_data->eqc.plotDiss); ! _plotAdsCheckBox->setChecked(_cond_data->eqc.plotDiss); ! _maxTimeLineEdit->setText(QString::number(_cond_data->eqc.maxTime)); ! _accuracyLineEdit->setText(QString::number(_cond_data->eqc.accuracy)); ! _initStepLineEdit->setText(QString::number(_cond_data->eqc.initStepSize)); } Index: experimentDialog.cpp =================================================================== RCS file: /cvsroot/echempp/GUI/Windows/Qt/EChem++/Model/experimentDialog.cpp,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** experimentDialog.cpp 22 Dec 2007 15:53:16 -0000 1.16 --- experimentDialog.cpp 27 Mar 2008 13:11:52 -0000 1.17 *************** *** 49,52 **** --- 49,53 ---- #include <qdir.h> #include <qcheckbox.h> + #include <qfiledialog.h> #include <iostream> *************** *** 66,80 **** ::experiment::ConditionDataModSim* _cond_data = _mainWindow->getActiveConditionData(); [...1108 lines suppressed...] --- 833,851 ---- { this->setSemiInfiniteDiffusion(); ! this->setSafetyFactor( _cond_data->ec.safety ); } ! if( _cond_data->ec.potentialControlled ) { _controlComboBox0->setCurrentText("Potential"); _controlComboBox1->setCurrentText("Potential"); } ! else if( _cond_data->ec.currentControlled ) { _controlComboBox0->setCurrentText("Current"); _controlComboBox1->setCurrentText("Current"); } ! _methodComboBox0->setCurrentText( _cond_data->ec.technique0 ); ! _methodComboBox1->setCurrentText( _cond_data->ec.technique1 ); } } Index: modelMainWindow.cpp =================================================================== RCS file: /cvsroot/echempp/GUI/Windows/Qt/EChem++/Model/modelMainWindow.cpp,v retrieving revision 1.63 retrieving revision 1.64 diff -C2 -d -r1.63 -r1.64 *** modelMainWindow.cpp 16 Mar 2008 10:42:17 -0000 1.63 --- modelMainWindow.cpp 27 Mar 2008 13:11:54 -0000 1.64 *************** *** 204,208 **** #endif ! this->ep = new experiment::cv::SimInduced(new experiment::ConditionDataModSim(), new experiment::MeasurementDataModSim()); this->ep->set_title("New Experiment"); --- 204,208 ---- #endif ! this->ep = new experiment::cv::SimInduced(new experiment::ConditionDataModSim(), new experiment::MeasurementDataCV()); this->ep->set_title("New Experiment"); *************** *** 243,249 **** } ! experiment::MeasurementDataModSim* ModelMainWindow::getActiveMeasurementData() { ! return dynamic_cast<experiment::MeasurementDataModSim*>(getActiveExperiment()->get_meas_data()); } --- 243,249 ---- } ! experiment::MeasurementDataBase* ModelMainWindow::getActiveMeasurementData() { ! return getActiveExperiment()->get_meas_data(); } *************** *** 253,257 **** { ep = new experiment::cv::SimInduced(new experiment::ConditionDataModSim(), ! new experiment::MeasurementDataModSim()); } if(ep->is_compound()) --- 253,257 ---- { ep = new experiment::cv::SimInduced(new experiment::ConditionDataModSim(), ! new experiment::MeasurementDataCV()); } if(ep->is_compound()) *************** *** 397,400 **** --- 397,402 ---- { ia_xml >> BOOST_SERIALIZATION_NVP(ep); + // needed since measurement data is not serialized anymore + ep->set_meas_data(new experiment::MeasurementDataCV()); } catch(std::exception& e) *************** *** 402,407 **** QMessageBox::critical( 0, QObject::tr( "Critical Error" ), QObject::tr(e.what()) ); - experiment::ConditionDataModSim* cond_data = dynamic_cast<experiment::ConditionDataModSim*>(ep->get_cond_data()); - std::cout << "cond_data->mc.mechanism = " << cond_data->mc.mechanism << std::endl; ifs_xml.close(); return false; --- 404,407 ---- *************** *** 541,546 **** return true; } ! ! bool ModelMainWindow::readMechanism(const char* filename) { std::ifstream ifs_xml(filename); --- 541,546 ---- return true; } ! ! bool ModelMainWindow::readCondition(const char* filename, ConditionType t) { std::ifstream ifs_xml(filename); *************** *** 560,564 **** try { ! ia_xml >> boost::serialization::make_nvp("mc", _cond_data->mc); } catch(std::exception& e) --- 560,584 ---- try { ! switch(t) ! { ! case environment_conditions: ! ia_xml >> boost::serialization::make_nvp("ec", _cond_data->ec); ! break; ! case mechanism_conditions: ! ia_xml >> boost::serialization::make_nvp("mc", _cond_data->mc); ! break; ! case model_parameter_conditions: ! ia_xml >> boost::serialization::make_nvp("mpc", _cond_data->mpc); ! break; ! case equilibrium_conditions: ! ia_xml >> boost::serialization::make_nvp("eqc", _cond_data->eqc); ! break; ! case solver_conditions: ! ia_xml >> boost::serialization::make_nvp("sc", _cond_data->sc); ! break; ! case visualization_conditions: ! ia_xml >> boost::serialization::make_nvp("vic", _cond_data->vic); ! break; ! } } catch(std::exception& e) *************** *** 574,578 **** } ! bool ModelMainWindow::saveMechanism(const char* filename) { std::ofstream ofs_xml(filename); --- 594,598 ---- } ! bool ModelMainWindow::saveCondition(const char* filename, ConditionType t) { std::ofstream ofs_xml(filename); *************** *** 586,590 **** experiment::ConditionDataModSim* _cond_data = getActiveConditionData(); try{ ! oa_xml << boost::serialization::make_nvp("mc", _cond_data->mc); } catch(std::exception& e) --- 606,630 ---- experiment::ConditionDataModSim* _cond_data = getActiveConditionData(); try{ ! switch(t) ! { ! case environment_conditions: ! oa_xml << boost::serialization::make_nvp("ec", _cond_data->ec); ! break; ! case mechanism_conditions: ! oa_xml << boost::serialization::make_nvp("mc", _cond_data->mc); ! break; ! case model_parameter_conditions: ! oa_xml << boost::serialization::make_nvp("mpc", _cond_data->mpc); ! break; ! case equilibrium_conditions: ! oa_xml << boost::serialization::make_nvp("eqc", _cond_data->eqc); ! break; ! case solver_conditions: ! oa_xml << boost::serialization::make_nvp("sc", _cond_data->sc); ! break; ! case visualization_conditions: ! oa_xml << boost::serialization::make_nvp("vic", _cond_data->vic); ! break; ! } } catch(std::exception& e) *************** *** 598,656 **** return true; } ! bool ModelMainWindow::readModelParameters(const char* filename) { ! std::ifstream ifs_xml(filename); ! // use the standard locale with num_get_special to read inf,nan ! // into double/float with standard iostreams ! typedef std::istreambuf_iterator<char, std::char_traits<char> > Iter; ! std::locale loc(std::locale(), new num_get_special<char,Iter>); ! if(!ifs_xml) ! { ! QMessageBox::warning( 0, QObject::tr( "I/O Warning" ), ! QObject::tr( "Cannot open file %1" ).arg(filename)); ! return false; ! } ! ifs_xml.imbue(loc); ! boost::archive::xml_iarchive ia_xml(ifs_xml); ! experiment::ConditionDataModSim* _cond_data = getActiveConditionData(); ! try ! { ! ia_xml >> boost::serialization::make_nvp("mpc", _cond_data->mpc); ! } ! catch(std::exception& e) ! { ! QMessageBox::critical( 0, QObject::tr( "Critical Error" ), ! QObject::tr(e.what()) ); ! ifs_xml.close(); ! return false; ! } ! ifs_xml.close(); ! return true; } bool ModelMainWindow::saveModelParameters(const char* filename) { ! std::ofstream ofs_xml(filename); ! if(!ofs_xml) ! { ! QMessageBox::warning( 0, QObject::tr( "I/O Warning" ), ! QObject::tr( "Cannot open file %1" ).arg(filename)); ! return false; ! } ! boost::archive::xml_oarchive oa_xml(ofs_xml); ! experiment::ConditionDataModSim* _cond_data = getActiveConditionData(); ! try{ ! oa_xml << boost::serialization::make_nvp("mpc", _cond_data->mpc); ! } ! catch(std::exception& e) ! { ! QMessageBox::critical( 0, QObject::tr( "Critical Error" ), ! QObject::tr(e.what()) ); ! ofs_xml.close(); ! return false; ! } ! ofs_xml.close(); ! return true; } --- 638,700 ---- return true; } ! ! bool ModelMainWindow::readEnvironmentConditions(const char* filename) ! { ! return readCondition(filename, environment_conditions); ! } ! ! bool ModelMainWindow::saveEnvironmentConditions(const char* filename) ! { ! return saveCondition(filename, environment_conditions); ! } ! ! bool ModelMainWindow::readMechanism(const char* filename) ! { ! return readCondition(filename, mechanism_conditions); ! } ! ! bool ModelMainWindow::saveMechanism(const char* filename) ! { ! return saveCondition(filename, mechanism_conditions); ! } ! bool ModelMainWindow::readModelParameters(const char* filename) { ! return readCondition(filename, model_parameter_conditions); } bool ModelMainWindow::saveModelParameters(const char* filename) { ! return saveCondition(filename, model_parameter_conditions); ! } ! ! bool ModelMainWindow::readEquilibriumConditions(const char* filename) ! { ! return readCondition(filename, equilibrium_conditions); ! } ! ! bool ModelMainWindow::saveEquilibriumConditions(const char* filename) ! { ! return saveCondition(filename, equilibrium_conditions); ! } ! ! bool ModelMainWindow::readSolverConditions(const char* filename) ! { ! return readCondition(filename, solver_conditions); ! } ! ! bool ModelMainWindow::saveSolverConditions(const char* filename) ! { ! return saveCondition(filename, solver_conditions); ! } ! ! bool ModelMainWindow::readVisualizationConditions(const char* filename) ! { ! return readCondition(filename, solver_conditions); ! } ! ! bool ModelMainWindow::saveVisualizationConditions(const char* filename) ! { ! return saveCondition(filename, solver_conditions); } *************** *** 733,741 **** ModelMainWindow::sltFilePrint() { ! QMessageBox::information( 0, "Model", ! "Printing not yet implemented: Use export data instead.", ! QMessageBox::Ok, ! QMessageBox::NoButton, ! QMessageBox::NoButton ); } --- 777,886 ---- ModelMainWindow::sltFilePrint() { ! QFileDialog* fd = new QFileDialog( this, "file dialog", TRUE ); ! fd->setCaption( tr("Export Data") ); ! fd->setMode( QFileDialog::AnyFile ); ! ! fd->addFilter("Encapsulated Postscript (*.eps)"); ! fd->addFilter("Postscript (*.ps)"); ! fd->addFilter("Adobe PDF files (*.pdf)"); ! fd->addFilter("Text files (*.txt)"); ! fd->addFilter("LaTeX/TeX (*.tex)"); ! ! fd->setViewMode( QFileDialog::List ); ! fd->setDir( "~/echempp/data" ); ! ! QString fileName; ! if ( fd->exec() == QDialog::Accepted ) ! { ! fileName = fd->selectedFile(); ! QString filter = fd->selectedFilter(); ! ! if( filter == "Postscript (*.ps)" ) ! { ! if( fileName.find(".ps") != -1 ) fileName.remove(".ps"); ! ! std::string file = fileName.ascii(); ! if( _plotWidget->isActive() ) ! { ! _plotWidget->exportActiveGraph(file,"ps"); ! } ! else ! { ! _plotWidget->exportPage(file,"ps"); ! } ! ! } ! else if( filter == "Encapsulated Postscript (*.eps)" ) ! { ! if( fileName.find(".eps") != -1 ) fileName.remove(".eps"); ! ! ! std::string file = fileName.ascii(); ! if( _plotWidget->isActive() ) ! { ! _plotWidget->exportActiveGraph(file,"eps"); ! } ! else ! { ! _plotWidget->exportPage(file,"eps"); ! } ! ! } ! else if( filter == "Adobe PDF files (*.pdf)" ) ! { ! if( fileName.find(".pdf") != -1 ) fileName.remove(".pdf"); ! ! ! std::string file = fileName.ascii(); ! if( _plotWidget->isActive() ) ! { ! _plotWidget->exportActiveGraph(file,"pdf"); ! } ! else ! { ! _plotWidget->exportPage(file,"pdf"); ! } ! ! } ! else if( filter == "LaTeX/TeX (*.tex)" ) ! { ! if( fileName.find(".tex") != -1 ) fileName.remove(".tex"); ! ! ! std::string file = fileName.ascii(); ! if( _plotWidget->isActive() ) ! { ! _plotWidget->exportActiveGraph(file,"tex"); ! } ! else ! { ! _plotWidget->exportPage(file,"tex"); ! } ! ! } ! else if( filter == "Text Files (*.txt *.TXT)" ) ! { ! if( fileName.find(".txt") != -1 ) fileName.remove(".txt"); ! if( fileName.find(".TXT") != -1 ) fileName.remove(".TXT"); ! ! std::string file = fileName.ascii(); ! if( _plotWidget->isActive() ) ! { ! // see save project ! _plotWidget->exportActiveGraph(file,"txt"); ! } ! else ! { ! QMessageBox::warning( 0, "Model Error", ! "No graph activated: Click on the graph!", ! QMessageBox::Ok, ! QMessageBox::NoButton, ! QMessageBox::NoButton ); ! } ! } ! } ! std::cout << "Before delete fd" << std::endl; ! delete fd; ! std::cout << "After delete fd" << std::endl; } *************** *** 862,866 **** ep = NULL; } ! this->ep = new experiment::cv::SimInduced(new experiment::ConditionDataModSim(), new experiment::MeasurementDataModSim()); this->ep->set_title("New single Experiment"); } --- 1007,1011 ---- ep = NULL; } ! this->ep = new experiment::cv::SimInduced(new experiment::ConditionDataModSim(), new experiment::MeasurementDataCV()); this->ep->set_title("New single Experiment"); } *************** *** 919,1047 **** fd->setCaption( tr("Export Data") ); fd->setMode( QFileDialog::AnyFile ); ! ! fd->addFilter("Encapsulated Postscript (*.eps)"); ! fd->addFilter("Postscript (*.ps)"); ! fd->addFilter("Adobe PDF files (*.pdf)"); ! fd->addFilter("LaTeX/TeX (*.tex)"); ! fd->addFilter("Text Files (*.txt *.TXT)"); ! fd->addFilter("XML Data Files (*.xml)"); ! fd->setViewMode( QFileDialog::List ); fd->setDir( "~/echempp/data" ); - QString fileName; if ( fd->exec() == QDialog::Accepted ) { ! fileName = fd->selectedFile(); ! QString filter = fd->selectedFilter(); ! ! if( filter == "Postscript (*.ps)" ) ! { ! if( fileName.find(".ps") != -1 ) fileName.remove(".ps"); ! ! std::string file = fileName.ascii(); ! if( _plotWidget->isActive() ) ! { ! _plotWidget->exportActiveGraph(file,"ps"); ! } ! else ! { ! _plotWidget->exportPage(file,"ps"); ! } ! ! } ! else if( filter == "Encapsulated Postscript (*.eps)" ) ! { ! if( fileName.find(".eps") != -1 ) fileName.remove(".eps"); ! ! ! std::string file = fileName.ascii(); ! if( _plotWidget->isActive() ) ! { ! _plotWidget->exportActiveGraph(file,"eps"); ! } ! else ! { ! _plotWidget->exportPage(file,"eps"); ! } ! ! } ! else if( filter == "Adobe PDF files (*.pdf)" ) ! { ! if( fileName.find(".pdf") != -1 ) fileName.remove(".pdf"); ! ! ! std::string file = fileName.ascii(); ! if( _plotWidget->isActive() ) ! { ! _plotWidget->exportActiveGraph(file,"pdf"); ! } ! else ! { ! _plotWidget->exportPage(file,"pdf"); ! } ! ! } ! else if( filter == "LaTeX/TeX (*.tex)" ) ! { ! if( fileName.find(".tex") != -1 ) fileName.remove(".tex"); ! ! ! std::string file = fileName.ascii(); ! if( _plotWidget->isActive() ) ! { ! _plotWidget->exportActiveGraph(file,"tex"); ! } ! else ! { ! _plotWidget->exportPage(file,"tex"); ! } ! ! } ! else if( filter == "XML Data Files (*.xml)" ) ! { ! if( fileName.find(".xml") != -1 ) ! { ! fileName.remove(".xml"); ! } ! ! fileName.append(".xml"); ! std::string file = fileName.ascii(); ! if( _plotWidget->isActive() ) { ! // see save project ! // TODO FIXME ! // _mediator->writeDataFile( fileName ); } ! else { ! QMessageBox::warning( 0, "Model Error", ! "No graph activated: Click on the graph!", QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton ); - } - } - else if( filter == "Text Files (*.txt *.TXT)" ) - { - if( fileName.find(".txt") != -1 ) fileName.remove(".txt"); - if( fileName.find(".TXT") != -1 ) fileName.remove(".TXT"); - - std::string file = fileName.ascii(); - if( _plotWidget->isActive() ) - { - // see save project - _plotWidget->exportActiveGraph(file,"txt"); } - else - { - QMessageBox::warning( 0, "Model Error", - "No graph activated: Click on the graph!", - QMessageBox::Ok, - QMessageBox::NoButton, - QMessageBox::NoButton ); - } - } } delete fd; --- 1064,1111 ---- fd->setCaption( tr("Export Data") ); fd->setMode( QFileDialog::AnyFile ); ! fd->setFilter( "Text files (*.txt *.TXT)" ); fd->setViewMode( QFileDialog::List ); fd->setDir( "~/echempp/data" ); QString fileName; if ( fd->exec() == QDialog::Accepted ) { ! fileName = fd->selectedFile(); ! std::ofstream ofs(fileName.ascii()); ! if(ofs) { ! // header ! ofs << "ModSim ASCII export\n"; ! try{ ! // units ! ofs << ep->get_meas_data()->unitsymbol_i() << " " ! << ep->get_meas_data()->unitsymbol_d() << " " ! << ep->get_meas_data()->unitsymbol_r() << "\n"; ! // data in three colums seperated by colons ! boost::tuple<double,double,double> tp; ! for(unsigned int i=0; i < ep->get_meas_data()->size_i(); ++i) ! { ! tp = ep->get_meas_data()->get_values(i); ! ofs << tp.get<0>() << ", " << tp.get<1>() << ", " << tp.get<2>() << "\n"; ! } ! ofs.close(); ! } ! catch(std::exception& e) ! { ! QMessageBox::warning( 0, "Export data error", ! e.what(), ! QMessageBox::Ok, ! QMessageBox::NoButton, ! QMessageBox::NoButton ); ! } } ! else { ! QMessageBox::warning( 0, "File not found error", ! "Could not open file for writing", QMessageBox::Ok, QMessageBox::NoButton, QMessageBox::NoButton ); } } delete fd; *************** *** 1091,1120 **** } - - - - // void - // ModelMainWindow::writeOutData( QFile* outFile, const std::vector<std::vector<double> >& data ) - // { - - // QTextStream outStream( outFile ); - - // uint_t i=0; - // uint_t j; - // for(;i<data.size();++i) - // { - // for(j=0;j<data[i].size();++j) - // { - // outStream << data[i][j] << "\t"; - // } - // outStream << "\n"; - // } - - // } - - - - - } } --- 1155,1158 ---- Index: solverDialog.cpp =================================================================== RCS file: /cvsroot/echempp/GUI/Windows/Qt/EChem++/Model/solverDialog.cpp,v retrieving revision 1.89 retrieving revision 1.90 diff -C2 -d -r1.89 -r1.90 *** solverDialog.cpp 22 Dec 2007 15:53:16 -0000 1.89 --- solverDialog.cpp 27 Mar 2008 13:11:55 -0000 1.90 *************** *** 89,92 **** --- 89,93 ---- #include <qradiobutton.h> #include <qpushbutton.h> + #include <qfiledialog.h> #include <ctime> *************** *** 161,166 **** _mainWindow->getActiveConditionData(); ! _cond_data->potentialControlled = true; ! _cond_data->currentControlled = false; _cond_data->sc.TOL = 2.0e-2; _cond_data->sc.resATOL = 1.0e-3; --- 162,167 ---- _mainWindow->getActiveConditionData(); ! _cond_data->ec.potentialControlled = true; ! _cond_data->ec.currentControlled = false; _cond_da... [truncated message content] |