#!/usr/bin/env python import os import glob import subprocess import shutil COLOR_NONE = '\x1b[0m' COLOR_GREEN = '\x1b[32;01m' COLOR_RED = '\x1b[31;01m' METADATA={"Name":"LliureX 14.06","Comment":"Lliurex 14.06 icon theme based on Neu","Inherits":"Humanity,gnome,hicolor","Example":"user-home","Directories":""} CONTEXT={"actions":"Actions","apps":"Applications","categories":"Categories","devices":"Devices","emblems":"Emblems","mimetypes":"MimeTypes","places":"Places","status":"Status"} SRC_DIR="lliurex-neu" DST_DIR="build-desktop" DIRS=["actions","apps","categories","devices","emblems","mimetypes","places","status"] SIZES=[0,16,32,24,48] print COLOR_GREEN,"* building icon set",COLOR_NONE if not os.path.exists(DST_DIR): print COLOR_GREEN,"* creating dst path",COLOR_NONE os.mkdir(DST_DIR) for sz in SIZES: if sz==0: print COLOR_GREEN,"* building scalable",COLOR_NONE sz_dir="scalable" else: sz_dir=str(sz) print COLOR_GREEN,"* building %dx%d" % (sz,sz),COLOR_NONE if not os.path.exists(DST_DIR+"/"+sz_dir): print COLOR_GREEN,"* creating path: %s" % (DST_DIR+"/"+sz_dir),COLOR_NONE os.mkdir(DST_DIR+"/"+sz_dir) for dr in DIRS: if not sz==0: METADATA["Directories"]=METADATA["Directories"]+","+sz_dir+"/"+dr else: METADATA["Directories"]=METADATA["Directories"]+",scalable/"+dr if not os.path.exists(DST_DIR+"/"+sz_dir+"/"+dr): print COLOR_GREEN,"* creating path %s" % (DST_DIR+"/"+sz_dir+"/"+dr),COLOR_NONE os.mkdir(DST_DIR+"/"+sz_dir+"/"+dr) print COLOR_GREEN,"* %s" % (DST_DIR+"/"+str(sz_dir)+"/"+dr),COLOR_NONE for f in glob.glob(SRC_DIR+"/"+dr+"/*.svg"): if not os.path.islink(f): #png if not sz==0: print COLOR_RED,"* processing %s" % (os.path.basename(f)),COLOR_NONE #subprocess.Popen(["inkscape",f,"-z","-w",str(sz),"-h",str(sz),"-e="+DST_DIR+"/"+sz_dir+"/"+dr+"/"+os.path.basename(f).replace(".svg",".png")]) subprocess.Popen(["rsvg-convert","--width="+str(sz),"--height="+str(sz),"-o",DST_DIR+"/"+sz_dir+"/"+dr+"/"+os.path.basename(f).replace(".svg",".png"),f]) #scalable case else: shutil.copy(f,DST_DIR+"/"+sz_dir+"/"+dr) else: if not sz==0: print COLOR_RED,"* symlink %s:%s" % (os.path.basename(f),os.path.realpath(f)),COLOR_NONE #shutil.copy(f,DST_DIR+"/"+sz_dir+"/"+dr) os.symlink(os.readlink(f).replace(".svg",".png"),DST_DIR+"/"+sz_dir+"/"+dr+"/"+os.path.basename(f).replace(".svg",".png")) else: os.symlink(os.readlink(f),DST_DIR+"/"+sz_dir+"/"+dr+"/"+os.path.basename(f)) METADATA["Directories"]=METADATA["Directories"].lstrip(",") print COLOR_GREEN,"Writing Theme metadata...",COLOR_NONE f=open(DST_DIR+"/index.theme","w") f.write("[Icon Theme]\n") for data in METADATA: f.write("%s=%s\n"%(data,METADATA[data])) for sz in SIZES: for dr in DIRS: if not sz==0: f.write("[%d/%s]\n" % (sz,dr)) f.write("Size=%d\n"%(sz)) f.write("Context=%s\n" % (CONTEXT[dr])) f.write("Type=Fixed\n") else: f.write("[scalable/%s]\n" % (dr)) f.write("Size=48\n") f.write("MinSize=48\n") f.write("MaxSize=256\n") f.write("Context=%s\n" % (CONTEXT[dr])) f.write("Type=Scalable\n") f.close() print COLOR_GREEN,"Process completed",COLOR_NONE