diff options
Diffstat (limited to 'space_view3d_pie_menus/pie_sculpt_menu.py')
-rw-r--r-- | space_view3d_pie_menus/pie_sculpt_menu.py | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/space_view3d_pie_menus/pie_sculpt_menu.py b/space_view3d_pie_menus/pie_sculpt_menu.py new file mode 100644 index 00000000..88b7d501 --- /dev/null +++ b/space_view3d_pie_menus/pie_sculpt_menu.py @@ -0,0 +1,180 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# ##### END GPL LICENSE BLOCK ##### + +# <pep8 compliant> + +bl_info = { + "name": "Hotkey: 'W' & 'Alt W'", + "description": "Sculpt Mode & Brush Menu", + # "author": "pitiwazou, meta-androcto", + # "version": (0, 1, 0), + "blender": (2, 77, 0), + "location": "W key & Alt W key", + "warning": "", + "wiki_url": "", + "category": "Sculpt Pie" + } + +import bpy +from bpy.types import ( + Menu, + Operator, + ) + +# Sculpt Polish + + +class SculptPolish(Operator): + bl_idname = "sculpt.polish" + bl_label = "Sculpt Polish" + bl_options = {'REGISTER', 'UNDO'} + + def execute(self, context): + context.tool_settings.sculpt.brush = bpy.data.brushes['Polish'] + return {'FINISHED'} + +# Sculpt Polish + + +class SculptSculptDraw(Operator): + bl_idname = "sculpt.sculptraw" + bl_label = "Sculpt SculptDraw" + bl_options = {'REGISTER', 'UNDO'} + + def execute(self, context): + context.tool_settings.sculpt.brush = bpy.data.brushes['SculptDraw'] + return {'FINISHED'} + +# Pie Sculp Pie Menus - W + + +class PieSculptPie(Menu): + bl_idname = "pie.sculpt" + bl_label = "Pie Sculpt" + + def draw(self, context): + layout = self.layout + pie = layout.menu_pie() + # 4 - LEFT + pie.operator("paint.brush_select", text="Crease", icon='BRUSH_CREASE').sculpt_tool = 'CREASE' + # 6 - RIGHT + pie.operator("paint.brush_select", text="Clay", icon='BRUSH_CLAY').sculpt_tool = 'CLAY' + # 2 - BOTTOM + pie.operator("wm.call_menu_pie", text="More Brushes", icon='LINE_DATA').name = "pie.sculpttwo" + # 8 - TOP + pie.operator("paint.brush_select", text='Brush', icon='BRUSH_SCULPT_DRAW').sculpt_tool = 'DRAW' + # 7 - TOP - LEFT + pie.operator("paint.brush_select", text='Inflate/Deflate', icon='BRUSH_INFLATE').sculpt_tool = 'INFLATE' + # 9 - TOP - RIGHT + pie.operator("paint.brush_select", text='Grab', icon='BRUSH_GRAB').sculpt_tool = 'GRAB' + # 1 - BOTTOM - LEFT + pie.operator("paint.brush_select", text='Simplify', icon='BRUSH_DATA').sculpt_tool = 'SIMPLIFY' + # 3 - BOTTOM - RIGHT + pie.operator("paint.brush_select", text='Flatten', icon='BRUSH_FLATTEN').sculpt_tool = 'FLATTEN' + +# Pie Sculp Pie Menus 2 - W + + +class PieSculpttwo(Menu): + bl_idname = "pie.sculpttwo" + bl_label = "Pie Sculpt 2" + + def draw(self, context): + layout = self.layout + pie = layout.menu_pie() + # 4 - LEFT + pie.operator("paint.brush_select", text='Claystrips', icon='BRUSH_CREASE').sculpt_tool = 'CLAY_STRIPS' + # 6 - RIGHT + pie.operator("paint.brush_select", text='Blob', icon='BRUSH_BLOB').sculpt_tool = 'BLOB' + # 2 - BOTTOM + pie.operator("paint.brush_select", text='Snakehook', icon='BRUSH_SNAKE_HOOK').sculpt_tool = 'SNAKE_HOOK' + # 8 - TOP + pie.operator("paint.brush_select", text='Smooth', icon='BRUSH_SMOOTH').sculpt_tool = 'SMOOTH' + # 7 - TOP - LEFT + pie.operator("paint.brush_select", text='Pinch/Magnify', icon='BRUSH_PINCH').sculpt_tool = 'PINCH' + # 9 - TOP - RIGHT + pie.operator("sculpt.polish", text='Polish', icon='BRUSH_FLATTEN') + # 1 - BOTTOM - LEFT + box = pie.split().column() + row = box.row(align=True) + box.operator("paint.brush_select", text='Twist', icon='BRUSH_ROTATE').sculpt_tool = 'ROTATE' + box.operator("paint.brush_select", text='Scrape/Peaks', icon='BRUSH_SCRAPE').sculpt_tool = 'SCRAPE' + box.operator("sculpt.sculptraw", text='SculptDraw', icon='BRUSH_SCULPT_DRAW') + box.operator("paint.brush_select", text='Mask', icon='BRUSH_MASK').sculpt_tool = 'MASK' + # 3 - BOTTOM - RIGHT + box = pie.split().column() + row = box.row(align=True) + box.operator("paint.brush_select", text='Layer', icon='BRUSH_LAYER').sculpt_tool = 'LAYER' + box.operator("paint.brush_select", text='Nudge', icon='BRUSH_NUDGE').sculpt_tool = 'NUDGE' + box.operator("paint.brush_select", text='Thumb', icon='BRUSH_THUMB').sculpt_tool = 'THUMB' + box.operator("paint.brush_select", text='Fill/Deepen', icon='BRUSH_FILL').sculpt_tool = 'FILL' + +classes = ( + PieSculptPie, + PieSculpttwo, + SculptPolish, + SculptSculptDraw, + ) + +addon_keymaps = [] + + +def register(): + for cls in classes: + bpy.utils.register_class(cls) + wm = bpy.context.window_manager + + if wm.keyconfigs.addon: + # Sculpt Pie Menu + km = wm.keyconfigs.addon.keymaps.new(name='Sculpt') + kmi = km.keymap_items.new('wm.call_menu_pie', 'W', 'PRESS') + kmi.properties.name = "pie.sculpt" +# kmi.active = True + addon_keymaps.append((km, kmi)) + + # Sculpt Pie Menu 2 + km = wm.keyconfigs.addon.keymaps.new(name='Sculpt') + kmi = km.keymap_items.new('wm.call_menu_pie', 'W', 'PRESS', alt=True) + kmi.properties.name = "pie.sculpttwo" +# kmi.active = True + addon_keymaps.append((km, kmi)) + + +def unregister(): + for cls in classes: + bpy.utils.unregister_class(cls) + wm = bpy.context.window_manager + + kc = wm.keyconfigs.addon + if kc: + km = kc.keymaps['Sculpt'] + for kmi in km.keymap_items: + if kmi.idname == 'wm.call_menu_pie': + if kmi.properties.name == "pie.sculpt": + km.keymap_items.remove(kmi) + + kc = wm.keyconfigs.addon + if kc: + km = kc.keymaps['Sculpt'] + for kmi in km.keymap_items: + if kmi.idname == 'wm.call_menu_pie': + if kmi.properties.name == "pie.sculpttwo": + km.keymap_items.remove(kmi) + +if __name__ == "__main__": + register() |