blender/release/scripts/save_theme.py
Willian Padovani Germano a96ed881dc BPython:
- Scripts:
    fixed error in "Save Current Theme" which prevented it from automatically updating script registration in menus.
    cosmetic changes in a couple of Campbell's sel_same.py script strings + more descriptive name for its new menu place (3d view, face mode -> select menu).
    small updates to help_browser.py script.

 The above changes are related to this:
- Added new script menu entries: Render (for exporters to renderers), Themes, FaceSelect (this already at the proper place).  Updated Scripts win->Scripts menu so it won't show all available entries, only  the ones we mean to see there.
- Updated menu registration so that scripts folders can become trees.  The release/scripts/ dir should be updated soon with subdirs like converters/, modifiers/, generators/ or whatever -- better discuss first (or is it? /me afraid of long irc discussions during meetings :) ).

- Modules:
    Blender: added 'udatadir' option to .Get() function and added var Blender.mode to tell if Blender is in bg or interactive mode.
    NMesh: added Campbell's nmesh.transform(matrix, recalc_normals = False) method (reworked, so my fault if it doesn't work).

- Bugs fixed:
    #2123: http://projects.blender.org/tracker/?func=detail&atid=125&aid=2123&group_id=9
    Reported by Ken Hughes (thanks!), who also found the exact problem later (it was in Text.Load, not with script links -- if only I had checked emails these days ... lost > 1 hour today to find the problem: passed filename to M_Text_Load was later being written over by a function called by add_text).  Also saw that Text.Load wasn't checking existence of passed filename (duh!), now it does.

    #1655: http://projects.blender.org/tracker/?func=detail&atid=125&aid=1655&group_id=9
    Reported by Chris Want (thanks!): command line "blender -P script" not working properly for bg mode ("blender -b blendfile -P script").
    Had to make some small updates to get it working (bg mode for scripts was never explicitely handled, it worked due to collateral effects, let's say), interested readers can check the report after I update it or the API_intro.py doc file.  After more testing we can make further updates.  Updated many places to not call redraws if in bg mode, now it is officially available.  Blender outputs its own info when rendering in bg mode, if that is considered a nuissance we'll have to add a few "if (during_script())" calls outside bpython.

- Removed a few warnings here and there and also updated docs.
2005-03-19 06:24:55 +00:00

121 lines
3.7 KiB
Python

#!BPY
"""
Name: 'Save Current Theme...'
Blender: 236
Group: 'Export'
Tooltip: 'Save current theme as a bpython script'
"""
__author__ = "Willian P. Germano"
__url__ = ("blender", "elysiun")
__version__ = "1.1 2005/13/01"
__bpydoc__ = """\
This script saves the current Theme in Blender as a Blender Python script.
Usage:
Use Blender's Theme tab in the User Preferences window to create and name your
theme, then run this script from the File->Export menu to save it.
It is saved as a bpython script, meaning that you can simply run it to change
the current theme. By default it is currently saved under the
"Misc" group, available only from the Scripts window "Scripts->Misc" menu.
To appear in the menu, a theme saved with this script must be put in your
Blender's scripts dir, that's what happens by default when you save one by
yourself. If you don't know where this dir is, running
import Blender<br>print Blender.Get("scriptsdir")
on the Text Editor window (use menu or ALT+P to run it) will write the path on
the console.
Remember to edit your exported theme's source file to put your name and
some information on it before sharing it with others.
"""
# $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')
default_fname = default_fname.replace(' ','_')
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: 236
# Group: 'Themes'
# Tooltip: 'Change current theme'
# \"\"\"
__%s__ = "????"
__%s__ = "1.0"
__%s__ = ["blender"]
__%s__ = \"\"\"\\
You can edit this section to write something about your script that can
be read then with the Scripts Help Browser script in Blender.
Remember to also set author, version and possibly url(s) above. You can also
define an __email__ tag, check some bundled script's source for examples.
\"\"\"
# 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, "author", "version", "url", "bpydoc", 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()
try:
Blender.UpdateMenus()
except:
Blender.Draw.PupMenu("Warning - check console!%t|Menus could not be automatically updated")
FileSelector(write_theme, "Save Current Theme", default_fname)