void QgsDecorationCopyright::saveToProject() { QgsDecorationItem::saveToProject(); QgsProject* prj = QgsProject::instance(); prj->writeEntry( mNameConfig, "/FontName", mQFont.family() ); prj->writeEntry( mNameConfig, "/FontSize", mQFont.pointSize() ); prj->writeEntry( mNameConfig, "/Label", mLabelQString ); prj->writeEntry( mNameConfig, "/Color", mLabelQColor.name() ); prj->writeEntry( mNameConfig, "/Placement", mPlacementIndex ); }
void QgsDecorationCopyright::saveToProject() { QgsDecorationItem::saveToProject(); QgsProject* prj = QgsProject::instance(); prj->writeEntry( mNameConfig, QStringLiteral( "/FontName" ), mQFont.family() ); prj->writeEntry( mNameConfig, QStringLiteral( "/FontSize" ), mQFont.pointSize() ); prj->writeEntry( mNameConfig, QStringLiteral( "/Label" ), mLabelQString ); prj->writeEntry( mNameConfig, QStringLiteral( "/Color" ), mLabelQColor.name() ); prj->writeEntry( mNameConfig, QStringLiteral( "/MarginH" ), mMarginHorizontal ); prj->writeEntry( mNameConfig, QStringLiteral( "/MarginV" ), mMarginVertical ); }
// --------------------------- private slots ------------------------------- // void QgsOpenRasterDialog::on_tbnSelectRaster_clicked() { QSettings settings; QString dir = settings.value( "/Plugin-GeoReferencer/rasterdirectory" ).toString(); if ( dir.isEmpty() ) dir = "."; QString lastUsedFilter = settings.value( "/Plugin-GeoReferencer/lastusedfilter" ).toString(); QString filters; QgsRasterLayer::buildSupportedRasterFileFilter( filters ); filters.prepend( "(*.*);;" ); QString rasterFileName = QFileDialog::getOpenFileName( this, tr( "Choose a name of the raster" ), dir, filters, &lastUsedFilter ); if ( rasterFileName.isEmpty() ) { return; } leRasterFileName->setText( rasterFileName ); // do we think that this is a valid raster? if ( !QgsRasterLayer::isValidRasterFileName( rasterFileName ) ) { QMessageBox::critical( this, tr( "Error" ), tr( "The selected file is not a valid raster file." ) ); return; } QFileInfo fileInfo( rasterFileName ); settings.setValue( "/Plugin-GeoReferencer/rasterdirectory", fileInfo.path() ); settings.setValue( "/Plugin-GeoReferencer/lastusedfilter", lastUsedFilter ); QString modifiedFileName = generateModifiedRasterFileName(); leModifiedRasterFileName->setText( modifiedFileName ); // What DOING this code? QgsProject* prj = QgsProject::instance(); QString projBehaviour = settings.value( "/Projections/defaultBehaviour", "prompt" ).toString(); QString projectCRS = prj->readEntry( "SpatialRefSys", "/ProjectCRSProj4String" ); int projectCrsId = prj->readNumEntry( "SpatialRefSys", "/ProjectCrsId" ); settings.setValue( "/Projections/defaultBehaviour", "useProject" ); prj->writeEntry( "SpatialRefSys", "/ProjectCRSProj4String", GEOPROJ4 ); prj->writeEntry( "SpatialRefSys", "/ProjectCrsId", int( GEOCRS_ID ) ); settings.setValue( "/Projections/defaultBehaviour", projBehaviour ); prj->writeEntry( "SpatialRefSys", "/ProjectCRSProj4String", projectCRS ); prj->writeEntry( "SpatialRefSys", "/ProjectCrsId", projectCrsId ); }
void QgsExpressionContextUtils::setProjectVariable( const QString& name, const QVariant& value ) { QgsProject* project = QgsProject::instance(); //write variable to project QStringList variableNames = project->readListEntry( "Variables", "/variableNames" ); QStringList variableValues = project->readListEntry( "Variables", "/variableValues" ); variableNames << name; variableValues << value.toString(); project->writeEntry( "Variables", "/variableNames", variableNames ); project->writeEntry( "Variables", "/variableValues", variableValues ); }
void TestQgsProject::testReadPath() { QgsProject *prj = new QgsProject; // this is a bit hacky as we do not really load such project QString prefix; #if defined(Q_OS_WIN) prefix = "C:"; #endif prj->setFileName( prefix + "/home/qgis/a-project-file.qgs" ); // not expected to exist // make sure we work with relative paths! prj->writeEntry( QStringLiteral( "Paths" ), QStringLiteral( "Absolute" ), false ); QCOMPARE( prj->readPath( "./x.shp" ), QString( prefix + "/home/qgis/x.shp" ) ); QCOMPARE( prj->readPath( "../x.shp" ), QString( prefix + "/home/x.shp" ) ); // TODO: old style (seems QGIS < 1.3) - needs existing project file and existing file // QCOMPARE( prj->readPath( "x.shp" ), QString( "/home/qgis/x.shp" ) ); // VSI: /vsizip, /vsitar, /vsigzip, *.zip, *.gz, *.tgz, ... QCOMPARE( prj->readPath( "./x.gz" ), QString( prefix + "/home/qgis/x.gz" ) ); QCOMPARE( prj->readPath( "/vsigzip/./x.gz" ), QString( "/vsigzip/%1/home/qgis/x.gz" ).arg( prefix ) ); // not sure how useful this really is... delete prj; }
void QgsExpressionContextUtils::setProjectVariables( const QgsStringMap &variables ) { QgsProject* project = QgsProject::instance(); //write variable to project QStringList variableNames; QStringList variableValues; Q_FOREACH ( const QString& variable, variables.keys() ) { variableNames << variable; variableValues << variables.value( variable ); } project->writeEntry( "Variables", "/variableNames", variableNames ); project->writeEntry( "Variables", "/variableValues", variableValues ); }
void QgsExpressionContextUtils::setProjectVariables( const QgsStringMap &variables ) { QgsProject* project = QgsProject::instance(); //write variable to project QStringList variableNames; QStringList variableValues; QMap< QString, QString >::const_iterator it = variables.constBegin(); for ( ; it != variables.constEnd(); ++it ) { variableNames << it.key(); variableValues << it.value(); } project->writeEntry( "Variables", "/variableNames", variableNames ); project->writeEntry( "Variables", "/variableValues", variableValues ); }
void TestQgsProject::testProjectUnits() { //test setting and retrieving project units // DISTANCE //first set a default QGIS distance unit QSettings s; s.setValue( "/qgis/measure/displayunits", QgsUnitTypes::encodeUnit( QgsUnitTypes::DistanceFeet ) ); QgsProject* prj = QgsProject::instance(); // new project should inherit QGIS default distance unit prj->clear(); QCOMPARE( prj->distanceUnits(), QgsUnitTypes::DistanceFeet ); //changing default QGIS unit should not affect existing project s.setValue( "/qgis/measure/displayunits", QgsUnitTypes::encodeUnit( QgsUnitTypes::DistanceNauticalMiles ) ); QCOMPARE( prj->distanceUnits(), QgsUnitTypes::DistanceFeet ); //test setting new units for project prj->writeEntry( "Measurement", "/DistanceUnits", QgsUnitTypes::encodeUnit( QgsUnitTypes::DistanceNauticalMiles ) ); QCOMPARE( prj->distanceUnits(), QgsUnitTypes::DistanceNauticalMiles ); // AREA //first set a default QGIS area unit s.setValue( "/qgis/measure/areaunits", QgsUnitTypes::encodeUnit( QgsUnitTypes::AreaSquareYards ) ); // new project should inherit QGIS default area unit prj->clear(); QCOMPARE( prj->areaUnits(), QgsUnitTypes::AreaSquareYards ); //changing default QGIS unit should not affect existing project s.setValue( "/qgis/measure/areaunits", QgsUnitTypes::encodeUnit( QgsUnitTypes::AreaAcres ) ); QCOMPARE( prj->areaUnits(), QgsUnitTypes::AreaSquareYards ); //test setting new units for project prj->writeEntry( "Measurement", "/AreaUnits", QgsUnitTypes::encodeUnit( QgsUnitTypes::AreaAcres ) ); QCOMPARE( prj->areaUnits(), QgsUnitTypes::AreaAcres ); }
void rulesDialog::addRule() { //sanity checks QString test = mRuleBox->currentText(); QString layer1 = mLayer1Box->currentText(); if ( layer1 == tr( "No layer" ) ) return; QString layer2 = mLayer2Box->currentText(); if ( layer2 == tr( "No layer" ) && mTestConfMap[test].useSecondLayer ) return; for ( int i = 0; i < mRulesTable->rowCount(); ++i ) { if ( mRulesTable->item( i, 0 )->text() == test && mRulesTable->item( i, 1 )->text() == layer1 && mRulesTable->item( i, 2 )->text() == layer2 ) { return; } } int row = mRulesTable->rowCount(); mRulesTable->insertRow( row ); QTableWidgetItem* newItem; newItem = new QTableWidgetItem( test ); mRulesTable->setItem( row, 0, newItem ); newItem = new QTableWidgetItem( layer1 ); mRulesTable->setItem( row, 1, newItem ); if ( mTestConfMap[test].useSecondLayer ) newItem = new QTableWidgetItem( layer2 ); else newItem = new QTableWidgetItem( tr( "No layer" ) ); mRulesTable->setItem( row, 2, newItem ); if ( mTestConfMap[test].useTolerance ) newItem = new QTableWidgetItem( QStringLiteral( "%1" ).arg( mToleranceBox->value() ) ); else newItem = new QTableWidgetItem( tr( "No tolerance" ) ); mRulesTable->setItem( row, 3, newItem ); QString layer1ID, layer2ID; // add layer ids to hidden columns // -1 for "No layer" string if ( mTestConfMap[test].useSecondLayer ) layer2ID = mLayer2Box->currentData().toString(); else layer2ID = tr( "No layer" ); layer1ID = mLayer1Box->currentData().toString(); //TODO: use setItemData (or something like that) instead of hidden columns newItem = new QTableWidgetItem( layer1ID ); mRulesTable->setItem( row, 4, newItem ); newItem = new QTableWidgetItem( layer2ID ); mRulesTable->setItem( row, 5, newItem ); // save state to the project file..... QString postfix = QStringLiteral( "%1" ).arg( row ); QgsProject* project = QgsProject::instance(); project->writeEntry( QStringLiteral( "Topol" ), QStringLiteral( "/testCount" ), row + 1 ); project->writeEntry( QStringLiteral( "Topol" ), "/testname_" + postfix, test ); project->writeEntry( QStringLiteral( "Topol" ), "/tolerance_" + postfix, QStringLiteral( "%1" ).arg( mToleranceBox->value() ) ); project->writeEntry( QStringLiteral( "Topol" ), "/layer1_" + postfix, layer1ID ); project->writeEntry( QStringLiteral( "Topol" ), "/layer2_" + postfix, layer2ID ); // reset controls to default mRuleBox->setCurrentIndex( 0 ); mLayer1Box->setCurrentIndex( 0 ); mLayer2Box->setCurrentIndex( 0 ); mToleranceBox->setValue( 0 ); }
void CatchmentPolygonDlg::run() { QgsProject *p = QgsProject::instance(); QString projDir = p->readPath(p->readEntry("pihm", "projDir")); p->writeEntry("pihm", "catgrid", p->writePath(inputFileLineEdit->text())); // 20 p->writeEntry("pihm", "catpoly", p->writePath(outputFileLineEdit->text())); // 21 QDir dir = QDir::home(); QString home = dir.homePath(); QString logFileName(qPrintable(home+"/log.html")); ofstream log; log.open(qPrintable(logFileName)); log<<"<html><body><font size=3 color=black><p> Verifying Files...</p></font></body></html>"; log.close(); messageLog->setSource(logFileName); messageLog->setFocus(); messageLog->setModified(TRUE); QString inputFileName((inputFileLineEdit->text())); QString outputShpFileName((outputFileLineEdit->text())); QString outputDbfFileName; QString outputShxFileName, id; outputDbfFileName = outputShpFileName; outputDbfFileName.truncate(outputDbfFileName.length()-3); outputShxFileName=outputDbfFileName; outputDbfFileName.append("dbf"); outputShxFileName.truncate(outputShxFileName.length()-1); id=outputShxFileName; id=id.right(id.length()-id.lastIndexOf("/",-1)-1); cout << "ID = "<<qPrintable(id) <<"\n"; outputShxFileName.append(".shx"); QString shpFile = projDir+"/VectorProcessing/"+id+".shp"; QString dbfFile = projDir+"/VectorProcessing/"+id+".dbf"; QString shxFile = projDir+"/VectorProcessing/"+id+".shx"; ifstream inFile; inFile.open(qPrintable(inputFileLineEdit->text())); // ofstream outFile; outFile.open(qPrintable(outputFileLineEdit->text())); int runFlag = 1; log.open(qPrintable(logFileName), ios::app); if(inputFileName.length()==0) { log<<"<p><font size=3 color=red> Error! Please input Catchment Grid Input File</p>"; runFlag = 0; } else{ log<<"<p>Checking... "<<qPrintable(inputFileName)<<"... "; if(inFile == NULL) { log<<"<font size=3 color=red> Error!</p>"; qWarning("\n%s doesn't exist!", qPrintable(inputFileLineEdit->text())); runFlag = 0; } else log<<"Done!</p>"; } log.close(); messageLog->reload(); QApplication::processEvents(); log.open(qPrintable(logFileName), ios::app); if(outputShpFileName.length()==0) { log<<"<p><font size=3 color=red> Error! Please input Catchment Polygon Output File</p>"; runFlag = 0; } else{ log<<"<p>Checking... "<<qPrintable(outputShpFileName)<<"... "; /* if(outFile == NULL) { log<<"<font size=3 color=red> Error!</p>"; qWarning("\nCan not open output file name"); runFlag = 0; } else*/ log<<"Done!</p>"; } log.close(); messageLog->reload(); QApplication::processEvents(); if(runFlag == 1) { log.open(qPrintable(logFileName), ios::app); log<<"<p>Running..."; log.close(); messageLog->reload(); QApplication::processEvents(); Convert(inputFileName, outputShpFileName); char err = 0; if (QFile::exists(shpFile) && !QFile::remove(shpFile)) err |= 1; if (QFile::exists(dbfFile) && !QFile::remove(dbfFile)) err |= 2; if (QFile::exists(shxFile) && !QFile::remove(shxFile)) err |= 4; const char* msg[] = {" shp", " dbf", " shx"}; QString s("Failed to remove old:"); char idx = 0; for(; err; err>>=1, ++idx) if (err & 1) { s += msg[idx]; } if (idx) QMessageBox::warning(this, "Failed to remove old files", s); QFile::copy(outputShpFileName, shpFile); QFile::copy(outputDbfFileName, dbfFile); QFile::copy(outputShxFileName, shxFile); p->writeEntry("pihm", "catpoly", shpFile); //21 log.open(qPrintable(logFileName), ios::app); log<<" Done!</p>"; log.close(); messageLog->reload(); QApplication::processEvents(); if(showSG_DFrame->isChecked() == 1) { QString myFileNameQString = outputShpFileName; QFileInfo myFileInfo(myFileNameQString); QString myBaseNameQString = myFileInfo.baseName(); QString provider = "OGR"; cout<<"\n"<<myFileNameQString.ascii()<<"\n"<<myBaseNameQString.ascii()<<"\n"<<provider.ascii()<<"\n"; //getchar(); getchar(); applicationPointer->addVectorLayer(myFileNameQString, myBaseNameQString, "ogr"); //QgsRasterLayer *tempLayer = new QgsRasterLayer("/backup/pihm/RasterProcessing/FillPits", "morgedem.asc"); //?? applicationPointer->addLayer(QStringList(outputShpFileName), NULL); } }
void paraFileDlg::run() { QgsProject *p = QgsProject::instance(); QString projDir = p->readPath(p->readEntry("pihm", "projDir")); p->writeEntry("pihm", "/model/para", p->writePath(paraFileLineEdit->text())); // 82 QDir dir = QDir::home(); QString home = dir.homePath(); QString logFileName(home+"/log.html"); ofstream log; log.open(qPrintable(logFileName)); log<<"<html><body><font size=3 color=black><p> Verifying Files...</p></font></body></html>"; log.close(); MessageLog->setSource(logFileName); MessageLog->setFocus(); MessageLog->setModified(TRUE); ofstream parameters; parameters.open(qPrintable((paraFileLineEdit->text())), ios::out); int runFlag = 1; /* if(parameters==NULL){ qWarning("\nPlease input para file name"); runFlag=0; }*/ log.open(qPrintable(logFileName), ios::app); if((paraFileLineEdit->text()).length()==0) { log<<"<p><font size=3 color=red> Error! Please input .para Output File</p>"; runFlag = 0; } else { log<<"<p>Checking... "<<qPrintable((paraFileLineEdit->text()))<<"... "; if(parameters == NULL) { log<<"<font size=3 color=red> Error!</p>"; //qWarning("\nCan not open output file name"); runFlag = 0; } else log<<"Done!</p>"; } log.close(); MessageLog->reload(); QApplication::processEvents(); log.open(qPrintable(logFileName), ios::app); log<<"<p><font size=3 color=black>Checking Krylov Dimension..."; if(KDlineEdit->text().length()==0) { log<<"<font size=3 color=red>Error!</p>"; runFlag=0; qWarning("\nPlease enter Krylov Dimension"); //out<<"<p><font size=2 color=red>Please enter Krylov Dimension</font></p>"; } else log<<"Done</p>"; log.close(); MessageLog->reload(); QApplication::processEvents(); log.open(qPrintable(logFileName), ios::app); log<<"<p><font size=3 color=black>Checking Convergence Threshold..."; if(CTlineEdit->text().length()==0) { log<<"<font size=3 color=red>Error!</p>"; runFlag=0; qWarning("\nPlease enter Convergence Tolerance"); //out<<"<p><font size=2 color=red>Please enter Convergence Tolerance</font></p>"; } else log<<"Done</p>"; log.close(); MessageLog->reload(); QApplication::processEvents(); log.open(qPrintable(logFileName), ios::app); log<<"<p><font size=3 color=black>Checking Absolute Tolerance..."; if(ATlineEdit->text().length()==0) { log<<"<font size=3 color=red>Error!</p>"; runFlag=0; qWarning("\nPlease enter Absolute Tolerance"); //out<<"<p><font size=2 color=red>Please enter Absolute Tolerance</font></p>"; } else log<<"Done</p>"; log.close(); MessageLog->reload(); QApplication::processEvents(); log.open(qPrintable(logFileName), ios::app); log<<"<p><font size=3 color=black>Checking Relative Tolerance..."; if(RTlineEdit->text().length()==0) { log<<"<font size=3 color=red>Error!</p>"; runFlag=0; qWarning("\nPlease enter Relative Tolerance"); //out<<"<p><font size=2 color=red>Please enter Relative Tolerance</font></p>"; } else log<<"Done</p>"; log.close(); MessageLog->reload(); QApplication::processEvents(); log.open(qPrintable(logFileName), ios::app); log<<"<p><font size=3 color=black>Checking Initial Step..."; if(ISlineEdit->text().length()==0) { log<<"<font size=3 color=red>Error!</p>"; runFlag=0; qWarning("\nPlease enter Initial Time Step"); //out<<"<p><font size=2 color=red>Please enter Initial Time Step</font></p>"; } else log<<"Done</p>"; log.close(); MessageLog->reload(); QApplication::processEvents(); log.open(qPrintable(logFileName), ios::app); log<<"<p><font size=3 color=black>Checking Maximum Step..."; if(MSlineEdit->text().length()==0) { log<<"<font size=3 color=red>Error!</p>"; runFlag=0; qWarning("\nPlease enter Maximum Time Step"); //out<<"<p><font size=2 color=red>Please enter Maximum Time Step</font></p>"; } else log<<"Done</p>"; log.close(); MessageLog->reload(); QApplication::processEvents(); log.open(qPrintable(logFileName), ios::app); log<<"<p><font size=3 color=black>Checking Start Time..."; if(STlineEdit->text().length()==0) { log<<"<font size=3 color=red>Error!</p>"; runFlag=0; qWarning("\nPlease enter Start Time"); //out<<"<p><font size=2 color=red>Please enter Start Time</font></p>"; } else log<<"Done</p>"; log.close(); MessageLog->reload(); QApplication::processEvents(); log.open(qPrintable(logFileName), ios::app); log<<"<p><font size=3 color=black>Checking End Time..."; if(ETlineEdit->text().length()==0) { log<<"<font size=3 color=red>Error!</p>"; runFlag=0; qWarning("\nPlease enter End Time"); //out<<"<p><font size=2 color=red>Please enter End Time</font></p>"; } else log<<"Done</p>"; log.close(); MessageLog->reload(); QApplication::processEvents(); log.open(qPrintable(logFileName), ios::app); log<<"<p><font size=3 color=black>Checking Step Size..."; if(a_lineEdit->text().length()==0) { log<<"<font size=3 color=red>Error!</p>"; runFlag=0; qWarning("\nPlease enter Step Size Factor (a)"); //out<<"<p><font size=2 color=red>Please enter Step Size Factor (a)</font></p>"; } else log<<"Done</p>"; log.close(); MessageLog->reload(); QApplication::processEvents(); log.open(qPrintable(logFileName), ios::app); log<<"<p><font size=3 color=black>Checking Base Step Size..."; if(b_lineEdit->text().length()==0) { log<<"<font size=3 color=red>Error!</p>"; runFlag=0; qWarning("\nPlease enter Base Step Size (b)"); //out<<"<p><font size=2 color=red>Please enter Base Step Size (b)</font></p>"; } else log<<"Done</p>"; log.close(); MessageLog->reload(); QApplication::processEvents(); if(runFlag == 1) { log.open(qPrintable(logFileName), ios::app); log<<"<p>Writing .para file..."; log.close(); MessageLog->reload(); QApplication::processEvents(); if(verboseCheckBox->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(debugCheckBox->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(imComboBox->currentIndex() == 0) parameters<<"3\n"; else if(imComboBox->currentIndex() == 1) parameters<<"1\n"; else parameters<<"0\n"; /* if(resFileCheckBox->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(fluxFileCheckBox->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(qFileCheckBox->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(etFileCheckBox->isChecked()) parameters<<"1\n"; else parameters<<"0\n"; */ if(checkBox1->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox2->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox3->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox4->isChecked()) parameters<<"1\n"; else parameters<<"0\n"; //// if(checkBox5->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox6->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox7->isChecked()) parameters<<"1\n"; else parameters<<"0\n"; //// if(checkBox8->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox9->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox10->isChecked()) parameters<<"1\n"; else parameters<<"0\n"; //// if(checkBox11->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox12->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox13->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox14->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox15->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox16->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox17->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox18->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox19->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBox20->isChecked()) parameters<<"1\n"; else parameters<<"0\n"; /// int multiplier = comboBoxTime2->currentIndex()==0 ? 1 : comboBoxTime2->currentIndex()==1 ? 60 : 24*60; if(checkBox1->isChecked()) parameters<<(lineEdit1->text()).toDouble()*multiplier<<"\t"; else parameters<<"0\t"; if(checkBox2->isChecked()) parameters<<(lineEdit2->text()).toDouble()*multiplier<<"\t"; else parameters<<"0\t"; if(checkBox3->isChecked()) parameters<<(lineEdit3->text()).toDouble()*multiplier<<"\t"; else parameters<<"0\t"; if(checkBox4->isChecked()) parameters<<(lineEdit4->text()).toDouble()*multiplier<<"\n"; else parameters<<"0\n"; //// if(checkBox5->isChecked()) parameters<<(lineEdit5->text()).toDouble()*multiplier<<"\t"; else parameters<<"0\t"; if(checkBox6->isChecked()) parameters<<(lineEdit6->text()).toDouble()*multiplier<<"\t"; else parameters<<"0\t"; if(checkBox7->isChecked()) parameters<<(lineEdit7->text()).toDouble()*multiplier<<"\t"; else parameters<<"0\t"; if(checkBox8->isChecked() || checkBox9->isChecked() || checkBox10->isChecked()) parameters<<(lineEdit8->text()).toDouble()*multiplier<<"\t"; else parameters<<"0\t"; if(checkBox11->isChecked() || checkBox12->isChecked() || checkBox13->isChecked() || checkBox14->isChecked() || checkBox15->isChecked() || checkBox16->isChecked() || checkBox17->isChecked() || checkBox18->isChecked() || checkBox19->isChecked() || checkBox20->isChecked()) parameters<<(lineEdit11->text()).toDouble()*multiplier<<"\n"; else parameters<<"0\n"; //// if(umComboBox->currentIndex() == 0) parameters<<"1\t"; else parameters<<"2\t"; if(smComboBox->currentIndex() == 0) parameters<<"2\t"; else if(smComboBox->currentIndex() == 1) parameters<<"1\t"; else parameters<<"3\t"; if(rmComboBox->currentIndex() == 0) parameters<<"2\n"; else if(rmComboBox->currentIndex() == 1) parameters<<"1\n"; else parameters<<"3\n"; /************************************************/ if(DDradioButton->isChecked()) parameters<<"1\t"; else parameters<<"2\t"; if(GScomboBox->currentIndex() == 0) parameters<<"1\t"; else parameters<<"2\t"; parameters<<qPrintable((KDlineEdit->text()))<<"\t"; parameters<<qPrintable((CTlineEdit->text()))<<"\n"; /*************************************************/ parameters<<qPrintable((ATlineEdit->text()))<<"\t"; parameters<<qPrintable((RTlineEdit->text()))<<"\t"; parameters<<qPrintable((ISlineEdit->text()))<<"\t"; parameters<<qPrintable((MSlineEdit->text()))<<"\t"; parameters<<qPrintable((ETSlineEdit->text()))<<"\n"; /***********/ multiplier = comboBoxTime1->currentIndex()==0 ? 1 : comboBoxTime1->currentIndex()==1 ? 60 : 24*60; parameters<<(STlineEdit->text()).toDouble()*multiplier<<"\t"; parameters<<(ETlineEdit->text()).toDouble()*multiplier<<"\t"; if(SScomboBox->currentIndex() == 0) parameters<<"0\n"; else parameters<<"1\n"; parameters<<qPrintable((a_lineEdit->text()))<<"\t"; parameters<<qPrintable((b_lineEdit->text()))<<"\n"; if(checkBoxFillSurf->isChecked()) parameters<<"1\t"; else parameters<<"0\t"; if(checkBoxFillSub->isChecked()) parameters<<"1\n"; else parameters<<"0\n"; log.open(qPrintable(logFileName), ios::app); log<<" Done!</p>"; log.close(); MessageLog->reload(); QApplication::processEvents(); } }
void LinkGridDlg::run() { QgsProject *p = QgsProject::instance(); QString projDir = p->readPath(p->readEntry("pihm", "projDir")); p->writeEntry("pihm", "strgrid", p->writePath(inputSTRFileLineEdit->text())); // 11 p->writeEntry("pihm", "fdr", p->writePath(inputFDRFileLineEdit->text())); // 12 p->writeEntry("pihm", "lnk", p->writePath(outputFileLineEdit->text())); // 13 QDir dir = QDir::home(); QString home = dir.homePath(); QString logFileName(qPrintable(home+"/log.html")); ofstream log; log.open(qPrintable(logFileName)); log<<"<html><body><font size=3 color=black><p> Verifying Files...</p></font></body></html>"; log.close(); messageLog->setSource(logFileName); messageLog->setFocus(); messageLog->setModified(TRUE); QString inputSTRFileName((inputSTRFileLineEdit->text())); QString inputFDRFileName((inputFDRFileLineEdit->text())); QString outputFileName((outputFileLineEdit->text())); ifstream STRinFile; STRinFile.open(qPrintable(inputSTRFileLineEdit->text())); ifstream FDRinFile; FDRinFile.open(qPrintable(inputFDRFileLineEdit->text())); ofstream outFile; outFile.open(qPrintable(outputFileLineEdit->text())); int runFlag = 1; log.open(qPrintable(logFileName), ios::app); if(inputSTRFileName.length()==0) { log<<"<p><font size=3 color=red> Error! Please input Stream Grid Input File</p>"; runFlag = 0; } else{ log<<"</p><p>Checking... "<<qPrintable(inputSTRFileName)<<"... "; if(STRinFile == NULL) { log<<"<font size=3 color=red> Error!</p>"; qWarning("\n%s doesn't exist!", qPrintable(inputSTRFileLineEdit->text())); runFlag = 0; } else log<<"Done!</p>"; } log.close(); messageLog->reload(); QApplication::processEvents(); log.open(qPrintable(logFileName), ios::app); if(inputFDRFileName.length()==0) { log<<"<p><font size=3 color=red> Error! Please input Flow Dir. Grid Input File</p>"; runFlag = 0; } else{ log<<"</p><p>Checking... "<<qPrintable(inputFDRFileName)<<"... "; if(FDRinFile == NULL) { log<<"<font size=3 color=red> Error!</p>"; qWarning("\n%s doesn't exist!", qPrintable(inputFDRFileLineEdit->text())); runFlag = 0; } else log<<"Done!</p>"; } log.close(); messageLog->reload(); QApplication::processEvents(); log.open(qPrintable(logFileName), ios::app); if(outputFileName.length()==0) { log<<"<p><font size=3 color=red> Error! Please input Link Grid Output File</p>"; runFlag = 0; } else{ log<<"</p><p>Checking... "<<qPrintable(outputFileName)<<"... "; if(outFile == NULL) { log<<"<font size=3 color=red> Error!</p>"; qWarning("\nCan not open output file name"); runFlag = 0; } else log<<"Done!</p>"; } log.close(); messageLog->reload(); QApplication::processEvents(); if(runFlag == 1) { log.open(qPrintable(logFileName), ios::app); log<<"<p>Running..."; log.close(); messageLog->reload(); QApplication::processEvents(); int err1 = streamSegmentation((char *)qPrintable(inputSTRFileName), (char *)qPrintable(inputFDRFileName), (char *)qPrintable(outputFileName), "node.dat" ); log.open(qPrintable(logFileName), ios::app); log<<" Done!</p>"; log.close(); messageLog->reload(); QApplication::processEvents(); if(showSG_DFrame->isChecked() == 1) { //QgsRasterLayer *tempLayer = new QgsRasterLayer("/backup/pihm/RasterProcessing/FillPits", "morgedem.asc"); //?? applicationPointer->addRasterLayer(outputFileName); } } }
void GeolFile::on_pushButtonRun_clicked() { QgsProject *p = QgsProject::instance(); QString projDir = p->readPath(p->readEntry("pihm", "projDir")); p->writeEntry("pihm", "geol", p->writePath(ui->lineEditGeolTexture->text())); // 89 p->writeEntry("pihm", "/model/geol", p->writePath(ui->lineEditGeolFile->text())); // 90 int RunFlag=1; ifstream inFile; ofstream outFile; inFile.open((ui->lineEditGeolTexture->text()).toAscii()); outFile.open((ui->lineEditGeolFile->text()).toAscii()); ofstream logFile; QDir dir = QDir::home(); QString home = dir.homePath(); QString logFileName(home+"/log.html"); logFile.open(qPrintable(logFileName)); logFile<<"<html><body><font size=3 color=black> Verifying Files...<br>"; logFile.close(); ui->textBrowser->setSource(logFileName); ui->textBrowser->setFocus(); ui->textBrowser->setModified(TRUE); logFile.open(qPrintable(logFileName), ios::app); logFile<<"Checking Geol Texture File... "; if (inFile == NULL) { logFile<<"could NOT open file. ERROR<br>"; RunFlag = 0; } else logFile<<"Done!<br>"; logFile<<"Checking .Geol File... "; if (outFile == NULL) { logFile<<"could NOT open file to write. ERROR<br>"; RunFlag = 0; } else logFile<<"Done!<br>"; logFile.close(); ui->textBrowser->reload(); if(RunFlag == 1) { logFile.open(qPrintable(logFileName), ios::app); logFile<<"Generating .GEOL file... "; char tempS[500]; int count=0; double data[1000][6]; // (1) MUKEY (2) SILT (3) CLAY (4) ORGANIC_MATTER (5) BULK_DENSITY //<(6) TOPSOIL> //inFile>>tempS; inFile>>tempS; inFile>>tempS; inFile>>tempS; inFile>>tempS; //<inFile>>tempS;> inFile.getline(tempS, 500); while(inFile) { inFile>>data[count][0]; //MUKEY inFile>>data[count][1]; //SILT inFile>>data[count][2]; //CLAY inFile>>data[count][3]; if(data[count][3]<0) data[count][3]=2.5; //ORGANIC MATTER inFile>>data[count][4]; if(data[count][4]<0) data[count][4]=1.3; // BULK DENSITY (g/cm3) //inFile>>data[count][5]; // TOP SOIL data[count][5] = 0; // Forced for GEOL i.e. TOPSOIL = 0 //? outFile<<"-$ "<<data[count][0]<<"\t"<<data[count][1]<<"\t"<<data[count][2]<<"\t"<<data[count][3]<<"\t"<<data[count][4]<<"\t"<<data[count][5]<<" $- \n"; count++; } count--; outFile<<count<<"\n"; double S, C, OM, D; //S=SILT, C=CLAY, OM=ORGANIC MATTER, D=BULK DENSITY, int topsoil; //TOPSOIL double **outData; outData = (double **)malloc(count*sizeof(double *)); for(int i=0; i<count; i++) { outData[i] = (double *)malloc(10*sizeof(double)); for(int j=0; j<10; j++) outData[i][j]=0.0; S = data[i][1]; C = data[i][2]; OM = data[i][3]; D = data[i][4]; topsoil = (int) data[i][5]; //Index outData[i][0]=i+1; outFile<<outData[i][0]<<"\t"; //Ksat //outData[i][1]= (7.755+0.03252*S+0.93*topsoil-0.967*D*D-0.000484*C*C-0.000322*S*S+0.001/S-0.0748/OM-0.643*log(S)-0.01398*D*C-0.1673*D*OM+0.02986*topsoil*C-0.03305*topsoil*S); outData[i][1]=exp(7.755+0.03252*S+0.93*topsoil-0.967*D*D-0.000484*C*C-0.000322*S*S+0.001/S-0.0748/OM-0.643*log(S)-0.01398*D*C-0.1673*D*OM+0.02986*topsoil*C-0.03305*topsoil*S); outData[i][1]=outData[i][1]/100; //[cm per d] to [m per d] outFile<<outData[i][1]*10<<"\t"; //KsatH = KsatV * 10 //Ksat outFile<<outData[i][1]<<"\t"; //KsatV //ThetaS //outData[i][2]=(0.7919+0.001691*C-0.29619*D-0.000001491*S*S+0.0000821*OM*OM+0.02427/C+0.01113/S+0.01472*log(S)-0.0000733*OM*C-0.000619*D*C-0.001183*D*OM-0.0001664*topsoil*S); outData[i][2]= (0.7919+0.001691*C-0.29619*D-0.000001491*S*S+0.0000821*OM*OM+0.02427/C+0.01113/S+0.01472*log(S)-0.0000733*OM*C-0.000619*D*C-0.001183*D*OM-0.0001664*topsoil*S); outFile<<outData[i][2]<<"\t"; //ThetaR outData[i][3]=0.01; outFile<<outData[i][3]<<"\t"; //InfD //outData[i][4]=0.10; //outFile<<outData[i][4]<<"\t"; //Alpha //outData[i][5]=log(-14.96+0.03135*C+0.0351*S+0.646*OM+15.29*D-0.192*topsoil-4.671*D*D-0.000781*C*C-0.00687*OM*OM+0.0449/OM+0.0663*log(S)+0.1482*log(OM)-0.04546*D*S-0.4852*D*OM+0.00673*topsoil*C); outData[i][5]= exp(-14.96+0.03135*C+0.0351*S+0.646*OM+15.29*D-0.192*topsoil-4.671*D*D-0.000781*C*C-0.00687*OM*OM+0.0449/OM+0.0663*log(S)+0.1482*log(OM)-0.04546*D*S-0.4852*D*OM+0.00673*topsoil*C); outData[i][5]= 100*outData[i][5]; //UNIT CONVERSION 1/cm TO 1/m outFile<<outData[i][5]<<"\t"; //Beta outData[i][6]=1+exp(-25.23-0.02195*C+0.0074*S-0.1940*OM+45.5*D-7.24*D*D+0.0003658*C*C+0.002885*OM*OM-12.81/D-0.1524/S-0.01958/OM-0.2876*log(S)-0.0709*log(OM)-44.6*log(D)-0.02264*D*C+0.0896*D*OM+0.00718*topsoil*C); outFile<<outData[i][6]<<"\t"; //hAreaF outData[i][7]=0.01; outFile<<outData[i][7]<<"\t"; //macKsatV outData[i][8]=100000*outData[i][1]; outFile<<outData[i][8]<<"\t"; //macD outData[i][9]=1.0; outFile<<outData[i][9]<<"\n"; } logFile<<"Done!<br>"; logFile<<"GeolFile Module - COMPLETE"; logFile.close(); ui->textBrowser->reload(); QApplication::processEvents(); }
void PIHMgis::runImportProject(){ QString projFile = QFileDialog::getOpenFileName(NULL, "Choose pihmgis project file to import", QString::null, "PIHM GIS project (*.pihmgis)"); if (!projFile.isEmpty()) { typedef enum {Skip, Vector, Raster, Path, String, Int, Double} What; typedef struct { What what; const char* prop; } Action; Action lines[] = { //{Skip, "/model/mesh" }; // Excel semi-generated {Skip, NULL}, // date { Skip, "projDir"}, // line 2, { Raster, "dem" }, // line 3, source DEM { Raster, "fill" }, // line 4, sink filled DEM { Skip, "fill" }, // line 5, { Raster, "fdr" }, // line 6, { Raster, "fac" }, // line 7, { Skip, "fac" }, // line 8, See 7 { Raster, "strgrid" }, // line 9, Streams raster { Int, "facThreshold" }, // line 10, Threshold for stream acc { Skip, "strgrid" }, // line 11, See 9 { Skip, "fdr" }, // line 12, See 6 { Raster, "lnk" }, // line 13, { Skip, "strgrid" }, // line 14, See 11 { Skip, "fdr" }, // line 15, See 6 { Vector, "strline" }, // line 16, Streams shapefile { Skip, "lnk" }, // line 17, { Skip, "fdr" }, // line 18, { Raster, "catgrid" }, // line 19, { Skip, "catgrid" }, // line 20, { Vector, "catpoly" }, // line 21, { Skip, "catpoly" }, // line 22, See 21 { Vector, "catdiss" }, // line 23, { Skip, "catdiss" }, // line 24, See 23 { Vector, "catline" }, // line 25, { Skip, "catline" }, // line 26, { Vector, "catsimple" }, // line 27, { Double, "cattol" }, // line 28, line simplification tolerance for diss polylines? { Vector, "strline" }, // line 29, { Vector, "strsimple" }, // line 30, { Double, "strtol" }, // line 31, line simplification tolerance for streams? { Skip, "catsimple" }, // line 32, { Vector, "catsplit" }, // line 33, { Skip, "strsimple" }, // line 34, { Vector, "strsplit" }, // line 35, { Skip, "catsplit" }, // line 36, See 33 { Skip, "strsplit" }, // line 37, See 35 { Vector, "merge" }, // line 38, { Skip, "merge" }, // line 39, { Skip, "merge" }, // line 40, { Path, "pslg" }, // line 41, Planar Straight Line Graph { Skip, "pslg" }, // line 42, { Double, "triangle/angle" }, // line 43, triangulation parameter { Double, "triangle/area" }, // line 44, triangulation parameter { String, "triangle/other" }, // line 45, triangulation parameter { Path, "ele" }, // line 46, { Path, "node" }, // line 47, { Vector, "TIN" }, // line 48, TIN/ele shp file { Path, "/model/mesh" }, // line 49, { String, "ID" }, // line 50, file ID { Skip, NULL }, // line 51, { Skip, NULL }, // line 52, { Skip, NULL }, // line 53, { Path, "Precip" }, // line 54, { Path, "Temp" }, // line 55, { Path, "Humid" }, // line 56, { Path, "Wind" }, // line 57, { Path, "G" }, // line 58, { Path, "Rn" }, // line 59, { Path, "P" }, // line 60, { Path, "Soil" }, // line 61, { Path, "Geol" }, // line 62, { Path, "LC" }, // line 63, { Path, "MF" }, // line 64, { Path, "MP" }, // line 65, { Path, "ISIC" }, // line 66, { Path, "SnowIC" }, // line 67, { Path, "OverlandIC" }, // line 68, { Path, "UnSatIC" }, // line 69, { Path, "SatIC" }, // line 70, { Path, "BC" }, // line 71, { Path, "Source" }, // line 72, { Skip, NULL }, // line 73, { Path, "/model/att" }, // line 74, { Skip, "strsplit" }, // line 75, input stream { Skip, "ele" }, // line 76, { Skip, "node" }, // line 77, { Path, "neigh" }, // line 78, { Skip, NULL }, // line 79, { Path, "/model/riv" }, // line 80, .riv file { Path, "rivdec" }, // line 81, For spatial plots { Path, "/model/para" }, // line 82, { Skip, NULL }, // line 83, { Skip, NULL }, // line 84, { Skip, NULL }, // line 85, { Skip, NULL }, // line 86, { Path, "soil" }, // line 87, in { Path, "/model/soil" }, // line 88, out { Path, "geol" }, // line 89, in { Path, "/model/geol" }, // line 90, out { Path, "nlcd" }, // line 91, NLCD source? { Path, "/model/lc" }, // line 92, { Path, "/model/calib" }, // line 93, { Path, "/model/init" }, // line 94, { Skip, NULL }, // line 95, { Skip, NULL }, // line 96, { Skip, NULL }, // line 97, { Skip, NULL }, // line 98, { Skip, NULL }, // line 99, { Double, "res" }, // line 100, DEM resolution { Double, "step0" }, // line 101, prep steps, adjustments { Double, "step1" }, // line 102, { Double, "step2" }, // line 103, { Double, "step3" }, // line 104, { Double, "step4" }, // line 105, { Double, "step5" }, // line 106, { Double, "step6" }, // line 107, { Double, "step7" }, // line 108, { Double, "step8" }, // line 109, adjustments { Double, "scale" }, // line 110, { Double, "start" }, // line 111, from .para file { Double, "finish" }, // line 112, from .para file { Skip, NULL }, // line 113, { Skip, NULL }, // line 114, { Skip, NULL }, // line 115, { Skip, NULL }, // line 116, { Skip, NULL }, // line 117, { Skip, NULL }, // line 118, { Skip, NULL }, // line 119, { Skip, NULL }, // line 120, { Skip, NULL }, // line 121, }; int lines_size = sizeof(lines)/sizeof(lines[0]); QFile file(projFile); if (file.open(QFile::ReadOnly)) { QTextStream in(&file); in.readLine(); // date QString oldDir = in.readLine(); QRegExp rx("[\\/]"); // file could have been created on other platform, can't rely on QFileInfo qDebug("oldDir = %s", qPrintable(oldDir)); oldDir = oldDir.left(oldDir.lastIndexOf(rx)); int oldDirLength = oldDir.length(); qDebug("oldDir = %s, oldDirLength = %d", qPrintable(oldDir), oldDirLength); QFileInfo fi(projFile); QString projDir = fi.absoluteDir().absPath(); qDebug("new projDir is %s", qPrintable(projDir)); QgsProject *p = QgsProject::instance(); QString s = projFile.left(projFile.length() - 7) + "qgs"; p->setFileName(s); // instead of pihmgis p->writeEntry("Paths", "/Absolute", false); p->writeEntry("pihm", "projDir", QString(".")); bool ok; double d; int i; for( int idx=2; idx<lines_size && !in.atEnd(); ++idx) { s = in.readLine(); switch (lines[idx].what) { case Int: i = s.toInt(&ok); if (ok) p->writeEntry("pihm", lines[idx].prop, i); break; case Double: d = s.toDouble(&ok); if (ok) p->writeEntry("pihm", lines[idx].prop, d); break; case Path: { qDebug("Path Was %s", qPrintable(s)); s = ".." + s.mid(oldDirLength); qDebug("Truncated version is %s", qPrintable(s)); QFileInfo fi(projDir, s); s = p->writePath(fi.canonicalFilePath()); qDebug("Became %s", qPrintable(s)); } // no break!! Don't move case String: p->writeEntry("pihm", lines[idx].prop, s); break; case Raster: { qDebug("Raster Was %s", qPrintable(s)); s = ".." + s.mid(oldDirLength); qDebug("Truncated version is %s", qPrintable(s)); QFileInfo fi(projDir, s); s = fi.canonicalFilePath(); qDebug("Became %s", qPrintable(s)); } p->writeEntry("pihm", lines[idx].prop, p->writePath(s)); mQGisIface->addRasterLayer(s); break; case Vector: { qDebug("Vector Was %s", qPrintable(s)); QFileInfo fi(projDir, ".." + s.mid(oldDirLength)); s = fi.canonicalFilePath(); qDebug("Became %s", qPrintable(s)); } p->writeEntry("pihm", lines[idx].prop, p->writePath(s)); mQGisIface->addVectorLayer(s, QString::null, "ogr"); break; } } } } }
void InitFile::on_pushButton_Run_clicked() { QgsProject *p = QgsProject::instance(); QString projDir = p->readPath(p->readEntry("pihm", "projDir")); p->writeEntry("pihm", "/model/init", p->writePath(ui->lineEditInitFile->text())); // 94 int RunFlag=1; ifstream inFileMesh, inFileRiv; ofstream outFile; inFileMesh.open((ui->lineEditMeshFile->text()).toAscii()); inFileRiv.open((ui->lineEditRivFile->text()).toAscii()); outFile.open((ui->lineEditInitFile->text()).toAscii()); ofstream logFile; QDir dir = QDir::home(); QString home = dir.homePath(); QString logFileName(home+"/log.html"); logFile.open(qPrintable(logFileName)); logFile<<"<html><body><font size=3 color=black> Verifying Files...<br>"; logFile.close(); ui->textBrowser->setSource(logFileName); ui->textBrowser->setFocus(); ui->textBrowser->setModified(TRUE); logFile.open(qPrintable(logFileName), ios::app); logFile<<"Checking Mesh File... "; if (inFileMesh == NULL) { logFile<<"could NOT open file. ERROR<br>"; RunFlag = 0; } else logFile<<"Done!<br>"; logFile<<"Checking Riv File... "; if (inFileRiv == NULL) { logFile<<"could NOT open file. ERROR<br>"; RunFlag = 0; } else logFile<<"Done!<br>"; logFile<<"Checking Init File... "; if (outFile == NULL) { logFile<<"could NOT open file to write. ERROR<br>"; RunFlag = 0; } else logFile<<"Done!<br>"; logFile.close(); ui->textBrowser->reload(); if(RunFlag == 1) { logFile.open(qPrintable(logFileName), ios::app); logFile<<"Generating INIT file... "; int NumEle, NumRiv; inFileMesh >> NumEle; inFileRiv >> NumRiv; for(int i=0; i<NumEle; i++) { outFile<<ui->interception->text().toFloat()<<"\t"; outFile<<ui->snow->text().toFloat()<<"\t"; outFile<<ui->surface->text().toFloat()<<"\t"; outFile<<ui->unsaturated->text().toFloat()<<"\t"; outFile<<ui->saturated->text().toFloat()<<"\n"; } for(int i=0; i<NumRiv; i++) { outFile<<ui->river->text().toFloat()<<"\t"; outFile<<ui->riverBed->text().toFloat()<<"\n"; } logFile<<"Done!<br>"; logFile<<"InitFile Module - COMPLETE"; logFile.close(); ui->textBrowser->reload(); QApplication::processEvents(); }