1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
|
import os
try:
from StringIO import StringIO
except ImportError:
from io import StringIO
Import('env');
Export('env');
targets=[]
def make_gui_icons_action(target, source, env):
dst = target[0]
png_icons = source
icons_string = StringIO()
icons_sizes = ""
for f in png_icons:
fname = str(f)
icons_string.write('\t"')
size=0
with open(fname, 'rb') as pngf:
b = pngf.read(1)
while(len(b) == 1):
icons_string.write("\\" + str(hex(ord(b)))[1:])
size+=1
b = pngf.read(1)
if (icons_sizes!=""):
icons_sizes+=","
icons_sizes+=str(size)
icons_string.write('"')
if fname != png_icons[-1]:
icons_string.write(",")
icons_string.write('\n')
s = StringIO()
s.write("/* THIS FILE IS GENERATED DO NOT EDIT */\n")
s.write("#ifndef _EDITOR_ICONS_H\n")
s.write("#define _EDITOR_ICONS_H\n")
s.write("static const int gui_icons_count = {};\n".format(len(png_icons)))
s.write("static const char *gui_icons_sources[] = {\n")
s.write(icons_string.getvalue())
s.write('};\n\n')
s.write("static const int gui_icons_sizes[] = {\n")
s.write("\t"+icons_sizes+"\n")
s.write('};\n\n')
s.write("static const char *gui_icons_names[] = {\n")
# this is used to store the indices of thumbnail icons
thumb_medium_indices = [];
index = 0
for f in png_icons:
fname = str(f)
icon_name = os.path.basename(fname)[5:-4].title().replace("_", "")
# some special cases
s.write('\t"{0}"'.format(icon_name))
if fname != png_icons[-1]:
s.write(",")
s.write('\n')
index += 1
s.write('};\n')
s.write("#endif\n")
with open(str(dst), "w") as f:
f.write(s.getvalue())
s.close()
icons_string.close()
env.add_sources(targets,"*.cpp")
make_gui_icons_builder = Builder(action=make_gui_icons_action,
suffix='.h',
src_suffix='.png')
env['BUILDERS']['MakeEditorIconsBuilder'] = make_gui_icons_builder
env.Alias('gui_icons', [env.MakeEditorIconsBuilder('#gui/gui_icons.gen.h', Glob("icons/*.png"))])
env.libs+=env.Library('gui', targets);
|