Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
0
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;
}
Exemplo n.º 4
0
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;
}