bool RegexSourceSink::StartAcquisition(QString dev) { QRegExp rx("(.+)/(.+)(\\..+)"); //somepath/somename.someextension int pos=0; pos=rx.indexIn(dev); dir=rx.cap(1); basename=rx.cap(2); extension=rx.cap(3); QRegExp rt("(\\d+$)"); // now look for digits in the basename pos=rt.indexIn(basename); basename.truncate(pos); // qDebug()<<dir<<basename<<rt.cap(1)<<extension; QString regexString=basename+"(\\d+)"+extension; // qDebug()<<"Will load files that match"<<regexString; QRegExp movieRegex(regexString); QDir basedir(dir); if (!basedir.exists()) qDebug()<<"Extracted dir does not exist"<<dir; QStringList filt; filt<<"*"+extension; basedir.setNameFilters(filt); QStringList files=basedir.entryList(); QMap<int, QString> map; for (int i=0;i<files.count();i++) { if (movieRegex.indexIn(files.at(i))!=-1) { int newnr=movieRegex.cap(1).toInt(); map.insert(newnr,files.at(i)); } } if (map.count()==0) { qDebug()<<"No matching files found"; return false; } // now sort along captured number goodFiles= new QStringList(map.values()); index=0; nFrames=goodFiles->count(); return true; }
bool RegexSourceSink::StartAcquisition(QString dev) { QRegExp rx("(.+)/(.+)(\\..+)"); int pos=0; pos=rx.indexIn(dev); dir=rx.cap(1); basename=rx.cap(2); extension=rx.cap(3); QRegExp rt("(\\d+$)"); pos=rt.indexIn(basename); basename.truncate(pos); // qDebug()<<dir<<basename<<rt.cap(1)<<extension; QString regexString=basename+"\\d+"+extension; // qDebug()<<"Will load files that match"<<regexString; QRegExp movieRegex(regexString); QDir basedir(dir); if (!basedir.exists()) qDebug()<<"Extracted dir does not exist"<<dir; QStringList filt; filt<<"*"+extension; basedir.setNameFilters(filt); QStringList files=basedir.entryList(); goodFiles=new QStringList; for (int i=0;i<files.count();i++) { if (movieRegex.indexIn(files.at(i))!=-1) { goodFiles->append(files.at(i)); } } if (goodFiles->count()==0) qDebug()<<"No matching files found"; index=0; nFrames=goodFiles->count(); return true; }