Exemplo n.º 1
0
def writeFilters(projectData, projectPath):
    filtersDict = mapFilters(projectData)

    fileStrings = []
    existingFilters = set()

    keys = sorted(filtersDict.keys())

    for k in keys:
        folders = k.split("\\")
        currentFolder = ""
        for folder in folders:
            currentFolder = os.path.join(currentFolder, folder)
            if currentFolder in existingFilters:
                continue
            existingFilters.add(currentFolder)

        includes = sorted(filtersDict[k])
        for i in includes:
            filePath, fileExtension = os.path.splitext(i)
            fileStrings.append('    <{0} Include="{1}">\n'.format(projectData.tagsMap[fileExtension], i))
            fileStrings.append("      <Filter>{0}</Filter>\n".format(k))
            fileStrings.append("    </{0}>\n".format(projectData.tagsMap[fileExtension]))

    filterStrings = []

    folders = sorted(existingFilters)
    for folder in folders:
        filterStrings.append('    <Filter Include="{0}">\n'.format(folder))
        filterStrings.append("      <UniqueIdentifier>{" + str(generateGUID(folder)) + "}</UniqueIdentifier>\n")
        filterStrings.append("    </Filter>\n")

    filename = "{0}\\{1}.vcxproj.filters".format(projectPath, projectData.name)
    print("writing {0}".format(filename))
    with files.force_open(filename, "w+") as f:
        f.truncate()
        f.write('<?xml version="1.0" encoding="utf-8"?>\n')
        f.write('<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\n')
        f.write("  <ItemGroup>\n")
        [f.write(x) for x in filterStrings]
        f.write("  </ItemGroup>\n  <ItemGroup>\n")
        [f.write(x) for x in fileStrings]
        f.write("  </ItemGroup>\n</Project>")
Exemplo n.º 2
0
def fixGuard(file, root, guardString):
    filepath = os.path.join(root, file)
    data = ''
    with open(filepath, mode='r') as f:
        data = f.read()

    s = pragmaSearch.split(data)

    if len(s) < 4:
        return

    if (s[2] is not None) and ("// no " in s[2]):
        return

    newData = "#ifndef " + guardString +"\n#define " + guardString + "\n#pragma once\n\n" + s[3] + "\n\n#endif // " + guardString
    if (newData == data):
        return
    
    with files.force_open(filepath, mode='w') as f:
        f.write(newData)
Exemplo n.º 3
0
def loadTemplateVcproj(path):
    with files.force_open("{0}\\template.vcxproj.xml".format(path), "r") as t:
        projectText = t.read()
    return projectText