[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24749] trunk/blender: Missing Transform Menus + Buggy Object Operators:
Joshua Leung
aligorith at gmail.com
Sun Nov 22 07:19:30 CET 2009
Revision: 24749
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24749
Author: aligorith
Date: 2009-11-22 07:19:30 +0100 (Sun, 22 Nov 2009)
Log Message:
-----------
Missing Transform Menus + Buggy Object Operators:
* Added missing menus, 'Transform' and 'Mirror'
- mirror menu seems to be resulting in some memory leaks with RNA_enum_items_add len: 160 038832F8
* Apply Rotation operator for Objects now takes into account the different rotation modes
Modified Paths:
--------------
trunk/blender/release/scripts/ui/space_view3d.py
trunk/blender/source/blender/editors/object/object_transform.c
Modified: trunk/blender/release/scripts/ui/space_view3d.py
===================================================================
--- trunk/blender/release/scripts/ui/space_view3d.py 2009-11-22 02:59:52 UTC (rev 24748)
+++ trunk/blender/release/scripts/ui/space_view3d.py 2009-11-22 06:19:30 UTC (rev 24749)
@@ -72,6 +72,75 @@
layout.item_booleanO("%s.hide" % self._operator_name, "unselected", True, text="Hide Unselected")
+class VIEW3D_MT_transform(bpy.types.Menu):
+ bl_label = "Transform"
+
+ # TODO: get rid of the custom text strings?
+ def draw(self, context):
+ layout = self.layout
+
+ layout.itemO("tfm.translate", text="Grab/Move")
+ # TODO: sub-menu for grab per axis
+ layout.itemO("tfm.rotate", text="Rotate")
+ # TODO: sub-menu for rot per axis
+ layout.itemO("tfm.resize", text="Scale")
+ # TODO: sub-menu for scale per axis
+
+ layout.itemS()
+
+ layout.itemO("tfm.tosphere", text="To Sphere")
+ layout.itemO("tfm.shear", text="Shear")
+ layout.itemO("tfm.warp", text="Warp")
+ layout.item_enumO("tfm.transform", "mode", 'PUSHPULL', text="Push/Pull")
+ if context.edit_object and context.edit_object.type == 'ARMATURE':
+ layout.itemO("armature.align")
+ else:
+ layout.operator_context = 'EXEC_AREA'
+ layout.item_enumO("tfm.transform", "mode", 'ALIGN', text="Align to Transform Orientation") # XXX see alignmenu() in edit.c of b2.4x to get this working
+
+ layout.itemS()
+
+ layout.operator_context = 'EXEC_AREA'
+
+ layout.item_enumO("object.center_set", "type", 'CENTER')
+ layout.item_enumO("object.center_set", "type", 'CENTERNEW')
+ layout.item_enumO("object.center_set", "type", 'CENTERCURSOR')
+
+class VIEW3D_MT_mirror(bpy.types.Menu):
+ bl_label = "Mirror"
+
+ def draw(self, context):
+ layout = self.layout
+
+ layout.itemO("tfm.mirror", text="Interactive Mirror")
+
+ layout.itemS()
+
+ layout.operator_context = 'EXEC_AREA'
+
+ props = layout.itemO("tfm.mirror", properties=True, text="X Global")
+ props.constraint_axis = (True, False, False)
+ props.constraint_orientation = 'GLOBAL'
+ props = layout.itemO("tfm.mirror", properties=True, text="Y Global")
+ props.constraint_axis = (False, True, False)
+ props.constraint_orientation = 'GLOBAL'
+ props = layout.itemO("tfm.mirror", properties=True, text="Z Global")
+ props.constraint_axis = (False, False, True)
+ props.constraint_orientation = 'GLOBAL'
+
+ if context.edit_object:
+ layout.itemS()
+
+ props = layout.itemO("tfm.mirror", properties=True, text="X Local")
+ props.constraint_axis = (True, False, False)
+ props.constraint_orientation = 'LOCAL'
+ props = layout.itemO("tfm.mirror", properties=True, text="Y Local")
+ props.constraint_axis = (False, True, False)
+ props.constraint_orientation = 'LOCAL'
+ props = layout.itemO("tfm.mirror", properties=True, text="Z Local")
+ props.constraint_axis = (False, False, True)
+ props.constraint_orientation = 'LOCAL'
+
class VIEW3D_MT_snap(bpy.types.Menu):
bl_label = "Snap"
@@ -501,6 +570,8 @@
def draw(self, context):
layout = self.layout
+ layout.itemM("VIEW3D_MT_transform")
+ layout.itemM("VIEW3D_MT_mirror")
layout.itemM("VIEW3D_MT_object_clear")
layout.itemM("VIEW3D_MT_object_apply")
layout.itemM("VIEW3D_MT_snap")
@@ -759,7 +830,9 @@
layout = self.layout
arm = context.active_object.data
-
+
+ layout.itemM("VIEW3D_MT_transform")
+ layout.itemM("VIEW3D_MT_snap")
if arm.drawtype in ('BBONE', 'ENVELOPE'):
layout.item_enumO("tfm.transform", "mode", 'BONESIZE', text="Scale Envelope Distance")
@@ -906,6 +979,8 @@
layout.itemS()
+ layout.itemM("VIEW3D_MT_transform")
+ layout.itemM("VIEW3D_MT_mirror")
layout.itemM("VIEW3D_MT_snap")
layout.itemS()
@@ -1094,7 +1169,9 @@
layout = self.layout
settings = context.tool_settings
-
+
+ layout.itemM("VIEW3D_MT_transform")
+ layout.itemM("VIEW3D_MT_mirror")
layout.itemM("VIEW3D_MT_snap")
layout.itemS()
@@ -1228,7 +1305,9 @@
layout.itemO("ed.redo")
layout.itemS()
-
+
+ layout.itemM("VIEW3D_MT_transform")
+ layout.itemM("VIEW3D_MT_mirror")
layout.itemM("VIEW3D_MT_snap")
layout.itemS()
@@ -1264,7 +1343,9 @@
layout = self.layout
settings = context.tool_settings
-
+
+ layout.itemM("VIEW3D_MT_transform")
+ layout.itemM("VIEW3D_MT_mirror")
layout.itemM("VIEW3D_MT_snap")
layout.itemS()
@@ -1285,7 +1366,9 @@
edit_object = context.edit_object
arm = edit_object.data
-
+
+ layout.itemM("VIEW3D_MT_transform")
+ layout.itemM("VIEW3D_MT_mirror")
layout.itemM("VIEW3D_MT_snap")
layout.itemM("VIEW3D_MT_edit_armature_roll")
@@ -1730,6 +1813,11 @@
bpy.types.register(VIEW3D_MT_select_edit_armature)
bpy.types.register(VIEW3D_MT_select_face) # XXX todo
+bpy.types.register(VIEW3D_MT_transform) # Object/Edit Menus
+bpy.types.register(VIEW3D_MT_mirror) # Object/Edit Menus
+bpy.types.register(VIEW3D_MT_snap) # Object/Edit Menus
+bpy.types.register(VIEW3D_MT_uv_map) # Edit Menus
+
bpy.types.register(VIEW3D_MT_object) # Object Menu
bpy.types.register(VIEW3D_MT_object_apply)
bpy.types.register(VIEW3D_MT_object_clear)
@@ -1759,9 +1847,6 @@
bpy.types.register(VIEW3D_MT_pose_constraints)
bpy.types.register(VIEW3D_MT_pose_showhide)
-bpy.types.register(VIEW3D_MT_snap) # Edit Menus
-bpy.types.register(VIEW3D_MT_uv_map) # Edit Menus
-
bpy.types.register(VIEW3D_MT_edit_mesh)
bpy.types.register(VIEW3D_MT_edit_mesh_specials) # Only as a menu for keybindings
bpy.types.register(VIEW3D_MT_edit_mesh_vertices)
Modified: trunk/blender/source/blender/editors/object/object_transform.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_transform.c 2009-11-22 02:59:52 UTC (rev 24748)
+++ trunk/blender/source/blender/editors/object/object_transform.c 2009-11-22 06:19:30 UTC (rev 24749)
@@ -475,8 +475,14 @@
ob->loc[0]= ob->loc[1]= ob->loc[2]= 0.0f;
if(apply_scale)
ob->size[0]= ob->size[1]= ob->size[2]= 1.0f;
- if(apply_rot)
+ if(apply_rot) {
ob->rot[0]= ob->rot[1]= ob->rot[2]= 0.0f;
+ ob->quat[1]= ob->quat[2]= ob->quat[3]= 0.0f;
+ ob->rotAxis[0]= ob->rotAxis[2]= 0.0f;
+ ob->rotAngle= 0.0f;
+
+ ob->quat[0]= ob->rotAxis[1]= 1.0f;
+ }
where_is_object(scene, ob);
ignore_parent_tx(bmain, scene, ob);
@@ -501,11 +507,17 @@
CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) {
where_is_object(scene, ob);
-
+
VECCOPY(ob->loc, ob->obmat[3]);
- mat4_to_size( ob->size,ob->obmat);
- mat4_to_eul( ob->rot,ob->obmat);
+ mat4_to_size(ob->size,ob->obmat);
+ if (ob->rotmode == ROT_MODE_QUAT)
+ mat4_to_quat(ob->quat, ob->obmat);
+ else if (ob->rotmode == ROT_MODE_AXISANGLE)
+ mat4_to_axis_angle(ob->rotAxis, &ob->rotAngle, ob->obmat);
+ else
+ mat4_to_eul(ob->rot,ob->obmat);
+
where_is_object(scene, ob);
change = 1;
@@ -641,14 +653,6 @@
}
}
-/************************ Mirror Menu ****************************/
-
-void mirrormenu(void)
-{
-// XXX initTransform(TFM_MIRROR, CTX_NO_PET);
-// XXX Transform();
-}
-
/********************* Set Object Center ************************/
static EnumPropertyItem prop_set_center_types[] = {
More information about the Bf-blender-cvs
mailing list