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
00051
00052
00053
00054
00055
00056
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
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
00096
00097
00098
00099
00100 QString fileString(polyFileLineEdit->text());
00101
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
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
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 }