[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46338] trunk/blender/release/scripts/ startup/bl_ui/space_view3d.py: Bugfix [#31297] Transform menu often showed operators which didn't make sense
Joshua Leung
aligorith at gmail.com
Sun May 6 08:37:10 CEST 2012
Revision: 46338
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46338
Author: aligorith
Date: 2012-05-06 06:37:07 +0000 (Sun, 06 May 2012)
Log Message:
-----------
Bugfix [#31297] Transform menu often showed operators which didn't make sense
for the contexts they appeared in
The VIEW3D_MT_transform menu was being used everywhere, although not all the
operators there applied to the current mode (e.g. the pivot point, animated
transforms to deltas, and a few others were Object-mode only). Split off the
offending parts into separate menus for the specific modes, and made these
extend the basic menu type.
Modified Paths:
--------------
trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
Modified: trunk/blender/release/scripts/startup/bl_ui/space_view3d.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_view3d.py 2012-05-06 05:50:50 UTC (rev 46337)
+++ trunk/blender/release/scripts/startup/bl_ui/space_view3d.py 2012-05-06 06:37:07 UTC (rev 46338)
@@ -135,7 +135,9 @@
layout.operator("%s.hide" % self._operator_name, text="Hide Unselected").unselected = True
-class VIEW3D_MT_transform(Menu):
+# Standard transforms which apply to all cases
+# NOTE: this doesn't seem to be able to be used directly
+class VIEW3D_MT_transform_base(Menu):
bl_label = "Transform"
# TODO: get rid of the custom text strings?
@@ -156,23 +158,39 @@
layout.operator("transform.warp", text="Warp")
layout.operator("transform.push_pull", text="Push/Pull")
+
+# Generic transform menu - geometry types
+class VIEW3D_MT_transform(VIEW3D_MT_transform_base):
+ def draw(self, context):
+ # base menu
+ VIEW3D_MT_transform_base.draw(self, context)
+
+ # generic...
+ layout = self.layout
layout.separator()
layout.operator("transform.translate", text="Move Texture Space").texture_space = True
layout.operator("transform.resize", text="Scale Texture Space").texture_space = True
+
+# Object-specific extensions to Transform menu
+class VIEW3D_MT_transform_object(VIEW3D_MT_transform_base):
+ def draw(self, context):
+ # base menu
+ VIEW3D_MT_transform_base.draw(self, context)
+
+ # object-specific option follow...
+ layout = self.layout
layout.separator()
- obj = context.object
- if obj.type == 'ARMATURE' and obj.mode in {'EDIT', 'POSE'} and obj.data.draw_type in {'BBONE', 'ENVELOPE'}:
- layout.operator("transform.transform", text="Scale Envelope/BBone").mode = 'BONE_SIZE'
+ layout.operator("transform.translate", text="Move Texture Space").texture_space = True
+ layout.operator("transform.resize", text="Scale Texture Space").texture_space = True
+
+ layout.separator()
+
+ layout.operator_context = 'EXEC_REGION_WIN'
+ layout.operator("transform.transform", text="Align to Transform Orientation").mode = 'ALIGN' # XXX see alignmenu() in edit.c of b2.4x to get this working
- if context.edit_object and context.edit_object.type == 'ARMATURE':
- layout.operator("armature.align")
- else:
- layout.operator_context = 'EXEC_REGION_WIN'
- layout.operator("transform.transform", text="Align to Transform Orientation").mode = 'ALIGN' # XXX see alignmenu() in edit.c of b2.4x to get this working
-
layout.separator()
layout.operator_context = 'EXEC_AREA'
@@ -191,6 +209,25 @@
layout.operator("object.anim_transforms_to_deltas")
+# Armature EditMode extensions to Transform menu
+class VIEW3D_MT_transform_armature(VIEW3D_MT_transform_base):
+ def draw(self, context):
+ # base menu
+ VIEW3D_MT_transform_base.draw(self, context)
+
+ # armature specific extensions follow...
+ layout = self.layout
+ layout.separator()
+
+ obj = context.object
+ if (obj.type == 'ARMATURE' and obj.mode in {'EDIT', 'POSE'} and
+ obj.data.draw_type in {'BBONE', 'ENVELOPE'}):
+ layout.operator("transform.transform", text="Scale Envelope/BBone").mode = 'BONE_SIZE'
+
+ if context.edit_object and context.edit_object.type == 'ARMATURE':
+ layout.operator("armature.align")
+
+
class VIEW3D_MT_mirror(Menu):
bl_label = "Mirror"
@@ -704,7 +741,7 @@
layout.separator()
- layout.menu("VIEW3D_MT_transform")
+ layout.menu("VIEW3D_MT_transform_object")
layout.menu("VIEW3D_MT_mirror")
layout.menu("VIEW3D_MT_object_clear")
layout.menu("VIEW3D_MT_object_apply")
@@ -1322,7 +1359,7 @@
layout.separator()
- layout.menu("VIEW3D_MT_transform")
+ layout.menu("VIEW3D_MT_transform_armature")
layout.menu("VIEW3D_MT_pose_transform")
layout.menu("VIEW3D_MT_pose_apply")
@@ -2077,7 +2114,7 @@
edit_object = context.edit_object
arm = edit_object.data
- layout.menu("VIEW3D_MT_transform")
+ layout.menu("VIEW3D_MT_transform_armature")
layout.menu("VIEW3D_MT_mirror")
layout.menu("VIEW3D_MT_snap")
layout.menu("VIEW3D_MT_edit_armature_roll")
More information about the Bf-blender-cvs
mailing list