DomainDecomposition/RunTriangle/runtriangle.cpp

Go to the documentation of this file.
00001 #include <iostream>
00002 #include <QtGui>
00003 #include "runtriangle.h"
00004 #include <fstream>
00005 #include "../../pihmLIBS/helpDialog/helpdialog.h"
00006 #include "triangle.h"
00007 
00008 #include <fstream>
00009 using namespace std;
00010 
00011 using namespace std;
00012 
00013 runTriangleDlg::runTriangleDlg(QWidget *parent)
00014 {
00015         setupUi(this);
00016         connect(polyFileBrowseButton, SIGNAL(clicked()), this, SLOT(inputBrowse()));
00017         connect(showOptionsButton, SIGNAL(clicked()), this, SLOT(options()));
00018         connect(runButton, SIGNAL(clicked()), this, SLOT(run()));
00019         connect(helpButton, SIGNAL(clicked()), this, SLOT(help()));
00020         connect(cancelButton, SIGNAL(clicked()), this, SLOT(close()));
00021 }
00022 
00023 
00024 void runTriangleDlg::inputBrowse()
00025 {
00026         QString temp = QFileDialog::getOpenFileName(this, "Choose File", "~/","Poly File(*.poly)");
00027         
00028         polyFileLineEdit->setText(temp);
00029 }
00030 
00031 void runTriangleDlg::options()
00032 {
00033         helpDialog* hlpDlg = new helpDialog(this, "TRIANGLE Options", 1, "helpFiles/triangleoptions.html", "Help :: TRIANGLE Options");
00034         hlpDlg->show();
00035 }
00036 
00037 void runTriangleDlg::run()
00038 {
00039 
00040         QString logFileName("c:\log.html");
00041         ofstream log;
00042         log.open(logFileName.ascii());
00043         log<<"<html><body><font size=3 color=black><p> Verifying Files...</p></font></body></html>";
00044         log.close();
00045         MessageLog->setSource(logFileName);
00046         MessageLog->setFocus();
00047         MessageLog->setModified(TRUE);
00048 
00049 /*
00050         ifstream temp;
00051         temp.open((polyFileLineEdit->text()).ascii());
00052         if((polyFileLineEdit->text()).length()==0){
00053                 qWarning("\n Enter Poly File");
00054         }
00055         else if(temp==NULL){
00056                 qWarning("\n %s doesn't exist!", (polyFileLineEdit->text()).ascii());
00057         }
00058 */
00059 
00060         ifstream inFile;      inFile.open((polyFileLineEdit->text()).ascii());
00061         int runFlag = 1;
00062 
00063         log.open(logFileName.ascii(), ios::app);
00064         if((polyFileLineEdit->text()).length()==0){
00065                 log<<"<p><font size=3 color=red> Error! Please input poly File</p>";
00066                 runFlag = 0;
00067         }
00068         else{
00069                 log<<"<p>Checking... "<<(polyFileLineEdit->text()).ascii()<<"... ";
00070                 if(inFile == NULL){
00071                         log<<"<font size=3 color=red> Error!</p>";
00072                         //qWarning("\n%s doesn't exist!", (inputFileLineEdit->text()).ascii());
00073                         runFlag = 0;
00074                 }
00075                 else
00076                         log<<"Done!</p>";
00077         }
00078         log.close();
00079         MessageLog->reload();
00080         QApplication::processEvents();
00081         
00082         if(runFlag == 1){
00083                 QString temp(polyFileLineEdit->text());
00084                 int slashPos = temp.findRev('/');
00085                 temp.truncate(slashPos);
00086                 QString presentDir(temp);
00087                 
00088                 QString* exeString = new QString("triangle");
00089                 QString* optString = new QString("-");
00090                 if(nOptionCheckBox->isChecked()){optString->append("n");}
00091                 if(VOptionsCheckBox->isChecked()){optString->append("V");}
00092                 if(qOptionsCheckBox->isChecked()){optString->append("q"); optString->append(qOptionLineEdit->text());}
00093                 if(aOptionsCheckBox->isChecked()){optString->append("a"); optString->append(aOptionLineEdit->text());}
00094                 if(otherOptionCheckBox->isChecked()) {optString->append(otherOptionLineEdit->text());}
00095                 //cmdString->append(aOptionLineEdit->text());}
00096 
00097                 //qWarning("cmdstring = %s\n", cmdString->ascii());
00098 
00099                 //cmdString->append(" ");
00100                 QString fileString(polyFileLineEdit->text());
00101                 //cmdString->append(polyFileLineEdit->text());
00102                 int arg1=0;
00103                 char **arg2;
00104                 arg2 = (char **)malloc(3 * sizeof(char *));
00105                 for (int ii=0; ii<3; ii++)
00106                         arg2[ii]=(char *)malloc(1000*sizeof(char));
00107                 arg2[0]=(char *)exeString->ascii();
00108                 arg1++;
00109 
00110                 if(optString->length() != 0){
00111                         arg2[1]=(char *)optString->ascii();
00112                         arg1++;
00113                         arg2[2]=(char *)fileString.ascii();
00114                         arg1++;
00115                 }
00116                 else{
00117                         arg2[1]=(char *)fileString.ascii();
00118                         arg1++;
00119                 }
00120 
00121                 log.open(logFileName.ascii(), ios::app);
00122                 log<<"<p>Running...";
00123                 log.close();
00124                 MessageLog->reload();
00125                 QApplication::processEvents();
00126 
00127                 ShewchukTRIANGLE(arg1, arg2);
00128                 
00129                 log.open(logFileName.ascii(), ios::app);
00130                 log<<" Done!</p>";
00131                 log.close();
00132                 MessageLog->reload();
00133                 QApplication::processEvents();
00134 
00135                 // std::cout<<str;
00136                 //cmdString->append(" 1>");
00137                 //cmdString->append(presentDir);
00138                 //cmdString->append("/statistics.txt");
00139                 
00140                 //const char* str = cmdString->ascii();
00141                 //std::system(str);
00142 /*
00143                 QFile statFile( presentDir+"/statistics.txt" );
00144 
00145                 if ( !statFile.open( IO_ReadOnly ) )
00146                        return;
00147                 QTextStream textStream( &statFile );
00148 
00149                 int lines2print;
00150                 if(VOptionsCheckBox->isChecked()){
00151                        if(!qOptionsCheckBox->isChecked())
00152                                lines2print = 23;
00153                        else
00154                                lines2print = 29;
00155                 }
00156                 else{
00157                        if(!qOptionsCheckBox->isChecked())
00158                                lines2print = 15;
00159                        else
00160                                lines2print = 17;
00161                 }
00162 
00163                 for(int i=1; i<=lines2print; i++){
00164                        qWarning("\n %s",(textStream.readLine()).ascii());
00165                 }
00166 */
00167         }
00168 }
00169                         
00170 void runTriangleDlg::help()
00171 {
00172         helpDialog* hlpDlg = new helpDialog(this, "Run TRIANGLE", 1, "helpFiles/runtriangle.html", "Help :: Run TRIANGLE");
00173         hlpDlg->show(); 
00174 }

Generated on Sun Aug 5 17:33:57 2007 for PIHMgis by  doxygen 1.5.2