2017-10-21 16:19:48 +11:00
|
|
|
# ##### 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>
|
|
|
|
|
|
|
|
# For now group all tools together
|
|
|
|
# we may want to move these into per space-type files.
|
|
|
|
#
|
|
|
|
# For now keep this in a single file since it's an area that may change,
|
|
|
|
# so avoid making changes all over the place.
|
|
|
|
|
|
|
|
from bpy.types import Panel
|
|
|
|
|
|
|
|
from .space_toolsystem_common import (
|
|
|
|
ToolSelectPanelHelper,
|
2018-04-27 13:23:29 +02:00
|
|
|
ToolDef,
|
2017-10-21 16:19:48 +11:00
|
|
|
)
|
|
|
|
|
|
|
|
|
2018-04-27 13:23:29 +02:00
|
|
|
class _defs_view3d_generic:
|
|
|
|
|
|
|
|
class cursor(ToolDef):
|
|
|
|
text = "Cursor"
|
|
|
|
icon = "ops.generic.cursor"
|
|
|
|
widget = None
|
|
|
|
|
|
|
|
keymap = (
|
|
|
|
("view3d.cursor3d", dict(), dict(type='ACTIONMOUSE', value='CLICK')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class ruler(ToolDef):
|
|
|
|
text = "Ruler/Protractor"
|
|
|
|
icon = "ops.view3d.ruler"
|
|
|
|
widget = "VIEW3D_WGT_ruler"
|
|
|
|
keymap = (
|
|
|
|
("view3d.ruler_add", dict(), dict(type='EVT_TWEAK_A', value='ANY')),
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
class _defs_transform:
|
|
|
|
|
|
|
|
class translate(ToolDef):
|
2018-04-27 22:48:23 +02:00
|
|
|
text = "Move"
|
2018-04-27 13:23:29 +02:00
|
|
|
icon = "ops.transform.translate"
|
|
|
|
widget = "TRANSFORM_WGT_manipulator"
|
|
|
|
keymap = (
|
|
|
|
("transform.translate", dict(release_confirm=True), dict(type='EVT_TWEAK_A', value='ANY')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class rotate(ToolDef):
|
|
|
|
text = "Rotate"
|
|
|
|
icon = "ops.transform.rotate"
|
|
|
|
widget = "TRANSFORM_WGT_manipulator"
|
|
|
|
keymap = (
|
|
|
|
("transform.rotate", dict(release_confirm=True), dict(type='EVT_TWEAK_A', value='ANY')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class scale(ToolDef):
|
|
|
|
text = "Scale"
|
|
|
|
icon = "ops.transform.resize"
|
|
|
|
widget = "TRANSFORM_WGT_manipulator"
|
|
|
|
keymap = (
|
|
|
|
("transform.resize", dict(release_confirm=True), dict(type='EVT_TWEAK_A', value='ANY')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class scale_cage(ToolDef):
|
|
|
|
text = "Scale Cage"
|
|
|
|
icon = "ops.transform.resize.cage"
|
|
|
|
widget = "VIEW3D_WGT_xform_cage"
|
|
|
|
keymap = None
|
|
|
|
|
2018-04-27 22:48:23 +02:00
|
|
|
class transform(ToolDef):
|
|
|
|
text = "Transform"
|
|
|
|
icon = "ops.transform.transform"
|
|
|
|
widget = "TRANSFORM_WGT_manipulator"
|
|
|
|
# No favorites, only for manipulators!
|
|
|
|
keymap = ()
|
|
|
|
|
2018-04-27 13:23:29 +02:00
|
|
|
|
|
|
|
class _defs_view3d_select:
|
|
|
|
|
|
|
|
class border(ToolDef):
|
|
|
|
text = "Select Border"
|
|
|
|
icon = "ops.generic.select_border"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("view3d.select_border",
|
|
|
|
dict(deselect=False),
|
|
|
|
dict(type='EVT_TWEAK_A', value='ANY')),
|
|
|
|
("view3d.select_border",
|
|
|
|
dict(deselect=True),
|
|
|
|
dict(type='EVT_TWEAK_A', value='ANY', ctrl=True)),
|
|
|
|
)
|
|
|
|
|
|
|
|
class circle(ToolDef):
|
|
|
|
text = "Select Circle"
|
|
|
|
icon = "ops.generic.select_circle"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("view3d.select_circle",
|
|
|
|
dict(deselect=False),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
("view3d.select_circle",
|
|
|
|
dict(deselect=True),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS', ctrl=True)),
|
|
|
|
)
|
|
|
|
|
|
|
|
class lasso(ToolDef):
|
|
|
|
text = "Select Lasso"
|
|
|
|
icon = "ops.generic.select_lasso"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("view3d.select_lasso",
|
|
|
|
dict(deselect=False),
|
|
|
|
dict(type='EVT_TWEAK_A', value='ANY')),
|
|
|
|
("view3d.select_lasso",
|
|
|
|
dict(deselect=True),
|
|
|
|
dict(type='EVT_TWEAK_A', value='ANY', ctrl=True)),
|
|
|
|
)
|
|
|
|
|
|
|
|
# -----------------------------------------------------------------------------
|
|
|
|
# Object Modes (named based on context.mode)
|
|
|
|
|
|
|
|
class _defs_weight_paint:
|
|
|
|
|
|
|
|
class gradient_linear(ToolDef):
|
|
|
|
text = "Linear Gradient"
|
|
|
|
icon = None
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("paint.weight_gradient", dict(type='LINEAR'),
|
|
|
|
dict(type='EVT_TWEAK_A', value='ANY')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class gradient_radial(ToolDef):
|
|
|
|
text = "Radial Gradient"
|
|
|
|
icon = None
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("paint.weight_gradient",
|
|
|
|
dict(type='RADIAL'),
|
|
|
|
dict(type='EVT_TWEAK_A', value='ANY')),
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
class _defs_edit_armature:
|
|
|
|
|
|
|
|
class roll(ToolDef):
|
|
|
|
text = "Roll"
|
2018-04-27 19:16:00 +02:00
|
|
|
icon = "ops.armature.bone.roll",
|
2018-04-27 13:23:29 +02:00
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("transform.transform",
|
|
|
|
dict(release_confirm=True, mode='BONE_ROLL'),
|
|
|
|
dict(type='EVT_TWEAK_A', value='ANY'),),
|
|
|
|
)
|
|
|
|
|
2018-04-27 19:16:00 +02:00
|
|
|
class extrude(ToolDef):
|
|
|
|
text = "Extrude",
|
|
|
|
icon = "ops.armature.extrude_move",
|
2018-04-27 13:23:29 +02:00
|
|
|
widget = None,
|
|
|
|
keymap = (
|
|
|
|
("armature.click_extrude", dict(), dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
2018-04-27 19:16:00 +02:00
|
|
|
class extrude_cursor(ToolDef):
|
|
|
|
text = "Extrude to Cursor",
|
|
|
|
icon = "ops.armature.extrude_cursor",
|
|
|
|
widget = None,
|
|
|
|
keymap = (
|
|
|
|
("armature.click_extrude", dict(), dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
2018-04-27 13:23:29 +02:00
|
|
|
|
|
|
|
class _defs_edit_mesh:
|
|
|
|
|
|
|
|
class rip_region(ToolDef):
|
|
|
|
text = "Rip Region"
|
|
|
|
icon = "ops.mesh.rip"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("mesh.rip_move", dict(),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class rip_edge(ToolDef):
|
|
|
|
text = "Rip Edge"
|
|
|
|
icon = "ops.mesh.rip_edge"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("mesh.rip_edge_edge_move", dict(),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class poly_build(ToolDef):
|
|
|
|
text = "Poly Build"
|
|
|
|
icon = "ops.mesh.polybuild_hover"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("mesh.polybuild_face_at_cursor_move",
|
|
|
|
dict(TRANSFORM_OT_translate=dict(release_confirm=True)),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
("mesh.polybuild_split_at_cursor_move",
|
|
|
|
dict(TRANSFORM_OT_translate=dict(release_confirm=True)),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS', ctrl=True)),
|
|
|
|
("mesh.polybuild_dissolve_at_cursor", dict(), dict(type='ACTIONMOUSE', value='CLICK', alt=True)),
|
|
|
|
("mesh.polybuild_hover", dict(use_boundary=False), dict(type='MOUSEMOVE', value='ANY', alt=True)),
|
|
|
|
("mesh.polybuild_hover", dict(use_boundary=True), dict(type='MOUSEMOVE', value='ANY', any=True)),
|
|
|
|
)
|
|
|
|
|
|
|
|
class edge_slide(ToolDef):
|
|
|
|
text = "Edge Slide"
|
|
|
|
icon = "ops.transform.edge_slide"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("transform.edge_slide", dict(release_confirm=True),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')
|
|
|
|
),
|
|
|
|
)
|
|
|
|
|
|
|
|
class vert_slide(ToolDef):
|
|
|
|
text = "Vertex Slide"
|
|
|
|
icon = "ops.transform.vert_slide"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("transform.vert_slide", dict(release_confirm=True),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class spin(ToolDef):
|
|
|
|
text = "Spin"
|
|
|
|
icon = "ops.mesh.spin"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("mesh.spin", dict(),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class spin_duplicate(ToolDef):
|
|
|
|
text = "Spin (Duplicate)"
|
|
|
|
icon = "ops.mesh.spin.duplicate"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("mesh.spin", dict(dupli=True),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class inset(ToolDef):
|
|
|
|
text = "Inset Faces"
|
|
|
|
icon = "ops.mesh.inset"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
2018-04-27 20:37:13 +02:00
|
|
|
("mesh.inset", dict(release_confirm=True),
|
2018-04-27 13:23:29 +02:00
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
2018-04-27 22:48:23 +02:00
|
|
|
class bevel(ToolDef):
|
|
|
|
text = "Bevel"
|
|
|
|
icon = "ops.mesh.bevel"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("mesh.bevel", dict(),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
2018-04-27 13:23:29 +02:00
|
|
|
class extrude(ToolDef):
|
|
|
|
text = "Extrude Region"
|
2018-04-27 22:48:23 +02:00
|
|
|
icon = "ops.mesh.extrude_region_move"
|
2018-04-27 13:23:29 +02:00
|
|
|
widget = None
|
|
|
|
keymap = (
|
2018-04-27 20:43:41 +02:00
|
|
|
("mesh.extrude_region_move", dict(TRANSFORM_OT_translate=dict(release_confirm=True)),
|
2018-04-27 13:23:29 +02:00
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class extrude_individual(ToolDef):
|
|
|
|
text = "Extrude Individual"
|
2018-04-27 22:48:23 +02:00
|
|
|
icon = "ops.mesh.extrude_faces_move"
|
2018-04-27 13:23:29 +02:00
|
|
|
widget = None
|
|
|
|
keymap = (
|
2018-04-27 20:43:41 +02:00
|
|
|
("mesh.extrude_faces_move", dict(TRANSFORM_OT_shrink_fatten=dict(release_confirm=True)),
|
2018-04-27 13:23:29 +02:00
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
2018-04-27 22:48:23 +02:00
|
|
|
class extrude_cursor(ToolDef):
|
|
|
|
text = "Extrude to Cursor"
|
|
|
|
icon = "ops.mesh.dupli_extrude_cursor"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("mesh.dupli_extrude_cursor", dict(), dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
2018-04-27 22:59:51 +02:00
|
|
|
class loopcut_slide(ToolDef):
|
|
|
|
text = "Loop Cut"
|
|
|
|
icon = "ops.mesh.loopcut_slide"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("mesh.loopcut_slide", dict(), dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class offset_edge_loops_slide(ToolDef):
|
|
|
|
text = "Offset Edge Loop Cut"
|
|
|
|
icon = "ops.mesh.offset_edge_loops_slide"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("mesh.offset_edge_loops_slide", dict(), dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
2018-04-27 13:23:29 +02:00
|
|
|
class vertex_smooth(ToolDef):
|
|
|
|
text = "Smooth"
|
|
|
|
icon = "ops.mesh.vertices_smooth"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("mesh.vertices_smooth", dict(),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class vertex_randomize(ToolDef):
|
|
|
|
text = "Randomize"
|
|
|
|
icon = "ops.transform.vertex_random"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("transform.vertex_random", dict(),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class shrink_fatten(ToolDef):
|
|
|
|
text = "Shrink/Fatten"
|
|
|
|
icon = "ops.transform.shrink_fatten"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("transform.shrink_fatten", dict(release_confirm=True),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class push_pull(ToolDef):
|
|
|
|
text = "Push/Pull"
|
|
|
|
icon = "ops.transform.push_pull"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("transform.push_pull", dict(release_confirm=True),
|
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class knife(ToolDef):
|
|
|
|
text = "Knife"
|
|
|
|
icon = "ops.mesh.knife_tool"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("mesh.knife_tool",
|
2018-04-27 14:13:16 +02:00
|
|
|
dict(wait_for_input=False),
|
2018-04-27 13:23:29 +02:00
|
|
|
dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
2018-04-27 14:13:16 +02:00
|
|
|
@classmethod
|
|
|
|
def draw_settings(cls, context, layout):
|
|
|
|
wm = context.window_manager
|
|
|
|
props = wm.operator_properties_last("mesh.knife_tool")
|
|
|
|
layout.prop(props, "use_occlude_geometry")
|
|
|
|
layout.prop(props, "only_selected")
|
|
|
|
|
2018-04-27 13:23:29 +02:00
|
|
|
class bisect(ToolDef):
|
|
|
|
text = "Bisect"
|
|
|
|
icon = "ops.mesh.bisect"
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("mesh.bisect",
|
|
|
|
dict(),
|
|
|
|
dict(type='EVT_TWEAK_A', value='ANY')),
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
class _defs_edit_curve:
|
|
|
|
|
|
|
|
class draw(ToolDef):
|
|
|
|
text = "Draw"
|
|
|
|
icon = None
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("curve.draw", dict(wait_for_input=False), dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
|
|
|
class extrude_cursor(ToolDef):
|
|
|
|
text = "Extrude Cursor"
|
|
|
|
icon = None
|
|
|
|
widget = None
|
|
|
|
keymap = (
|
|
|
|
("curve.vertex_add", dict(), dict(type='ACTIONMOUSE', value='PRESS')),
|
|
|
|
)
|
|
|
|
|
|
|
|
|
2017-10-21 16:19:48 +11:00
|
|
|
class VIEW3D_PT_tools_active(ToolSelectPanelHelper, Panel):
|
|
|
|
bl_space_type = 'VIEW_3D'
|
|
|
|
bl_region_type = 'TOOLS'
|
|
|
|
bl_category = "Tools"
|
2018-04-24 16:04:07 +02:00
|
|
|
bl_label = "Tools" # not visible
|
|
|
|
bl_options = {'HIDE_HEADER'}
|
2017-10-21 16:19:48 +11:00
|
|
|
|
|
|
|
# Satisfy the 'ToolSelectPanelHelper' API.
|
|
|
|
keymap_prefix = "3D View Tool: "
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def tools_from_context(cls, context):
|
|
|
|
return (cls._tools[None], cls._tools.get(context.mode, ()))
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
def tools_all(cls):
|
2018-04-26 14:43:32 +02:00
|
|
|
yield from cls._tools.items()
|
2017-10-21 16:19:48 +11:00
|
|
|
|
|
|
|
# for reuse
|
|
|
|
_tools_transform = (
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_transform.translate,
|
|
|
|
_defs_transform.rotate,
|
2018-04-24 09:19:28 +02:00
|
|
|
(
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_transform.scale,
|
|
|
|
_defs_transform.scale_cage,
|
2018-04-24 09:19:28 +02:00
|
|
|
),
|
2018-04-27 22:48:23 +02:00
|
|
|
_defs_transform.transform,
|
2017-11-11 02:43:04 +11:00
|
|
|
None,
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_view3d_generic.ruler,
|
2017-10-21 16:19:48 +11:00
|
|
|
)
|
|
|
|
|
|
|
|
_tools = {
|
|
|
|
None: [
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_view3d_generic.cursor,
|
2017-11-02 23:05:13 +11:00
|
|
|
|
|
|
|
# 'Select' Group
|
|
|
|
(
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_view3d_select.border,
|
|
|
|
_defs_view3d_select.circle,
|
|
|
|
_defs_view3d_select.lasso,
|
2017-11-02 23:05:13 +11:00
|
|
|
),
|
|
|
|
# End group.
|
2017-10-21 16:19:48 +11:00
|
|
|
],
|
|
|
|
'OBJECT': [
|
|
|
|
*_tools_transform,
|
|
|
|
],
|
|
|
|
'POSE': [
|
|
|
|
*_tools_transform,
|
|
|
|
],
|
2018-04-24 16:54:38 +02:00
|
|
|
'PAINT_WEIGHT': [
|
|
|
|
# TODO, override brush events
|
|
|
|
(
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_weight_paint.gradient_linear,
|
|
|
|
_defs_weight_paint.gradient_radial,
|
2018-04-24 16:54:38 +02:00
|
|
|
),
|
|
|
|
],
|
2017-10-21 16:19:48 +11:00
|
|
|
'EDIT_ARMATURE': [
|
|
|
|
*_tools_transform,
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_edit_armature.roll,
|
2017-10-21 16:19:48 +11:00
|
|
|
None,
|
2018-04-27 19:16:00 +02:00
|
|
|
(
|
|
|
|
_defs_edit_armature.extrude,
|
|
|
|
_defs_edit_armature.extrude_cursor,
|
|
|
|
)
|
2017-10-21 16:19:48 +11:00
|
|
|
],
|
|
|
|
'EDIT_MESH': [
|
|
|
|
*_tools_transform,
|
|
|
|
None,
|
2018-04-24 15:32:11 +02:00
|
|
|
(
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_edit_mesh.rip_region,
|
|
|
|
_defs_edit_mesh.rip_edge,
|
2018-04-24 15:32:11 +02:00
|
|
|
),
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_edit_mesh.poly_build,
|
2018-04-24 15:32:11 +02:00
|
|
|
|
|
|
|
# 'Slide' Group
|
|
|
|
(
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_edit_mesh.edge_slide,
|
|
|
|
_defs_edit_mesh.vert_slide,
|
2018-04-24 15:32:11 +02:00
|
|
|
),
|
|
|
|
# End group.
|
|
|
|
|
|
|
|
(
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_edit_mesh.spin,
|
|
|
|
_defs_edit_mesh.spin_duplicate,
|
2018-04-24 15:32:11 +02:00
|
|
|
),
|
|
|
|
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_edit_mesh.inset,
|
2018-04-27 22:48:23 +02:00
|
|
|
_defs_edit_mesh.bevel,
|
2018-04-27 22:59:51 +02:00
|
|
|
(
|
|
|
|
_defs_edit_mesh.loopcut_slide,
|
|
|
|
_defs_edit_mesh.offset_edge_loops_slide,
|
|
|
|
),
|
2018-04-24 15:32:11 +02:00
|
|
|
(
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_edit_mesh.extrude,
|
|
|
|
_defs_edit_mesh.extrude_individual,
|
2018-04-27 19:16:00 +02:00
|
|
|
_defs_edit_mesh.extrude_cursor,
|
2018-04-24 15:32:11 +02:00
|
|
|
),
|
|
|
|
|
|
|
|
(
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_edit_mesh.vertex_smooth,
|
|
|
|
_defs_edit_mesh.vertex_randomize,
|
2018-04-24 15:32:11 +02:00
|
|
|
),
|
|
|
|
|
|
|
|
(
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_edit_mesh.shrink_fatten,
|
|
|
|
_defs_edit_mesh.push_pull,
|
2018-04-24 15:32:11 +02:00
|
|
|
),
|
|
|
|
|
2017-11-02 23:05:13 +11:00
|
|
|
(
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_edit_mesh.knife,
|
|
|
|
_defs_edit_mesh.bisect,
|
2018-04-26 07:31:39 +02:00
|
|
|
),
|
2017-10-21 16:19:48 +11:00
|
|
|
],
|
|
|
|
'EDIT_CURVE': [
|
|
|
|
*_tools_transform,
|
|
|
|
None,
|
2018-04-27 13:23:29 +02:00
|
|
|
_defs_edit_curve.draw,
|
|
|
|
_defs_edit_curve.extrude_cursor,
|
2017-10-21 16:19:48 +11:00
|
|
|
],
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
classes = (
|
|
|
|
VIEW3D_PT_tools_active,
|
|
|
|
)
|
|
|
|
|
|
|
|
if __name__ == "__main__": # only for live edit.
|
|
|
|
from bpy.utils import register_class
|
|
|
|
for cls in classes:
|
|
|
|
register_class(cls)
|