You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.8 KiB
C++

#include "WorkBenchHandler.h"
#include "FITK_Kernel/FITKCore/FITKOperatorRepo.h"
#include "FITK_Kernel/FITKCore/FITKActionOperator.h"
#include "FITK_Kernel/FITKCore/FITKDirFileTools.h"
#include "FITK_Kernel/FITKCore/FITKThreadPool.h"
#include <QDir>
void CFDPostWorkBenchHandler::execHandler()
{
//文件数量
const int n = this->getInputFilesCount();
for (int i = 0; i < n; ++i)
{
//遍历文件
AppFrame::IOFileInfo finfo = this->getInputFileInfo(i);
if (finfo._isFile)
{
this->importFile(finfo);
}
else
{
this->importFolder(finfo);
}
}
}
void CFDPostWorkBenchHandler::execOutput()
{
}
void CFDPostWorkBenchHandler::importFile(AppFrame::IOFileInfo finfo)
{
QString fileName = QString("%1/%2").arg(finfo._path).arg(finfo._name);
//获取操作器
Core::FITKActionOperator* oper = FITKOPERREPO->getOperatorT<Core::FITKActionOperator>("actionOpen");
if (oper == nullptr) return;
oper->setArgs("files", fileName);
//执行操作
oper->execProfession();
Core::FITKThreadPool::getInstance()->wait();
}
void CFDPostWorkBenchHandler::importFolder(AppFrame::IOFileInfo finfo)
{
QDir dir(finfo._path);
if (!dir.exists()) return;
QString type = QString("*.%1").arg(finfo._suffix);
dir.setNameFilters(QStringList() << type);
// 获取文件信息列表
QFileInfoList fileInfoList = dir.entryInfoList();
if (fileInfoList.isEmpty())return;
QString filename = finfo._path + "/" + finfo._name + "..." + finfo._suffix;
//获取操作器
Core::FITKActionOperator* oper = FITKOPERREPO->getOperatorT<Core::FITKActionOperator>("actionOpen");
if (oper == nullptr) return;
oper->setArgs("files", filename);
//执行操作
oper->execProfession();
Core::FITKThreadPool::getInstance()->wait();
}