bool FileExtManager::IsFileType(const wxString& filename, FileExtManager::FileType type) { wxCriticalSectionLocker locker(m_CS); FileType ft = GetType(filename); if(ft == TypeOther) { // failed to detect the type if(!AutoDetectByContent(filename, ft)) { return false; } } return (ft == type); }
bool FileExtManager::IsJavaFile(const wxString& filename) { FileType ft = GetType(filename); if(ft == TypeOther) { // failed to detect the type if(!AutoDetectByContent(filename, ft)) { return false; } } return ft == TypeJava; }
bool FileExtManager::IsCxxFile(const wxString& filename) { FileType ft = GetType(filename); if(ft == TypeOther) { // failed to detect the type if(!AutoDetectByContent(filename, ft)) { return false; } } return ft == TypeSourceC || ft == TypeSourceCpp || ft == TypeHeader; }
FileExtManager::FileType FileExtManager::GetType(const wxString& filename, FileExtManager::FileType defaultType) { Init(); wxCriticalSectionLocker locker(m_CS); wxFileName fn(filename); if(fn.IsOk() == false) { return defaultType; } wxString e(fn.GetExt()); e.MakeLower(); e.Trim().Trim(false); std::unordered_map<wxString, FileType>::iterator iter = m_map.find(e); if(iter == m_map.end()) { // try to see if the file is a makefile if(fn.GetFullName().CmpNoCase(wxT("makefile")) == 0) { return TypeMakefile; } else if(fn.GetFullName().Lower() == "dockerfile") { return TypeDockerfile; } else { // try auto detecting FileType autoDetectType = defaultType; if(AutoDetectByContent(filename, autoDetectType)) { return autoDetectType; } } return defaultType; } else if((iter->second == TypeText) && (fn.GetFullName().CmpNoCase("CMakeLists.txt") == 0)) { return TypeCMake; } FileExtManager::FileType type = iter->second; if(fn.Exists() && (type == TypeWorkspace)) { wxString content; if(FileUtils::ReadFileContent(fn, content)) { if(content.Contains("<CodeLite_Workspace")) { return TypeWorkspace; } else { JSON root(content); if(!root.isOk()) return TypeWorkspace; if(root.toElement().hasNamedObject("NodeJS")) { return TypeWorkspaceNodeJS; } else if(root.toElement().hasNamedObject("Docker")) { return TypeWorkspaceDocker; } else { return TypeWorkspacePHP; } } } else { return TypeWorkspace; } } return iter->second; }