def xmlwriter(data): #xmlwriter() is loaded automatically after scan is run
        tree = open('games.xml' ,'w')
        tree.write('''<?xml version="1.0"?>\n''')
        root = Element("Library")
        for key, value in sorted(data.items()): #removes extensions for filenames for key values
            game = ET.SubElement(root, 'game')
            system = ET.SubElement(game, 'system')
            title = ET.SubElement(game, 'title')
            path = ET.SubElement(game, 'path')
            core = ET.SubElement(game, 'core')
            image = ET.SubElement(game, 'image')

            game_extension = key[-4::].lower()
            if win32_check.check():
                core_ext = '.dll'
                win32_tags(system, core, game_extension)
            else:
                core_ext = '.so'
                linux_tags(system, core, game_extension)
                print(core.text)
            if '.gb' in game_extension:
                clean_key = key.strip(key[-3::])
            else:
                clean_key = key.strip(key[-4::])

            title.text = clean_key
            image.text = root_path.change() + '/missing_artwork.png'
            path.text = '"{:}"'.format(value)


        indent(root) #root doesn't have to be returned
        tree.write(ET.tostring(root).decode('utf-8'))
        tree.close()
        return 'Wrote .xml'
def write_cg(ammended_data):
    cgp = root_path.change('shaders') + '/retroarch.cgp'
    with open(cgp, 'w') as ofile:
        ofile.seek(0)
        ofile.write(ammended_data)
        ofile.write('wrap_mode0 = "clamp_to_border"\n')
        ofile.write('float_framebuffer0 = "false"\n')
def ammend_config(data):
    with open(OUTPUT_CFG, 'r') as infile:
        for index, line in enumerate(infile):
            if 'video_shader' == line.split()[0]:
                data[index] = 'video_shader = "{:}/retroarch.cgp"\n'.format(root_path.change('shaders'))
                return data
        print('never found')
def read_shader(selected_shader):
    shader = root_path.change('shaders') + selected_shader
    with open(shader, "r") as shader_file:
        if ".cgp" in selected_shader:
            shader_data = shader_file.readlines()
            first_line = int(shader_data[0].split()[2].replace('"', ''))
            num_of_shaders = first_line
            for i in range(0, num_of_shaders-1):
                for line in shader_data:
                    if 'filter_linear{:}'.format(str(i)) == line.split()[0]:
                        index_for_wrap = shader_data.index(line) + 1
                        shader_data[index_for_wrap] = 'wrap_mode{:} = "clamp_to_border"\n'.format(i)
                        break
            return write_shader(''.join(shader_data))                
        else:
            cg_file = ['shaders = "1"\n', 'shader0 = ""', \
                       'wrap_mode0 = "clamp_to_border"\n', \
                       'float_framebuffer0 = "false"\n']
            
            cg_file[1] = 'shader0 = "{:}"\n'.format(shader)
            write_cg(''.join(cg_file))
            
    config_data = get_config_data(OUTPUT_CFG)
    ammended_data = ammend_config(config_data)
    write_config(OUTPUT_CFG, ammended_data)
    return ('Shader wrote to ', )
def get_title(get_path=0):
    with open(root_path.change('..') + '/shaders.txt', 'r') as fid:
        lines = fid.readlines()
        if get_path:
            return get_shader_path(lines)
        
        shader_title = get_jslist(lines, tag='shader')
        #shader_path = get_jslist(lines[1], tag='shader_path')
        #pyotherside.send('shader_path',shader_path)
    return shader_title