2.5: Top Menu
[blender.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", "blenderartists.org")
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: filename + scenename + '_renderlayer.py' in user's scripts dir:
49 default_fname = Blender.Get("scriptsdir")
50 if not default_fname:
51         default_fname = Blender.Get("uscriptsdir")
52
53 if default_fname:
54         default_fname = Blender.sys.join(default_fname, sce.name + '_renderlayer.py')
55         default_fname = default_fname.replace(' ','_')
56
57 def write_renderlayers(filename):
58         "Write the current renderlayer as a bpython script"
59         
60         if not filename.endswith('.py'): filename += '.py'
61
62         fout = file(filename, "w")
63
64         fout.write("""#!BPY
65
66 # \"\"\"
67 # Name: '%s'
68 # Blender: 245
69 # Group: 'Render'
70 # Tooltip: ''
71 # \"\"\"
72
73 __%s__ = "????"
74 __%s__ = "2.43"
75 __%s__ = ["blender"]
76 __%s__ = \"\"\"\\
77 You can edit this section to write something about your script that can
78 be read then with the Scripts Help Browser script in Blender.
79
80 Remember to also set author, version and possibly url(s) above.  You can also
81 define an __email__ tag, check some bundled script's source for examples.
82 \"\"\"
83
84 # This script was automatically generated by the render_save_layers.py bpython script.
85 # By default, these generated scripts are released as Public Domain, but you
86 # are free to change the license of the scripts you generate with
87 # render_save_layers.py before releasing them.
88
89 import Blender
90 from Blender import Scene
91
92 sce = Scene.GetCurrent()
93 rend = sce.render
94 """ % (sce.name, "author", "version", "url", "bpydoc"))
95
96         for lay in rend.renderLayers: # 
97                 fout.write("\nlay = rend.addRenderLayer()\n")
98                 fout.write("lay.name = \"%s\"\n" % lay.name)
99                 
100                 exec("vars = dir(lay)")
101
102                 for var in vars:
103                         if var.startswith('_'):
104                                 continue
105                                 
106                         v = "lay.%s" % var
107                         exec("value = %s" % v)
108                         if type(value) == str:
109                                 fout.write("%s = '%s'\n" % (v, value))
110                         else:
111                                 fout.write("%s = %s\n" % (v, value))
112
113         fout.write('\nBlender.Redraw(-1)')
114         fout.close()
115         try:
116                 Blender.UpdateMenus()
117         except:
118                 Blender.Draw.PupMenu("Warning - check console!%t|Menus could not be automatically updated")
119
120 FileSelector(write_renderlayers, "Save RenderLayers", default_fname)