def load_files(self, folder):
global files
new_files = OrderedDict()
image_files = sorted(os.listdir(folder))
if 'xfwm4' in image_files:
self.load_files(folder + '/xfwm4')
return None
for name in image_files:
if name == 'themerc':
# I might build in themerc support.
# for now, I skip this.
continue
if not name.endswith('.xpm'):
continue
with open('{}/{}'.format(folder, name), 'r') as f:
data = f.read().replace('\n', '')
content = data.split('{')[1]
content = content.strip('{};').split(',')
chars = {}
# Parse the width / height / number of colors
width, height, colors, _ = content[0].strip('"').split(' ')
width = int(width)
height = int(height)
for i in range(int(colors)):
color_info = content[i+1].strip('"')
char, color = color_info.split('c', 1)
char = char[0]
if 's' in color:
color, var = color.split('s', 1)
else:
var = None
color = color.strip()
if color.lower() == 'none':
color = None
if var is not None:
var = var.strip()
if color is not None:
color = color.lstrip('#')
color = Gdk.RGBA(*(x/255 for x in bytes.fromhex(color)))
chars[char] = [color, var]
image = [[[None, None] for x in range(width)] for y in range(height)]
for yi, y in enumerate(content[len(chars)+1:]):
for xi, x in enumerate(y.strip('"')):
image[yi][xi] = chars[x]
filename = name.split('.')[0]
new_files.update({filename: {'image': image,
'size': [width, height]}})
for name in names:
if name not in image_files:
files.update({name: {'image': [[[None, None]]], 'size': [1, 1]}})
for name in sorted(new_files):
files.update({name: new_files[name]})
self.file_selecter.active = None
return None
评论列表
文章目录