===Python API===
[blender.git] / release / scripts / batch_name_edit.py
1 #!BPY
2
3 """
4 Name: 'Batch Object Name Edit'
5 Blender: 232
6 Group: 'Object'
7 Tooltip: 'Apply the chosen rule to rename all selected objects at once.'
8 """
9
10 __author__ = "Campbell Barton"
11 __url__ = ("blender", "elysiun")
12 __version__ = "1.0"
13
14 __bpydoc__ = """\
15 "Batch Object Name Edit" allows you to change multiple names of Blender
16 objects at once.  It provides options to define if you want to: replace text
17 in the current names, truncate their beginnings or endings or prepend / append
18 strings to them.
19
20 Usage:
21
22 Select the objects to be renamed and run this script from the Object->Scripts
23 menu of the 3d View.
24 """
25
26
27 # $Id$
28 #
29 # --------------------------------------------------------------------------
30 # Batch Name Edit by Campbell Barton (AKA Ideasman)
31 # --------------------------------------------------------------------------
32 # ***** BEGIN GPL LICENSE BLOCK *****
33 #
34 # This program is free software; you can redistribute it and/or
35 # modify it under the terms of the GNU General Public License
36 # as published by the Free Software Foundation; either version 2
37 # of the License, or (at your option) any later version.
38 #
39 # This program is distributed in the hope that it will be useful,
40 # but WITHOUT ANY WARRANTY; without even the implied warranty of
41 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
42 # GNU General Public License for more details.
43 #
44 # You should have received a copy of the GNU General Public License
45 # along with this program; if not, write to the Free Software Foundation,
46 # Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
47 #
48 # ***** END GPL LICENCE BLOCK *****
49 # --------------------------------------------------------------------------
50
51 from Blender import *
52
53 def main():
54         def new():
55                 newname = Draw.PupStrInput('Name: ', '', 32)
56                 if newname == None: return
57                 Window.WaitCursor(1)
58                 for ob in Object.GetSelected():
59                         ob.name = newname
60                 
61         def replace():
62                 replace = Draw.PupStrInput('Replace: ', '', 32)
63                 if replace == None: return
64                 with = Draw.PupStrInput('With: ', '', 32)
65                 if with == None: return
66                 Window.WaitCursor(1)
67                 for ob in Object.GetSelected():
68                         ob.name = ob.name.replace(replace, with)
69                         
70                         # Use pythons replace, its better.
71                         '''
72                         if replace in ob.name:
73                                 chIdx = ob.name.index(replace)
74                                 
75                                 # Remove the offending word and replace it with - 'with'
76                                 ob.name = ob.name[ :chIdx] + with + ob.name[chIdx + len(replace):]
77                         '''
78                         
79         
80         def prefix():
81                 prefix = Draw.PupStrInput('prefix: ', '', 32)
82                 
83                 if prefix == None: return
84                 Window.WaitCursor(1)
85                 for ob in Object.GetSelected():
86                         ob.name = prefix + ob.name
87         
88         
89         def suffix():
90                 suffix = Draw.PupStrInput('Suffix: ', '', 32)
91                 if suffix == None: return
92                 Window.WaitCursor(1)
93                 for ob in Object.GetSelected():
94                         ob.name = ob.name + suffix
95         
96         def truncate_start():
97                 truncate = Draw.PupIntInput('Truncate Start: ', 0, 0, 31)
98                 if truncate != None:
99                         Window.WaitCursor(1)
100                         for ob in Object.GetSelected():
101                                 ob.name = ob.name[truncate: ]
102         
103         def truncate_end():
104                 truncate = Draw.PupIntInput('Truncate End: ', 0, 0, 31)
105                 if truncate == None: return
106                 Window.WaitCursor(1)
107                 for ob in Object.GetSelected():
108                         ob.name = ob.name[ :-truncate]
109         
110         
111         name = "Selected Object Names%t|New Name|Replace Text|Add Prefix|Add Suffix|Truncate Start|Truncate End"
112         result = Draw.PupMenu(name)
113         
114         if result == -1:
115                 pass
116         elif result == 1:
117                 new()
118         elif result == 2:
119                 replace()
120         elif result == 3:
121                 prefix()
122         elif result == 4:
123                 suffix()
124         elif result == 5:
125                 truncate_start()
126         elif result == 6:
127                 truncate_end()
128         
129         Window.WaitCursor(0)
130
131 main()