8823045e07d346a66b6706da7a3baec504335839
[blender.git] / release / scripts / op / object.py
1 # ##### BEGIN GPL LICENSE BLOCK #####
2 #
3 #  This program is free software; you can redistribute it and/or
4 #  modify it under the terms of the GNU General Public License
5 #  as published by the Free Software Foundation; either version 2
6 #  of the License, or (at your option) any later version.
7 #
8 #  This program is distributed in the hope that it will be useful,
9 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
10 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 #  GNU General Public License for more details.
12 #
13 #  You should have received a copy of the GNU General Public License
14 #  along with this program; if not, write to the Free Software Foundation,
15 #  Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
16 #
17 # ##### END GPL LICENSE BLOCK #####
18
19 import bpy
20 from bpy.props import *
21
22
23 class SelectPattern(bpy.types.Operator):
24     '''Select object matching a naming pattern.'''
25     bl_idname = "object.select_pattern"
26     bl_label = "Select Pattern"
27     bl_register = True
28     bl_undo = True
29
30     pattern = StringProperty(name="Pattern", description="Name filter using '*' and '?' wildcard chars", maxlen=32, default="*")
31     case_sensitive = BoolProperty(name="Case Sensitive", description="Do a case sensitive compare", default=False)
32     extend = BoolProperty(name="Extend", description="Extend the existing selection", default=True)
33
34     def execute(self, context):
35
36         import fnmatch
37
38         if self.properties.case_sensitive:
39             pattern_match = fnmatch.fnmatchcase
40         else:
41             pattern_match = lambda a, b: fnmatch.fnmatchcase(a.upper(), b.upper())
42
43         for ob in context.visible_objects:
44             if pattern_match(ob.name, self.properties.pattern):
45                 ob.selected = True
46             elif not self.properties.extend:
47                 ob.selected = False
48
49         return ('FINISHED',)
50
51     def invoke(self, context, event):
52         wm = context.manager
53         wm.invoke_props_popup(self, event)
54         return ('RUNNING_MODAL',)
55     
56     def draw(self, context):
57         print("WoW")
58         layout = self.layout
59         props = self.properties
60         
61         layout.prop(props, "pattern")
62         row = layout.row()
63         row.prop(props, "case_sensitive")
64         row.prop(props, "extend")
65         
66
67
68 class SubsurfSet(bpy.types.Operator):
69     '''Sets a Subdivision Surface Level (1-5)'''
70
71     bl_idname = "object.subsurf_set"
72     bl_label = "Subsurf Set"
73     bl_register = True
74     bl_undo = True
75
76     level = IntProperty(name="Level",
77             default=1, min=0, max=6)
78
79     def poll(self, context):
80         ob = context.active_object
81         return (ob and ob.type == 'MESH')
82
83     def execute(self, context):
84         level = self.properties.level
85         ob = context.active_object
86         for mod in ob.modifiers:
87             if mod.type == 'SUBSURF':
88                 if mod.levels != level:
89                     mod.levels = level
90                 return ('FINISHED',)
91
92         # adda new modifier
93         mod = ob.modifiers.new("Subsurf", 'SUBSURF')
94         mod.levels = level
95         return ('FINISHED',)
96
97
98 bpy.ops.add(SelectPattern)
99 bpy.ops.add(SubsurfSet)