00001 #include <QtGui>
00002 #include "fillpits.h"
00003 #include "../../pihmRasterLIBS/flood.h"
00004 #include "../../pihmLIBS/helpDialog/helpdialog.h"
00005
00006 #include "../../pihmLIBS/homeDir.h"
00007
00008 #include <fstream>
00009 using namespace std;
00010
00011 fillpitsDlg::fillpitsDlg(QWidget *parent)
00012 {
00013 setupUi(this);
00014 connect(inputBrowseButton, SIGNAL(clicked()), this, SLOT(inputBrowse()));
00015 connect(outputBrowseButton, SIGNAL(clicked()), this, SLOT(outputBrowse()));
00016 connect(runButton, SIGNAL(clicked()), this, SLOT(run()));
00017 connect(helpButton, SIGNAL(clicked()), this, SLOT(help()));
00018 connect(closeButton, SIGNAL(clicked()), this, SLOT(close()));
00019 }
00020
00021 void fillpitsDlg::inputBrowse()
00022 {
00023 QString str = QFileDialog::getOpenFileName(this, "Choose File", "~/","DEM Grid File(*.adf *.asc)");
00024 inputFileLineEdit->setText(str);
00025 }
00026
00027 void fillpitsDlg::outputBrowse()
00028 {
00029 QString temp = QFileDialog::getSaveFileName(this, "Choose File", "~/","DEM Grid File(*.adf *.asc)");
00030 QString tmp = temp;
00031 if(!(tmp.toLower()).endsWith(".asc")){
00032 tmp.append(".asc");
00033 temp = tmp;
00034 }
00035
00036 outputFileLineEdit->setText(temp);
00037 }
00038
00039 void fillpitsDlg::run()
00040 {
00041 QString inputFileName((inputFileLineEdit->text()));
00042 QString outputFileName((outputFileLineEdit->text()));
00043
00044 QString logFileName("c:\log.html");
00045 ofstream log;
00046 log.open(logFileName.ascii());
00047 log<<"<html><body><font size=3 color=black><p> Verifying Files...</p></font></body></html>";
00048 log.close();
00049 messageLog->setSource(logFileName);
00050 messageLog->setFocus();
00051 messageLog->setModified(TRUE);
00052
00053 ifstream inFile; inFile.open((inputFileLineEdit->text()).ascii());
00054 ofstream outFile; outFile.open((outputFileLineEdit->text()).ascii());
00055 int runFlag = 1;
00056
00057 log.open(logFileName.ascii(), ios::app);
00058 if(inputFileName.length()==0){
00059 log<<"<p><font size=3 color=red> Error! Please input DEM File</p>";
00060 runFlag = 0;
00061 }
00062 else{
00063 log<<"</p>Checking... "<<inputFileName.ascii()<<"... ";
00064 if(inFile == NULL){
00065 log<<"<font size=3 color=red> Error!";
00066 qWarning("\n%s doesn't exist!", (inputFileLineEdit->text()).ascii());
00067 runFlag = 0;
00068 }
00069 else
00070 log<<"Done!";
00071 }
00072 log.close();
00073 messageLog->reload();
00074 QApplication::processEvents();
00075
00076 log.open(logFileName.ascii(), ios::app);
00077 if(outputFileName.length()==0){
00078 log<<"<p><font size=3 color=red> Error! Please input Output File</p>";
00079 runFlag = 0;
00080 }
00081 else{
00082 log<<"</p><p>Checking... "<<outputFileName.ascii()<<"... ";
00083 if(outFile == NULL){
00084 log<<"<font size=3 color=red> Error!";
00085 qWarning("\nCan not open output file name");
00086 runFlag = 0;
00087 }
00088 else
00089 log<<"Done!";
00090 }
00091 log.close();
00092 messageLog->reload();
00093 QApplication::processEvents();
00094
00095
00096 if(runFlag == 1){
00097
00098 log.open(logFileName.ascii(), ios::app);
00099 log<<"<p>Running Fill Pits...";
00100 log.close();
00101 messageLog->reload();
00102 QApplication::processEvents();
00103
00104 int err = flood((char *)inputFileName.ascii(), "dummy", (char *)outputFileName.ascii() );
00105
00106 log.open(logFileName.ascii(), ios::app);
00107 log<<" Done!";
00108 log.close();
00109 messageLog->reload();
00110 QApplication::processEvents();
00111
00112 if(showPF_DFrame->isChecked() == 1){
00113
00114 applicationPointer->addRasterLayer(QStringList(outputFileName));
00115
00116 }
00117 }
00118 }
00119
00120 void fillpitsDlg::help()
00121 {
00122 helpDialog* hlpDlg = new helpDialog(this, "Fill Pits", 1, "helpFiles/fillpits.html", "Help :: Fill Pits");
00123 hlpDlg->show();
00124 }
00125
00126 void fillpitsDlg::setApplicationPointer(QgisApp* appPtr){
00127 applicationPointer = appPtr;
00128 }