diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index 3c05ab04ca9c5b0f390dbe7f7965efba28c60988..79a516619c4c948e4f7b0f11b73c19a3e768c778 100755 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -657,7 +657,18 @@ bool MainWindow::addPedestrianGroup(int groupID,QString fileName) auto&& geometry = _visualisationThread->getGeometry(); //try to get a geometry filename - QString geometry_file=SaxParser::extractGeometryFilename(fileName); + if(fileName.endsWith(".xml",Qt::CaseInsensitive)) + { + Debug::Messages("Extract geometry file from <xml> trajectories"); + QString geometry_file=SaxParser::extractGeometryFilename(fileName); + } + else + { + Debug::Messages("Extract geometry file from <txt> trajectories"); + QString geometry_file=SaxParser::extractGeometryFilenameTXT(fileName); + } + + Debug::Messages("MainWindow::addPedestrianGroup: geometry name: <%s>", geometry_file.toStdString().c_str()); // if xml is detected, just load and show the geometry then exit if(geometry_file.endsWith(".xml",Qt::CaseInsensitive)) { diff --git a/src/SaxParser.cpp b/src/SaxParser.cpp index 5f082b0105eb4eaa7cc8d0d9e53820b8d6bc397d..fca1609ff3ecf5ac37973062cc87d5d62dada851 100644 --- a/src/SaxParser.cpp +++ b/src/SaxParser.cpp @@ -1103,6 +1103,31 @@ QString SaxParser::extractGeometryFilename(QString &filename) return ""; } +QString SaxParser::extractGeometryFilenameTXT(QString &filename) +{ + QString extracted_geo_name=""; + QFile file(filename); + QString line; + if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { + QTextStream in(&file); + while (!in.atEnd()) { + //look for a line with + line = in.readLine(); + std::cout << " >> " >> line >> endl; + if(line.split(":").size()==2) + { + if(line.split(":")[0] == "#geometry") + { + extracted_geo_name = line.split(":")[1] + } + } + }// while + } // if open + cout << ">> geo: " << extracted_geo_name << endl; + return extracted_geo_name; +} + + void SaxParser::parseGeometryXMLV04(QString filename, GeometryFactory& geoFac) { cout << "parsing 04\n" ; @@ -1371,8 +1396,6 @@ bool SaxParser::ParseTxtFormat(const QString &fileName, SyncData* dataset, doubl int agentID=-1 ; int frameID=-1; double color=155 ; - std::cout << pieces.size() << "\n"; - switch(pieces.size()) { case 5: diff --git a/src/SaxParser.h b/src/SaxParser.h index c953dcc2103a6c4e7c11ef3a9556c015bd22d18e..3ccc0d4ecad55c6e65be8fb65c399d1c469ca2da 100644 --- a/src/SaxParser.h +++ b/src/SaxParser.h @@ -77,7 +77,7 @@ public: /// take a large file and find the geometry file location. static QString extractGeometryFilename(QString& filename); - + static QString SaxParser::extractGeometryFilenameTXT(QString &filename); /// parse the txt file format static bool ParseTxtFormat(const QString& fileName, SyncData* dataset, double * fps);