soc-2008-mxcurioni: merged changes to revision 14798, compilation works for rendering...
[blender-staging.git] / release / scripts / render_save_layers.py
1 #!BPY
2
3 """
4 Name: 'Save Render Layers...'
5 Blender: 245
6 Group: 'Render'
7 Tooltip: 'Save current renderlayers as a BPython script'
8 """
9
10 __author__ = "Campbell Barton"
11 __url__ = ("blender", "elysiun")
12 __version__ = "1.0"
13
14 __bpydoc__ = """\
15 """
16
17 # --------------------------------------------------------------------------
18 # The scripts generated by this script are put under Public Domain by
19 # default, but you are free to edit the ones you generate with this script
20 # and change their license to another one of your choice.
21 # --------------------------------------------------------------------------
22 # ***** BEGIN GPL LICENSE BLOCK *****
23 #
24 # This program is free software; you can redistribute it and/or
25 # modify it under the terms of the GNU General Public License
26 # as published by the Free Software Foundation; either version 2
27 # of the License, or (at your option) any later version.
28 #
29 # This program is distributed in the hope that it will be useful,
30 # but WITHOUT ANY WARRANTY; without even the implied warranty of
31 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
32 # GNU General Public License for more details.
33 #
34 # You should have received a copy of the GNU General Public License
35 # along with this program; if not, write to the Free Software Foundation,
36 # Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
37 #
38 # ***** END GPL LICENCE BLOCK *****
39 # --------------------------------------------------------------------------
40
41 import Blender
42 from Blender.Window import Theme, FileSelector
43 from Blender import Scene
44
45 sce = Scene.GetCurrent()
46 rend = sce.render
47
48 # default filename: theme's name + '_theme.py' in user's scripts dir:
49 default_fname = Blender.Get("scriptsdir")
50 default_fname = Blender.sys.join(default_fname, sce.name + '_renderlayer.py')
51 default_fname = default_fname.replace(' ','_')
52
53 def write_renderlayers(filename):
54         "Write the current renderlayer as a bpython script"
55         
56         if not filename.endswith('.py'): filename += '.py'
57
58         fout = file(filename, "w")
59
60         fout.write("""#!BPY
61
62 # \"\"\"
63 # Name: '%s'
64 # Blender: 245
65 # Group: 'Render'
66 # Tooltip: ''
67 # \"\"\"
68
69 __%s__ = "????"
70 __%s__ = "2.43"
71 __%s__ = ["blender"]
72 __%s__ = \"\"\"\\
73 You can edit this section to write something about your script that can
74 be read then with the Scripts Help Browser script in Blender.
75
76 Remember to also set author, version and possibly url(s) above.  You can also
77 define an __email__ tag, check some bundled script's source for examples.
78 \"\"\"
79
80 # This script was automatically generated by the save_theme.py bpython script.
81 # By default, these generated scripts are released as Public Domain, but you
82 # are free to change the license of the scripts you generate with
83 # save_theme.py before releasing them.
84
85 import Blender
86 from Blender import Scene
87
88 sce = Scene.GetCurrent()
89 rend = sce.render
90 """ % (sce.name, "author", "version", "url", "bpydoc"))
91
92         for lay in rend.renderLayers: # 
93                 fout.write("\nlay = rend.addRenderLayer()\n")
94                 fout.write("lay.name = \"%s\"\n" % lay.name)
95                 
96                 exec("vars = dir(lay)")
97
98                 for var in vars:
99                         if var.startswith('_'):
100                                 continue
101                                 
102                         v = "lay.%s" % var
103                         exec("value = %s" % v)
104                         if type(value) == str:
105                                 fout.write("%s = '%s'\n" % (v, value))
106                         else:
107                                 fout.write("%s = %s\n" % (v, value))
108
109         fout.write('\nBlender.Redraw(-1)')
110         fout.close()
111         try:
112                 Blender.UpdateMenus()
113         except:
114                 Blender.Draw.PupMenu("Warning - check console!%t|Menus could not be automatically updated")
115
116 FileSelector(write_renderlayers, "Save RenderLayers", default_fname)