#include "ConvertorManager.h" //#include "ConsoleOutputWidget.h" #include //#include "Geometry.h" //#include "Log.h" #include "ObjectGenralFactory.h" // #include "SLFAsciiConvertor.h" //void OSGFRAMEWORK_EXPORT AppendConsole(pai::log::Priority priority,const QString &output); BEGIN_OSGGRAPHICS_NAMESPACE; //CONST QString FORMAT_NOT_SUPPORT=QObject::tr("该文件编译器不支持,文件格式错误!"); ConvertorManager::ConvertorManager() { all=0; } ConvertorManager::~ConvertorManager() { qDeleteAll(m_vAllConvertors.begin(),m_vAllConvertors.end()); m_vAllConvertors.clear(); } void ConvertorManager::LoadAllConvertorPlugin() { // //AppendConsole(pai::log::PAI_INFO,QObject::tr("格式转换模块加载中...")); m_vConvertorNames=pai::datamodel::LoadAllPlugin("convertor"); StatisticalAllConvertors(); // //AppendConsole(pai::log::PAI_INFO,QObject::tr("格式转换模块加载完成")); } void ConvertorManager::UnLoadAllConvertorPlugin() { qDeleteAll(m_vAllConvertors.begin(),m_vAllConvertors.end()); m_vAllConvertors.clear(); } QVector ConvertorManager::GetSupportConvertors( const QString &filename,DiDepthProgress *pDepthProgress) { m_vFileNameSupportConvertor.clear(); bool isInvalid=IsInvalidString(filename); if(isInvalid) return m_vFileNameSupportConvertor; QFileInfo currentfile(filename); QVector::iterator it=m_vAllConvertors.begin(); for (;it!=m_vAllConvertors.end();it++) { (*it)->Init(); //第一步判断是否满足后缀过滤的要求 QVector supportedFileExt=(*it)->GetSupportFileExtensions(); bool fileExtIsOk=false; for(int i=0;i-1) { int flag=0; QString sx=currentfile.suffix().toUpper(); QString s1j=s1[j].toUpper(); if(sx.size()>=s1j.size()) { for(int n=0;nSetDepthProgress(pDepthProgress); bool bSupport=(*it)->IsSupport(filename); (*it)->SetDepthProgress(0); if (!bSupport) continue ; m_vFileNameSupportConvertor.push_back(*it); } if (m_vFileNameSupportConvertor.isEmpty()&&isInvalid) { if(all==0||all==QMessageBox::No||all==QMessageBox::Yes) { all=QMessageBox::information(NULL,filename,"没有合适的转换模块!是否强制转换?",QMessageBox::Yes|QMessageBox::No|QMessageBox::NoAll|QMessageBox::YesAll); } if(all==QMessageBox::NoAll||all==QMessageBox::No) return m_vFileNameSupportConvertor; it=m_vAllConvertors.begin(); for (;it!=m_vAllConvertors.end();it++) { //第一步判断是否满足后缀过滤的要求 bool bSupport=(*it)->IsSupport(filename); if (!bSupport)continue ; m_vFileNameSupportConvertor.push_back(*it); break; } if (m_vFileNameSupportConvertor.isEmpty()) { // AppendConsole(pai::log::PAI_WARN,QObject::tr("该文件解编器不支持,文件格式错误!")); QMessageBox::about(NULL, QObject::tr("警告"), QObject::tr("该文件解编器不支持,文件格式错误!")); } } return m_vFileNameSupportConvertor; } QVectorConvertorManager::GetSupportFileExtensions() { if(m_vAllSuffixFileName.size()) return m_vAllSuffixFileName; else { QVector::iterator itor=m_vAllConvertors.begin(); int j=0; for (;itor!=m_vAllConvertors.end();itor++) { QVectorvSupportFileExtensionsConvertor=(*itor)->GetSupportFileExtensions(); for (int i=0;i::iterator itor=std::find(m_vAllSuffixFileName.begin(),m_vAllSuffixFileName.end(),vSupportFileExtensionsConvertor[i]); if (itor==m_vAllSuffixFileName.end())//没有重复 { m_vAllSuffixFileName.push_back(vSupportFileExtensionsConvertor[i]); } } j++; } return m_vAllSuffixFileName; } } QVectorConvertorManager::GetAllConvertors() { return m_vAllConvertors; } void ConvertorManager::StatisticalAllConvertors() { m_vAllConvertors.clear(); std::map&mapConvertorType=IConvertor::GetFatory().m_map; { std::map::iterator it=mapConvertorType.begin(); for (;it!=mapConvertorType.end();++it) { IConvertor*pConvertor=IConvertor::GetFatory().CreateObject(it->first); if(!pConvertor) { continue ; } pConvertor->SetConvertorTypeName(it->first.m_strConvertorTypeName); // AppendConsole(pai::log::PAI_INFO,("格式转换模块加载完成:"+it->first.m_strConvertorTypeName)); m_vAllConvertors.push_back(pConvertor); } } // sConvertorKey convertorKey(/*GetSLFAsciiConvertorTypeID()*/"{BB64AD58-A7F7-4AF7-956F-518372C298D2}","SLFAscii Well Log Convertor"); // CSLFAsciiConvertor* pSLFAConvertor= new CSLFAsciiConvertor(); // IConvertor* pConvertor= dynamic_cast(pSLFAConvertor); // if(!pConvertor) { // return; // } // pConvertor->SetConvertorTypeName(convertorKey.m_strConvertorTypeName); // m_vAllConvertors.push_back(pConvertor); } END_OSGGRAPHICS_NAMESPACE;