00001 #include <QtGui>
00002 #include "parafile.h"
00003
00004 #include <iomanip>
00005 #include <fstream>
00006 using namespace std;
00007
00008 #include "../../pihmLIBS/helpDialog/helpdialog.h"
00009
00010 paraFileDlg::paraFileDlg(QWidget *parent)
00011 {
00012 setupUi(this);
00013 connect(paraFileButton, SIGNAL(clicked()), this, SLOT(paraBrowse()));
00014 connect(okButton, SIGNAL(clicked()), this, SLOT(run()));
00015 connect(helpButton, SIGNAL(clicked()), this, SLOT(help()));
00016 connect(cancelButton, SIGNAL(clicked()), this, SLOT(close()));
00017 }
00018
00019 void paraFileDlg::paraBrowse()
00020 {
00021 QString temp = QFileDialog::getSaveFileName(this, "Choose File", "~/","para File(*.para *.PARA)");
00022 QString tmp = temp;
00023 if(!(tmp.toLower()).endsWith(".para")){
00024 tmp.append(".para");
00025 temp = tmp;
00026 }
00027 paraFileLineEdit->setText(temp);
00028 }
00029
00030
00031 void paraFileDlg::run()
00032 {
00033
00034 QString logFileName("c:\log.html");
00035 ofstream log;
00036 log.open(logFileName.ascii());
00037 log<<"<html><body><font size=3 color=black><p> Verifying Files...</p></font></body></html>";
00038 log.close();
00039 MessageLog->setSource(logFileName);
00040 MessageLog->setFocus();
00041 MessageLog->setModified(TRUE);
00042
00043 ofstream parameters;
00044 parameters.open((paraFileLineEdit->text()).ascii(), ios::out);
00045
00046 int runFlag = 1;
00047
00048
00049
00050
00051
00052
00053
00054 log.open(logFileName.ascii(), ios::app);
00055 if((paraFileLineEdit->text()).length()==0){
00056 log<<"<p><font size=3 color=red> Error! Please input .para Output File</p>";
00057 runFlag = 0;
00058 }
00059 else{
00060 log<<"<p>Checking... "<<(paraFileLineEdit->text()).ascii()<<"... ";
00061 if(parameters == NULL){
00062 log<<"<font size=3 color=red> Error!</p>";
00063
00064 runFlag = 0;
00065 }
00066 else
00067 log<<"Done!</p>";
00068 }
00069 log.close();
00070 MessageLog->reload();
00071 QApplication::processEvents();
00072
00073
00074 log.open(logFileName.ascii(), ios::app);
00075 log<<"<p><font size=3 color=black>Checking Krylov Dimension...";
00076 if(KDlineEdit->text().length()==0){
00077 log<<"<font size=3 color=red>Error!</p>";
00078 runFlag=0;
00079 qWarning("\nPlease enter Krylov Dimension");
00080
00081 }
00082 else
00083 log<<"Done</p>";
00084 log.close();
00085 MessageLog->reload();
00086 QApplication::processEvents();
00087
00088 log.open(logFileName.ascii(), ios::app);
00089 log<<"<p><font size=3 color=black>Checking Convergence Threshold...";
00090 if(CTlineEdit->text().length()==0){
00091 log<<"<font size=3 color=red>Error!</p>";
00092 runFlag=0;
00093 qWarning("\nPlease enter Convergence Tolerance");
00094
00095 }
00096 else
00097 log<<"Done</p>";
00098 log.close();
00099 MessageLog->reload();
00100 QApplication::processEvents();
00101
00102 log.open(logFileName.ascii(), ios::app);
00103 log<<"<p><font size=3 color=black>Checking Absolute Tolerance...";
00104 if(ATlineEdit->text().length()==0){
00105 log<<"<font size=3 color=red>Error!</p>";
00106 runFlag=0;
00107 qWarning("\nPlease enter Absolute Tolerance");
00108
00109 }
00110 else
00111 log<<"Done</p>";
00112 log.close();
00113 MessageLog->reload();
00114 QApplication::processEvents();
00115
00116
00117 log.open(logFileName.ascii(), ios::app);
00118 log<<"<p><font size=3 color=black>Checking Relative Tolerance...";
00119 if(RTlineEdit->text().length()==0){
00120 log<<"<font size=3 color=red>Error!</p>";
00121 runFlag=0;
00122 qWarning("\nPlease enter Relative Tolerance");
00123
00124 }
00125 else
00126 log<<"Done</p>";
00127 log.close();
00128 MessageLog->reload();
00129 QApplication::processEvents();
00130
00131 log.open(logFileName.ascii(), ios::app);
00132 log<<"<p><font size=3 color=black>Checking Initial Step...";
00133 if(ISlineEdit->text().length()==0){
00134 log<<"<font size=3 color=red>Error!</p>";
00135 runFlag=0;
00136 qWarning("\nPlease enter Initial Time Step");
00137
00138 }
00139 else
00140 log<<"Done</p>";
00141 log.close();
00142 MessageLog->reload();
00143 QApplication::processEvents();
00144
00145 log.open(logFileName.ascii(), ios::app);
00146 log<<"<p><font size=3 color=black>Checking Maximum Step...";
00147 if(MSlineEdit->text().length()==0){
00148 log<<"<font size=3 color=red>Error!</p>";
00149 runFlag=0;
00150 qWarning("\nPlease enter Maximum Time Step");
00151
00152 }
00153 else
00154 log<<"Done</p>";
00155 log.close();
00156 MessageLog->reload();
00157 QApplication::processEvents();
00158
00159
00160 log.open(logFileName.ascii(), ios::app);
00161 log<<"<p><font size=3 color=black>Checking Start Time...";
00162 if(STlineEdit->text().length()==0){
00163 log<<"<font size=3 color=red>Error!</p>";
00164 runFlag=0;
00165 qWarning("\nPlease enter Start Time");
00166
00167 }
00168 else
00169 log<<"Done</p>";
00170 log.close();
00171 MessageLog->reload();
00172 QApplication::processEvents();
00173
00174
00175 log.open(logFileName.ascii(), ios::app);
00176 log<<"<p><font size=3 color=black>Checking End Time...";
00177 if(ETlineEdit->text().length()==0){
00178 log<<"<font size=3 color=red>Error!</p>";
00179 runFlag=0;
00180 qWarning("\nPlease enter End Time");
00181
00182 }
00183 else
00184 log<<"Done</p>";
00185 log.close();
00186 MessageLog->reload();
00187 QApplication::processEvents();
00188
00189
00190 log.open(logFileName.ascii(), ios::app);
00191 log<<"<p><font size=3 color=black>Checking Step Size...";
00192 if(a_lineEdit->text().length()==0){
00193 log<<"<font size=3 color=red>Error!</p>";
00194 runFlag=0;
00195 qWarning("\nPlease enter Step Size Factor (a)");
00196
00197 }
00198 else
00199 log<<"Done</p>";
00200 log.close();
00201 MessageLog->reload();
00202 QApplication::processEvents();
00203
00204
00205 log.open(logFileName.ascii(), ios::app);
00206 log<<"<p><font size=3 color=black>Checking Base Step Size...";
00207 if(b_lineEdit->text().length()==0){
00208 log<<"<font size=3 color=red>Error!</p>";
00209 runFlag=0;
00210 qWarning("\nPlease enter Base Step Size (b)");
00211
00212 }
00213 else
00214 log<<"Done</p>";
00215 log.close();
00216 MessageLog->reload();
00217 QApplication::processEvents();
00218
00219
00220 if(runFlag == 1){
00221
00222 log.open(logFileName.ascii(), ios::app);
00223 log<<"<p>Writing .para file...";
00224 log.close();
00225 MessageLog->reload();
00226 QApplication::processEvents();
00227
00228
00229 if(verboseCheckBox->isChecked())
00230 parameters<<"1\t";
00231 else
00232 parameters<<"0\t";
00233
00234 if(debugCheckBox->isChecked())
00235 parameters<<"1\t";
00236 else
00237 parameters<<"0\t";
00238
00239 if(imComboBox->currentItem() == 0)
00240 parameters<<"2\t";
00241 else if(imComboBox->currentItem() == 1)
00242 parameters<<"0\t";
00243 else
00244 parameters<<"1\t";
00245
00246 if(resFileCheckBox->isChecked())
00247 parameters<<"1\t";
00248 else
00249 parameters<<"0\t";
00250
00251 if(fluxFileCheckBox->isChecked())
00252 parameters<<"1\t";
00253 else
00254 parameters<<"0\t";
00255
00256 if(qFileCheckBox->isChecked())
00257 parameters<<"1\t";
00258 else
00259 parameters<<"0\t";
00260
00261 if(etFileCheckBox->isChecked())
00262 parameters<<"1\n";
00263 else
00264 parameters<<"0\n";
00265 if(umComboBox->currentItem() == 0)
00266 parameters<<"1\t";
00267 else
00268 parameters<<"2\t";
00269
00270 if(smComboBox->currentItem() == 0)
00271 parameters<<"1\t";
00272 else if(smComboBox->currentItem() == 1)
00273 parameters<<"2\t";
00274 else
00275 parameters<<"3\t";
00276
00277 if(rmComboBox->currentItem() == 0)
00278 parameters<<"1\n";
00279 else if(rmComboBox->currentItem() == 1)
00280 parameters<<"2\n";
00281 else
00282 parameters<<"3\n";
00283
00284
00285
00286 if(DDradioButton->isChecked())
00287 parameters<<"1\t";
00288 else
00289 parameters<<"2\t";
00290
00291 if(GScomboBox->currentItem() == 0)
00292 parameters<<"1\t";
00293 else
00294 parameters<<"2\t";
00295
00296 parameters<<(KDlineEdit->text()).ascii()<<"\t";
00297
00298 parameters<<(CTlineEdit->text()).ascii()<<"\n";
00299
00300
00301
00302 parameters<<(ATlineEdit->text()).ascii()<<"\t";
00303
00304 parameters<<(RTlineEdit->text()).ascii()<<"\t";
00305
00306 parameters<<(ISlineEdit->text()).ascii()<<"\t";
00307
00308 parameters<<(MSlineEdit->text()).ascii()<<"\n";
00309
00310
00311
00312 log.open(logFileName.ascii(), ios::app);
00313 log<<" Done!</p>";
00314 log.close();
00315 MessageLog->reload();
00316 QApplication::processEvents();
00317
00318 }
00319 }
00320
00321 void paraFileDlg::help()
00322 {
00323 helpDialog* hlpDlg = new helpDialog(this, "Para File", 1, "helpFiles/parafile.html", "Help :: Para File");
00324 hlpDlg->show();
00325 }