blender/release/scripts/save_theme.py

76 lines
2.1 KiB
Python
Raw Normal View History

#!BPY
"""
Name: 'Save Current Theme'
Blender: 234
Group: 'Help'
Tooltip: 'Save current theme as a bpython script'
"""
# $Id$
#
# --------------------------------------------------------------------------
# save_theme version 2.34 Sep 20, 2004
# Copyright (C) 2004: Willian P. Germano, wgermano _at_ ig.com.br
# --------------------------------------------------------------------------
# Released under the Blender Artistic License (BAL):
# http://download.blender.org/documentation/html/x21254.html
#
# The scripts generated by this script are put under Public Domain by
# default, but you are free to edit the ones you generate with this script
# and change their license to another one of your choice.
# --------------------------------------------------------------------------
import Blender
from Blender.Window import Theme, FileSelector
theme = Theme.Get()[0] # get current theme
# default filename: theme's name + '_theme.py' in user's scripts dir:
default_fname = Blender.Get("scriptsdir")
default_fname = Blender.sys.join(default_fname, theme.name + '_theme.py')
def write_theme(filename):
"Write the current theme as a bpython script"
if filename.find('.py', -3) <= 0: filename += '.py'
fout = file(filename, "w")
fout.write("""#!BPY
\"\"\"
Name: '%s'
Blender: 234
Group: 'Theme'
Tooltip: 'Change current theme'
\"\"\"
# This script was automatically generated by the save_theme.py bpython script.
# By default, these generated scripts are released as Public Domain, but you
# are free to change the license of the scripts you generate with
# save_theme.py before releasing them.
import Blender
from Blender.Window import Theme
theme = Theme.New('%s')
""" % (theme.name, theme.name))
for tsp in theme.get(): #
command = "\n%s = theme.get('%s')" % (tsp, tsp)
fout.write(command + "\n")
exec(command)
exec("vars = dir(%s)" % tsp)
vars.remove('theme')
for var in vars:
v = "%s.%s" % (tsp, var)
exec("value = %s" % v)
fout.write("%s = %s\n" % (v, value))
fout.write('\nBlender.Redraw(-1)')
fout.close()
FileSelector(write_theme, "Save Current Theme", default_fname)