Newer
Older
GB_Printer / Dump / inkscape / share / extensions / export_gimp_palette.py
#!/usr/bin/env python 
'''
Author: Jos Hirth, kaioa.com
License: GNU General Public License - http://www.gnu.org/licenses/gpl.html
Warranty: see above
'''

DOCNAME='sodipodi:docname'

# standard library
import sys
# third party
try:
    from xml.dom.minidom import parse
except:
    inkex.errormsg(_('The export_gpl.py module requires PyXML.  Please download the latest version from http://pyxml.sourceforge.net/.'))
    sys.exit()
# local library
import inkex
import simplestyle

inkex.localize()

colortags=(u'fill',u'stroke',u'stop-color',u'flood-color',u'lighting-color')
colors={}

def walk(node):
    checkStyle(node)
    if node.hasChildNodes():
        childs=node.childNodes
        for child in childs:
            walk(child)

def checkStyle(node):
    if hasattr(node,"hasAttributes") and node.hasAttributes():
        sa=node.getAttribute('style')
        if sa!='':
            styles=simplestyle.parseStyle(sa)
            for c in range(len(colortags)):
                if colortags[c] in styles.keys():
                    addColor(styles[colortags[c]])

def addColor(col):
    if simplestyle.isColor(col):
        c=simplestyle.parseColor(col)
        colors['%3i %3i %3i ' % (c[0],c[1],c[2])]=simplestyle.formatColoria(c).upper()

stream = open(sys.argv[-1:][0],'r')
dom = parse(stream)
stream.close()
walk(dom)
print 'GIMP Palette\nName: %s\n#' % (dom.getElementsByTagName('svg')[0].getAttribute(DOCNAME).split('.')[0])

for k,v in sorted(colors.items()):
    print k+v


# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 fileencoding=utf-8 textwidth=99